Merge branch 'cecil-light'
[mono.git] / mono / metadata / ChangeLog
1 2010-11-03  Martin Baulig  <martin@ximian.com>
2
3         * mono-debug.c (mono_register_symfile_for_assembly): New method.
4         This is used together with mono_register_bundled_assemblies() and
5         mono_register_config_for_assembly() to support bundles.
6
7 2010-07-30  Mark Probst  <mark.probst@gmail.com>
8
9         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Add casts to fix
10         compiler warnings on AMD64.
11
12 2010-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
13
14         Add support for calling vararg methods from SRE code.
15         This requires storing per-memberref signatures so
16         the JIT can know how many varargs parameters are
17         been passed.
18
19         * loader.c (mono_method_get_signature_full): If the
20         image is dynamic call mono_reflection_lookup_signature
21         to lookup the signature.
22
23         * reflection.c (mono_image_create_method_token): Save
24         the method object into the MonoDynamicImage::tokens.
25         Create a signature struct for MethodBuilders.
26         Save the signature into vararg_aux_hash so it can be
27         retrieved later.
28
29         * reflection.c (mono_reflection_lookup_signature): New
30         function. Check vararg_aux_hash for a signature before
31         returning method's own signature.
32
33         * metadata-internals.h (MonoDynamicImage): Add new
34         vararg_aux_hash hashtable.
35
36         * object-internals.h: Add mono_reflection_lookup_signature.
37
38         Fixes #626441
39
40 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
41
42         * verify.c (mono_method_verify): Don't move forward
43         with verification if a stack overflow is detected for
44         the ARGLIST opcode.
45
46         Fixes #601953
47
48 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
49
50         * class.c (mono_bounded_array_class_get): Fail arrays
51         of void or typedbyref. Those two types are not allowed
52         to be used with arrays. Failing them is easier and less
53         error prone than returning NULL.
54
55         Fixes #603279
56
57 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
58
59         * object.c (mono_get_delegate_invoke): Don't assert if
60         the Invoke method is not found. This can happen with
61         broken types and it's the caller resposibility to deal
62         with a null return.
63
64         Fixes #553403
65
66 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
67
68         * class.c (mono_assembly_name_from_token): Handle
69         images with null assembly. This can happen with resource
70         or broken assemblies.
71
72         Fixes #623586.
73
74 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
75
76         * class.c (concat_two_strings_with_zero): Guard against
77         null strings.
78
79         Modified version of patch by Sebastien Pouliot.
80
81         Fixes #623653.
82
83 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
84
85         * image.c (mono_image_load_module): Handle the case of
86         module index equal or smaller than zero. It is possible
87         to embed a valid zero index into metadata so this case
88         must be explicitly handled.
89
90         Patch by Sebastien Pouliot.
91
92         Fixes #623581.
93
94 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
95
96         * metadata-verify.c (INVALID_IMPLMAP_FLAGS_BITS): Add non standard
97         bits for best fit on/off (4,5) and throw on unmappable on/off (12/13).
98
99         Fixes #622221.
100
101 2010-07-27  Geoff Norton  <gnorton@novell.com>
102
103         * sgen-archdep.h: Ensure we store the registers we actually
104         need to scan.
105
106 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
107
108         * verify.c (do_invoke_method): Improve error message.
109
110 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
111
112         * verify.c (mono_generic_param_is_constraint_compatible): Don't
113         fail a contraint check even if the candidate has no constraints.
114         All constraints might resolve to the candidate itself so it can
115         have none.
116
117         Fixes #622225.
118
119 2010-07-25  Mark Probst  <mark.probst@gmail.com>
120
121         * sgen-internal.c: Only compile this if HAVE_SGEN_GC is defined.
122
123 2010-07-24  Mark Probst  <mark.probst@gmail.com>
124
125         * sgen-internal.c, sgen-gc.h, sgen-major-copying.c: Make the
126         internal allocator fast by keeping free-lists of chunks, not only
127         within chunks.  Align the chunks, so that on freeing we can get
128         the chunk without searching.
129
130 2010-07-24  Mark Probst  <mark.probst@gmail.com>
131
132         * sgen-internal.c, sgen-gc.c, sgen-gc.h, sgen-gray.c,
133         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning-stats.c,
134         sgen-pinning.c: Allocate fixed-size structs without specifying the
135         size, instead registering it once with its type.
136         Dynamically-sized need their size specified when being freed.
137
138 2010-07-24  Mark Probst  <mark.probst@gmail.com>
139
140         * sgen-major-copying.c, sgen-internal.c, sgen-gc.c, sgen-gc.h,
141         sgen-pinning.c: Copying major collector doesn't mess around with
142         internals of the internal allocator anymore, instead using public
143         functions.
144
145 2010-07-24  Mark Probst  <mark.probst@gmail.com>
146
147         * sgen-internal.c: Internal allocator in its own module.
148
149         * sgen-gc.c, sgen-gc.h, sgen-gray.c, sgen-los.c,
150         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning.c,
151         sgen-pinning-stats.c: Remove internal allocator and call the
152         public functions now.
153
154         * Makefile.am: Added new file.
155
156 2010-07-24  Zoltan Varga  <vargaz@gmail.com>
157
158         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix warnings on amd64.
159
160 2010-07-24  Sanjoy Das <sanjoy@playingwithpointers.com>
161
162         * sgen-gc.h: Removed 'foo defined but not used' warnings for the
163           *_signal_num variables.
164
165 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
166
167         * file-io.c (ves_icall_System_IO_MonoIO_Read): Add a null check.
168         (ves_icall_System_IO_MonoIO_Write): Ditto.
169
170         * loader.c (mono_loader_cleanup): Delete loader_mutex, the shutdown races should
171         be fixed now.
172
173 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
174
175         * loader.c (mono_loader_lock_if_inited): New helper function which can be called
176         during startup before the loader lock is initialized.
177         (mono_loader_unlock_if_inited): Ditto.
178
179
180 2010-07-21  Geoff Norton  <gnorton@novell.com>
181
182         * sgen-archdep.h: Fix the build on amd64-darwin.
183
184 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
185
186         * object.c (mono_print_unhandled_exception): Fix a warning.
187
188 2010-07-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
189
190         * threadpool.c: use a monitor thread to start up new ones when needed.
191         Fixes bug #622398.
192
193 Thu Jul 15 18:44:44 CEST 2010 Paolo Molaro <lupus@ximian.com>
194
195         * reflection.c, class-internals.h, class.c, icall.c: support
196         reflection of default constant value for Re.Emit properties.
197
198 2010-07-14  Miguel de Icaza  <miguel@novell.com>
199
200         * reflection.c (load_cattr_value): Add support for encoding
201         DateTime constants into the blob.    Turns out that this is
202         required by .NET, it was only documented post 1.0.
203
204         * icall.c (ves_icall_type_GetTypeCodeInternal): Guard test for
205         System.Decimal and System.DateTime inside a mono_is_corlib_image
206         call.   A sample program showed that we could return the wrong
207         TypeCode just by creating a class with those names. 
208
209         * class.c (mono_is_corlib_image): Exposed this to other metadata/
210         code.
211
212 2010-07-14  Sebastien Pouliot  <sebastien@ximian.com>
213
214         * security-core-clr.c: Don't abort (only warn) if we cannot find 
215         a caller for relfecting code (transparent is assumed). Fix
216         get_method_access_exception to accept a NULL caller.
217
218 2010-07-14  Mark Probst  <mark.probst@gmail.com>
219
220         * sgen-gc.c: Heavy statistics on the internal allocator.
221
222 2010-07-13  Mark Probst  <mark.probst@gmail.com>
223
224         * sgen-marksweep.c, sgen-gc.h: Keep track of num_empty_blocks
225         properly and in a thread-safe way.
226
227 2010-07-13  Mark Probst  <mark.probst@gmail.com>
228
229         * sgen-gc.c, sgen-marksweep.c: Make object marking thread-safe.
230
231 2010-07-13  Mark Probst  <mark.probst@gmail.com>
232
233         * sgen-gc.c: Versions of safe_object_get_size() and
234         copy_object_no_checks() that work without the object's vtable
235         intact, by passing the correct vtable as an argument.
236
237 2010-07-13  Mark Probst  <mark.probst@gmail.com>
238
239         * sgen-marksweep.c: Make allocation of major sections thread-safe.
240
241 2010-07-13  Mark Probst  <mark.probst@gmail.com>
242
243         * sgen-gc.c, sgen-gc.h, sgen-los.c, sgen-major-copying.c,
244         sgen-marksweep.c: Update the heap boundaries thread-safe and lock
245         free if parallel mark is enabled.
246
247 2010-07-13  Mark Probst  <mark.probst@gmail.com>
248
249         * sgen-gc.c, sgen-gc.h, sgen-major-copying.c: Lock the internal
250         allocator if parallel mark (not committed yet) is enabled.
251
252 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
253
254         * reflection.c (inflate_mono_method): Handle dynamic
255         generic instances that have method.count set but
256         methods not. Fixes another crash from boo's test suite.
257
258 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
259
260         * icall.c (ves_icall_MonoMethod_get_base_method): If
261         the method slot is bigger than the class vtable, return
262         the original method. Makes booc work again.
263
264 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
265
266         * verify.c (mono_generic_param_is_constraint_compatible):
267         The candidate type itself might satisty the required
268         constraints.
269
270         Fixes #621599.
271
272 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
273
274         * reflection.c (fix_partial_generic_class): Inflate the
275         generic instance parent in case it was changed after
276         MonoGenericClass was instantiated.
277
278         Fixes one of the issues from #389886.
279
280 2010-07-10  Mark Probst  <mark.probst@gmail.com>
281
282         * sgen-gray.c: Store only a pointer to one end of the gray queue.
283
284 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
285
286         * loader.c (mono_method_signature_checked): Release the domain
287         lock on failure.
288
289 2010-07-10  Mark Probst  <mark.probst@gmail.com>
290
291         * sgen-gc.c: Store the forwarding address in the first word of an
292         object, where the forwarding bit is stored.
293
294 2010-07-10  Mark Probst  <mark.probst@gmail.com>
295
296         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
297         interface to register our Mach exception thread which will not be
298         suspended by stop-the-world.
299
300 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
301
302         * loader.c (mono_get_method_constrained): Properly unlock the
303         domain lock on failure. Use checked variant of
304         inflate_generic_signature.
305
306 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
307
308         * loader.c (mono_method_signature_checked): Use checked
309         variant of inflate_generic_signature.
310
311         Fixes #606353.
312
313 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
314
315         * metadata.c (mono_metadata_parse_type_internal): Don't use
316         cannonical types when a transient type was requested.
317
318         Fixes #608626.
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         All functions that touch the gray queue directly or indirectly now
324         take it as an argument.
325
326 2010-07-10  Mark Probst  <mark.probst@gmail.com>
327
328         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
329         Put the gray queue data into a struct and pass it around.
330
331 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
332
333         * class.c (mono_method_can_access_method_full): Handle type
334         accessibility with very deep nested types.
335
336         * class.c (mono_method_can_access_field_full): Ditto.
337
338         Fixes #619300.
339
340 2010-07-10  Mark Probst  <mark.probst@gmail.com>
341
342         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
343         sgen-scan-object.h: Use a macro for rounding up sizes and
344         addresses to ALLOC_ALIGN.
345
346 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
347
348         * file-io.c: fix GetFileSystemEntries for patterns containing
349         directories.
350
351 2010-07-09  Mark Probst  <mark.probst@gmail.com>
352
353         * sgen-marksweep.c (major_finish_major_collection): Don't free
354         major heap blocks on 32 bit platforms because it can lead to
355         address space fragmentation.  We'll figure this out later.
356
357 2010-07-09  Mark Probst  <mark.probst@gmail.com>
358
359         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
360         heap blocks for mark&sweep eventually.
361
362 2010-07-09  Mark Probst  <mark.probst@gmail.com>
363
364         * sgen-protocol.c: Fix build when binary protocol is disabled.
365
366 2010-07-09  Mark Probst  <mark.probst@gmail.com>
367
368         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
369         thread-safe.
370
371 2010-07-08 Neale Ferguson <neale@sinenomine.net>
372
373         * sgen-archdep.h: Add support for s390x
374         * domain.c: Use gsize so that 64-bit big endian systems produce 
375         bitmap.
376
377 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
378
379         * pedump.c (verify_image_file): Initialize the vtable as well.
380
381 2010-07-07  Geoff Norton  <gnorton@novell.com>
382
383         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
384         header.
385
386 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
387
388         * assembly.c (mono_assembly_load_reference): Replace a g_warning
389         with a mono_trace calls. This makes compiling MD a lot less scary.
390
391 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
392
393         * verify.c (do_stobj): Improve error message.
394
395 2010-07-08  Mark Probst  <mark.probst@gmail.com>
396
397         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
398         from the object because it might have pinned/forwarding bits set.
399
400 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
401
402         * Makefile.am (sgen_sources): Add missing sgen files.
403
404 2010-06-07  Martin Baulig  <martin@ximian.com>
405
406         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
407         New helper function since mono_thread_get_abort_signal() is now
408         internal.
409
410 2010-06-07  Martin Baulig  <martin@ximian.com>
411
412         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
413
414 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
415
416         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
417         public, as mono_string_to_utf_8 is deprecated.
418
419         * object.(c|h): Added mono_object_to_string, a public helper function 
420         that calls ToString on a MonoObject and returns a MonoString.
421
422         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
423
424 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
425
426         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
427         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
428         match their declarations and vice-versa.
429
430
431 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
432
433         * class-internals.h, domain-internals.h: mark functions that are
434         needed by the llvm module.
435
436 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
437
438         * assembly.c (framework_assemblies): Add 3.5 assemblies.
439
440         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
441         by one to have room to remap 3.5 assemblies.
442
443         * domain.c (supported_runtimes): Add 3.5 remapping information.
444
445 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
446
447         * reflection.c (mono_image_create_token): Handle a
448         FieldBuilder from a different assembly.
449
450         Fixes #611836.
451
452 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
453
454         * verify.c (do_store_static_field): Improve error
455         message.
456
457 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
458
459         * assembly.c: Revert r159692 since it breaks loading 3.5
460         assemblies under 2.0.
461
462 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
463
464         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
465         TypedByRef is passed.
466
467         * icall.c (ves_icall_Type_make_byref_type): Ditto.
468
469         * icall.c (ves_icall_Type_MakePointerType): Ditto.
470
471         Fixes #612780.
472
473 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
474
475         * assembly.c: Add a few more assemblies to the list of framework
476         assemblies.
477
478         Fixes #617714.
479
480 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
481
482         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
483         fails.
484
485 2010-06-25  Mark Probst  <mark.probst@gmail.com>
486
487         * class.c (mono_class_inflate_generic_method_full_checked): Added
488         a comment regarding a hack in mini-trampolines.c.
489
490 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
491
492         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
493         sizeof(SIZEOF_VOID_P) which is 4.
494
495         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
496
497 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
498
499         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
500         GCs too.
501
502         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
503
504         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
505         objects.
506
507         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
508         desktop mode.
509
510 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
511
512         * *-gc.c (mono_gc_get_description): New function returning a human readable
513         description of the current GC.
514
515 2010-06-24  Miguel de Icaza  <miguel@novell.com>
516
517         * mono-hash.c: Moved here from mono/utils as this file is
518         GC-aware, and the utils directory is not.
519
520 2010-06-23  Miguel de Icaza  <miguel@novell.com>
521
522         * Makefile.am: Add support for building a sgen-aware versions of
523         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
524         they share all the components of the default, but use a differen
525         set of CFLAGS to enable SGEN instead.
526
527         Put the BOEHM defines in the CFLAGS definition. 
528
529         * domain-internals.h (MonoJitInfo): this structure used to have
530         different sizes depending on the GC that was configured (Boehm vs
531         SGen).   I have removed this difference for the sake of avoiding
532         the complexity of dealing with the mono/arch directory requiring
533         GC-specific changes to their Makefiles.
534
535 2010-06-23  Mark Probst  <mark.probst@gmail.com>
536
537         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
538
539 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
540
541         * metadata.c (mono_metadata_type_hash): Don't hash
542         the type kind for dynamic types since it can change.
543
544 2010-06-22 Geoff Norton  <gnorton@novell.com>
545
546         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
547         alloca instead to prevent a deadlock.
548
549 2010-06-22  Geoff Norton  <gnorton@novell.com>
550
551         * domain.c: Allow gettings the tls key, since we need it for
552         cross thread tls poking in sgen-mach
553         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
554         in external files for platform specific STW support.
555         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
556         * sgen-os-posix.c: Move the existing posix signal based STW here.
557
558 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
559
560         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
561
562 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
563
564         * object-internals.h: Map new PropertyBuilder fields.
565
566         * reflection.c (property_encode_signature): Emit an instance
567         signature if property's callconv is hasthis.
568
569         * appdomain.c: Bump corlib version.
570
571 2010-06-20  Jb Evain  <jbevain@novell.com>
572
573         * metadata-verify.c: do not consider the assembly invalid if it
574         doesn't have a #Blob stream as resource assemblies don't
575         necessarily have one.
576
577 2010-06-17  Geoff Norton  <gnorton@novell.com>
578
579         * sgen-archdep.h: sgen support for arm linux and darwin.
580
581 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
582
583         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
584         has a faulty header.
585
586 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
587
588         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
589         way to mono_gc_wbarrier_value_copy but takes a bitmap that
590         indicates which slots need a write barrier.
591
592 2010-06-14  Jonathan Pryor <jpryor@novell.com>
593
594         * Makefile.am (EXTRA_DIST): Add runtime.h.
595
596 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
597
598         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
599
600 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
601
602         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
603         IMT slot which is passed to callbacks.get_imt_trampoline.
604
605 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
606
607         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
608         imt trampoline per imt slot when using LLVM.
609
610 2010-06-10  Jonathan Pryor <jpryor@novell.com>
611
612         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
613           runtime.c:mono_runtime_shutdown().
614         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
615           AppDomain.ProcessExit event in all AppDomains.
616
617 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
618
619         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
620         done by the caller.
621
622 2010-06-05  Mark Probst  <mark.probst@gmail.com>
623
624         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
625         up freeing.
626
627 2010-06-05  Mark Probst  <mark.probst@gmail.com>
628
629         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
630         segments of memory at once, to reduce the number of mmap/munmap
631         calls.
632
633 2010-06-05  Mark Probst  <mark.probst@gmail.com>
634
635         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
636         allocations and distinguish between normal, degraded and pinned
637         allocations.
638
639 2010-06-05  Mark Probst  <mark.probst@gmail.com>
640
641         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
642         allocations count toward major collections and trigger major
643         collections from degraded allocations if appropriate.
644
645 2010-06-05  Mark Probst  <mark.probst@gmail.com>
646
647         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
648
649 2010-06-05  Mark Probst  <mark.probst@gmail.com>
650
651         * sgen-gc.c: Enable mark&sweep again.
652
653 2010-06-05  Mark Probst  <mark.probst@gmail.com>
654
655         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
656
657 2010-06-05  Mark Probst  <mark.probst@gmail.com>
658
659         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
660         major heap allowance for minor collections, instead of two
661         separate ones for small and large objects.  This reduces the
662         number of major collections.
663
664 2010-06-04  Marek Habersack  <mhabersack@novell.com>
665
666         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
667         the BFLAGS_IgnoreCase is raised
668
669 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
670
671         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
672         all information in a single structure. Return information about scopes as well.
673
674         * mono-debug.c (mono_debug_lookup_locals): Ditto.
675
676 2010-06-02  Geoff Norton  <gnorton@novell.com>
677
678         * appdomain.c: If we are running with IOMAP we might
679         have been provided a string that isn't case-aware for our file-
680         system, so we need to use io-portability to check if the file 
681         exists, rather than a simple glib test.
682
683         Fixes #608849
684
685 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
686
687         * verify.c (verify_generic_parameters): Verify if
688         there are not loops in constraints.
689
690 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
691
692         * verify.c (is_compatible_boxed_valuetype): Constaints
693         must be recursively checked if one generic argument
694         has a constraint on another.
695
696         Fixes #610625.
697
698 2010-05-31  Miguel de Icaza  <miguel@novell.com>
699
700         * console-unix.c (terminal_get_dimensions): Fix my previous
701         botched commit and return the actual value obtained from the ioctl.
702
703 2010-05-29  Mark Probst  <mark.probst@gmail.com>
704
705         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
706         references so that we don't have to do the cache-cold fetch of the
707         class in copy_object_no_checks().
708
709 2010-05-29  Robert Jordan  <robertj@gmx.net>
710
711         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
712         mono_marshal_string_to_utf16_copy () to avoid memory allocation
713         mismatches under Windows. Fixes pinvoke2:test_0_asany.
714
715 2010-05-28  Mark Probst  <mark.probst@gmail.com>
716
717         * sgen-gc.c: Change default nursery size to 4MB, because it
718         improves performance on many applications and benchmarks.
719
720 2010-05-28  Mark Probst  <mark.probst@gmail.com>
721
722         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
723         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
724         the GC descriptor by one bit, and don't encode the size for value
725         types not containing references.  Also get rid of
726         DESC_TYPE_STRING.
727
728 2010-05-28  Mark Probst  <mark.probst@gmail.com>
729
730         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
731         other than for remset processing.
732
733 2010-05-28  Mark Probst  <mark.probst@gmail.com>
734
735         * sgen-gc.c: More and better remset consistency checks.
736
737 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
738
739         * sgen-gc.c: Add a note about the int[] trick to avoid some
740         memset.
741
742 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
743
744         * sgen-gc.c (sort_addresses): Use heap sort since it has better
745         performance.
746
747         This helps programs with lots of threads or thread with big stacks
748         since the bottleneck the pin queue can get quite big.
749
750 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
751
752         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
753         a separate function called setup_fragment.
754
755         * sgen-gc.c (search_fragment_for_size_range): Variant of
756         search_fragment_for_size that does search for a secondary smaller
757         size.
758
759         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
760         for tlab allocation so small fragments are used.
761
762         This patch uses small fragments for tlab allocation when possible in order
763         to improve nursery utilization. With a fixed size tlab this patch is not very
764         usefull but once size gets dynamically adjusted, this will be invaluable.
765
766         Performance under pystone 500k is unchanged. Nursery utilization improves by
767         3.5% and 18 more fragments are used per minor GC.
768
769         Performance under modified binary-tree is unchanged. Nursery utilization
770         improves by 0.5% and 3 more fragments are used per minor GC.
771
772         These numbers make sense since as more pinning happens, more fragments are
773         created and so are the chances of having a bunch of small ones.
774
775 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
776         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
777         the current fragment when allocating a TLAB.
778
779         Reduces number of pystone 500k minor collections by 7%.
780
781 2010-05-25  Martin Baulig  <martin@ximian.com>
782
783         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
784
785         * debug-mono-symfile.c: Release memory from symfiles that were
786         loaded from memory.
787
788 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
789
790         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
791         during shutdown.
792
793 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
794
795         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
796         target class and remove some dead code.
797
798 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
799
800         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
801         the MonoTypes inside method headers can be freed when the header is freed.
802
803 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
804
805         * threadpool.c: Fix the DISABLE_SOCKETS build.
806
807 2010-05-19 Martin Baulig  <martin@novell.com>
808
809         Fix #604911.
810
811         * threads.c (wait_for_tids_or_state_change): Use an
812         alertable WaitForMultipleObjectsEx().
813         (wait_for_tids): Likewise.
814
815 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
816
817         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
818         icall.
819
820         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
821         gc tracked memory.
822
823         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
824         argument from a gchandle.
825
826         * marshal.c: Get rid of the delegate_target_locations hash table.
827
828         Fixes #605295.
829
830 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
831
832         * sgen-gc.c: Use _fast variants for string and array length.
833
834 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
835
836         * sgen-gc.c: Fix counters to be 64 bits.
837
838         * sgen-gc.c (dump_heap): Fix formating strings.
839
840 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
841
842         * sgen-gc.c (global_remset_location_was_not_added): New
843         function that implements a 2 element LRU cache for just
844         added remsets. It is used to avoid adding duplicate ones.
845
846         * sgen-gc.c (add_to_global_remset): Check cache before
847         adding new entry.
848
849         * sgen-gc.c (scan_from_remsets): Don't process global remsets
850         that fail the cache test.
851
852         * sgen-gc.c (scan_from_remsets): Simplify the global remset
853         loop removing one condtion that is not possible.
854
855         A 2 element LRU cache was chosen by profiling IronPython 2.6
856         pytones with 1M passes and corlib compilation.
857
858         For the ipy test duplication was originally 940.92, measured
859         by "Store remsets" divided by "Unique store remsets".
860
861         With a 2-element LRU, duplication went to 1.007. Without the
862         check in scan_from_remsets 1.438.
863
864         With a 16-elements LRU, duplication reduction was negligibe.
865         A single element cache was basically of no use.
866
867         With corlib compilation duplication went from  1.4 to 1.02.
868
869         Performance results is a 20% time decrease for ipy and 2%
870         with corlib.
871 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
872
873         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
874
875 2010-05-15  Geoff Norton  <gnorton@novell.com>
876
877         * mono-debug.c: Fix a leak of the global table on shutdown.
878
879 2010-05-15  Geoff Norton  <gnorton@novell.com>
880
881         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
882         to clean up MonoDebugSourceLocation's.
883
884 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
885
886         * class.c (mono_class_create_from_typedef): Fail a class
887         if there is a loop with its parent.
888
889         Fixes #598239.
890
891 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
892
893         * loader.c (mono_loader_set_error_type_load): Convert
894         a g_warninig to mono_trace_warning.
895
896 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
897
898         * class.c (mono_class_get_full): Release strings on failure
899         to avoid leaking them.
900
901 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
902
903         * class.c (mono_class_create_from_typedef): Only return
904         the class if no exceptions were detected.
905
906         * class.c (mono_class_create_from_typedef): Don't remove
907         broken classes from class_cache. Just set failure and
908         bail out.
909
910         This fixes a memory a memory leak where resolving the same
911         broken class multiple times resulted in a memory leak.
912
913         The right behavior would be to actually return the class
914         a let the caller figure it out.
915
916 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
917
918         * mono-ptr-array.h: Add mono_ptr_array_sort.
919
920         * reflection.c (mono_image_build_metadata): Replace that ugly
921         qsort call with mono_ptr_array_sort.
922
923 2010-05-13  Mark Probst  <mark.probst@gmail.com>
924
925         * sgen-gc.c: Switch to the copying major collector, because
926         Mark&Sweep is still buggy.
927
928 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
929
930         * reflection.c (mono_image_build_metadata): Don't put managed
931         references on non-tracked memory.
932
933 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
934
935         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
936
937 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
938
939         * icall.c: Switch to mono-ptr-array.h.
940
941 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
942
943         * Makefile.am: Add mono-ptr-array.h.
944
945         * mono-ptr-array.h: New header that implements
946         a GC tracked equivalent of g_ptr_array. 
947
948 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
949
950         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
951         method to avoid initializing the class.
952
953         Fixes #605115.
954
955 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
956
957         * icall.c (ves_icall_System_MonoType_getFullName): It
958         doesn't require to init the class.
959
960 2010-05-11  Miguel de Icaza  <miguel@novell.com>
961
962         * console-unix.c: Signal handlers now save and restore errno.   We
963         have never had a bug report about this, ioctl does change errno. 
964
965         Hide the unused method.   
966
967         Remove internal declarations from public headers.
968
969         Document what the signal handler is doing
970
971 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
972
973         * sgen-gc.c (clear_unreachable_ephemerons): Clear
974         unreachable keys with a tombstone.
975
976         * sgen-gc.c (mark_ephemerons_in_range): Ignore
977         tombstone keys.
978
979 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
980
981         * icall-def.h:
982         * gc-internals.h:
983         * gc.c: New GC:get_ephemeron_tombstone.
984
985 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
986
987         * appdomain.c (create_exceptions): Rename to
988         create_domain_objects. Create the ephemeron tombstone object.
989
990         * domains-internals.h (MonoDomain): Add new field for the
991         ephemeron tombstone.
992
993         * domain.c (mono_domain_free): Set ephemeron_tombstone to
994         NULL.
995
996 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
997
998         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
999         and dislinks must be processed before LOS since they
1000         could end up with pointers to memory returned to the
1001         OS.
1002
1003 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
1004
1005         * class.c (mono_class_alloc): New helper function to centralize memory allocation
1006         for classes, allocates either from the image mempool or from the heap.
1007
1008         * class.c: Use mono_class_alloc to allocate memory owned by classes.
1009
1010         * metadata.c (free_generic_class_dependents): Free more items belonging to
1011         generic classes.
1012
1013 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
1014
1015         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
1016         as well. Fixes #604054.
1017
1018 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1019
1020         * metadata-verify.c: MS doesn't mind duplicates in the
1021         typeref table. Move it to full verification.
1022
1023         Fixes #600508.
1024
1025 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1026
1027         * image.c (do_mono_image_load): Report verification
1028         errors when loading an image fails.
1029
1030 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1031
1032         * reflection.c (mono_type_get_object): Remove chunk of code
1033         no longer in use.
1034
1035 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1036
1037         * icall-def.h
1038         * icall.c: Delete some unused icalls.
1039
1040 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1041
1042         * appdomain.c (mono_domain_has_type_resolve): Check for
1043         NULL domain objects to make pedump happy.
1044
1045         * object.c (mono_field_get_value): Assert on NULL object.
1046         It's the caller resposibility to check for this.
1047
1048         * object.c (mono_field_get_value_object): Ditto.
1049
1050         Fixes #601384.
1051
1052 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1053
1054         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
1055         checks can avoid doing a mono_class_init.
1056
1057         * icall.c: Remove mono_class_init from a bunch of icalls that
1058         don't need it.
1059
1060         Hopefully we're now lazy enough to fix most victims of #601431.
1061
1062 2010-05-07  Mark Probst  <mark.probst@gmail.com>
1063
1064         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
1065
1066 2010-05-07  Mark Probst  <mark.probst@gmail.com>
1067
1068         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
1069
1070 2010-05-07  Marek Habersack  <mhabersack@novell.com>
1071
1072         * culture-info-tables.h: updated to include en-TT culture. Fixes
1073         bug #594035
1074
1075 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1076
1077         Move mono_class_init from mono_type_get_object to icalls.
1078         This causes massive memory savings for Assembly::GetTypes () and
1079         make it fail a lot less due to missing dependencies.
1080
1081         This is a conservative, naive change as it doesn't remove some
1082         mono_class_init from places that might not need them. Carefull
1083         review of those should follow.
1084
1085         * reflection.c (mono_type_get_object): Don't mono_class_init the
1086         returning type.
1087
1088         * reflection.c:
1089         * cominterop.c:
1090         * icall.c:
1091         * marshal.c: Call mono_class_init in functions receiving a MonoType
1092         object.
1093
1094         First step into fixing #601431.
1095
1096 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1097
1098         * gc-internal.h: Add new functions required for ephemeron support.
1099
1100         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
1101
1102         * icall-def.h: Add GC::register_ephemeron_array.
1103
1104         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
1105         under sgen. Its fields must not be marked.
1106
1107         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
1108
1109         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
1110         handling finalizable objects. Clean dead ones after all finalizable
1111         handling.
1112
1113         * sgen-gc.c (dump_heap): Add new kind of internal memory.
1114
1115         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
1116         arrays from the dead domain.
1117
1118         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
1119
1120         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
1121         whose keys are reachable.
1122
1123         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
1124         list of live ephemeron arrays.
1125
1126 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1127
1128         * class.c (mono_class_layout_fields): Don't perform alignment
1129         if align is zero.
1130
1131         * class.c (mono_class_layout_fields): Init field related information
1132         to sane defaults.
1133
1134 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1135
1136         * verify.c (mono_verifier_verify_class): Verify the constraint
1137         of generic type definitions.
1138
1139 2010-05-04  Mark Probst  <mark.probst@gmail.com>
1140
1141         * sgen-marksweep.c: Simplify free list maintenance in sweep.
1142
1143 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1144
1145         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
1146         major_do_collection() across the two major collectors.
1147
1148 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1149
1150         * sgen-gc.c: Add heavy statistics counter for re-added global
1151         remsets.
1152
1153 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1154
1155         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
1156         get rid of a division in critical code.
1157
1158 2010-04-29  Mark Probst  <mark.probst@gmail.com>
1159
1160         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
1161         blocks for objects without references in mark&sweep, to improve
1162         performance.
1163
1164 2010-04-28  Mark Probst  <mark.probst@gmail.com>
1165
1166         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
1167         statistics up-to-date.
1168
1169 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1170
1171         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
1172         heap-dump for mark&sweep.
1173
1174 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1175
1176         * loader.c (mono_method_get_header): Move the is_inflated case before the
1177         wrapper case, as a method can be both.
1178
1179 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1180
1181         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
1182         separate pass to scan pinned and large object but use the gray
1183         queue like for regular objects.
1184
1185 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1186
1187         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
1188         string.h for memmove.
1189
1190         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
1191         ipaddress_to_struct_in6_addr() is only needed when
1192         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
1193
1194 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1195
1196         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
1197         separate copy_object functions for major vs nursery.  Allows us to
1198         get rid of a few checks and the start and end parameters for many
1199         functions.
1200
1201 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1202
1203         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
1204         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
1205         collector.
1206
1207 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
1208
1209         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
1210         calling setup_mono_type () since the nested parent could recursively reference
1211         the nested class using generic constraints. Fixes #599469.
1212
1213 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1214
1215         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
1216         abstraction.
1217
1218 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1219
1220         * sgen-gc.c: Remove more unneeded code.
1221
1222 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1223
1224         * sgen-gc.c: Disable managed allocator and wbarrier when the
1225         binary protocol is enabled.
1226
1227 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1228
1229         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
1230
1231 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1232
1233         * sgen-gc.c: Remove a few commented out and unneeded bits.
1234
1235 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1236
1237         * threadpool.c: patch from Robert Nagy that fixes a nullref and
1238         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
1239
1240 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1241
1242         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
1243         types.
1244
1245         Fixes #331126
1246
1247 2010-04-21  Mark Probst  <mark.probst@gmail.com>
1248
1249         * sgen-gc.c: Turn off semi-precise stack mark.
1250
1251 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
1252
1253         * reflection.c (mono_custom_attrs_from_index): Use right function
1254         to free 'list' (i.e. g_list_free) if the verifier fails.
1255
1256 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1257
1258                 * verify.c: Handle the case where mono_type_get_underlying_type_any
1259                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
1260                 and MONO_TYPE_VALUETYPE in those case.
1261
1262                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
1263
1264                 Hopefully Fixes #564253.
1265
1266 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
1267
1268         * domain-internals.h: made threadpool_jobs volatile.
1269         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
1270         all local jobs.
1271         * threadpool.c:
1272                 -When two threads try to initialize the socket IO pool,
1273                 the second one waits until the intialization is finished
1274                 instead of continuing right away.
1275                 -Add checks for domain unload: no items added in this case.
1276                 -Only measure the time every 10 elements added to the queue.
1277                 This is an experiment since linux x86 gettimeofday() sucks.
1278                 -Create new thread if there are none waiting for work items.
1279                 -There was a missing decrement of the busy threads.
1280                 -Make sure the local queue is cleaned up before exiting the
1281                 thread when the program ends.
1282
1283 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1284
1285         * reflection.c (mono_type_get_object): Normalize generics types
1286         as to how managed code expect them to be. A generic instance over
1287         the GTD arguments must have the same mirror as the GTD itself.
1288
1289         Fixes #473289.
1290
1291 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1292
1293         * locales.c: Implement support for DISABLE_NORMALIZATION.
1294
1295 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1296
1297         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1298         since it is not a MonoMethod.
1299
1300 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1301
1302         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1303         System.Security.SecurityManager - used only by Moonlight
1304         * security-core-clr.c|h: Add Elevated Trust/Permission support
1305         for CoreCLR / Moonlight
1306
1307 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1308
1309         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1310         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1311
1312 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1313
1314         * mono-perfcounters.c: added code for the "Mono
1315         Memory/Total Physical Memory" performance counter.
1316
1317         * mono-perfcounters-def.h: added definition of the "Mono
1318         Memory/Total Physical Memory" performance counter.
1319
1320 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1321
1322         * class.c (mono_class_get_method_by_index): Return NULL
1323         on type load failures.
1324
1325 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1326
1327         * class.c (mono_class_from_typeref): Check if the supplied
1328         image has an assembly bound to it.
1329
1330         Fixes #567884.
1331
1332 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1333
1334         * loader.c (mono_method_get_signature_full): Use new function
1335         inflate_generic_signature_checked to check for errors.
1336
1337         Fixes #560839.
1338
1339 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1340
1341         * loader.c (inflate_generic_signature): Add _checked variant
1342         and move this function to use it.
1343
1344 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1345
1346         * class.c (mono_class_setup_vtable_general): Use error checking
1347         version of mono_class_inflate_generic_method_full.
1348
1349         Fixes #596975.
1350
1351 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1352
1353         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1354         error handling passing MonoError around.
1355
1356         Fixes #560336.
1357
1358 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1359
1360         * socket-io.c: make GetHostByName ("") work on windows.
1361         Fixes bug #456723.
1362
1363 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1364
1365         * object-internals.h:
1366         * threads.c: use a spin lock when accesing the per-thread appdomain
1367         list.
1368
1369 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1370
1371         * threads.c: no need to take the threads lock in push/pop appdomain.
1372
1373 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1374
1375         * reflection.c (_mono_reflection_parse_type): MS supports
1376         non-assembly-qualified types in a generic type parameter list
1377         when enclosed in '[]' (which signals that they should be a fqn).
1378
1379         This breaks ECMA specs for how type names are encoded in cattr
1380         blobs but F# does it.
1381
1382         Fixes #576342.
1383
1384 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1385
1386         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1387         for instance methods/ctors.
1388
1389         Fixes #422113.
1390
1391 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1392
1393         * reflection.c: Use the new verifier support for checking
1394         custom attributes.
1395
1396         Fixes #595306.
1397
1398 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1399
1400         * metadata-verify.c: Implement structural verification
1401         of custom attributes. This check requires access to the
1402         loader since to resolve the size of an enum we have to
1403         look it up.
1404         We don't check if named argumenments are encoded in a
1405         compatible fashion to their underlying field/prop.
1406         Maybe we should?
1407
1408         * verify-internals.h: Add two new cattr verification API.
1409
1410 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1411
1412         * metadata-verify.c (decode_signature_header): Fix signature.
1413
1414 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1415
1416         * verify.c (mono_verifier_is_enabled_for_method): Handle
1417         assembly less images.
1418
1419         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1420
1421 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * loader.c (mono_method_signature_checked): Properly
1424         init MonoError.
1425
1426         * loader.c (mono_method_signature): It's the calee
1427         resposibility to init the error object.
1428
1429 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1430
1431         * metadata-verify.c (decode_signature_header): Do proper
1432         overflow checking.
1433
1434 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1435
1436         * reflection.c: maintain the invariants required by
1437         mono_class_layout_fields() also in typebuilder_setup_fields ().
1438
1439 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1440
1441         * security-core-clr.c: Call mono_class_setup_methods in 
1442         get_default_ctor before checking klass->methods. Fix typo in
1443         comment
1444
1445 2010-04-10  Jb Evain  <jbevain@novell.com>
1446
1447         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1448         add .net 4.0 RTM version.
1449
1450 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1451
1452         * reflection.c (resolve_object): Properly inflate generic
1453         methods when a context is supplied.
1454
1455         Fixes #591226.
1456
1457 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1458
1459         * verify.c (mono_method_verify): A switch op don't empty
1460         the stack for the next one. Fixes a bug when running fsi
1461         under --verify-all.
1462
1463 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1464
1465         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1466         fields as valid standalone sig too. F# does generate them.
1467
1468         * metadata-verify.c (verify_typedef_table_full): Ignore
1469         what <module> extends.
1470
1471 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1472
1473         * verify.c (do_invoke_method): It's ok to do use call with
1474         virtual, non-final methods if their class is sealed.
1475
1476 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1477
1478         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1479         is a near identical copy of mono_field_get_value_object. So simply
1480         call it.
1481
1482         * object.c (mono_field_get_value_object): Handle literal fields
1483         on open generic classes.
1484
1485         Fixes #594942.
1486
1487 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1488
1489         * reflection.c (mono_reflection_create_runtime_class): Setup
1490         parent/supertype information again since it can be changed
1491         without notice.
1492
1493 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1494
1495         * verify.c (verify_type_compatibility_full): Properly handle
1496         stores between arrays of primitives.
1497
1498         Fixes the verifier side of #555950.
1499
1500 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1501
1502         class.c (mono_bounded_array_class_get): Properly init
1503         cast_class to take the fact that uint[] and int[] can be
1504         casted between each other.
1505
1506         Fixes #555950.
1507
1508 2010-04-07  Geoff Norton  <gnorton@novell.com>
1509
1510         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1511
1512 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1513
1514         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1515         builders. Fixes #594464.
1516
1517 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1518
1519         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1520         waiting for all threads to suspend, as those threads can't be suspended.
1521
1522 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1523
1524         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1525         to avoid crashes on newly created threads.
1526
1527 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1528
1529         * file-io.c: reset the MonoIOStat structure in case of error.
1530         Fixes bug #582667.
1531
1532 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1533
1534         * class.c (print_implemented_interfaces): Print proper type name.
1535
1536         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1537         the override map for generic instances since it later ignored.
1538
1539         * class.c (mono_class_implement_interface_slow): Don't break for
1540         dynamic generic instances.
1541
1542         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1543
1544         * reflection.c (mono_reflection_method_get_handle): New method that
1545         resolves a method handle.
1546
1547         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1548         case when we override methods from a dynamic generic instance interface.
1549
1550         Fixes #575941.
1551
1552 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1553
1554         * threadpool.c: don't attempt to close the pipe when it has not been
1555         created.
1556
1557 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1558
1559         * threadpool.c: if there are no waiting threads, try to start a new
1560         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1561         No need to use InterlockedCompareExchange to read volatile variables.
1562
1563 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1564
1565         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1566         and reference types that point to the same class.
1567
1568         Fixes #565598.
1569
1570 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1571
1572         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1573         when verifying compatibility between a generic instance and a generic
1574         parameter.
1575
1576         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1577
1578         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1579         name.
1580
1581         Fixes #587849.
1582
1583 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1584
1585         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1586
1587 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1588
1589         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1590
1591 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1592
1593         * process.c: when cross-compiling with MinGW, force GetProcessId
1594         lookup using GetProcAddress.
1595
1596 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1597
1598         * sgen-gc.c: parse_environment_string_extract_number() must be
1599         static.
1600
1601 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1602
1603         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1604         gray_object_dequeue(), to make sure they're inlined.
1605
1606 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1607
1608         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1609         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1610
1611 2010-04-02  Jb Evain  <jbevain@novell.com>
1612
1613         * exception.c: remove dead code.
1614
1615 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1616
1617         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1618         with mono-gc.h.
1619
1620 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1621
1622         * sgen-gc.c: Make the nursery size adjustable by the
1623         MONO_GC_PARAMS environment variable.
1624
1625         Code is contributed under MIT/X11 license.
1626
1627 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1628
1629         * threadpool.c: threadpool threads wait is alertable.
1630         Fixes bug #592964.
1631         Reduced the stack size of the *poll_wait thread.
1632
1633 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1634
1635         * exception.c|metadata-internals.h: Add new mono_get_exception_
1636         field_access_msg and mono_get_exception_method_access_msg 
1637         functions that accept a const char* parameter to provide more 
1638         details when the exception is thrown.
1639         * security-core-clr.c|h: Rework code to allow logging exceptions
1640         (export MONO_LOG_MASK="security") and to supply more details in
1641         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1642         mono_security_core_clr_is_field_access_allowed and 
1643         mono_security_core_clr_is_call_allowed to return an exception,
1644         with messages and logging, that can be emitted by method-to-ir.c
1645
1646 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1647
1648         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1649         pinned object.
1650
1651 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1652
1653         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1654         the assembly name is not well formed utf8. Fixes #567882.
1655
1656 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1659         the generic parameters from the builder. Fixes #473298.
1660
1661 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1662
1663         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1664
1665         * marshal.c (emit_marshal_boolean): Eliminate possible
1666         uninitialized local warning. 
1667
1668 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1669
1670         * class.c (mono_class_init): Postpone coreclr inheritance check
1671         until the end of the initialization (so we can check up the 
1672         default ctor manually for the core-clr inheritance rules).
1673         * security-core-clr.c: Add the missing (undocumented) checks on
1674         default constructors when verifying inheritance rules.
1675
1676 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1677
1678         * domain-internals.h (MonoJitExceptionInfo): Add new field
1679         handler_end to the data union. To be used to point the end
1680         of a finally block.
1681
1682 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1683
1684         * reflection.c: Add support for new v4 type
1685         System.Reflection.MonoModule that is the concrete version
1686         of Module which is abstract unver v4.
1687
1688 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1689
1690         * class.c (mono_class_init): Don't set class failure after
1691         inited = 1 is set. It must be done before.
1692
1693 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1694
1695         * mono-config.c: Add support for OS "haiku"
1696         * ChangeLog: Fix UTF-8 encoding
1697
1698         Code is contributed under MIT/X11 license.
1699
1700 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1701
1702         * console-unix.c: fixed include logic for sys/ioctl.h.
1703
1704 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1705
1706         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1707         systems.
1708
1709 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1712         unfinished/broken typebuilders.
1713
1714 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1715
1716         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1717         for the minor section allowance.
1718
1719 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1720
1721         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1722         "NoOptimization".
1723
1724 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1725
1726         * sgen-gc.c: Count bytes allocated with heavy statistics.
1727
1728 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1729
1730         * sgen-gc.c: More detailed time statistics.
1731
1732 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1733
1734         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1735         fix the user defined mark interface to pass a pointer
1736         to the object location and not the object itself.
1737
1738 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1739
1740         * reflection.c (mono_method_body_get_object): Release
1741         the method header before the call to CACHE_OBJECT since
1742         this is a macro that returns.
1743
1744 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1745
1746         * class.c (inflate_generic_type): mono_metadata_type_dup
1747         already dupes array information, the g_memdup was just
1748         leaking memory.
1749
1750 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1751
1752         * verify.c: Add stack_peek function. Fix CEE_DUP
1753         to not read from invalid memory if push did expand
1754         the stack.
1755
1756 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1757
1758         * verify.c: Remove old table verification code that has
1759         been superseeded by the new metadata verifier.
1760
1761         * verify.h: Remove mono_image_verify_tables from the public
1762         API.
1763
1764         * pedump.c: Fix for removed bits.
1765
1766 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1767
1768         * verify.c: Allocate stack slows lazily to reduce stack usage
1769         in case of methods with huge stacks. Reduces memory consumption
1770         for mcs yyparse from 459Mb to 1.8Mb.
1771
1772 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1773
1774         * threadpool.c: don't try executing items from domains being
1775         unloaded. Fixes appdomain-async-invoke test.
1776
1777 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1778
1779         * threadpool.c: spin while the threadpool initializes.
1780         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1781         down, don't do anything.
1782
1783 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * threads.c (mono_thread_create_internal): Set the GC type of the
1786         threads_starting_up hash table.
1787
1788 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1789
1790         * threadpool.c: reset 'state' to avoid returning non-null when the
1791         event type is not found.
1792
1793 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1794
1795         * sgen-gc.c: make copy_object () take the address of the
1796         slot holding the reference. This allows saving memory stores
1797         when not needed and it allows keeping track of oldspace->nursery
1798         references for the card table code.
1799
1800 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1801
1802         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1803
1804         Code is contributed under MIT/X11 license.
1805
1806 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1807
1808         * object.c, threads.c, threads-types.h, threads.h: make the
1809         managed thread local storage references precisely tracked.
1810
1811 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1812
1813         * threadpool.[ch]: reworked the threadpool:
1814                 -Threadpool threads use a work-stealing queue. Adding a work
1815                 item from a threadpool thread will queue it in the thread
1816                 local queue without locking (in most cases).
1817                 -epoll events are coalesced before being added to the IO
1818                 queue.
1819                 -Dynamically change the number of active threads
1820                 -Changed the global queue to be more GC friendly
1821
1822         * class-internals.h: add 2 new performance counters for the number of
1823         threads in the threadpool and the IO threadpool.
1824
1825         * object-internals.h: new field in MonoAsyncResult.
1826         * icall-def.h: new internal call for queueing work items.
1827
1828         * Makefile.am: add 2 new files.
1829
1830         * appdomain.c: bump up corlib version.
1831
1832         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1833
1834         * mono-perfcounters-def.h:
1835         * mono-perfcounters.c: added 2 new performance counters.
1836
1837 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1838
1839         * sgen-gc.c: More FIXME/TODO updates.
1840
1841 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1842
1843         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1844         function mono_gc_invoke_with_gc_lock() which invokes a function
1845         with the guarantee that no collection will occur during its execution.
1846
1847 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1848
1849         * sgen-gc.c: Update a few comments.
1850
1851 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1852
1853         * reflection.c: Add support for new v4 type
1854         System.Reflection.MonoAssembly that is the concrete version
1855         of Assembly which is abstract unver v4.
1856
1857 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1858
1859         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1860         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1861
1862         Expose a few macros that are needed for SR but not SRE to the
1863         world (previous inside the SRE ifdef)
1864
1865 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1866
1867         * sgen-gc.c (gc_register_current_thread): We need
1868         stack_start_limit as well in the non-attribute pthread case.
1869
1870 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1871
1872         * threads.c: Fix windows build.
1873
1874 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1875
1876         * thread-types.h: Add mono_thread_resume_interruption.
1877
1878         * threads.c: Add mono_thread_resume_interruption, this
1879         function should be called after the last protected handler
1880         found at interruption time has finished.
1881
1882 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1883
1884         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1885         Check MonoInternalThread's ::state instead of ::abort_exc
1886         since the later can be lazily created.
1887
1888         This is specially problematic when running a finally block
1889         under AbortRequested state. ResetAbort must work, but the
1890         abort_exc object has not been created because interruption
1891         has not began.
1892
1893 2010-03-22  Geoff Norton  <gnorton@novell.com>
1894
1895         * locales.c: Its possible for CFStringGetCStringPtr
1896         to return null and not convert encodings.  Use
1897         CFStringGetCString instead.
1898
1899 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1900
1901         * class-internals.h, class.c, object.c: introduce compressed
1902         interface bitmaps (for now only under small config): this saves
1903         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1904         startups.
1905
1906 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1907
1908         * mono-debug.c: don't try to get the method header, it causes a
1909         deadlock and it is not used for anything anymore.
1910
1911 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1912
1913         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1914         broken by the last change.
1915
1916 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1917
1918         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1919         SOCK_RDM.
1920         
1921         Code is contributed under MIT/X11 license.
1922
1923 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1924
1925         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1926         nursery.
1927
1928         Code is contributed under MIT/X11 license.
1929
1930 2010-03-19  Martin Baulig  <martin@ximian.com>
1931
1932         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1933         dummy field, containing an empty string.
1934         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1935
1936
1937 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1938
1939         * class.c: setup_interface_offsets() refactor to not call
1940         mono_class_get_implemented_interfaces () more times than needed and
1941         to reduce the runtime memory requirements to be O(num_interfaces)
1942         instead of O(max_interface_id).
1943
1944 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1945
1946         * mono-mlist.[ch]: add mono_mlist_set_next ().
1947
1948 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1949
1950         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1951         associated changes to support holes in the protected range of a
1952         try block.
1953
1954         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1955         retrieves the holes table from a given MonoJitInfo.
1956
1957 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1958
1959         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1960         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1961         hide the contents of the MonoString and MonoArray structs from the
1962         public API. Change the accessor macros to accessors functions where
1963         needed. Adjusted the array API to allow for pointer-sized lengths and
1964         starting positions, so 64 bit arrays can be optionally provided in an
1965         API compatible way if needed on 64 bit systems.
1966
1967 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1968
1969         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1970         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1971
1972 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1973
1974         * class-internals.h: remove the method header from MonoMethod since
1975         from now on it will be transient. We have a header pointer for method
1976         wrappers, since in that case we need to keep track of it. For this
1977         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1978         structs now. The same happens with MonoMethodInflated.
1979         * class.c: reset the sre_method flag for inflated method structures:
1980         this makes the code that cares look at the header in the MonoMethodInflated
1981         structure.
1982         * loader.c: lookup the method header in the appropriate field now that
1983         it is removed from MonoMethod.
1984         * metadata-internals.h: add a flag to the method header to know if it
1985         can be freed inside mono_metadata_free_mh ().
1986         * method-builder.c: updates after moving the header field from
1987         MonoMethod to MonoMethodWrapper.
1988         * reflection.c: MonoMethods generated from Reflection.Emit use
1989         MonoMethodWrapper structs if they need a method header now (later take
1990         advantage of this and remove all the current unsafe uses of method_aux_hash).
1991         * metadata.c: make method header parsing not leak when verification
1992         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1993         These changes save a few hundred KB of runtime memory in a mcs
1994         bootstrap or a monodevelop startup.
1995
1996 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1997
1998         * verify.c: Improve error message.
1999
2000 2010-03-12  Jb Evain  <jbevain@novell.com>
2001
2002         * reflection.c (add_exported_type): populate the exported
2003         table with the type's nested type.
2004
2005 2010-03-10  Mark Probst  <mark.probst@gmail.com>
2006
2007         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
2008         can't read parentheses.
2009
2010 2010-03-10  Mark Probst  <mark.probst@gmail.com>
2011
2012         * threads.c (thread_cleanup): Add a guard to dereferencing
2013         "thread" to avoid an unlikely race condition.
2014
2015 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
2016
2017         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
2018         instead of an empty string.
2019
2020 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2021
2022         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
2023         convert to a boolean, recent gcc versions compile this differently.
2024
2025 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2026
2027        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
2028        inlined.
2029
2030 2010-03-09  Mark Probst  <mark.probst@gmail.com>
2031
2032         * sgen-gc.c (STRING_SIZE): Off by one.
2033
2034 2010-03-09  Mark Probst  <mark.probst@gmail.com>
2035
2036         * sgen-archdep.h: Fix the signal context register access for
2037         AMD64.
2038
2039 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2040
2041         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
2042
2043 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
2044
2045         * verify.c: Store the initial basic block returned by mono_basic_block_split
2046         so we can release the whole list and not just the first one.
2047
2048 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2049
2050         * verify.c, debug-helpers.c, profiler.c, loader.c,
2051         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
2052         MonoMethodHeader a transient entity.
2053
2054 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
2055
2056         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
2057         uncontrolled growth of the gray stack.
2058
2059         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
2060         added items are removed first, improving cache locality. Avoid freeing queue
2061         segments in the fast path, use the list of segments as the free list, truncate
2062         it to its max size at the start of collection.
2063
2064 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
2065
2066         * metadata-internals.h: more memory savings, both with small config and without.
2067
2068
2069 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
2070
2071         * appdomain.c, domain-internals.h, domain.c, object.c:
2072         make class_vtable_hash into an array to reduce memory usage.
2073
2074 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
2075
2076         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
2077         object-internals.h, object.c, reflection.c, threadpool.c:
2078         reduce resource usage when the small config is selected.
2079         In particular, up to 64K of methods/fields/properties/events
2080         are allowed and "other" methods in events are ignored.
2081
2082 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
2083
2084         * threads.c: reduce resource usage when compiled for a small config.
2085
2086 2010-03-05  Mark Probst  <mark.probst@gmail.com>
2087
2088         * sgen-gc.c: Also collect number of degraded-alloced objects with
2089         heavy statistics.
2090
2091 2010-03-04  Geoff Norton  <gnorton@novell.com>
2092
2093         * assembly.c: Only support OSX bundling if the bundle is 
2094         actually detectable.
2095
2096 2010-03-04  Geoff Norton  <gnorton@novell.com>
2097
2098         * loader.c: The marshal specs are freed at the end of the call
2099         but it explicitly frees the strings as well as the container,
2100         so we need to dup them too to avoid referencing free'd memory.
2101
2102 2010-03-04  Geoff Norton  <gnorton@novell.com>
2103
2104         * icall-def.h:
2105         * icall.c: Add a new private internal icall to construct
2106         an object from its type without running the ctor.
2107
2108 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
2109
2110         * profiler.c: allow multiple profiler engines to be loaded
2111         at the same time.
2112
2113 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2114
2115         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
2116         profiler event to track object moves.
2117
2118 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
2119
2120         * object.c, profiler.c, profiler.h, string-icalls.c:
2121         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
2122
2123 2010-03-03  Miguel de Icaza  <miguel@novell.com>
2124
2125         * decimal.c (mono_double2decimal): Add support for reducing the
2126         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
2127         expected.
2128
2129 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2130
2131         * icall-def.h:
2132         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
2133
2134 2010-03-03  Marek Habersack  <mhabersack@novell.com>
2135
2136         * mono-config.c (mono_config_parse_assembly_bindings): added -
2137         parses assembly binding redirections from appdomain's config
2138         file.
2139
2140         * metadata-internals.h: added definition of a new function -
2141         mono_config_parse_assembly_bindings - to support parsing assembly
2142         binding redirections defined in appdomain's config file.
2143
2144         * domain-internals.h: added two new fields to _MonoDomain - a list
2145         of assembly bindings and a flag to parse the config file only
2146         once.
2147
2148         * assembly.c (assembly_binding_maps_name): empty culture name and
2149         NULL culture name are considered equal.
2150         (mono_assembly_apply_binding): added support for domain specific
2151         assembly binding redirections, read from the appdomain's
2152         configuration file. Fixes bug #580185
2153
2154 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
2155
2156         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
2157         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
2158         support.
2159
2160 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2161
2162         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
2163         from this function. The new function receive the parent token instead of a type.
2164
2165         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
2166         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
2167         typebuilders. This make it possible to properly encode generic type builders since
2168         their unmanaged type don't have generics data while unfinished.
2169
2170         Fixes #583655.
2171
2172 2010-03-02  Mark Probst  <mark.probst@gmail.com>
2173
2174         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
2175         writing binary log files (can be enabled by #define'ing
2176         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
2177         bugs in longer running programs.
2178
2179 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
2180
2181         * metadata.c: added some API documentation.
2182
2183 2010-03-01  Robert Jordan  <robertj@gmx.net>
2184
2185         * filewatcher.h: Include glib.h to fix the MSVC build.
2186
2187 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
2188
2189         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
2190         a GC handle instead. This is a bit slower to access, but avoids burdening the
2191         GC with 100s of individual roots.
2192
2193         * reflection.c (mono_class_get_ref_info):
2194         (mono_class_set_ref_info):
2195         (mono_class_free_ref_info): New internal helper fuctions.
2196
2197         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
2198         of accessing klass->reflection_info directly.
2199
2200         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
2201         words.
2202
2203         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
2204         the previous array.
2205
2206 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
2207
2208         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
2209         needs an indirection.
2210
2211 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2212
2213         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
2214         so all generic sharing code is in one place.
2215
2216         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
2217         we don't call setup_interface_offsets () for unfinished types.
2218
2219 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2220
2221         * class.c (mono_class_generic_sharing_enabled): Move this to
2222         generic-sharing.c.
2223
2224         * image.c: Add an unload hook which is called before an image is unloaded.
2225
2226         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
2227         metadata.c having to depend on generic sharing.
2228
2229 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2230
2231         * class.c: reduce size of ridiculously large cache.
2232
2233 2010-02-26  Martin Baulig  <martin@ximian.com>
2234
2235         * mono-debug.h
2236         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
2237
2238         * threads.c (mono_thread_internal_reset_abort): New method; resets
2239         the abort, but doesn't throw any exception if no abort was requested.
2240
2241 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * class.c (get_implicit_generic_array_interfaces): Call
2244         mono_class_setup_interface_offsets () before accessing
2245         eclass->interface_offsets_count. This only shows up on platforms without IMT for
2246         some reason.
2247
2248 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2249
2250         * environment.c, environment.h, icall.c: make the GetOSVersionString()
2251         icall internal.
2252
2253 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
2254
2255         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
2256         direct access to the MonoType fields.
2257
2258 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * threads.h: Move some internal functions which were added to this header by
2261         mistake to threads-types.h.
2262
2263         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
2264
2265 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
2266
2267         * class-internals.h, class.h, object.h: make MonoRemoteClass
2268         and mono_remote_class() internal.
2269
2270 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2271
2272         * metadata-internals.h, class-internals.h, metadata.h: make the
2273         MonoType guts internal as well.
2274
2275 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2276
2277         * reflection.h: the MonoTypeNameParse guts are internal now.
2278         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2279         are internal now, provide accessors as needed.
2280         * metadata.h, metadata-internals.h: the MonoMethodSignature
2281         guts are internal now.
2282         * Makefile.am: mempool.h is an internal header now.
2283         * *.h, *.c: remove glib.h usage from the public headers.
2284
2285 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2286
2287         * culture-info-table.h : regenerated.
2288
2289 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2290
2291         * metadata.c: Add mono_method_get_header_summary which returns minimal
2292         information about the header of a method. This is the information used
2293         by the inline oracle to reject methods.
2294
2295         This method doesn't decode local variables and doesn't cache it's result,
2296         so it should cause a minimal reduction in memory usage.
2297
2298         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2299         mono_method_get_header_summary.
2300
2301 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2302
2303         * threads.c (mono_thread_exit): Make sure that the main thread is
2304         non-null before dereferencing it.
2305
2306 2010-02-21  Geoff Norton  <gnorton@novell.com>
2307
2308         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2309         locale.
2310         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2311         before falling back to the posix lookup.
2312
2313 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2314
2315         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2316         the DONT_MANAGE flag set.
2317
2318 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2319
2320         * domain.c: Remove old v1 version strings. Let the runtime
2321         default to 2.0 instead of failing because it can't find a
2322         working 1.0 instalation.
2323
2324 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2325
2326         * domain.c: Add v4 RC version string.
2327
2328 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2329
2330         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2331         of overflow checking function.
2332
2333 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2334
2335         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2336         generic methods.
2337
2338         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2339         cases for ParameterInfo.
2340
2341         Fixes #579493.
2342
2343 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2346         have has_cctor set. Fixes #575946.
2347
2348 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2349
2350         * appdomain.c: display a warning if the parsing the config file
2351         produces any error.
2352         Skip the BOM in UTF-8 files.
2353         Copy the AppDomainSetup before setting the privateBinPath so that the
2354         correct configuration file is read.
2355
2356 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2357
2358         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2359         vtable trampoline per vtable slot index. Not used yet.
2360
2361 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2362
2363         * icall-def.h:
2364         * icall.c: add internal call that returns the system page size.
2365
2366 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2367
2368         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2369         'int' for system classes.
2370
2371 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2372
2373         * icall.c, icall-def.h: new icall to check for sufficient
2374         stack space.
2375
2376 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2377
2378         * reflection.c (ensure_complete_type): Check that reflection_info
2379         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2380
2381 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2382
2383         * attrdefs.h:
2384         * tabledefs.h: Add NoOptimization flag.
2385
2386 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2387
2388         * sgen-gc.c: Don't consider it a missing remset if the target
2389         object is pinned - we might have done the store but not added the
2390         remset yet.
2391
2392 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2393
2394         * sgen-gc.c: When checking for missing remsets, don't assert on
2395         the first one, but print them all and then assert.
2396
2397 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2398
2399         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2400
2401 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2402
2403         * console-unix.c: On OSX Control-Y is assigned to
2404         VDSUSP (non-Posix), the
2405         suspend-program-next-time-it-tries-to-read-input command (this is
2406         different than C-z, which suspends immediately).
2407
2408         Do the same thing that bash does and ignore this setting,
2409         making our repl/getline support pasting.
2410
2411 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2412
2413         * sgen-gc.c: Simple plausibility check for scan_starts.
2414
2415 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2416
2417         * sgen-gc.c: Round up when calculating the number of scan starts.
2418
2419 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2420
2421         * reflection.c: Export mono_get_object_from_blob.
2422
2423         * object-internals.h: Ditto.
2424
2425         * icall.c: New icall property_info_get_default_value to get the default
2426         value of a property. Since using this is not common, no caching is done.
2427
2428         * icall-def.h: Add new icall.
2429
2430 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2431
2432         * class.c: Add mono_class_get_property_default_value.
2433
2434         * class-internal.h: Export mono_class_get_property_default_value.
2435
2436 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2437
2438         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2439
2440 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2441
2442         * sgen-gc.c: introduced critical regions to allow some lockless
2443         operations and increase scalability.
2444
2445 2010-02-10  Geoff Norton  <gnorton@novell.com>
2446
2447         * reflection.c: Support building with DISABLE_REFLECTION
2448
2449 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2450
2451         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2452         Closes bug #566057.
2453
2454         * exception.c: fix typo in comment.
2455
2456 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2457
2458         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2459         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2460
2461         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2462
2463         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2464         the internal API.
2465
2466         Fixes #574434.
2467
2468 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2469
2470         * threads.c: Removed two assertions that were too strict.  Added a
2471         clarifying comment.  Fixes #577090.
2472
2473 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2476         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2477
2478         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2479
2480         * verify.c (mono_type_get_stack_name): Fix a warning.
2481
2482 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2483
2484         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2485         mono_marshal_wrapper_info_from_wrapper.
2486
2487         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2488         mono_marshal_method_set_wrapper_data, and export.
2489
2490         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2491         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2492         by calling mono_marshal_get_wrapper_info ().
2493
2494         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2495         small objects which does no size checks.
2496
2497 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2498
2499         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2500
2501 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2502
2503         * verify.c (mono_method_verify): Use the new basic block formation pass
2504         to avoid verifying dead basic blocks. This is the same behavior as the
2505         runtime MS verifier.
2506
2507 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2508
2509         * mono-basic-block.c:
2510         * mono-basic-block.h: New implementation of a basic block formation pass.
2511         The formation pass does static liveness analysis as well to detect dead
2512         basic blocks.
2513
2514 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2517         'this' argument in icalls.
2518
2519 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2520
2521         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2522
2523 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2524
2525         * object.c, domain.c: When using SGen, we must register
2526         vtable->type as a root if it's not a MonoType, because then it
2527         wasn't pin-alloced.
2528
2529 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2530
2531         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2532         at the start of nursery collections, because we might have had
2533         degraded allocations which changed next_data.
2534
2535 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2536
2537         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2538         custom attr so this function works in cross-compiling mode.
2539
2540 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2541
2542         * class.c (make_generic_param_class): Initialize interface offsets since we
2543         set klass->inited. Fixes #574819.
2544
2545 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2546
2547         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2548         calling the JIT domain cleanup hook.
2549
2550 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2551
2552         * pedump.c (main): Properly set the verifier mode when running the metadata
2553         verifier.
2554
2555 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2556
2557         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2558         overlapping fields now that we're called before has_references is set.
2559
2560         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2561         method. Otherwise all sort of weird stuff happens.
2562
2563 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2564
2565         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2566         Fixes #572874.
2567
2568 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2571         Fixes #573322.
2572
2573 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2574
2575         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2576         pin_staging_area_index is greater than 0.
2577
2578 2010-01-22 Miguel de Icaza (miguel@novell.com)
2579
2580         * loader.c: Since we do nothing with the error returned, pass NULL
2581         to ignore the error.
2582
2583 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2584
2585         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2586         happened before starting to encode the actual fields. This avoid ciclic
2587         dependencies and eventual crashes.
2588
2589         Fixes #572660.
2590
2591 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2592
2593         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2594         atomic and remove the half-constructed hack in SGen.
2595
2596 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2597
2598         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2599         has a recursive reference to itself.
2600
2601         Fixes #571863.
2602
2603 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2604
2605         * loader.c (mono_method_signature): Fix error message.
2606
2607 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2608
2609         * sgen-gc.c: Reuse to-space sections between nursery collections.
2610
2611 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2612
2613         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2614         from the current assembly or mscorlib. Fixes bug #322957.
2615
2616 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2619         get_wrapper_target_class.
2620
2621 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2622
2623         * sgen-gc.c: Fix warnings.
2624
2625 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2626
2627         * verify.c (store_local): Better error message.
2628
2629 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2630
2631         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2632         arguments.
2633
2634 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2635
2636         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2637         function is generics variance aware.
2638
2639 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2640
2641         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2642         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2643
2644 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2645
2646         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2647           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2648
2649         Code is contributed under MIT/X11 license.
2650
2651 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2652
2653         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2654         on a GTD.
2655
2656 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2657
2658         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2659         return a point to a wrapper specific info structure describing the wrapper.
2660         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2661  
2662 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2663  
2664         * sgen-gc.c: Make minor collection section allowance adaptive,
2665         depending on the amount of memory reclaimed in the last major
2666         collection.  If more memory was reclaimed (i.e. more garbage
2667         produced), do the next collection earlier.
2668
2669 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2670
2671         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2672         to itself.
2673
2674         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2675         the token as parameter.
2676
2677         * verify-internals.h: Ditto.
2678
2679         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2680
2681         Fixes #571460.
2682
2683 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2684
2685         * sgen-gc.c: Make store_remset_buffer_index long.
2686
2687 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2688
2689         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2690
2691         Fixes #569579.
2692
2693 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2694
2695         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2696         off precise marking if it is available.
2697         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2698
2699 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2700
2701         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2702
2703         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2704         pinned objects.
2705
2706         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2707         to the array allocator.
2708
2709 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2712         result of mono_compile_method (), it already includes an ftnptr.
2713
2714 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2715
2716         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2717
2718 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2721         hash value which doesn't depend on glib/eglib versions.
2722         (mono_metadata_type_hash): Use it.
2723
2724         * object.c (mono_method_get_imt_slot): Ditto.
2725
2726 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2727
2728         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2729         independently of the GTD.
2730
2731         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2732
2733         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2734         to the upper limit since instance_size includes this amount.
2735
2736         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2737
2738         Fixes #569544.
2739
2740 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2743         with static methods.
2744
2745         * object.c (build_imt_slots): Avoid asserting when static methods are
2746         encountered in an interface.
2747
2748 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2749
2750         * sgen-gc.c (to_space_expand): Fix assertion.
2751
2752 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2753
2754         * string-icalls.c: missing declaration fixes.
2755         * sgen-gc.c: portability fixes.
2756
2757 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2758
2759         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2760
2761         * class.c:
2762         * cominterop.c:
2763         * icall.c:
2764         * object.c: 
2765         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2766
2767 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2768
2769         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2770         it can fail loading the type.
2771
2772         * class.c: Add mono_class_inflate_generic_class_checked.
2773
2774         * class.c:
2775         * verify.c:
2776         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2777
2778 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2779
2780         * loader.c (mono_method_signature_checked): New internal function taking an
2781         MonoError argument.
2782
2783         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2784         Fixes build on rh 7.3.
2785
2786 2010-01-10  Aaron Bockover  <abockover@novell.com>
2787
2788         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2789         at runtime in the same way as on Windows, which yields a relocatable
2790         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2791         of the running mono process.
2792
2793         On TARGET_ARM, fallback () will always be executed.
2794
2795 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2796
2797         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2798
2799 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2800
2801         * class.c (mono_class_is_assignable_from_slow): Support variant
2802         generic delegates.
2803
2804         * class.c (mono_class_implement_interface_slow): Support types with
2805         variant generic arguments.
2806
2807 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2808
2809         * verify.c: Remove some code duplication.
2810
2811 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2812
2813         * object.c: Update docs.
2814
2815 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2816
2817         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2818
2819         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2820         fallback trampoline as well.
2821
2822         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2823         out argument that is set to TRUE if the match was direct. 
2824
2825         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2826
2827         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2828
2829 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2830
2831         * class.c: Add mono_class_interface_offset_with_variance function that does same
2832         as mono_class_interface_offset but takes variance into account.
2833
2834         * class-internal.h: Export mono_class_interface_offset_with_variance.
2835
2836         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2837
2838 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2839
2840         * object.c:
2841         * icall.c:
2842         * class.c: Add some FIXME for due to variant generic arguments.
2843
2844         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2845         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2846         the bitfield check fails.
2847
2848 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2849
2850         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2851         to be easier to read and fix bugs in the case a non generic type implements a variant
2852         interface.
2853
2854         * class.c (mono_class_has_variant_generic_params): Make non static.
2855
2856         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2857         the private API.
2858
2859 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2860
2861         * assembly.c: fix MONO_PATH debug output.
2862
2863 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2864
2865         * culture-info-table.h : regenerated.
2866
2867 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2868
2869         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2870         types that are meant to not have a parent.
2871
2872 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2875         from the image mempool, so it is not leaked.
2876
2877 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2878
2879         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2880
2881 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2882
2883         * verify.c (verify_valuetype_layout_with_target): Fix case
2884         that can lead to infinite recursion. Fix bug #567861
2885
2886 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2887
2888         * pedump.c: Run code verifier even if image verification fails
2889         due to a failed type we. This allows more errors to be shown.
2890
2891 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2892
2893         * class.c (count_virtual_methods): Remove the assert and now
2894         fail properly.
2895         
2896         * class.c (setup_interface_offsets): This can fail now.
2897
2898         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2899         errors. Check setup_interface_offsets errors.
2900
2901         * class.c (setup_interface_offsets): Simplify the return error logic
2902         and remove class_init_ok.
2903
2904         Fixes #560327.
2905
2906 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2907
2908         * class.c (mono_class_init): Do class verification at the beginning. Add
2909         some asserts to avoid tripping into invalid memory.
2910
2911         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2912         g_error and a decent message.
2913
2914         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2915
2916         Fixes #567548.
2917
2918 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2921         as inline functions instead of defining them in mempool.c.
2922
2923         * metadata-internals.h (MonoImageSet): New structure representing a set of
2924         MonoImages, which own a collection of generic instances.
2925
2926         * metadata.c: Get rid of the global generic caches, instead assign each generic
2927         instance to the image set which consists of all the images referenced by the
2928         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2929         the memory used by generic instances to be allocated from a per image-set mempool
2930         later.
2931
2932 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2933
2934         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2935
2936 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2937
2938         * appdomain.c (zero_static_data): Fix a warning.
2939
2940         * locales.c (construct_culture_from_specific_name): Applied patch from
2941         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2942         not found. Fixes #567900.
2943
2944 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2945
2946         * loader.c (mono_method_get_signature_full): Remove two asserts.
2947         Return NULL instead so that the verifier can handle both cases 
2948         gracefully.
2949
2950 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2951
2952         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2953         so we can properly fail types instead of crashing.
2954
2955         Fixes #567676.
2956
2957 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2960         generic method.
2961
2962 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2963
2964         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2965
2966 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2967
2968         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2969         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2970         we can't remove it from it since we don't hold the lock.
2971         (mon_new): Free the orphaned events here when a mon structure is added to the
2972         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2973         this down.
2974
2975 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2976
2977         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2978         as max stack might be zero.
2979
2980         Fixes #562320.
2981
2982 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2983
2984         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2985
2986         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2987         instances if the GTD did.
2988
2989         * class.c (mono_class_setup_properties): Ditto.
2990
2991         * class.c (mono_class_setup_events): Ditto.
2992
2993         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2994
2995         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2996         error setting.
2997
2998         * class.c (mono_class_init): Fail if GTD did.
2999
3000         * cominterop.c:
3001         * generic-sharing.c:
3002         * icall.c:
3003         * loader.c:
3004         * object.c:
3005         * verify.c: Properly handle failure of mono_class_setup_methods.
3006
3007 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
3008
3009         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
3010         mono_class_inflate_generic_method_full internal.
3011
3012         * class.c (inflate_generic_context): Now takes a MonoError argument.
3013
3014         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
3015         errors.
3016
3017 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
3018
3019         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
3020         they cannot be patched. Partly fixes #564408.
3021
3022 2009-12-24  Mark Probst  <mark.probst@gmail.com>
3023
3024         * metadata-internals.h, reflection.c: Use the
3025         MonoDynamicImage.handleref hash table only with unmanaged keys,
3026         and add a managed hash table handleref_managed for managed keys.
3027
3028 2009-12-24  Mark Probst  <mark.probst@gmail.com>
3029
3030         * sgen-gc.c: Unset to-space bumper between collections.  It might
3031         become invalid due to degraded allocations.
3032
3033 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
3034
3035         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
3036         with the one from the original method.
3037
3038         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
3039         compatibility.
3040
3041         * verify-internals.h: Add new function to the internal API.
3042
3043 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
3044
3045         * culture-info-tables.h: regenerated it to include the Georgian culture.
3046
3047 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * sgen-gc.c: Include mono/utils/memcheck.h.
3050
3051         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
3052         instead of the current domain, since the two might not match if this is called
3053         from the debugger.
3054
3055         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
3056         domain which created this assembly.
3057
3058 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
3061
3062 2009-12-17  Mark Probst  <mark.probst@gmail.com>
3063
3064         * sgen-gc.c: Managed implementation of the specialized generic
3065         store write barrier.
3066
3067 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
3068
3069         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
3070         A private virtual newslot method is used to implement an interface method without exposing
3071         it to users. When querying for public instance methods, such method would hide a public one
3072         on a parent type.
3073
3074         Fixes #564379.
3075
3076 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
3079         conventions.
3080
3081 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3082
3083         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
3084
3085 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3086
3087         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
3088         as they are no longer used.
3089         
3090          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
3091
3092         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
3093
3094 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3095
3096         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
3097         if the owner class has not been finished before returning reflection_info.      
3098
3099         Fixes #565127.
3100
3101 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
3102
3103         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
3104         param doesn't have custom attributes. Fixes #565117.
3105
3106         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
3107         #565120.
3108
3109 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
3110
3111         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
3112
3113 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
3114
3115         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
3116         same amount done by a core-clr enabled runtime.
3117
3118 2009-12-15  Marek Habersack  <mhabersack@novell.com>
3119
3120         * appdomain.c (mono_make_shadow_copy): make sure access mode of
3121         the target files is reset to writable by owner and readable by
3122         everyone else to prevent problems when updating shadow copies of
3123         files whose source is read-only. Fixes bug #556884
3124
3125 2009-12-15  Mark Probst  <mark.probst@gmail.com>
3126
3127         * class.c (mono_generic_class_get_class): Allocate the generic
3128         class via malloc again, so that it can be freed when any one of
3129         the images of its constituent types is closed.
3130
3131         * metadata.c: When closing an image, don't free generic insts and
3132         generic classes right away, but put them into a list for later
3133         freeing.
3134
3135         * image.c, metadata-internals.h: Store the free list and in the
3136         second pass of closing an image, free it.
3137
3138 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3139
3140         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
3141
3142         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
3143         types in type_hash.
3144
3145         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
3146
3147 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3148
3149         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
3150         user type.
3151
3152         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
3153         is used.
3154
3155 2009-12-14  Miguel de Icaza  <miguel@novell.com>
3156
3157         * verify.c (mono_method_verify): The Unused opcodes produce an
3158         InvalidProgramException on .NET
3159
3160 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
3161
3162         * loader.c (mono_method_get_header): Move assert after the verifier
3163         has been called on the method header.
3164
3165 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3166
3167         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
3168
3169         * appdomain.c: Bump corlib version.
3170
3171 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3172
3173         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
3174         types as well since otherwise generic instances would not return UT as arguments but
3175         their undelying system type.
3176
3177         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
3178         to reflect the fact that they can have now multiple different types.
3179
3180         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
3181
3182         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
3183
3184         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
3185
3186         * reflection.c (mono_reflection_register_with_runtime): Init super types
3187         if the image is not dynamic.
3188
3189         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
3190         check if the generic type definition is a TypeBuilder.
3191
3192         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
3193         doesn't belong to a dynamic image, skip initialization.
3194
3195         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
3196         base definition is not a dynamic type.
3197
3198 2009-12-11  Marek Habersack  <mhabersack@novell.com>
3199
3200         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
3201         mono_profiler_string_allocation
3202
3203         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
3204         if string profiling is enabled, call
3205         mono_profiler_string_allocation
3206
3207         * profiler.h: added two MonoProfileFlags -
3208         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
3209         installation functions for the hooks below.
3210
3211         * profiler-private.h, profiler.c: added two hooks:
3212         mono_profiler_string_allocation called whenever a string is
3213         allocated by InternalAllocateStr and mono_profiler_iomap called
3214         whenever IOMAP code performs an adjustement on a file path.
3215
3216 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
3217
3218         * boehm-gc.c: fixed race condition while getting the target of a
3219         disappearing link (bug #522233).
3220
3221 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3222
3223         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
3224         the error.
3225
3226 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3227
3228         * reflection.c: Add mono_reflection_register_with_runtime icall to
3229         allow a MonoGenericClass to register itself as the managed mirror of
3230         a given generic instance.
3231         This is a temporary workaround until all MGC instantiation happens in
3232         managed code.
3233
3234         * object-internals.h: Ditto.
3235
3236         * icall-def.h: Ditto.
3237
3238 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3239
3240         * sgen-gc.c (find_in_remsets): Also search the generic store
3241         remsets.
3242
3243 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3244
3245         * sgen-gc.c: Don't access class names in debugging code when
3246         unloading a domain, because they might not be valid anymore.
3247
3248 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3249
3250         * domain.c, domain-internals.h: New function mono_domain_unset().
3251
3252         * appdomain.c (unload_thread_main): Detach the thread again at the
3253         end.
3254
3255         * threads.c: When a thread exists or is detached, unset its domain
3256         so that it's NULL when, for example, a pthread destructor runs.
3257
3258         * sgen-gc.c: Assert that there is no domain set after a thread is
3259         done.
3260
3261 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3262
3263         * class.c (mono_generic_class_get_class),
3264         metadata.c (free_generic_class): Allocate generic MonoClass's from
3265         the image mempool, not via malloc.  The problem with malloc is
3266         that when unloading a domain those classes are freed before
3267         clearing the heap and SGen needs the classes.  Rewriting the
3268         unloading code to do the free later would be more work and there's
3269         no point in using malloc anyway.
3270
3271 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3272
3273         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3274         before returning.
3275
3276 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3277
3278         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3279         user string blobs.
3280
3281         * verify-internals.h: Add new function to the internal API.
3282
3283         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3284         check if it's a valid string.
3285
3286         * object.c (mono_ldstr): Ditto.
3287
3288         Fixes #561943.
3289
3290 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3291
3292         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3293         from a method before returning it. This is the expected behavior.
3294
3295 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3296
3297         * reflection.c (inflate_method): Handle the case of a regular system type.
3298
3299 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3300
3301         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3302         gathering code.
3303
3304         * mempool.c, mempool-internals.h: New function
3305         mono_mempool_get_bytes_allocated().
3306
3307         * Makefile.am: sgen-pinning-stats.c added.
3308
3309 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3310
3311         * sgen-gc.c (create_allocator): Only use the fast path if the
3312         object size is within the small object size limit.
3313
3314 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3315
3316         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3317         possibly adding padding to sizeof (GCMemSection).
3318
3319 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3320
3321         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3322         reference is not in the nursery.
3323
3324 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3325
3326         * class.c (mono_class_from_typeref): Bounds check idx against the 
3327         assemblyref table.
3328
3329 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3330
3331         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3332         through the potential roots, then sort the results and find the
3333         pinned objects from there.
3334
3335         * Makefile.am: sgen-pinning.c added.
3336
3337 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3338
3339         * sgen-gc.c: Record generic stores in specialized remset buffers.
3340
3341 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3342
3343         * sgen-gc.c: Make pinned chunks the same size as major heap
3344         sections, and align them as well, so that we can check whether an
3345         object is in a pinned chunk or a major section in constant time.
3346
3347 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3348
3349         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3350
3351 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3352
3353         * sgen-gc.c: Make all major heap sections the same size (currently
3354         128k) and allocate them on aligned addresses.  Small heap sections
3355         give us better granularity with pinned objects - we can free up
3356         much more memory.
3357
3358 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3359
3360         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3361         output removed.
3362
3363 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3364
3365         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3366
3367         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3368         names in addition to the runtime generated one.
3369
3370         * mono/metadata/image.h: Add a function to take the real name of the assembly
3371         image.
3372
3373         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3374         use it instead of the runtime generated one.
3375
3376         Code is contributed under MIT/X11 license.
3377
3378 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3379
3380         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3381         before the other checks to prevent problems if the DateTime class is blittable.
3382         Hopefully fixes #559600.
3383
3384 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3385
3386         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3387         returns the largest string length that will not be put into the
3388         LOS.
3389
3390         * sgen-gc.c, gc-internal.h: New function that returns the largest
3391         object size that will not be put into the LOS.
3392
3393         * appdomain.c: Bump corlib version.
3394
3395 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3398
3399         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3400
3401 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3402
3403         * reflection.c (inflate_method): Fix signature.
3404
3405         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3406         in managed code.
3407
3408 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3409
3410         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3411
3412 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3413
3414         * sgen-gc.c: Abstract to-space handling.
3415
3416 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3417
3418         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3419
3420         Fixes #559906.
3421
3422 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3423
3424         * sgen-gc.c: Only add references from outside the nursery to
3425         within the nursery to the global remset list.
3426
3427 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3428
3429         * appdomain.c (create_exceptions): Set the domain temporarily if
3430         necessary to avoid cross-domain references.
3431
3432 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3433
3434         * verify.c (get_stack_type): Return that the type is invalid instead of
3435         asserting.
3436
3437         * verify.c (mono_method_verify): Verify that all locals and arguments
3438         have valid stack types.
3439
3440         Fixes #559913.
3441
3442 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3443
3444         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3445         bounds checking overflow aware.
3446
3447         Fixes #559910.
3448
3449 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3450
3451         * verify.c (do_invoke_method): Check for invalid method signatures.
3452
3453         Fixes #553450.
3454
3455 2009-12-02  Jb Evain  <jbevain@novell.com>
3456
3457         * appdomain.c (MONO_CORLIB_VERSION): bump.
3458         * icall-def.h (get_base_definition): renamed to get_base_method
3459         and add a boolean argument indicating we want the original
3460         method definition, or the immediate base method.
3461         * icall.c: apply the get_base_definition to get_base_method change.
3462
3463 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3464
3465         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3466
3467         Fixes #558042.
3468
3469 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3470
3471         * class.c: remove asserts for invalid type token in
3472         mono_class_name_from_token(), mono_assembly_name_from_token() and
3473         mono_class_create_from_typedef () (fixes bug #553318).
3474
3475 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3476
3477         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3478         incorrect assemblies (bug #553322).
3479
3480 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3481
3482         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3483
3484         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3485
3486         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3487
3488         * class.c (inflate_generic_context): Ditto.
3489
3490         * loader.c (method_from_methodspec): Ditto.
3491
3492         Fixes #558230.
3493
3494 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3495
3496         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3497
3498         * class.c (mono_class_create_from_typespec): Ditto.
3499
3500         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3501
3502         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3503
3504         Fixes #558184.
3505
3506 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3507
3508         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3509
3510         * verify.c (verify_delegate_compatibility): Ditto.
3511
3512         * verify.c (do_newobj): Ditto.
3513
3514         Fixes #558046.
3515
3516 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3517
3518         * sgen-gc.c: Use a gray queue instead of requiring that gray
3519         objects are in a contiguous region.
3520
3521         * sgen-gray.c: The gray queue implementation.
3522
3523         * Makefile.am: sgen-gray.c added.
3524
3525 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3526
3527         * appdomain.c: When unloading a domain, zero its static data and
3528         perform a minor collection when using SGen.  That will get rid of
3529         all the remsets pointing into that domain's static data.
3530
3531         * sgen-gc.c: Allow remsets into static data.  By doing this we
3532         need less checks so we're more efficient.
3533
3534 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3535
3536         * verify.c (mono_method_verify): Check for catch clauses with broken
3537         types.
3538
3539         Fixes #558465.
3540
3541 2009-12-01  Jb Evain  <jbevain@novell.com>
3542
3543         * class.c (make_generic_param_class): set the namespace of
3544         the generic parameter class from its owner, if available.
3545
3546 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3547
3548         * verify.c (code_bounds_check): Do proper overflow checking.
3549
3550         * verify.c (mono_method_verify): The number of switch entries is
3551         an unsigned int. Properly bounds check it.
3552
3553         Fixes #558594.
3554
3555 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3556
3557         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3558         mono_metadata_method_has_param_attrs which only checks if a given param
3559         list has a non zero flags entry.
3560
3561         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3562         to inform how many params should we expect to decode.
3563
3564         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3565         as it's faster than mono_metadata_get_param_attrs.
3566
3567         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3568         add mono_metadata_method_has_param_attrs.
3569
3570 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3571
3572         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3573         failures.
3574
3575         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3576         is -1 but its class is broken.
3577
3578         Fixes #558522.
3579
3580 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3581
3582         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3583         for parameter overflow.
3584
3585         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3586         of mono_metadata_get_param_attrs.
3587
3588         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3589         API.
3590
3591         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3592
3593 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3594
3595         * class.c (mono_class_setup_fields): Check for fields with broken types.
3596
3597         Fixes #558741.
3598
3599 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3600
3601         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3602         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3603         its TypeBuilder::CreateType ().
3604
3605         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3606         if not needed.
3607
3608         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3609         to make setup_interface_offsets happy.
3610
3611         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3612         compilation now works.
3613
3614 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3615
3616         * appdomain.c (create_exceptions): New helper function extracted from
3617         mono_runtime_init () to precreate objects used during exception handling.
3618         (mono_runtime_init): Call it.
3619         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3620
3621 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3622
3623         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3624         compilation until the proper one is found.
3625
3626 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3627
3628         * class.c (mono_class_setup_vtable_general): Cache the result of
3629         get_virtual_methods () since it can be slow because of the metadata
3630         optimization.
3631
3632         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3633         from a MonoValueHashTable for now, since the later is based on an earlier
3634         version of hpj's internal probing code and seems to have serious collision
3635         issues.
3636
3637         * loader.c (mono_get_method_full): Update after the change above.
3638
3639 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3642
3643 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3644
3645         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3646         the GTD instead of the DGC instead of crashing.
3647
3648         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3649         required. Inflate fields if needed.
3650
3651         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3652         finished. Renamed.
3653
3654 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3655
3656         * class.c (check_interface_method_override): Check for NULL signatures and fail
3657         the type.
3658
3659         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3660
3661         Fixes #553428.
3662
3663 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3664
3665         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3666         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3667
3668 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3669
3670         * loader.c (field_from_memberref): Resolve the class first then the field
3671         signature. Remove a lot of duplicated code and make sure we don't pass valid
3672         values to mono_loader_set_error_field_load.
3673
3674         Fixes #553306.
3675
3676 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3677
3678         * class.c (inflate_generic_type): Change code to use new signature of
3679         mono_error_set_bad_image.
3680
3681         Fixes #558124.
3682
3683 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3684
3685         * verify.c (mono_method_verify): Don't free ctx.params items if 
3686         we aborted while inflating the ctx.locals. Complete previous fix
3687
3688 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3689
3690         * verify.c (mono_method_verify): Use the uninflated type name, 
3691         when the inflated is null, to report errors. Also take care when
3692         freeing, not to free everything since, in case of an error, some
3693         stuff would be copies (i.e. not allocated by the function itself)
3694         Fix bug #558145
3695
3696 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3697
3698         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3699         or overflow. The caller must have done this check explicitly. This guard us
3700         from accessing invalid memory.
3701
3702         * verify.c (do_push_static_field): Check for stack overflow.
3703
3704         Fixes #553333.
3705
3706 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3707
3708         * loader.c (find_method_in_class): Don't crash if the signature cannot
3709         be resolved.
3710
3711         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3712         of asserting for the case of invalid params.
3713
3714         Fixes #553304.
3715
3716 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3717
3718         * image.c (mono_image_load_module): Fix crash when a bad assembly
3719         has no module at all (fix bug #553412) and also replace the 
3720         g_assert with a return NULL (documented return value for failure)
3721
3722 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3725
3726 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3727
3728         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3729         file attribute to managed code and avoid doing the mask/attribute
3730         checks here. 
3731
3732 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3733
3734         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3735         the managed world.
3736
3737         * icall-def.h: New entry points.
3738         
3739 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3740
3741         * process.c: Don't put references to managed objects into a
3742         g_ptr_array.
3743
3744 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3745
3746         * class.c (can_access_internals): Allow CoreCLR to participate in
3747         allowing (or not) [InternalsVisibleTo] between assemblies.
3748         * security-core-clr.c|h: Make sure that only trusted code (a 
3749         superset of platform code) can access the internals of platform
3750         code.
3751
3752 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3753
3754         * reflection.c: use the correct base class to get the virtual method
3755         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3756
3757 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3758
3759         * security-core-clr.c (get_caller_no_reflection_related): 
3760         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3761         it's still reflection and must be filtered correctly.
3762
3763 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3764
3765         * object.c (compute_class_bitmap): Fix for large bitmaps.
3766
3767 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3768
3769         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3770
3771         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3772         koush@koushikdutta.com). Disable GC_no_dls on android.
3773
3774 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3775
3776         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3777         tlab_next points outside the TLAB because the allocator was
3778         interrupted.
3779
3780 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3781
3782         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3783
3784 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3785
3786         * object-internals.h: Change signature for mono_string_to_utf8_image.
3787
3788         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3789         argument.
3790
3791         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3792         exceptions due to mono_string_to_utf8.
3793
3794 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3795
3796         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3797
3798         * object.c (mono_remote_class): Make sure all resources are released before
3799         raising an exception.
3800
3801         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3802
3803 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3804
3805         * mono-perfcounters.c (network_get_impl): Change variable initialization
3806         ordering to fix potential memory leak in case of exceptions.
3807
3808         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3809         encoded strings.
3810         
3811 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3812
3813         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3814         variable initialization ordering to fix potential memory leak in case
3815         of exceptions.
3816
3817 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3818
3819         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3820         needed.
3821
3822 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3823
3824         * appdomain.c: Fix shadow path code to better deal with exceptions.
3825
3826 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3827
3828         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3829         exception in the middle of the runtime code.
3830
3831 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3832
3833         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3834         leak memory with broken envvar value.
3835
3836 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3837
3838         * reflection.c (mono_reflection_setup_internal_class): Because
3839         nested classes are not added to the name cache, we must put them
3840         in the reflection_info_unregister_classes list.
3841
3842 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3843
3844         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3845         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3846         platform (trusted) code. Instead we return a TypeLoadException to
3847         be thrown later. This is the exception thrown by Silverlight 2 if
3848         a type, inside application (user) code is marked with [ComImport]
3849
3850 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3851
3852         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3853         mono_is_debugger_attached () too.
3854
3855         * mono-debug.c (mono_is_debugger_attached): New helper function.
3856         (mono_set_is_debugger_attached): Ditto.
3857
3858 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3859
3860         * object-internals.h: Add mono_string_to_utf8_checked.
3861
3862         * object.c: Implement mono_string_to_utf8_checked.
3863
3864 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3865
3866         * class.c: Add missing check for load errors after every
3867         call to mono_class_setup_fields
3868
3869         Fixes #552282.
3870
3871 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3872
3873         metadata-verify.c (verify_tables_schema): Fix the error message.
3874
3875 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3876
3877         * metadata.c: Change event table schema to use TDOR for event type
3878         as this is what it's meant to be.
3879
3880         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3881         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3882         entry.
3883
3884         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3885         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3886         rows in MONO_TABLE_GENERICPARAM.
3887
3888         Fixes #552289.
3889
3890 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3891
3892         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3893         insertion.
3894
3895         * reflection.c (mono_reflection_setup_internal_class): Avoid
3896         registering a gc root the same MonoClass multiple times.
3897         Don't register nested types on the global scope as they should
3898         not be available there.
3899
3900 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3901
3902         * culture-info-tables.h: regenerated.
3903
3904 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3905
3906         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3907
3908 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3909
3910         * string-icalls.c|h: Remove string internal calls that are not 
3911         used anymore by the class libraries.
3912         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3913         which is not used in the class librairies.
3914         * icall-def.h: Update tables.
3915
3916 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3917
3918         * class.h: Move mono_class_inflate_generic_type_checked...
3919
3920         * class-internals.h: to here and make it internal. We don't want to
3921         further expose MonoGenericContext. 
3922
3923 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3924
3925         * verify.c (mono_method_verify): Improve error message.
3926
3927 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3928
3929         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3930         the token is already properly encoded. Fixs 4.0 build.
3931
3932 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3933
3934         * locales.c (construct_number_format): Check if the number index is
3935         valid before trying to use it, if not, just return.
3936         
3937 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3940         since that loses the abort state. Fixes #539394.
3941
3942 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3943
3944         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3945         explicit this argument to the call signature.
3946         (mono_marshal_get_icall_wrapper): Ditto.
3947
3948 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3949
3950         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3951         to indicate which assembly to use when resolving a custom-mod.
3952
3953         Fixes handling of volatile fields used across assemblies as reported in #551513.
3954
3955 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3956
3957         * loader.c: Improve error messages.
3958
3959 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3960
3961         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3962         of interfaces. Fixes IKVM.
3963
3964         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3965
3966 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3967
3968         * verify.c (verifier_inflate_type): Return the inflated type on success.
3969
3970 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3971
3972         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3973
3974         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3975
3976         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3977
3978         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3979         flag set.
3980
3981         * profiler.c: Add new profiler callbacks for runtime invoke.
3982
3983         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3984
3985 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3986
3987         * sgen-gc.c: Keep track of the reason for a major collection and
3988         write it to the heap-dump file.
3989
3990 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3991
3992         * threads.c: refactor the code that initializes the
3993         thread_start_args into a reusable function and use this in the two
3994         methods that start up threads.
3995
3996 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3999         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
4000
4001 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
4002
4003         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
4004         Until now, we only had the per-cpu(core) counters.
4005
4006 2009-10-28  Mark Probst  <mark.probst@gmail.com>
4007
4008         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
4009         mono_gc_get_suspend_signal(), which returns the suspend signal
4010         number used by the GC.
4011
4012 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
4013
4014         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
4015
4016         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
4017         signalling start_notify.
4018
4019 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
4020
4021         * appdomain.c: do not test the st_mode field for shadow-copies.
4022         Fixes bug #545276.
4023
4024 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
4025
4026         * threadpool.[ch]: added hooks for thread start/finish and item
4027         processing begin/end. For monotouch use only.
4028
4029 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
4030
4031         * threads.c (mono_thread_get_name): New helper function.
4032
4033         * reflection.c (resolve_object): Set handle_class for strings too.
4034         (mono_reflection_create_custom_attr_data_args): New helper function to decode
4035         a cattr blob into a set of arrays and structures without creating the custom
4036         attributes themselves.
4037         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
4038
4039         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
4040
4041         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
4042         function.
4043
4044 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4045
4046         * verify.c: Replace calls to mono_class_inflate_generic_type with
4047         mono_class_inflate_generic_type_checked. Fixes #480005.
4048
4049 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4050
4051         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
4052         object since not all paths lead to callees initing it.
4053
4054 2009-10-23  Alp Toker  <alp@nuanti.com>
4055
4056         Fix embedding API breakage from r144688. mono-compiler.h is an internal
4057         header and should not be shipped:
4058
4059         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
4060         which is specific to the mono build. Not going to work.
4061
4062 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
4063
4064         * security-manager.c: Report if core-clr is active from
4065         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
4066         to allow Moonlight BCL to behave appropriately (both in browser
4067         and outside, e.g. smcs)
4068
4069 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
4070
4071         * mono-config.c: ignore UTF-8 BOM and report parser errors.
4072         Fixes bug #549108.
4073
4074 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4075
4076         * class.c: fix typo.
4077
4078 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
4079
4080         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
4081         a MonoError parameter.
4082
4083         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
4084         version that can does proper error handling.
4085
4086         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
4087
4088         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
4089
4090         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
4091
4092 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
4093
4094         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
4095         NO_UNALIGNED_ACCESS is defined.
4096
4097 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
4098
4099         * marshal.c (mono_string_builder_to_utf16): Applied patch from
4100         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
4101         Fixes #549173.
4102
4103 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4104
4105         * sgen-gc.c: Shorten sections whenever possible.
4106
4107 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4108
4109         * sgen-gc.c: Use our portable semaphore #defines.
4110
4111 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4112
4113         * sgen-gc.c: A debug option for dumping the heap layout to a file
4114         after each collection.
4115
4116 2009-10-21  Mark Probst  <mark.probst@gmail.com>
4117
4118         * sgen-gc.c: Make managed write barriers atomic via
4119         thread-restarts.
4120
4121 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4122
4123         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
4124         methods. Fixes #543021.
4125
4126 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
4127
4128         * socket-io.[ch]: fix VS build.
4129
4130 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
4131
4132         * icall-def.h:
4133         * socket-io.[ch]: implemented SendFile.
4134
4135 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
4136
4137         * class.c (mono_class_create_from_typedef): Initialize class->element_class
4138         before the interfaces to avoid crashes later if class initialization fails.
4139         Fixes #548417.
4140
4141         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
4142         Fixes #548276.
4143
4144 2009-10-20  Marek Safar  <marek.safar@gmail.com>
4145
4146         * domain.c: Bump 4.0 version.
4147
4148 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
4149
4150         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
4151         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
4152         check since 'pubkey' can't be NULL at this stage
4153         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
4154         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
4155         initialization of 'iter'
4156
4157 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
4158
4159         * cominterop.c : Search the interface parts of vtable to find 
4160           method matches.  Fixes 547030.
4161
4162         Code is contributed under MIT/X11 license.
4163
4164 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
4165
4166         * marshal.c: BeginInvoke cannot be called on multicast delegates with
4167         multiple targets. Fixes bug #574426.
4168
4169 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4170
4171         * profiler.h: Put here the definition of
4172         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
4173         (and fix the build...).
4174
4175 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4176
4177         * profiler.c, profiler.h, profiler-private.h:
4178         Added support for different ways of getting call chains in stat mode.
4179
4180 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4181
4182         * object.c, object-internals.h: New function for computing the
4183         size of an array, factored out of mono_array_new_full().  Use
4184         SGen's functions for allocating arrays and vectors.
4185
4186         * sgen-gc.c, gc-internal.h: Special functions for allocating
4187         arrays and vectors without race conditions.  A managed array
4188         allocator method.
4189
4190         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
4191
4192 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4193
4194         * object.c, object.h, icall.c: Write barriers do the copying now,
4195         as well, so no need for an additional memcpy.
4196
4197         * sgen-gc.c: Lock when storing remsets.  Do the memory
4198         copying/moving in the write barriers.
4199
4200         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
4201
4202         * reflection.c: Added an assert.
4203
4204 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4205
4206         * threads.c, process.c: A few missing write barriers.
4207
4208 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
4209
4210         * mono-perfcounters.c, mono-perfcounters-def.h: Add
4211         network performance counters for bytes sent per second, bytes
4212         received per second, and bytes total per second.
4213
4214         Code is contributed under MIT/X11 license.
4215
4216 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4217
4218         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
4219         Fix warning.
4220
4221 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4222
4223         * threads.c, object-internals.h, object.c: Move code for
4224         transferring an object to a different domain (via
4225         serialization/remoting) to object.c.
4226
4227         * object.c (call_unhandled_exception_delegate): If the exception
4228         is in a different domain than the delegate, transfer the exception
4229         to that domain.
4230
4231 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
4232
4233         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
4234         Fixes #322934.
4235
4236 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
4237
4238         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
4239
4240 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4241
4242         * object.c (mono_method_return_message_restore): Handle the case
4243         where the argument is an instance of a generic type.  Fixes
4244         #544446.
4245
4246 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4247
4248         * object.c (set_value): Write barrier fix - we must pass the
4249         count, not the size.
4250
4251 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
4252
4253         * domain.c (mono_init_internal): Print a useful error message when encountering
4254         an old mscorlib, instead of crashing. Fixes #544307.
4255
4256 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
4257
4258         * appdomain.c (copy_app_domain_setup): Fix a warning.
4259
4260         * debug-helpers.c (dis_one): Ditto.
4261
4262 2009-10-04  Mark Probst  <mark.probst@gmail.com>
4263
4264         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
4265         into the new domain, instead of referencing the original one.
4266
4267         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
4268         non-static.
4269
4270         * appdomain.c: Corlib version bump.
4271
4272 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4273
4274         * threadpool.c: one more...
4275
4276 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4277
4278         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4279         threads to die because we're shutting down. delgate5.exe works again.
4280
4281 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4282
4283         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4284           ccw_interface_hash table when a ccw is finalized.
4285
4286         Code is contributed under MIT/X11 license.
4287
4288 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4289
4290         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4291         domain and image unloading into two steps.  We must do this
4292         because clearing the domain in SGen requires the class metadata to
4293         be intact, but we need to free the mono_g_hash_tables in case a
4294         collection occurs during domain unloading and the roots would trip
4295         up the GC.
4296
4297 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4298
4299         * object-internals.h: Remove serialized culture fields from
4300         MonoInternalThread.
4301
4302         * icall-def.h, thread-types.h, threads.c: Remove serialized
4303         culture icalls.
4304
4305         * appdomain.c: Corlib version bump.
4306
4307 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4308
4309         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4310         Fixes #543133.
4311
4312 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4313
4314         * sgen-gc.c: Try to shorten the new section after a major
4315         allocation to avoid ever-growing sections.
4316
4317 2009-10-13  Martin Baulig  <martin@ximian.com>
4318
4319         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4320         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4321         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4322         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4323
4324         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4325
4326 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4327
4328         * threadpool.c: fixed the order in which 'completed' and the wait
4329         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4330         No need to use the wait_handle field of ASyncCall. Make sure the
4331         threadpool is active when adding a job or queueing an idle thread.
4332
4333 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4336
4337         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4338         when using --compile-all.
4339
4340 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4341
4342         * metadata.c (free_generic_class): Unregister the field_objects
4343         roots if we're using SGen.
4344
4345 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4346
4347         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4348         for GenericParamTableEntry.gparam.
4349
4350 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4351
4352         * marshal.c: don't create the handle when calling. It is created later
4353         if needed.
4354
4355 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4356
4357         * sgen-gc.c: Warning fixes.
4358
4359 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4360
4361         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4362         whole heap for cross-domain references before each collection.
4363
4364         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4365         object.
4366
4367         * threadpool-internals.h, threadpool.c: New function
4368         mono_thread_pool_is_queue_array() for checking whether a given
4369         array is used as a (cross-domain) queue by the thread pool code.
4370
4371 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4372
4373         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4374         searches the whole heap for objects containing a specific
4375         reference.  Only for debugging.
4376
4377 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4378
4379         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4380
4381         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4382         byte arrays between domains.
4383
4384 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4385
4386         * threadpool.c:
4387         * class-internals.h:
4388         * mono-perfcounters-def.h:
4389         * mono-perfcounters.c:
4390         -There is a list of idle threads
4391         -Each of those idle threads wait on their own WaitHandle instead
4392         of all of them using the same semaphore. When a new work item is
4393         added, the job is assigned directly to an idle thread or a newly
4394         created one if possible and then the handle for that thread is
4395         signaled. Compare that to the current approach where all the
4396         threads in the pool compete to dequeue a job from the same
4397         queue.
4398         -New struct ThreadPool that brings together the bunch of static
4399         variable for each threadpool (IO and regular).
4400         -New performance counters: # of items added and its rate per
4401         threadpool. The rate will be used later, perhaps together with
4402         other perf. counters, to decide when idle threads should exit.
4403
4404 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4405
4406         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4407         Fix typo on Windows build.      
4408         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4409         
4410         Code is contributed under MIT/X11 license.
4411
4412 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4413
4414         * object-internals.h: The Thread class is split up into Thread and
4415         InternalThread now.  We have exactly one InternalThread per
4416         thread, and at most one Thread per appdomain per thread.  Most
4417         data is stored in InternalThread.  All InternalThread objects live
4418         in the root domain.
4419
4420         * class-internals.h: Add internal_thread_class to MonoDefaults.
4421
4422         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4423         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4424         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4425         resulting from the split of the Thread class.
4426
4427         * gc-internal.h: Prototype for new function for checking whether a
4428         thread is the finalizer thread.
4429
4430         * appdomain.c: Corlib version bump.
4431
4432 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4433
4434         * appdomain.c|h: Add a mono_domain_try_unload method which is
4435         equivalent to mono_domain_unload, except that it returns an exception
4436         instead of throwing it. Make mono_domain_unload use the
4437         mono_domain_try_unload method to avoid code-duplication.
4438
4439 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4440
4441         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4442         a problem.
4443
4444 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4447         aborting when a conversion is not implemented.
4448
4449 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4450
4451         * verify.c: when comparing culture strings, use g_ascii_strcmp
4452
4453         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4454         when comparing public key tokens to use memcmp on 16 bytes.   I do
4455         not believe this ever worked as advertised in the past.
4456
4457         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4458         which would have always failed earlier.
4459
4460 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4461
4462         * gc.c: Raise a NullArgumentException if the object passed is
4463         null.
4464
4465 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4466
4467         * image.c (mono_image_close): Atomically decrement the reference count and
4468         remove the image from the hash tables, to prevent another thread from seeing a
4469         dying MonoImage. Fixes #541194.
4470
4471 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4472
4473         * threadpool.c: actually use the minimum number of 'completion ports'
4474         (for us is just a potential worker thread).
4475
4476 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4477
4478         * threadpool.c: remove ares_htable. It does not make sense any more
4479         since the same objects are now stored in GC-tracked arrays while they are
4480         in the queue.
4481
4482 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4483
4484         * threadpool.c: increase the minimum length of the queues to 128.
4485         Remove warning.
4486
4487 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4490         return the modified signature used by string ctors.
4491
4492 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4495         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4496         method, to be used by full-aot.
4497
4498 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4499
4500         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4501         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4502         be known to be good.
4503
4504         * class.c (mono_class_init): Fail array types if their element type fails initialization
4505         as well.
4506
4507         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4508         initialization, additionally we request the element_type vtable to be initialized as well.
4509
4510         This is fine and should not increase the working set in any meaningful way since it's reasonable
4511         to assume       that most code will create an array and eventually populate it, which will require the
4512         type's vtable to be initialized.
4513
4514         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4515
4516 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4517
4518         * normalization-tables.h : regenerated.
4519
4520 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4521
4522         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4523         a leb128 encoding can take up to 5 bytes.
4524
4525 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4526
4527         * class.c (verify_class_overrides): Remove useless argument.
4528
4529         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4530         before interface enumeration as this is no longer required.
4531
4532 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4533
4534         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4535         used under mono_class_init context. This functions avoid any code path that
4536         calls mono_class_init, which leads it to be slow as some things like the interface
4537         bitmap are not available.
4538
4539         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4540         of it's own broken version. Fixes the verifier part of #538588.
4541
4542         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4543         API.
4544
4545 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4546
4547         * class.c (mono_class_init): Always set an exception in a class if
4548         vtable setup fails.  Fixes #538577.
4549
4550         * generic-sharing.c: Raise an exception if mono_class_vtable()
4551         returns NULL.
4552
4553 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4554
4555         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4556         methods of vtypes, as they could be incorrectly shared with static methods
4557         taking an IntPtr argument.
4558
4559 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4560
4561         * domain.c:
4562         * object.c:
4563         * class-internals.h: renamed waithandle_class to
4564         manualresetevent_class.
4565         * marshal.c: propagate the exception if a remoting BeginInvoke call
4566         fails.
4567
4568 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4569
4570         * object.c: Properly handle vtable failures.
4571
4572 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4573
4574         * socket-io.c: Assert on vtable failure.
4575
4576         * mono-mlist.c: Assert on vtable failure.
4577
4578 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4579
4580         * marshal.c: Assert on vtable failure.
4581
4582 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4583
4584         * icall.c: Properly handle vtable failures.
4585
4586 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4587
4588         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4589
4590 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4591
4592         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4593
4594         * console-unix.c (do_console_cancel_event): Same.
4595
4596 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * class-internals.h: Add mono_class_vtable_full function that allows control
4599         if an exception should be raised or not.
4600
4601         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4602         to do what its documentation say, that is to return NULL and set exception_type on
4603         failure.
4604
4605         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4606         and change the code to honor it.
4607
4608 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4609
4610         * verify.c: Fix typo in error message.
4611
4612 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4613
4614         * security-core-clr.c: Fix default_platform_check so it can run
4615         the runtime coreclr tests (without an infinite recursion when
4616         throwing an exception).
4617
4618 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         object.c (mono_delegate_ctor_with_method): Guard against null method.
4621
4622 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4623
4624         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4625         that should be replaced with error handling later.
4626
4627 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4628
4629         * marshal.c (mono_delegate_end_invoke): Fix warning.
4630
4631 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4632
4633         * loader.c (mono_field_from_token): Properly handle invalid
4634         dynamic tokens.
4635
4636 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638         * pedump.c (verify_image_file): Skip types that can't be
4639         decoded.
4640
4641 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4642
4643         * verify.c: Look for recursive valuetypes only against the
4644         type been initialized as this is a lot simpler and works.
4645
4646 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4647
4648         * verify.c: Ensure that fields are properly loaded before
4649         checking them.
4650
4651 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4652
4653         * object.c (mono_object_get_virtual_method) : Call 
4654           mono_cominterop_get_invoke if the object is a COM object.
4655
4656         Code is contributed under MIT/X11 license.
4657
4658 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4659
4660         * verify.c: Check for recursive valuetype definitions.
4661
4662 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4663
4664         Use inheritance-aware interface offsets. Inherited types use the same offsets
4665         of their parents. This reduce offset duplication in case more than one type in
4666         the inheritance tree explicitly implements the same interface.
4667
4668         This also removes a source of vtable bubbles found in #532409. An abstract type
4669         isn't required to provide abstract methods to all interfaces it implements, which
4670         resulted in a bubble with the previous scheme as the child would get a non-full
4671         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4672         should be fixed.
4673
4674         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4675         it's expected to not cause any significant increase beyond that.
4676
4677         * class.c (setup_interface_offsets): Compute super class iface offsets
4678         first to force sharing.
4679
4680         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4681         dumping only the relevant ones.
4682
4683         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4684         methods a new slot regardless if they belong to an interface or not. This allows
4685         an inherited type to override the iface method separately from the class one.
4686
4687 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4688
4689         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4690         applications that take less than 2s to execute.
4691         Bug #524984 fixed.
4692
4693 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4694
4695         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4696
4697         * object.c (mono_get_runtime_callbacks): New helper function to return
4698         the runtime callbacks.
4699
4700         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4701         mono_get_runtime_build_info () as the display name.
4702         
4703 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4704
4705         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4706         argument, since NEWARR expects a native int. Fixes #481559.
4707
4708 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4709
4710         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4711         against broken SRE methods.
4712
4713 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4714
4715         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4716         a NULL variable. Abort early on failure.
4717
4718 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4719
4720         * class.c (can_access_type): Fail visibility test for non nested
4721         types with nested visibility.
4722
4723 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4724
4725         * assembly.c (parse_public_key): Avoid allocating (and not 
4726         freeing) the public key array when it's not requested by the 
4727         caller.
4728         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4729         ves_icall_System_Threading_Thread_Thread_internal): Free 
4730         allocated memory on error.
4731
4732 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4733
4734         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4735
4736 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4737
4738         * class.c (mono_class_setup_fields): Remove duplicated local variable
4739         named gklass.
4740         Rename gklass to gtd to reflect the fact that it points to the generic
4741         type definition.
4742         Remove the duplicated call to mono_class_setup_fields on gtd and move
4743         the error check to the beginning.
4744
4745 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4746
4747         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4748         Remove cruft of the previous patch.
4749
4750 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4751
4752         * metadata-verify.c (verify_method_table): Check for abstract + final.
4753         Fixes #534175.
4754
4755 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4756
4757         * verify.c (verify_class_fields): Check for duplicate fields.
4758
4759 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4760
4761         * metadata-verify.c: Verify the typeref table for duplicates.
4762
4763 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4764
4765         This reverts r140936 and properly handles interfaces with static methods. The
4766         right fix is to ensure vtables without bubles which is an easier to verify
4767         constraint. We should avoid such special cases as of the reverted patch as those
4768         only make the runtime more brittle.
4769
4770         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4771         static methods on interfaces.
4772
4773         * class.c (setup_interface_offsets): Use the number of virtual methods when
4774         calculating interface offsets instead of the number of methods. This way we
4775         avoid bubles on the layout.
4776
4777 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4778
4779         * metadata-verify.c (verify_metadata_header): Some very smart
4780         obfuscators like to add extra stream headers. Ignore them.
4781
4782 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4785         methods correctly.
4786
4787 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4788
4789         * metadata-verify.c: Verify for duplicated types.
4790
4791 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4792
4793         * metadata-verify.c (verify_typedef_table): Verify for nested types
4794         without an entry on the nested class table.
4795
4796 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4797
4798         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4799         <tom_hindle@sil.org>. Add locking around hash table accesses.
4800
4801 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4802
4803         * verify.c (mono_verifier_verify_class): Verify all interface if
4804         really are interfaces. Fixes #534184.
4805
4806 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4807
4808         * pedump.c: Initialize all types during metadata validation so we report
4809         errors only detected as part of class initialization.
4810
4811 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4812
4813         * metadata-verify.c (verify_method_table): PInvoke requires method to
4814         be static. Fixes #534189
4815
4816 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4817
4818         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4819         being NULL.
4820
4821 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4822
4823         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4824         for holes or bad methods. Fixes #525314.
4825
4826 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4827
4828         * class.c (setup_interface_offsets): Don't allocate slot
4829         for the same interface multiple times. This creates bubbles
4830         that waster space and make vtable verification harder.
4831
4832         The same interface get a slot multiple times since we need
4833         to get the closure of all implemented interfaces, which means
4834         the same interface is reported multiple times.
4835
4836 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4837
4838         * verify.c (mono_verifier_verify_class): Don't check the fields
4839         of generic instances since the context on which they got expanded
4840         might lead to false positives.
4841
4842         Such thing happens when a generic type is inflated in the context
4843         of a generic method and the inflated type of a field turns into a
4844         generic method argument, which causes the checking code to think
4845         it's an invalid class when it's not.
4846
4847 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4848
4849         * verify.c (mono_type_is_valid_in_context): Verify if type
4850         is NULL and remove duplicate test.
4851
4852 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4853
4854         * verify.c (mono_verifier_verify_class): Check fields for
4855         invalid generic arguments.
4856
4857 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4858
4859         * class.c (verify_class_overrides): Verify if for static
4860         and non virtual methods.
4861
4862 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4863
4864         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4865         Check for errors after retrieving the vtable.
4866
4867 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4868
4869         * class.c (mono_class_setup_vtable_general): Verify
4870         if method overrides are valid before processing them.
4871
4872 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4873
4874         * marshal.c (mono_array_to_lparray): Fix minimal build with
4875         cominterop disabled.
4876
4877         * marshal.c (mono_free_lparray): Same.
4878
4879 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4880
4881         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4882         the hash function for the ares_htable.
4883
4884 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4885
4886         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4887         bit for assembly flags. MS is ok with it but there is no spec anywhere
4888         on its mean
4889
4890 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4891
4892         * class.c (mono_class_create_from_typedef): Emit profiler events
4893         in all cases.
4894
4895 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4896
4897         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4898         Release memory on failure.
4899
4900 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4901
4902         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4903         to the internal API.
4904
4905         * metadata.c (get_constraints): Use a single-linked table as we don't
4906         traverse it backward. Fail and return FALSE if only of the contraint types
4907         is not found.
4908
4909         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4910         to mono_metadata_load_generic_param_constraints except for having a return value.
4911         This has to be done since the later is part of the public API.
4912
4913         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4914         and fail the type.
4915
4916         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4917         and fail the method.
4918
4919 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4920
4921         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4922         with MS broken behavior of emmitting EH section sizes without the
4923         header size added.
4924
4925 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4926
4927         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4928         memory until we're sure that we'll need it. This avoids leaking for
4929         broken types or duplicated instantiation.
4930
4931 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4932
4933         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4934         mistake.
4935
4936 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4937
4938         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4939         and expected size calculation.
4940
4941 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4942
4943         * class.c (mono_class_get_field_idx): Add fixme for broken
4944         behavior for types with multiple fields with the same name.
4945         I would rather fix it, but have no idea on how to generate
4946         such artifact for testing.
4947
4948 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4949
4950         * verify.c (verifier_load_field): We should allow references to
4951         fields to be made using the generic type definition. It's up to
4952         the loader system to fail invalid ops.
4953
4954         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4955         are invalid.
4956
4957 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4958
4959         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4960
4961         * metadata-internals.h: Fix declaration of 
4962         mono_metadata_interfaces_from_typedef_full.
4963
4964         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4965         heap_alloc_result parameter that controls if the result should be
4966         g_malloc'd.
4967
4968         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4969         array be g_malloc'd and properly document this public API function.
4970
4971 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4972
4973         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4974         remove METHOD_HEADER_TINY_FORMAT1.
4975
4976         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4977
4978         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4979
4980         Both spec and MS uses only 2 bits to enumerate the kind of header.
4981         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4982         is superfluous, only used for tiny headers with odd code lengths.
4983
4984         This change also make sure that mono doesn't wronly interpret bit 2
4985         of fat header flags, which is currently reserved.
4986
4987 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4988
4989         * metadata.c (do_mono_metadata_parse_type): Do error
4990         checking for element types. Don't abort if presented
4991         with a broken type kind.
4992
4993 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4994
4995         * metadata.c (mono_metadata_parse_method_signature_full):
4996         Gracefully fail bad vararg signatures.
4997
4998 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4999
5000         * profiler.c:
5001         * class.c: Fix warnings for uninitialized variables.
5002
5003 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5004
5005         * icall.c: Fix _NSGetEnviron method declaration warning.
5006
5007 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5008
5009         * icall.c:
5010         * reflection.c: Make bitwise checks explicit.
5011
5012 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5013
5014         * debug-helpers.c:
5015         * marshal.c: Fix printf warnings.
5016
5017 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
5018
5019         * reflection.c (encode_cattr_value): Fix a warning.
5020
5021 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5022
5023         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
5024         of array bounds.
5025
5026 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5027
5028         * loader.c (mono_method_signature): Don't assert on broken
5029         signature. Print a more useful error message.
5030
5031 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5032
5033         * loader.c (mono_method_get_marshal_info): Assert if
5034         signature is invalid. Bounds check stores to the
5035         mspecs array;
5036
5037 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5038
5039         * loader.c (field_from_memberref): Fix warning.
5040
5041 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5042
5043         * loader.c (mono_method_get_param_names): Check if signature
5044         is null. Don't store beyond the size of the name array.
5045
5046 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5047
5048         * loader.c (mono_get_method_constrained): Check if signature
5049         is null.
5050
5051 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5052
5053         * loader.c (mono_loader_set_error_bad_image): Improve
5054         error messages.
5055
5056 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5057
5058         * loader.c (mono_get_method_full): Convert an assertion
5059         into a loader error.
5060
5061 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5062
5063         * class-internals.h, class.c: Better naming and documentation.
5064
5065 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
5066
5067         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
5068         obj is NULL.
5069
5070 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5071
5072         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
5073         parsing fails.
5074
5075 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5076
5077         * loader.c (mono_loader_error_prepare_exception): Handle missing field
5078         errors with no class set.
5079
5080         * loader.c (field_from_memberref): If the field signature is of the wrong
5081         type fail with a MissingFieldException instead of a BadImageException as
5082         this is the behavior observed on MS. 
5083
5084 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5085
5086         * loader.c (field_from_memberref): Don't crash if either the field
5087         signature or the typespec class are invalid.
5088
5089 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5090
5091         * verify.c (verifier_load_field): Don't allow field related
5092         ops to reference fields on generic type definition.
5093
5094 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5095
5096         * metadata-verify.c: Add new warning level for errors specified
5097         by ECMA 335 but that MS ignores.
5098
5099         * metadata-verify.c (verify_method_table): Make compiler controled
5100         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
5101         this check is safe because the end result will only be some visibility
5102         exceptions been thrown.
5103
5104 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5105
5106         * verify.c (get_boxable_mono_type): Don't allow the
5107         use of the generic type definition on boxed type positions.
5108
5109         Fixes #531237.
5110
5111 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5112
5113         * threadpool.c: Make sure no cross-domain references remain in
5114         ares_htable or the arrays that are thrown away when resizing.
5115
5116 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5117
5118         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
5119         list of classes for which we have to unregister reflection_info
5120         with the GC and which are not in the namespace cache.
5121
5122         * reflection.c (mono_reflection_initialize_generic_parameter): Add
5123         the class to the list.
5124
5125 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5126
5127         * domain.c (mono_domain_free): Unregister the GC roots in
5128         MonoDomain.
5129
5130 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
5131
5132         * reflection.c (mono_reflection_type_get_handle): Fix typo.
5133
5134 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
5135
5136         * class.c: Add mono_class_get_field_from_name_full which does
5137         the same as mono_class_get_field_from_name but does check field
5138         signature as well.
5139
5140         * class-internals.h: Export mono_class_get_field_from_name_full as
5141         part of the internal API.
5142
5143         * loader.c (field_from_memberref): Search fields by name and signature
5144         as it's valid to have two fields with same name but different types.
5145
5146         Fixes #528055.
5147
5148 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
5149
5150         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
5151
5152         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
5153
5154         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
5155         System.Type.
5156
5157 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
5158
5159         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
5160
5161         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
5162
5163 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5164
5165         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
5166         to sgen-scan-object.h, which can be included and parameterized via
5167         macros.
5168
5169         * Makefile.am: sgen-scan-object.h added.
5170
5171 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5172
5173         * gc.c: #define GC_dont_gc if we're compiling with SGen.
5174
5175 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5176
5177         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
5178         before clearing a domain in the GC.
5179
5180 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5181
5182         * exception.c (mono_exception_from_name_domain): Actually create
5183         the exception in the specified domain.
5184
5185         * appdomain.c (mono_domain_create_appdomain_internal): Create the
5186         OutOfMemoryException a bit later so that the domain is inialized
5187         "enough" that it works.
5188
5189 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5190
5191         * threads.c (thread_cleanup): Clean up the cached_culture_info
5192         array to prevent cross-domain references.
5193
5194 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
5195
5196         * metadata.c: more documentation for MonoType accessors.
5197
5198 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
5199
5200         Fix incorrect size definitions where the tail array isn't a list
5201         of pointers
5202         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
5203         define size.
5204         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
5205         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
5206         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
5207
5208 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5209
5210         * reflection.h:
5211         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
5212
5213 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5214
5215         * metadata.c:
5216         * loader.c:
5217         * metadata-internals.h:
5218         * method-builder.c:
5219         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
5220
5221 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5222
5223         * cominterop.c:
5224         * metadata.c:
5225         * metadata.h:
5226         * loader.c:
5227         * marshal.c:
5228         * reflection.c: #define for sizeof in MonoType and
5229         MonoMethodSignature.
5230
5231 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5232
5233         * domain.c:
5234         * domain-internals.h: add and use #define's instead of sizeof()
5235         for MonoJitInfo and MonoJitInfoTable.
5236
5237 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5238
5239         * object.c:
5240         * class.h: use #define instead of sizeof() for MonoRemoteClass.
5241
5242 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5243
5244         * metadata.c:
5245         * metadata.h:
5246         * object.c:
5247         * class-internals.h:
5248         * generic-sharing.c:
5249         * marshal.c: use a #define instead of sizeof() for a few
5250         structures that use a zero-length array.
5251
5252 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5253
5254         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
5255         to handle inflated generic methods.
5256
5257         * appdomain.c: Bump corlib version.
5258
5259         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
5260         instances.
5261
5262         * reflection.c (fixup_method): Same
5263
5264         * reflection.c (resolve_object): Same.
5265
5266         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
5267         g_error and a decent message.
5268
5269 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
5270
5271         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5272         from the object because it could not yet be available globally
5273         (it happens if the profiler tries to create a gchandle on the
5274         MonoThread object of a thread that is still registering itself
5275         with the runtime).
5276
5277 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5278
5279         * reflection.c (mono_generic_class_get_object): Initialized the
5280         managed type arguments array.
5281
5282         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5283
5284         * appdomain.c: Bump corlib version.
5285
5286 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5287
5288         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5289         #527902.
5290
5291 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5292
5293         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5294         Avoid a crash if synch_cs is not set.
5295         
5296         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5297         Handle the case when the handle is 0.
5298
5299         * appdomain.c: Bump corlib version.
5300
5301 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5302
5303         * reflection.c (mono_type_get_object): Fix a warning.
5304
5305 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5306
5307         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5308         descriptor here.  We assume it's already been computed.
5309
5310         * generic-sharing.c (instantiate_other_info): Compute the GC
5311         descriptor for info type MONO_RGCTX_INFO_KLASS.
5312
5313 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5314
5315         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5316         type, so don't use MONO_OBJECT_SETREF to set a field.
5317
5318 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5319
5320         * gc.c: We were missing one case where invoking a finalizer would
5321         not reset the domain.  Also, in the finalizer thread loop, assert
5322         that we're in the root domain.
5323
5324 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5325
5326         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5327         if the type is not an array.
5328
5329 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5330
5331         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5332         method bound to the declaring type of the method. Raise an exception
5333         if the type is not a generic param.
5334
5335 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5336
5337         * class.c (print_unimplemented_interface_method_info): Print the
5338         full type name.
5339
5340         * class.c (mono_class_setup_vtable_general): When dealing with a
5341         generic instance first check if the generic type definition is
5342         not broken.
5343
5344 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5345
5346         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5347
5348         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5349
5350         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5351
5352         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5353
5354         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5355
5356         Code is contributed under MIT/X11 license
5357
5358 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5359
5360         * verify.c: Fix naming of stelem and ldelem.
5361
5362 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5363
5364         * generic-sharing.c: Replace the templates lock with the loader
5365         lock because of very hard to resolve deadlock issues.
5366
5367 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5370         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5371         directly. Fixes #525338.
5372
5373         * class.c (mono_class_get_vtable_size): New helper function.
5374
5375         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5376         the field belongs to the type. Fixes #525733.
5377
5378 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5379
5380         * sgen-gc.c: When we stop a thread and its stack top is not within
5381         its allocated stack (because it's in an altstack signal handler),
5382         restart it and stop it again, until it is.
5383
5384 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5385
5386         * sgen-gc.c: Take a thread's stack top and registers from the
5387         sigcontext in the suspend signal handler.
5388
5389         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5390         stuff to sgen-archdep.h.
5391
5392         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5393         caller, because have code in sgen-archdep.h to acquire that data.
5394
5395 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5396
5397         * profiler.c, profiler.h, profiler-private.h:
5398         Added support for keeping track of code chunks and buffers.
5399
5400 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5401
5402         * metadata-verify.c: Fix endianness problems on decoding functions.
5403         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5404
5405 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5406
5407         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5408         schema for vectors and one dimension SZARRAY.
5409
5410 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5411
5412         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5413         schema for vectors and one dimension SZARRAY.
5414
5415 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5416
5417         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5418         Interlocked.(Compare)Exchange with object arguments, which invoke
5419         write barriers.
5420
5421 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5422
5423         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5424         passed invalid arguments.   Fixes another crasher in the
5425         Silverlight test suite.
5426
5427         * class.c (mono_class_array_element_size): Return 0 for the size
5428         of the class;  This fixes the crasher exposed by :
5429
5430         typeof (void).MakeArrayType ();
5431
5432         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5433         if there is no method to dereference.    Put all the code that
5434         depends on this inside the if (method) block.
5435
5436         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5437         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5438
5439         With this change, we pass the test.
5440         
5441         * reflection.c (mono_reflection_sighelper_get_signature_local):
5442         Only dereference the assembly if it has been set.    Fixes a
5443         crasher exposed by #525328
5444
5445 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5446
5447         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5448         don't perform the store in mono_gc_wbarrier_generic_nostore().
5449         Remove the second argument (value), which is not needed.
5450
5451 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5452
5453         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5454         the build.
5455
5456         * boehm-gc.c: Ditto.
5457         
5458 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5459
5460         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5461         not perform the store itself.  Introduce
5462         mono_gc_wbarrier_generic_nostore(), which is the same as
5463         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5464         store.
5465
5466 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5467
5468         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5469         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5470         we still need the memcpy().
5471
5472 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5473
5474         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5475         so that big arrays are handled correctly.  Always use
5476         safe_object_get_size() to calculate array object sizes, which
5477         takes bounds into account.
5478
5479 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5480
5481         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5482         GC descriptor is computed before we use it.
5483
5484 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5485
5486         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5487         write barrier if necessary.
5488
5489 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5490
5491         * icall-def.h, icall.c, thread-types.h: New separate icall for
5492         VolatileWrite(object&,object) that uses a write barrier.
5493
5494         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5495         barriers in icalls which write to "ref" or "out" arguments.
5496
5497 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5498
5499         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5500         handler in a separate icall, to reduce the size of the wrappers.
5501
5502 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5503
5504         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5505
5506 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * metadata-verify.c (parse_field): Allow byref field.
5509
5510         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5511
5512         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5513
5514 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5515
5516         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5517         Fixes #522784.
5518
5519 2009-07-20  Robert Jordan  <robertj@gmx.net>
5520
5521         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5522         Fix invalid IL in valuetype handling (STOBJ must push the
5523         corresponding class). Fixes bug #523149.
5524
5525         Code is contributed under MIT/X11 license.
5526
5527 2009-07-20  Geoff Norton  <gnorton@novell.com>
5528
5529         * gc.c: Use proper semaphores where available on posix and darwin.
5530
5531 2009-07-19  Geoff Norton  <gnorton@novell.com>
5532
5533         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5534
5535 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5536
5537         * refletion.c (is_sre_usertype): Change name to is_usertype and
5538         invert it's result so it returns true if the type is an user type
5539         and not the opposite.
5540
5541         * reflection.c (is_*_type): Change all of those to use new macro
5542         check_corlib_type_cached that cached the type lookup so we don't
5543         need to do string comparisons all the type. Changed the signature
5544         to take a MonoClass instead.
5545
5546         * reflection.c: Change mono_image_create_token and resolve_object
5547         to use is_sre_* functions.
5548
5549 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5550
5551         * sgen-gc.c: Check for writes to the stack in the managed
5552         wbarrier as well.
5553
5554 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5555
5556         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5557         but put them on a list which is processed with the other thread's
5558         remsets.
5559
5560 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5561
5562         * sgen-gc.c: Fix and enable the internal allocator instead of
5563         using malloc/free (which causes deadlocks).
5564
5565 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5566
5567         * refletion.c: Fix builds with SRE disabled by adding a minimal
5568         implementation of mono_reflection_type_get_handle.
5569
5570 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5571
5572         * refletion.c: Make mono_reflection_type_get_handle non static.
5573
5574         * object-internals.h: Export mono_reflection_type_get_handle.
5575
5576         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5577         unmanaged handle using mono_reflection_type_get_handle.
5578
5579 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5580
5581         * refletion.c: Replace all reads of MonoReflectionType::type with
5582         calls to mono_reflection_type_get_handle. Only the functions that
5583         deal with constructing TypeBuilder::type have not been changed
5584         because they have to deal with NULL values.
5585
5586         This is a first step into supporting reflection types that don't
5587         map directly into their unmanaged counterpart.
5588
5589 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * metadata-verify.c (parse_locals_signature): Don't complain
5592         on signature with zero locals since MS generates it and doesn't
5593         bother with.
5594
5595 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5596
5597         * reflection.c (mono_image_get_array_token): Resolve return
5598         type using mono_reflection_type_get_handle.
5599
5600         * reflection.c (mono_image_get_array_token): Resolve array method
5601         parent type using mono_reflection_type_get_handle.
5602
5603 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5604
5605         * reflection.c (mono_image_basic_init): Applied patch from
5606         <Dax@daxxfiles.net>. Set the public key token from the assembly
5607         builder. Fixes #518909.
5608
5609         * appdomain.c: Bump corlib version.
5610
5611 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5612
5613         * class.c (mono_class_needs_cctor_run): Make this return false if
5614         the class has no cctor.
5615
5616 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5617
5618         * sgen-gc.c: When the minor GC needs to allocate a new section,
5619         invoke the major GC afterwards.
5620
5621 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5622
5623         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5624           Applying the window_style field to the SHELLEXECUTEINFO struct.
5625
5626         Code is contributed under MIT/X11 license.
5627
5628 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5629
5630         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5631         locking earlier.  Fix it in the managed allocator by making sure
5632         that no thread is stopped there before the GC runs.  If we do stop
5633         a thread there, we restart it and let it run a but, until it stops
5634         somewhere else.
5635
5636         * gc-internal.h, gc.c: Function for getting the IP from a signal
5637         context via a function registered by mini.
5638
5639 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5640
5641         * object-internals.h (MonoIntPtr): New structure describing a boxed
5642         IntPtr.
5643
5644         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5645         returns. Fixes #519953.
5646
5647         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5648
5649 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5650
5651         * class-internals.h, generic-sharing.c: New RGCTX info type for
5652         getting a remoting invoke with check wrapper.
5653
5654 2009-07-07  Geoff Norton  <gnorton@novell.com>
5655
5656         * icall-def.h: Fix the enable-minimal build.
5657
5658 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5659
5660         * object-internals.h: Add MonoReflectionDerivedType.
5661
5662         * reflection.c: Implement support for PointerType.
5663         Fixed tons of warnings.
5664
5665 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5666
5667         * object-internals.h: Add MonoReflectionByRefType.
5668
5669         * reflection.c: Implement support for ByRefType.
5670
5671 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5672
5673         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5674
5675         * object-internals.h: Add MonoReflectionArrayType and
5676         mono_reflection_create_unmanaged_type.
5677
5678         * reflection.c: Implement support for ArrayType.
5679
5680 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * metadata-verify.c (is_valid_method_header): Parse EH block
5683         flags correctly.
5684
5685 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5686
5687         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5688         processing the disappearing links, and process disappearing links
5689         in a loop until no new objects are copied.
5690
5691 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5692
5693         * object.c (handle_enum): Invoke the write barrier when copying
5694         value type instances.
5695
5696         * sgen-gc.c: Register remsets for unmanaged write barriers only
5697         when the address written to is actually on the heap.  This makes
5698         set_value() in object.c work without requiring that the result be
5699         on the heap.
5700
5701 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5702
5703         The runtime wrappers are all bound to a given type that must
5704         exist in the same image. For regular images we use the <Module>
5705         type, which is required to exist for all images.
5706
5707         The <Module> type can't be used for dynamic images because it
5708         might not exist at the time the wrapper is required, so we create
5709         a synthetic type to use instead.
5710
5711         The current code works because of the 2 stage setup of MonoClass,
5712         but once this is gone it will no longer work.
5713
5714         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5715
5716         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5717
5718         * object-internals.h: Export mono_image_set_wrappers_type icall
5719         as part of the internal API.
5720
5721         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5722         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5723
5724         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5725         image wrappers_type to the provided value.
5726
5727 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5728
5729         * appdomain.c (deregister_reflection_info_roots): No need
5730         to use the image lock here.
5731
5732 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5733
5734         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5735
5736 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5737
5738         * threads.c: Store the thread start argument in a hash table instead of
5739         registering it as a root, as libgc doesn't support unregistering roots
5740         under windows, leading to 'too many root sets' errors when many threads
5741         are created.
5742
5743         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5744         shutdown, they can still be referenced by the other dying objects.
5745         Fixes #514506.
5746
5747 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5748
5749         * socket-io.c: DontLinger does not allow LingerOptions.
5750
5751 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5752
5753         * metadata-verify.c: The spec doesn't mention that it's possible to add
5754         custom attribute to a generic parameter. Fixed.
5755
5756 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5757
5758         * class.c (inflate_generic_type): Don't crash while trying to output a message
5759         on why we're aborting.
5760
5761 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5762
5763         * socket-io.c: DontLinger can take an int or a boolean too.
5764
5765 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5766
5767         * gc.c: check for a null argument to SuppressFinalize () and
5768         ReRegisterForFinalize ().
5769
5770 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5771
5772         * loader.c (method_from_methodspec): Call into the verifier to check
5773         the signature.
5774
5775         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5776
5777         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5778         part of the internal API.
5779
5780 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5781
5782         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5783         the signature.
5784
5785         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5786
5787         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5788         part of the internal API.
5789
5790 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5791
5792         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5793         the signature.
5794
5795         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5796         blob verification.
5797
5798         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5799         part of the internal API.
5800
5801 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5804         when doing basic verification. 
5805
5806         This check must be done since the runtime peeks into signatures in much
5807         more places than it does decoding so it makes sense to ensure that all
5808         pointers to blob objects are well formed.
5809
5810 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5811
5812         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5813         Use proper overflow dectection. Fix usage of it.
5814
5815 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5816
5817         * loader.c (field_from_memberref): Call into the verifier to check
5818         the signature.
5819
5820         * loader.c (mono_method_get_signature_full): Same.
5821
5822         * loader.c (method_from_memberref): Same.
5823
5824         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5825
5826         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5827         part of the internal API.
5828
5829 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5830
5831         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5832         or unloaded, still return an AsyncResult, but don't add it to the
5833         threadpool.
5834
5835 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5836
5837         * threads.c: fix missing colon when DEBUG is defined.
5838
5839 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5840
5841         * threadpool.c: Don't add new calls to a threadpool if the domain
5842         of the call is unloading or unloaded.  When dequeuing a job, null
5843         the reference in the queue.
5844
5845 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5846
5847         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5848         generation if an object was moved.
5849
5850 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5851
5852         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5853           parameters of type SAFEARRAY[VARIANT].
5854
5855         * reflection.c (encode_marshal_blob): Properly generate element type
5856           (SafeArraySubType marshal attribute option).
5857
5858         Code is contributed under MIT/X11 license.
5859
5860 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5861
5862         * reflection.c: in mono_method_clear_object () really ensure all the
5863         objects are removed.
5864
5865 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5866
5867         * loader.c (mono_method_signature): Call into the verifier to check
5868         the method signature.
5869
5870         * metadata-verify.c (verify_method_table): Move signature verification
5871         to verify_method_table_full.
5872
5873         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5874
5875         * verify-internals.h: Export mono_verifier_verify_method_signature as
5876         part of the internal API.
5877
5878 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5879
5880         * loader.c (mono_method_get_header): Call into the verifier to
5881         check the method header.
5882
5883         * metadata-verify.c: Add mono_verifier_verify_method_header.
5884
5885         * verify-internals.h: Export mono_verifier_verify_method_header as
5886         part of the internal API.
5887
5888 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5889
5890         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5891         check the field signature. Replace an assert with an explicit check.
5892
5893         * class.c (mono_class_setup_fields): Call into the verifier to check
5894         the field signature.
5895
5896         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5897
5898         * verify-internals.h: Export mono_verifier_verify_field_signature as
5899         part of the internal API.
5900
5901 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5902
5903         * class.c (mono_class_find_enum_basetype): Simplify this function
5904         by moving code outside of the loop and not decoding static fields.
5905
5906 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5907
5908         * metadata-verify.c (verify_typedef_table): Check the extends
5909         token here. Move to here a flags check from verify_typedef_table_full.
5910
5911 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5912
5913         * metadata-verify.c (is_valid_method_header): Fix a warning.
5914
5915         * metadata-internals.h (MonoImage): Remove the unused 
5916         static_rgctx_invoke_wrapper_cache.
5917
5918         * image.c marshal.c: Ditto.
5919
5920 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5921
5922         * image.c (do_mono_image_load): Enable table data verification.
5923
5924 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5925
5926         * metadata-verify.c (is_valid_constant): Fix nullref check.
5927
5928 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5929
5930         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5931
5932 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5933
5934         * sgen-gc.c: Managed allocation with pthreads TLS.
5935
5936         * threads.c, threads-types.h: Functions for the JIT to tell the
5937         runtime whether it supports the MONO_TLS opcode.
5938
5939 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5940
5941         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5942         without methods.
5943
5944 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5945
5946         * metadata-verify.c (is_valid_constant): Fix the string length check.
5947         Use safe overflow checking. Add decent error messages.
5948
5949 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5950
5951         * metadata-verify.c: Move remaininh blob checks to the offline
5952         verification path.
5953
5954 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5955
5956         * metadata-verify.c: Move more blob checks to the offline verification
5957         path.
5958
5959 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5960
5961         * object-internals.h : Adding interrupt_on_stop field.
5962
5963         * threads.c (mono_thread_request_interruption) : On Windows exit the
5964           thread if interrupt_on_stop is set.
5965
5966         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5967          Removing old interrupt logic and setting the interrupt_on_stop for the
5968          thread when calling accept.
5969
5970         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5971          setting the interrupt_on_stop for the thread when calling accept.
5972
5973         Contributed under MIT/X11 license.
5974
5975 2009-06-20  Martin Baulig  <martin@ximian.com>
5976
5977         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5978
5979 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5980
5981         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5982         running in no-exec mode.
5983
5984 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5985
5986         * metadata-verify.c (verify_method_table): Move header
5987         checking to verify_method_table_full.
5988
5989         * metata-verify.c (mono_verifier_verify_full_table_data):
5990         Call verify_method_table_full.
5991
5992 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5993
5994         * metadata-verify.c (verify_field_table): Move signature
5995         checking to verify_field_table_full.
5996
5997         * metata-verify.c (mono_verifier_verify_full_table_data):
5998         Call verify_field_table_full.
5999
6000 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6001
6002         * metadata-verify.c (verify_typedef_table): Move remaining
6003         stuff to verify_typedef_table_full.
6004
6005 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6006
6007         * metadata-verify.c: Kill is_corlib from VerifyContext.
6008         It is only used by the offline mode.
6009         So we better remove it from the runtime path.
6010
6011 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6012
6013         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
6014         function that perform the offline metadata verification steps.
6015
6016         * metadata-verify.c (verify_typedef_table): Move some checks to
6017         verify_typedef_table_full and make it been called by new function
6018         mono_verifier_verify_full_table_data.
6019
6020         * pedump.c: Call mono_verifier_verify_full_table_data.
6021
6022         * verify-internals.h: Export mono_verifier_verify_full_table_data as
6023         part of the internal API.
6024
6025 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6026
6027         * metadata-verify.c (typedef_is_system_object): Fix System.Object
6028         check.
6029
6030         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
6031         flags bits. SupportLastError was confused as bit 7 instead of 6.
6032
6033         * metadata-verify.c (verify_implmap_table): Fix import scope verification
6034         to check against the module ref table instead of module.
6035
6036         * metadata-verify.c (verify_implmap_table): Fix corlib check.
6037
6038         * pedump.c: Call mono_image_load_names.
6039
6040 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6041
6042         * image.c: Extract mono_image_load_names from do_mono_image_load.
6043
6044         * metadata-internals.h: Export mono_image_load_names as part of
6045         the internal API.
6046         
6047 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * metadata.c (mono_metadata_cleanup): Free the generic method cache
6050         first, as it could reference data in the other caches.
6051
6052 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
6053
6054         * metadata-verify.c: Finished with method header verification.
6055
6056 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
6057
6058         * metadata-verify.c: Added more header verification code.
6059         Now only EH clauses are missing.
6060
6061 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * marshal.c (get_runtime_invoke_type): Don't share primitive types
6064         for return values.
6065
6066 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
6067
6068         * metadata-verify.c: Initial method header verification.
6069
6070 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
6071
6072         * metadata-verify.c (verify_import_table): The IAT contents
6073         might end been patched by the windows DL when running with
6074         coree enabled.
6075
6076 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
6077
6078         * class.c (mono_class_from_typeref): If the enclosing type is not
6079         found return null instead of crashing. Fixes #508487.
6080
6081 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
6082
6083         * normalization-tables.h : updated to the latest unicode charcter
6084           data.
6085         * appdomain.c : bump corlib version.
6086
6087 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
6088
6089         * class.c (mono_class_from_name): Fix support for assembly references
6090         in the EXPORTEDTYPE table. Fixes #511704.
6091
6092 2009-06-13  Geoff Norton  <gnorton@novell.com>
6093
6094         * domain.c: Ensure that mono_domain_assembly_open actually opens the
6095         assembly in the target domain.
6096
6097 2009-06-12  Robert Jordan  <robertj@gmx.net>
6098
6099         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
6100         because "this" of the managed signature has become an
6101         ordinary parameter in the unmanaged signature.
6102
6103 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
6104
6105         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
6106         field for owner-less generic containers.
6107
6108         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
6109         image field of the owner-less generic containers created here.
6110
6111         * metadata.c (mono_metadata_load_generic_params): Ditto, the
6112         contain is ownerless until the caller sets its owner.
6113
6114         * metadata.c (type_in_image): Handle owner-less generic containers
6115         correctly.
6116         
6117 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
6118
6119         * image.c (mono_image_close): Support debug_assembly_unload for
6120         dynamic images too.
6121
6122 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
6123
6124         * class.c: Fix some typos in comments.
6125
6126 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
6127
6128         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
6129
6130         * threads.c (mono_thread_execute_interruption): Avoid creating the
6131         abort exception object while holding the synch_cs lock.
6132
6133 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6134
6135         * metadata-verify.c: Verify basic cattr content.
6136
6137 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
6138
6139         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
6140         nested types.
6141         
6142         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
6143         support for nested types. Fixes #511704.
6144
6145 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6146
6147         * metadata-verify.c: Verify methodspec signatures.
6148
6149 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6150
6151         * metadata-verify.c: Verify typespec signatures.
6152
6153 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
6154
6155         * metadata.c (free_inflated_method): Call 
6156         mono_marshal_free_inflated_wrappers (), which was missed earlier.
6157
6158 2009-06-08  Miguel de Icaza  <miguel@novell.com>
6159
6160         * mono-config.c: Small change to report the PPC64/ILP32 model.
6161
6162 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6163
6164         * metadata-verify.c (parse_type): Check szarray.
6165
6166 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6167
6168         * metadata-verify.c (parse_type): Check fnptr.
6169
6170 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6171
6172         * metadata-verify.c (parse_type): Check generic instances.
6173
6174 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6175
6176         * metadata-verify.c (parse_type): Check array shape.
6177
6178 2009-06-05  Robert Jordan  <robertj@gmx.net>
6179
6180         * class.c (mono_class_create_from_typedef): Check only for
6181         mscorlib's System.Array.
6182
6183 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6184
6185         * metadata-verify.c (parse_type): Check pointer, class/valuetype
6186         and generic params. 
6187
6188         * metadata-verify.c (parse_field): Check the signature.
6189
6190 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6191
6192         * metadata-verify.c: Implement locals signature check.
6193
6194 2009-06-04  Marek Safar  <marek.safar@gmail.com>
6195
6196         * domain.c: Add .NET 4.0 Beta 1 version.
6197
6198 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
6199
6200         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
6201           For QueryInterface on CCWs consider the base class
6202           interfaces as well.
6203
6204         Code is contributed under MIT/X11 license.
6205
6206 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
6209
6210         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
6211         used.
6212
6213         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
6214         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
6215
6216         * generic-sharing.c (inflate_other_data): Ditto.
6217         
6218 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6219
6220         * metadata-verify.c: Implement property signature check.
6221
6222 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6223
6224         * sgen-gc.h: Register saving support for PPC.
6225
6226 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6227
6228         * sgen-gc.c: Fixed a pthread TLS screwup.
6229
6230 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6231
6232         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
6233         supported.
6234
6235 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6236
6237         * sgen-gc.c: Disable TLA and managed allocation if the __thread
6238         keyword is not supported.
6239
6240 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6241
6242         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
6243         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
6244         the inflated method is freed. Fixes #508389.
6245
6246         The code is contributed under the MIT/X11 license.
6247         
6248 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
6249
6250         * marshal.c (get_wrapper_target_class): New helper function.
6251         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
6252         the <Module> class of the image. Fixes #509049.
6253
6254 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6255
6256         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
6257         Check if the thread was interrupted and proccess it straight away.
6258         Makes abortion much more responsive.
6259
6260 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6261
6262         * threads.c (mono_thread_execute_interruption): Use atomic cas with
6263         MonoThread::interruption_requested to match it's counterpart.
6264
6265         Fixes a hang in abort-stress-1 on a 2 core x86.
6266
6267         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
6268         Fix warning.
6269
6270 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6271
6272         Change MonoImage::name_cache to be protected by the image lock
6273         instead of the loader lock.
6274
6275         * appdomain.c (deregister_reflection_info_roots): Protect access
6276         to name_cache.
6277
6278         * class.c (mono_image_init_name_cache): Change from the loader lock
6279         to the image lock. Check if the cache wasn't already created.
6280
6281         * class.c: Change from the loader to the image lock.
6282
6283         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6284         the code to hold the image lock while iterating over name_cache and
6285         not go into mono_array_new holding it.
6286
6287         * metadata-internals.h: Add a comment about this change.
6288
6289 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6290
6291         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6292         Under the 2.0 profile raise the loader error.
6293
6294         Fixes #508532.
6295
6296 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6297
6298         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6299         of ldind opcode for generic instances so we don't fail for direct wrappers.
6300         This only affect direct calls.
6301
6302 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6303
6304         * reflection.c (create_dynamic_mono_image): Fix warnings.
6305
6306         * generic-sharing.c (other_info_equal): Ditto.
6307         
6308 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6309
6310         * metadata-verify.c: Implement field signature check.
6311
6312 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6313
6314         * metadata-verify.c: Implement standalone signature check.
6315
6316 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6317
6318         * metadata-verify.c: Implement methodref signature check.
6319
6320 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6321
6322         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6323         callbacks supplied by the runtime.
6324
6325         * object.c (mono_install_callbacks): New internal function to install
6326         the callbacks.
6327
6328         * object.c (mono_create_ftnptr): Move the implementation of this to
6329         mini/.
6330
6331         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6332
6333 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * metadata-verify.c (parse_return_type): Proper byref check.
6336         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6337         generic signatures and method params.
6338
6339 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6340
6341         * metadata-verify.c (decode_signature_header): Fix bounds check.
6342
6343         * metadata-verify.c (parse_custom_mods): Check custom mods.
6344
6345         * metadata-verify.c (parse_type): Do initial basic verification
6346         of valid values.
6347         
6348         * metadata-verify.c (is_valid_method_signature): Parse the generic
6349         param count.
6350
6351 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6352
6353         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6354         discarded based on their most specific definition so we set the method_slots
6355         array before checking if the method is acceptable or not.
6356
6357         Fixes #506757.
6358
6359 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6360
6361         * icall.c: Free the old array when resizing a mono_ptr_array.
6362
6363 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6364
6365         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6366         for the hashes whose keys are managed objects.
6367
6368 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6369
6370         * object-internals.h, threads.c: Set the execution context on
6371         thread start here, not in corlib.
6372
6373         * appdomain.c: Bump corlib version.
6374
6375 2009-05-27  Martin Baulig  <martin@ximian.com>
6376
6377         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6378         if `_mono_debug_using_mono_debugger' is set to make things work
6379         properly when embedding Mono.
6380
6381 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6382
6383         * class.c (mono_class_setup_fields): Don't mark simd types as having
6384         16 bytes alignment as the whole runtime doesn't support.
6385
6386 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6387
6388         * metadata-verify.c (safe_read): Use endian safe read macros.
6389
6390 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6391
6392         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6393         it is read-only when using full aot.
6394
6395 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6396
6397         * metadata-verify.c (is_valid_method_signature): Verify parts
6398         of the return type. Provide an error message in case of failure.
6399
6400 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6401
6402         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6403
6404 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6405
6406         * metadata-verify.c: Include the size prefix in the bounds check.
6407
6408 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6409
6410         * icall.c: Remove warnings.
6411
6412         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6413         prevent auto-detection based on GCC defines.
6414
6415         Add PS3
6416
6417         * metadata-verify.c: Do not include signal.h
6418
6419         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6420         messages.  Not sure why the g_assert_not_reached is not enough to
6421         quiet the compiler.
6422         
6423
6424         * appdomain.c: Remove code that is not used when
6425         DISABLE_SHADOW_COPY is set.
6426
6427         * image.c: use g_getenv
6428
6429 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6430
6431         * reflection.c: Remove code that it not used with
6432         DISABLE_REFLECTION_EMIT is defined.
6433
6434 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6437         invoke wrappers.
6438
6439 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6440
6441         * socket-io.c
6442         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6443         the ifdef here and instead put that on io-layer
6444
6445 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         * metadata-verify.c: Verify the generic param constraint table.
6448
6449 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * metadata-verify.c (verify_generic_param_table): Fix
6452         thinko on the valid flags bits for generic params.
6453
6454 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6455
6456         * metadata-verify.c: Verify the methodspec table.
6457
6458 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6459
6460         * metadata-verify.c: Verify the generic param table.
6461
6462 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6463
6464         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6465
6466 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6467
6468         * sgen-gc.c: Use generation enum more consistently and use the
6469         correct generation in mono_gc_register_for_finalization().
6470
6471 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6472
6473         * metadata-verify.c: Verify the nested class table.
6474
6475 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6476
6477         * metadata-verify.c: Verify the manifest resource table.
6478
6479 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6480
6481         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6482
6483 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6484
6485         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6486         wrappers, this is now done in the JIT.
6487         
6488         * class.c (mono_set_generic_sharing_supported): New internal function.
6489         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6490
6491 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6492
6493         * metadata-verify.c: Verify the exported type table.
6494
6495 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6496
6497         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6498
6499 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6500
6501         * metadata-verify.c: Verify the file table.
6502
6503 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6504
6505         * metadata-verify.c (verify_assembly_table): Fix an error message.
6506
6507         * metadata-verify.c: Verify the assemblyref table.
6508
6509 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6510
6511         * metadata-verify.c (verify_assembly_table): Fix the valid
6512         bits mask for flags.
6513
6514 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6515
6516         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6517         generic methods as well.
6518
6519 2009-05-15  Geoff Norton  <gnorton@novell.com>
6520
6521         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6522         use-case and is significantly more performant than the wapi layer.
6523
6524 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6525
6526         * metadata-verify.c: Verify the assembly table.
6527
6528 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6529
6530         * metadata-verify.c: Fix rows limit check.
6531
6532 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6533
6534         * metadata-verify.c: Verify the fieldrva table.
6535
6536 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6537
6538         * sgen.c: Speed up weak links and finalizers by grouping them by
6539         generation.
6540
6541 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6542
6543         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6544         free the old GCHandle (only applies to SGen).
6545
6546 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6547
6548         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6549         mono_metadata_load_generic_params () for non-generic methods.
6550
6551 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6552
6553         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6554         New function for returning a monitor's weak link if it has one.
6555
6556         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6557         one) when clearing a domain.  These can still be around because
6558         the object might not have been collected.
6559
6560 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6561
6562         * gc.c: Fix a warning.
6563
6564 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6565
6566         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6567         prevous wait that resulted in a deadlock on Windows when initializing
6568         the runtime form DllMain. Also results in improved startup time.
6569         (finalizer_thread): Get rid of thread_started_event.
6570         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6571         resulting MonoThread.
6572
6573         Contributed under MIT/X11 license.
6574
6575 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6576
6577         * metadata-verify.c: Verify the implmap table.
6578         Don't require that #US and #Strings be present.
6579
6580 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6581
6582         * security-core-clr.c: Delegate checks are done at creation time,
6583         not a invocation time. Fix exception for Telerik Silverlight demo
6584
6585 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6586
6587         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6588         case for the Thread class.
6589
6590         * threads.c: Do clean-up of abort exception/state in
6591         thread_cleanup() instead of Thread.free_internal().  Also clean up
6592         current_appcontext.  The reason we have to do that is because
6593         those references might point into another domain and if that
6594         domain is unloaded before the thread is finalized, they point to
6595         invalid data.
6596
6597 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6598
6599         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6600         stub signatures.
6601         
6602         Contributed unter MIT/X11 license.
6603
6604 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6605
6606         * verify.c, metadata-verifier.c: Add support for disabling the
6607         verifier in some builds.
6608
6609         [ Sorry, my previous commit accidentally commited some work in
6610         progress ]
6611
6612 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * class.c (mono_class_setup_fields): Set class->field.first for
6615         generic instances.
6616
6617 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6618
6619         * metadata-verify.c: Verify the typespec table.
6620
6621 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6622
6623         * metadata-verify.c: Verify the module table.
6624
6625 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6626
6627         * metadata-verify.c: Verify the methodimpl table.
6628
6629 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6630
6631         * metadata-verify.c: Verify the property table.
6632
6633 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6634
6635         * debug-helpers.c (mono_method_desc_match): Add support for generic
6636         glob patterns.
6637
6638 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6639
6640         * metadata-verify.c: Verify the propertymap table.
6641
6642 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6643
6644         * metadata-verify.c: Verify the event table.
6645
6646         * metadata-verify.c (search_sorted_table): Fix offset
6647         calculation.
6648
6649 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6650
6651         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6652
6653 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6654
6655         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6656         because mono_delegate_free_ftnptr() needs it.
6657
6658 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6659
6660         * metadata-verify.c: Verify the eventmap table.
6661
6662 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6663
6664         * metadata-verify.c: Verify the standalonesig table.
6665
6666 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6667
6668         * metadata-verify.c: Verify the field layout table.
6669
6670 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6671
6672         * class.c (mono_type_get_name_recurse): Don't crash
6673         for ownerless generic params.
6674
6675         * debug-helpers.c (mono_type_get_desc): Correct the format
6676         for ownerless generic params.
6677
6678 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6679
6680         * metadata-verify.c: Verify the class layout table.
6681
6682 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6683
6684         * metadata-verify.c: Verify the decl security table.
6685
6686 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6687
6688         * domain.c (mono_domain_set_internal_with_options): Don't do
6689         anything if the old domain is the same as the old one.  Fixes
6690         #499326.
6691
6692 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6693
6694         * appdomain.c: Deregister the reflection_info roots when unloading
6695         a domain.
6696
6697         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6698         memory allocated by a domain and frees its disappearing links.
6699
6700         * boehm-gc.c, null-gc.c: Empty implementation of
6701         mono_gc_clear_domain().
6702
6703 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6704
6705         * appdomain.c (clear_cached_vtable): Free the static fields memory
6706         block.
6707
6708 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6709
6710         * gc.c: Set the correct domain when invoking finalizers.
6711
6712         * appdomain.c: Set the correct domain when creating threads.
6713
6714 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6715
6716         * sgen-gc.c: Fix skip size for vectors.
6717
6718 2009-05-03  Martin Baulig  <martin@ximian.com>
6719
6720         * mono-debug-debugger.c
6721         (mono_debugger_check_breakpoints): Check class init handlers even
6722         if we don't have any method load handers.
6723
6724 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6725
6726         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6727         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6728
6729 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6730
6731         * metadata-verify.c: Verify the field marshal table.
6732
6733 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6734
6735         * metadata-verify.c: Verify the custom attribute table.
6736
6737 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6738
6739         * metadata-verify.c: Verify the constant table.
6740
6741 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6742
6743         * metadata-verify.c: Verify the memberef table.
6744
6745 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6746
6747         * metadata-verify.c (get_coded_index_token): Remove
6748         dead argument.
6749
6750 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6751
6752         * metadata-verify.c: Verify the interfaceimpl table.
6753
6754 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6755
6756         * verify.c: Improve error message.
6757
6758         * debug-helpers.c (mono_type_get_desc): Harden the code that
6759         deals with VAR and MVAR.
6760
6761 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6762
6763         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6764         part of #498692.
6765
6766 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6767
6768         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6769         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6770
6771 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6772
6773         * security-core-clr.c: Avoid redundant checks for platform code, 
6774         e.g. check for method and for class (very common) and check
6775         for class and outer class (less common)...
6776
6777 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6778
6779         * reflection.c: Avoid returning random cattrs for synthetic methods.
6780         Fixes #498545.
6781
6782 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6783
6784         * assembly.c: assemblies in the GAC should never be shadow-copied.
6785
6786 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6787
6788         * domain.c, domain-internals.h: Disable
6789         track_resurrection_{objects,handles}_hash in MonoDomain if using
6790         SGen.
6791
6792 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6793
6794         * metadata-verify.c: Verify the param table.
6795
6796 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6797
6798         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6799         MethodList.
6800
6801         * metadata-verify.c (verify_method_table): Proper check the ParamList
6802         field.
6803
6804 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6805
6806         * metadata-verify.c (verify_method_table): Check for runtime
6807         implemented functions such as delegate .ctors. Remove spurious
6808         printf.
6809         
6810 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6811
6812         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6813
6814 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6815
6816         Don't allocate MonoGenericInfo for ownerless generic params.
6817         * class-internals.h (MonoGenericParam::info): Move field to ...
6818         (MonoGenericParamFull): ... this.  New struct.
6819         (MonoGenericContainer::type_params): Change type to
6820         MonoGenericParamFull.
6821         (MonoGenericParam, MonoGenericContainer): Update accessors.
6822         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6823         'info' field for ownerless generic param.
6824         (mono_metadata_load_generic_params): Update to changes.
6825         * reflection.c (mono_reflection_create_generic_class): Likewise.
6826         (reflection_methodbuilder_to_mono_method): Likewise.
6827         (mono_reflection_initialize_generic_parameter): Likewise.
6828
6829 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6830
6831         Don't use MonoGenericParamInfo for ownerless generic params.
6832         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6833         use ParamInfo class at all.
6834         (mono_class_from_generic_parameter): Use them.
6835         (make_generic_param_class): Fix a couple of instances where 'pinfo
6836         == NULL' wasn't handle.
6837
6838 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6839
6840         * class.c (make_generic_param_class): Carve out of ...
6841         (mono_class_from_generic_parameter): ... here.
6842
6843 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6844
6845         Simplify mono_class_from_generic_parameter
6846         * class-internals.h (MonoGenericParamInfo::token): New field.
6847         * metadata.c (mono_metadata_load_generic_params): Initialize it
6848         from metadata.
6849         * class.c (mono_class_from_generic_parameter): Use it instead of
6850         searching through metadata.
6851
6852 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6853
6854         * metadata-verify.c: Add verification of the method table.
6855
6856 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6857
6858         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6859         Delegate::Invoke optimization.
6860
6861 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6862
6863         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6864         string returned by get_shadow_assembly_location_base.
6865
6866         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6867         about caller's ownership.
6868
6869 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6870
6871         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6872         reflection memory on domain unload.
6873
6874         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6875         reflection cleanup code do it.
6876
6877         * domain-internals.h: Add mono_reflection_cleanup_domain.
6878
6879         This fixes a memory leak for managed mirrors of reflection objects
6880         on domain unload. 
6881
6882 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6883
6884         * metadata-verify.c: Implement more verification of the field table.
6885
6886 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6887
6888         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6889         doesn't try to parse the input assembly, which can be broken.
6890
6891 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6892
6893         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6894         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6895         by using the lowest bit in the link to store whether the link is
6896         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6897
6898 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6899
6900         * Makefile.am: Split the console support in platform specific code
6901         and put together a framework for making this easy in the future so
6902         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6903
6904 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6905
6906         * pedump.c: Fix a warning.
6907
6908 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6909
6910         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6911         mono_class_from_mono_type to avoid bad interactions with the dual representation
6912         of the generic type definition.
6913
6914 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6915
6916         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6917         get the MonoClass for the call context type as it might be a generic
6918         instance.
6919
6920         Fixes #491483.
6921
6922 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6923
6924         * object-internals.h: The Thread object has no execution_context
6925         member anymore.
6926
6927         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6928         the execution context.
6929
6930         * appdomain.c: Bump corlib version.
6931
6932 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6933
6934         * verify.c (do_newobj): Improve error message.
6935
6936 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6937
6938         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6939         is nested in the filter block.
6940
6941         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6942         block is not fully nested.
6943
6944         Fixes #495656.
6945
6946 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6947
6948         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6949         not MonoType to check for equality of valuetypes as the generic type
6950         definition allows for two different encodings: the generic type definition
6951         class or a generic instance over the GTD arguments.
6952
6953         Fixes #496175.
6954
6955 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6956
6957         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6958
6959         * verify.c (do_initobj): Improve error message.
6960
6961 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6962
6963         * metadata-verify.c: Enable pe verification as the issue with #496453
6964         is that the authenticode data directory have a different unspecified
6965         format. Ignore it for now.
6966
6967         * pedump.c: Run the metadata verifier together with the IL verifier.
6968
6969         Fixes ##496453.
6970
6971 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6972
6973         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6974
6975 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6976
6977         * class.c (can_access_type): Check visibility against
6978         the element type for pointers and arrays.
6979
6980         Fixes #496150.
6981
6982 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6983
6984         * metadata-verify.c: Fix cli and table verification to use information
6985         from the MonoImage. A lot of duplicated code got killed.
6986
6987 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6988
6989
6990         This patch starts to integrate the metadata verifier with the runtime code.
6991
6992         This patch causes major regression in functionality for the metadata verifier
6993         as cli and table verification are disabled since they require to be ported to
6994         use MonoImage information.
6995
6996         * image.c (do_mono_image_load): Split the code in this function
6997         into mono_image_load_pe_data and mono_image_load_cli_data.
6998         Add     care_about_pecoff parameter to not load pecoff data.
6999         Call into the metadata verifier for pecoff and cli verification.
7000
7001         * image.c (mono_image_open_raw): New function that doesn't perform
7002         any parsing of the image contents.
7003         
7004         The reason for the 3 new functions is to give pedump better control
7005         into the interaction with the verifier.
7006
7007         * metadata-internals.h: Add new functions from image.c as part of the
7008         internal mono API.
7009
7010         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
7011         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
7012         to make those functions work together with the runtime.
7013
7014         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
7015         true if the image needs to be verified.
7016
7017         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
7018
7019         * pedump.c: Use new metadata verifier API.
7020
7021 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * object.c (mono_install_vtable_trampoline): Make this receive a
7024         trampoline creation function instead of trampoline, allowing the JIT
7025         to use a different trampoline for each vtable.
7026
7027 2009-04-18  Mark Probst  <mark.probst@gmail.com>
7028
7029         * object.c (mono_raise_exception): Don't reset the thread abort
7030         exception state here.
7031
7032 2009-04-18  Mark Probst  <mark.probst@gmail.com>
7033
7034         * icall-def.h: New icall for getting the thread abort exception
7035         state for a thread.
7036
7037         * object.c, thread.c, object-internals.h: A thread's abort
7038         exception state is now a GC handle.  To get the object it stands
7039         for, we must move it into the current app domain, if it's
7040         different than the one where it originated from.
7041
7042         * appdomain.c: Bump corlib version.
7043
7044         * domain.c, domain-internals.h: New function for setting the
7045         domain and migrate the thread abort exception or not.
7046
7047 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7048
7049         * metadata-verify.c: Add initial verification of the
7050         field table.
7051
7052 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7053
7054         * metadata-verify.c: Add a macro to conditionally enable
7055         dumping of verification information. Add  make_coded_token
7056         and search_sorted_table to enable search sorted tables
7057         by a given coded token.
7058
7059 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7060
7061         * metadata-verify.c: Add array mapping from table index
7062         to description offset. Add get_col_offset and get_col_size
7063         functions.
7064
7065 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7066
7067         * metadata-verify.c: Add remaining table descriptions offsets.
7068         Add remaining coded index descriptions.
7069
7070 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7071
7072         * metadata-verify.c: Fixed constant table description.
7073         Fixed calculation of HasCustomAttribute coded index size.
7074         Fixed calculation of size for many table indexes. 
7075
7076 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7077
7078         * pedump.c (dump_metadata): Dump table offset instead
7079         of useless pointer in memory.
7080
7081 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7082
7083         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
7084
7085 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7086
7087         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
7088         a missing of for interface types.
7089
7090 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7091
7092         * metadata-verify.c (verify_pe_optional_header): Add comment of why
7093         the code is commented.
7094
7095         * metadata-verify.c (verify_resources_table): Remove spurious printf
7096         and don't fail if there are unmanaged resources. Gmcs generates a useless
7097         one     for all assemblies - I bet it's some MS compatibility junk.
7098
7099 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7100
7101         * metadata-verify.c (verify_typedef_table): Verify the extends field.
7102
7103         * metadata-verify.c (mono_image_verify): Add a is_corlib.
7104
7105         * verify-internals.h: Same.
7106
7107         * pedump.c: Fix for mono_image_verify new signature.
7108
7109 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7110
7111         * metadata-verify.c (verify_typedef_table): Verify for some invalid
7112         flags combinations.
7113
7114 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7115
7116         * metadata-verify.c (verify_module_table): Ignore the generation field.
7117
7118 2009-04-15  Martin Baulig  <martin@ximian.com>
7119
7120         * debug-mono-symfile.c
7121         (mono_debug_symfile_lookup_location): Don't print a warning for
7122         unknown extended opcodes if they're within 0x40 and 0x7f.
7123
7124 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
7125
7126         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
7127         invoke signatures returning an enum. Fixes #494847.
7128
7129 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7130
7131         * metadata-verify.c: Initial code to verify the typedef table.
7132
7133 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7134
7135         * verify.c (mono_method_verify): Don't fail if an unconditional branch
7136         with non empty stack happens before the beginning of a try block.
7137
7138         Fixes #494812.
7139
7140 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7141
7142         * metadata-verify.c: Verify typename and typenamespace fields of
7143         the typeref table.
7144
7145 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7146
7147         * metadata-verify.c: Initial code to verify the typeref table.
7148
7149 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7150
7151         * verify.c (verify_delegate_compatibility): Fix error message.
7152
7153 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
7154
7155         * security-core-clr.c: Fix typo
7156
7157 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7158
7159         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
7160         a MonoGHashTable to keep its values alive.
7161         (emit_marshal_boolean): Fix a warning.
7162
7163 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7164
7165         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
7166         not have any interface configured for IPv4/IPv6.
7167
7168 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7169
7170         * assembly.c: fix typo in error message.
7171
7172 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7173
7174         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
7175         allocating the location holding the this argument to prevent
7176         'too many root sets' errors.
7177
7178         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
7179         to mark fields as special static.
7180         (mono_field_static_get_value): Handle special static fields.
7181         (mono_field_static_set_value): Ditto.
7182
7183         * class-internals.h (struct _MonoClassField): Document this.
7184
7185 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7186
7187         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
7188           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
7189           case.  This will handle when managed code returns null to native code.
7190
7191         Code is contributed under MIT/X11 license.
7192
7193 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7194
7195         * object.c (build_imt_slots): Changing a free to a g_free to match
7196           the g_malloc0 in add_imt_builder_entry that allocated this memory.
7197
7198         Code is contributed under MIT/X11 license.
7199
7200 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7201
7202         * marshal.c (emit_marshal_boolean): Adding code to ensure that
7203           the correct TRUE value is passed through the marshaling layer.
7204
7205         Code is contributed under MIT/X11 license.
7206
7207 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
7208
7209         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
7210         correctly. Fixes #492330.
7211         
7212         * marshal.c: Fix the embedding of object pointers into JITted code in
7213         the native-to-managed wrappers by allocating some GC tracked memory, and
7214         embedding the address of that.
7215
7216 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
7217
7218         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
7219         pointers into the vtable.
7220
7221 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7222
7223         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
7224
7225         * verify.c (verify_ldftn_delegate): Improve error message.
7226
7227 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7228
7229         * reflection.c (my_mono_class_from_mono_type): Remove.
7230
7231 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7232
7233         Prepare to reduce memory usage of owner-less generic parameters (1/n)
7234         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
7235         and constraints fields into ...
7236         (MonoGenericParamInfo): ... this.
7237         (mono_generic_param_info, mono_generic_container_get_param_info):
7238         New accessors.
7239         * class.c, debug-helpers.c, icall.c: Update to changes.
7240         * metadata.c, reflection.c, verify.c: Likewise.
7241
7242 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
7243
7244         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
7245
7246         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
7247         
7248         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
7249         booleans with sbytes.
7250
7251 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7252
7253         * class.c (can_access_instantiation): Verify accesibility of element types
7254         for arrays and pointers.
7255
7256         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
7257
7258         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
7259
7260         Fixes #493068.
7261
7262 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7263
7264         * verify.c (do_invoke_method): Improve error messages.
7265
7266 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
7267
7268         * verify.c:  Fixing the MSVC build.
7269
7270         Code is contributed under MIT/X11 license.
7271
7272 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7273
7274         * security-core-clr.c: Simplify get_reflection_caller not to call
7275         mono_method_get_last_managed (another stack walk) and adjust the
7276         callers to handle a (should not happen) NULL return value.
7277
7278 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7279
7280         Add accessors to some MonoGenericParam fields
7281         * class-internals.h (mono_generic_param_owner): New accessor.
7282         (mono_generic_param_num): Likewise.
7283         (mono_type_get_generic_param_owner): New helper.
7284         (mono_type_get_generic_param_num): New helper.
7285         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7286
7287 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7288
7289         * class-internals.h (mono_generic_container_get_param): New wrapper.
7290         * class.c, icall.c, metadata.c, verify.c: Use it.
7291
7292 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7293
7294         Fix gtest-252.cs
7295         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7296         the standard case/loop.  In particular, don't complain about
7297         references to generic type definitions.
7298
7299 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7300
7301         * debug-helpers.c (dis_one): Decode string arguments.
7302
7303 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7304
7305         * pedump.c (dump_verify_info): Dump type name correctly.
7306
7307 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7308
7309         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7310         are larger than code size.
7311
7312         This can happen in valid code if the try/catch block is not followed by any instruction
7313         and do a backward branch on the leave instruction.
7314
7315         Fixes #492494.
7316
7317 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7318
7319         * security-core-clr.c: Fix typo while comparing second method names
7320         in can_avoid_corlib_reflection_delegate_optimization
7321
7322 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7323
7324         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7325
7326         Fixes #487738.
7327
7328 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7329
7330         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7331         a MVAR using a class context.
7332
7333         Fixes #490335.
7334
7335 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7336
7337         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7338
7339         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7340
7341         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7342         functions supplied by the JIT for the SGEN GC.
7343
7344         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7345         
7346 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7347
7348         monitor.c (mono_monitor_try_enter_internal):
7349         Added calls to profile monitor contentions.
7350         Also duplicated a small piece of code (the "get the monitor" logic)
7351         from the fast path to the slow path, and changed the relevant goto
7352         statements, so that monitor acquisition events can be emitted from the
7353         slow path (this is by Paolo Molaro).
7354
7355 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7356
7357         * profiler.c, profiler.h, profiler-private.h:
7358         Added support for profiling monitor contentions.
7359
7360 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7361
7362         * metadata-verify.c: Verify the modules table.
7363
7364 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7365
7366         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7367         using the context of the method been verifier and not of the method been called.
7368
7369         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7370         safely inflate generic types. 
7371
7372 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7373
7374         * security-core-clr.c: Change the strategy for checking the 
7375         "reflection using delegates optimization" to avoid unneeded 
7376         attributes in multiple class libraries.
7377
7378 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7379
7380         * sgen-gc.c: Remove object element in the disappearing link struct
7381         by storing the object pointer in the link.
7382
7383 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7384
7385         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7386
7387 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7388
7389         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7390
7391         * verify.c (mono_method_verify): Do proper bounds checking of exception
7392         clause ranges.
7393
7394 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7395
7396         * loader.c (mono_field_from_token): Don't crash if the field parent could
7397         not be decoded.
7398
7399 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7400
7401         * sgen-gc.c: Execute critical finalizers after ordinary
7402         finalizers.
7403
7404         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7405         mono_defaults.
7406
7407 2009-03-31 Jb Evain <jbevain@novell.com>
7408
7409         * verify.c (do_ldstr): don't check if a string is in the user strings
7410         heap if the current image is dynamic.
7411
7412 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7413
7414         * sgen-gc.c: Wait until the last finalizer has executed when
7415         returning from WaitForPendingFinalizers.
7416
7417 2009-03-31  Martin Baulig  <martin@ximian.com>
7418
7419         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7420         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7421         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7422         (mono_debugger_event_create_appdomain): New function.
7423         (mono_debugger_event_unload_appdomain): New function.
7424
7425         * appdomain.c (mono_domain_create_appdomain_internal): Call
7426         mono_debugger_event_create_appdomain().
7427
7428 2009-03-31  Martin Baulig  <martin@ximian.com>
7429
7430         * mono-debug-debugger.c
7431         (mono_debugger_register_class_init_callback): Also register the
7432         class init callback if the class is already initialized to make
7433         things work with shadow copied assemblies.
7434
7435 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7436
7437         * security-core-clr.c
7438         (mono_security_core_clr_ensure_reflection_access_field): Let 
7439         critical code access the field (just like we do for methods). Use
7440         check_field_access helper.
7441         (mono_security_core_clr_ensure_reflection_access_method): Use 
7442         check_field_access helper.
7443
7444 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7445
7446         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7447         call the run-finalize function directly.
7448
7449         * gc.c, gc-internal.h: Make run_finalize() non-static.
7450
7451 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7452
7453         * sgen-gc.c: Use a separate struct for disappearing links.
7454
7455 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7456
7457         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7458         * MaxIOVectorLength enabled, just ignore them.
7459         Fixes bug #349688.
7460
7461 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7462
7463         * metadata-verify.c: Fix eglib build.
7464
7465 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7466
7467         * threads-types.h: Fix the win32 build.
7468
7469 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7470
7471         * class.c: move coreclr inheritance/override checks to 
7472         security-core.clr.c
7473         * security-core.clr.c|h: add code from class.c with additional
7474         documentation. Fix override check when the method is not critical.
7475
7476 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7477
7478         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7479         (match_class): Ditto.
7480
7481 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7482
7483         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7484
7485         * metadata-verify.c: Implement table layout row size calculation. Verify
7486         the total size of the tables.
7487
7488 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7489
7490         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7491
7492 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7493
7494         * appdomain.c:
7495         * console-io.[ch]: added new mono_console_init() to make sure that
7496         file descriptors 0, 1 and 2 are opened.
7497         Bug #489019 fixed.
7498
7499 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7500
7501         * appdomain.h: Export a new callback type and a new function to
7502         set this callback. This allow a mono host to provide it's own
7503         definition for "platform code".
7504         * metadata-internals.h: Add a core_clr_platform_code flag on 
7505         _MonoImage to (cache and) know if it is representing platform 
7506         code.
7507         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7508         on platform code images.
7509         * security-core-clr.c|h 
7510         (mono_security_set_core_clr_platform_callback): Allow the host
7511         to provide it's own platform check definition.
7512         (mono_security_core_clr_determine_platform_image): Detect if an 
7513         image is platform code (using the specified callback).
7514         (mono_security_core_clr_is_platform_image): Return cached value 
7515         for platform code.
7516
7517 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7518
7519         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7520         which has different parameter types for the 'tid' argument in windows and
7521         the io-layer.
7522
7523         * appdomain.c attach.c threads.c: Use the new helper.
7524
7525 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7526
7527         * metadata-verify.c: Verify valid table bits.
7528
7529 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7530
7531         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7532
7533         * metadata-verify.c: Add initial table schema verification.
7534
7535 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7536
7537         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7538         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7539         #488383.
7540
7541         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7542
7543         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7544
7545 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7546
7547         * security-core-clr.c: Add/update documentation
7548
7549 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7550
7551         * marshal.c (emit_marshal_object): Generate code to throw an exception
7552         instead of throwing it. Fixes #488670.
7553
7554 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7555
7556         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7557         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7558         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7559         and add a call to mono_security_core_clr_ensure_delegate_creation
7560         to do the extra checks required by CoreCLR.
7561         * security-core-clr.c|h: Add function to check delegate creation,
7562         both in the binding and accessibility, under CoreCLR.
7563
7564 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7565
7566         * reflection.c (mono_reflection_create_dynamic_method): when 
7567         coreclr is enabled make sure that every resolved object are
7568         checked (e.g. field and method access).
7569         * security-core-clr.c|h: Add function to check objects resolved
7570         when a dynamic method is created.
7571
7572 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7573
7574         * metadata-verify.c: Cache directory rva translations.
7575
7576         * metadata-verify.c: Add cli-header and streams verification.
7577
7578 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7579
7580         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7581         the wrong offset (8 instead of 6).
7582
7583 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7586         methods, return the native function address itself. Fixes
7587         #487758.
7588
7589 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7590
7591         * console-io.c: some of the values for control characters might not be
7592         present.
7593
7594 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7595
7596         * exception.c|h: Add helpers to create [Field|Method]AccessException
7597         * icall.c: Add required coreclr check calls for field reflection.
7598         Move the existing (method) check logic into security-core-clr.c
7599         * security-core-clr.c: Add functions to check if the access of a
7600         field or method is allowed when reflecting under coreclr. This is
7601         mostly done using a stack walk to find the "real" caller: i.e. the
7602         code that is calling the reflection
7603
7604 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7605
7606         * gc-internal.h: Change location of gc_wrapper.h
7607
7608 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7609
7610         * class.c: Simplification to coreclr checks for overrides that
7611         makes it easier to set breakpoints.
7612
7613 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7614
7615         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7616         mono_security_core_clr_method_level): Avoid potential 
7617         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7618         user/application code) and make it easier to set breakpoints
7619
7620 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7621
7622         * metadata-verify.c: Reject cli header tables that mono don't handle.
7623
7624 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7625
7626         * pedump.c: Fix CLI header dumping.
7627
7628 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7629
7630         * metadata-verify.c: More CLI header verification.
7631
7632 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7633
7634         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7635
7636 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         * metadata-verify.c: Initial verification of the CLI header.
7639
7640 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7641
7642         * metadata-verify.c (verify_resources_table): Fix verification of zero
7643         sized resource section and id entries count.
7644
7645 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7646
7647         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7648
7649 2009-03-17  Jb Evain  <jbevain@novell.com>
7650
7651         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7652
7653 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7656         (mono_gc_make_descr_for_array): Ditto.
7657
7658 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7659
7660         * verify.c (mono_verifier_is_class_full_trust): Add support for
7661         CoreCLR security mode where trusted assemblies are defined as
7662         "platform code".
7663
7664 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7665
7666         * metadata-verify.c: Add minimal PECOFF resource verification.
7667
7668 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * metadata-verify.c: Be less restrictive with some coff fields.
7671
7672 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7673
7674         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7675         params as boxed values on stack. Fixes #485706.
7676
7677 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7678
7679         * console-io.c: the termios values may vary in different flavors of unix.
7680
7681 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7682
7683         * console-io.[ch]: return the entire set of control characters when
7684         initializing the terminal.
7685         * appdomain.c: bump corlib version.
7686
7687 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7688
7689         * mono-perfcounters.c: added support for in-process custom
7690         performance counters.
7691
7692 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7693
7694         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7695
7696 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7697
7698         * metadata-verify.c: Verify the data pointed by the import table. 
7699
7700 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7701
7702         * metadata-verify.c (load_data_directories): Store data
7703         directory contents.
7704
7705         * metadata-verify.c: Verify the import table. 
7706
7707 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7708
7709         * metadata-verify.c: Verify data directories.
7710
7711 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7712
7713         * metadata-verify.c: Check section header flags.
7714
7715 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7716
7717         * appdomain.c: if the assembly name is a shadow-copied file, return
7718         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7719         in mono_make_shadow_copy.
7720         * icall.c: if the assembly name is a shadow-copied file, replace it
7721         with the original assembly path.
7722
7723         Bug #484244 fixed. NUnit tests for corlib can be run without
7724         --noshadow now.
7725
7726 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7727
7728         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7729         entries when the table is reallocated.
7730
7731         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7732         mono_gc_alloc_fixed () since it contains GC refs.
7733
7734 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7735
7736         * reflection.c (ensure_complete_type): New helper function to call
7737         type resolve handlers for unfinished dynamic types.
7738         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7739
7740 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7741
7742         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7743         #483247.
7744
7745 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7746
7747         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7748
7749 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7750
7751         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7752         between GCHandles of type WeakTrackResurrection and the objects they
7753         point to.
7754
7755         * gc.c: Partly implement the sematics of GCHandles of type 
7756         WeakTrackResurrection: these handles should only be cleared after the
7757         finalizer of the object they are pointing to has ran.
7758
7759 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7760
7761         * icall.c: Partially revert r126631 because using the jump
7762         trampolines for generic shared methods makes it superfluous.
7763
7764 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7765
7766         * threads.c (handle_store): Create the 'threads' hash table with the proper
7767         MONO_HASH_VALUE_GC type.
7768
7769 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7770
7771         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7772         FIRST_GC_TRACKED.
7773
7774         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7775         and LAST_GC_TRACKED as a GC root.
7776
7777         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7778
7779         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7780         the static data even if it consists of 1 reference.
7781
7782         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7783         if there is a GC descriptor.
7784
7785         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7786         instead of through the GC since they contain no object references.
7787
7788 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7789
7790         * generic-sharing.c (instantiate_other_info): Always return a jump
7791         trampoline for method code.
7792
7793 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7794
7795         * culture-info-tables.h: generated to include the en-tt culture.
7796
7797 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7798
7799         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7800         capture the thread context.
7801
7802         * object.c (mono_async_result_new): Cache the invoke wrappers to
7803         ExecutionContext::Capture.
7804
7805 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7806
7807         * marshal.h: Add a prototype for what mono_compile_method returns
7808         for invoke wrappers.
7809
7810         * gc.c: Use the new prototype declaration.
7811
7812 2009-03-04  Geoff Norton  <gnorton@novell.com>
7813
7814         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7815         * gc-internal.h:
7816         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7817
7818 2009-03-04  Martin Baulig  <martin@ximian.com>
7819
7820         * mono-debug.h
7821         (mono_debugger_runtime_invoke): Removed.
7822
7823         * mono-debug-debugger.c
7824         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7825
7826 2009-03-02  Martin Baulig  <martin@ximian.com>
7827
7828         * mono-debug.h
7829         (mono_debugger_unhandled_exception): Removed.
7830         (mono_debugger_handle_exception): Removed.
7831         (mono_debugger_throw_exception): Removed.
7832
7833         * mono-debug.c
7834         (mono_debug_debugger_version): Bump to 5.
7835
7836         * mono-debug-debugger.c: Moved the exception handling code to
7837         ../mini/debug-mini.c
7838
7839 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7840
7841         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7842         finalize_objects_hash.
7843
7844         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7845         
7846         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7847         field.
7848
7849         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7850         cache.
7851
7852         * image.c (mono_image_close): Free it.
7853         
7854         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7855         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7856         on the this argument.
7857
7858         * gc.c (run_finalize): Optimize the calling of the finalizers.
7859
7860 2009-03-03  Martin Baulig  <martin@ximian.com>
7861
7862         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7863         of the `MonoGenericInst' changes.
7864
7865 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7866
7867         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7868         mono_array_class_get_cached to reduce locking contention. Extract
7869         a domain var.
7870
7871         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7872         intermediary managed arrays. Use caching version of mono_array_new
7873         to allocate the result array.
7874
7875         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7876
7877         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7878
7879         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7880         to reduce locking contention.
7881
7882 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7883                 
7884         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7885         thunk builder code for the non-interface case.
7886
7887 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7888
7889         * object.c (get_generic_virtual_entries): New helper function to collect
7890         the virtual generic method instances which need to be added to an IMT
7891         thunk.
7892         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7893         Instead of creating a new IMT thunk, reset the vtable slot to the
7894         trampoline, the thunk will be created the next time the trampoline is called.
7895         (build_imt_slots): Add support for virtual generic methods in interfaces by
7896         adding to the IMT thunk all the methods registered using 
7897         mono_method_add_generic_virtual_invocation ().
7898
7899         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7900         (struct _MonoIMTCheckItem): Ditto.
7901
7902         * object.c (mono_method_add_generic_virtual_invocation): Take a
7903         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7904         the IMT thunk to include all items.
7905         
7906         * object.c (mono_class_create_runtime_vtable): Add a missing
7907         mono_loader_unlock ().
7908
7909 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7910
7911         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7912
7913         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7914
7915 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7916
7917         * object-internals.h: Rename _MonoReflectionEvent to
7918         MonoReflectionMonoEvent so it reflects the right managed type.
7919         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7920
7921         * icall.c:
7922         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7923         type.
7924
7925 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7926
7927         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7928         intermediary managed arrays. Use caching version of mono_array_new
7929         to allocate the result array.
7930
7931 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7932
7933         * reflection.c: Use cached version of mono_array_new alongside
7934         the mono_reflection_get_custom_attrs_by_type call path.
7935
7936 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7937
7938         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7939         intermediary managed arrays. Use caching version of mono_array_new
7940         to allocate the result array.
7941
7942         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7943
7944 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7945
7946         * icall.c: Add small implementation of a growable stack bound array.
7947
7948         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7949
7950         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7951         intermediary managed arrays. Use caching version of mono_array_new
7952         to allocate the result array.
7953
7954 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7955
7956         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7957         helps Enum::CompareTo to be implemented without reboxing all enums
7958         to their underlying type.
7959 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7960
7961         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7962         since it acquires a global lock leading to scalability problems.
7963
7964         * profiler.c: Make the stat profiler work with multiple appdomains, this
7965         currently only works when no appdomains are unloaded.
7966
7967 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7968
7969         * appdomain.c: make the check to avoid copying when the assembly is
7970         already shadow copied actually work.
7971
7972 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7973
7974         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7975
7976         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7977         changes to the managed side.
7978
7979 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7982         classes + a separate lock for it, as it is used frequently at runtime, not
7983         just during metadata loading/JIT compilation.
7984
7985         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7986         for szarrays.
7987         
7988         * object-internals.h (mono_class_from_name_cached): New macro to cache
7989         the results of the lookup locally without having to declare a static
7990         variable to hold it.
7991         (mono_class_get_field_from_name_cached): Ditto.
7992         (mono_array_class_get_cached): Ditto.
7993
7994         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7995         the new macros.
7996         
7997         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7998         slower search in metadata.
7999
8000         * pedump.c: Fix a warning.
8001
8002 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
8003
8004         * reflection.c (encode_locals): Add checks for user types.
8005         (method_encode_clauses): Ditto.
8006         (method_encode_code): Ditto.
8007         (mono_image_create_token): Ditto.
8008
8009         * object-internals.h: Change the type of more fields from MonoReflectionType*
8010         to MonoObject*.
8011
8012 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
8013
8014         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
8015         the a thread does not suspend within 100ms.
8016
8017         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
8018         in addition to StopRequested as well.
8019
8020         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
8021
8022         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
8023         search the method_hash before inserting a new entry, to avoid crashes when
8024         the same method is inserted multiple times, causing the old 
8025         MonoDebugMethodInfo structure to be freed by the value dtor function.
8026
8027 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
8028
8029         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
8030         SO_EXLUSIVEADDRUSE where available.
8031
8032 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
8033
8034         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
8035         runtime invoke wrappers, this time it is string ctor wrappers, which
8036         pass a dummy string as 'this' instead of their obj argument. Fixes
8037         #478473.
8038
8039 2009-02-21  Jb Evain  <jbevain@novell.com>
8040
8041         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
8042         only get create_culture once.
8043
8044 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
8045
8046         * reflection.c (mono_reflection_setup_internal_class): Move the user type
8047         check before the locking.
8048         
8049         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
8050         (mono_reflection_create_runtime_class): Ditto.
8051         (mono_reflection_sighelper_get_signature_local): Ditto.
8052         (mono_reflection_sighelper_get_signature_field): Ditto.
8053
8054         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
8055         is a System.MonoType object or similar.
8056         (monotype_cast): New helper function to cast a MonoObject to a 
8057         MonoReflectionType object.
8058
8059         * object-internals.h: Change MonoReflectionType* members in structures to
8060         MonoObject* members to force the usage of the monotype_cast () function.
8061
8062         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
8063         structures/arrays. This causes us to assert instead of crashing when 
8064         instances of user defined subclasses of System.Type are encountered.
8065
8066 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8067
8068         * cil-coff.h:
8069         * icall-def.h:
8070         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
8071         win32 resource loaded from a PE file.
8072
8073         * image.c: fix mono_image_lookup_resource.
8074
8075 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8076
8077         * icall-def.h:
8078         * threads-types.h:
8079         * threads.c: added internal call for WaitHandle.SignalAndWait.
8080
8081 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
8082
8083         * cominterop.c : Adding cominterop_type_from_handle and 
8084           registering it as an icall.  Replacing all references
8085           to type_from_handle.
8086
8087         Code is contributed under MIT/X11 license.
8088
8089 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8090
8091         * Makefile.am: Add lock-tracer.h and lock-trace.c.
8092
8093         * appdomain.c: Call the tracer init function.
8094
8095         * domain-internals.h: Enable the tracer for the domain locks.
8096
8097         * image.c: Enable the tracer for image locks.
8098
8099         * loader.c: Enable the trace for the loader lock.
8100
8101         * lock-tracer.h:
8102         * lock-tracer.c: Initial implementation of the lock trace utility.
8103         The tracer requires a compile time define to be enabled and a env var
8104         to be enabled at runtime.
8105
8106 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8107
8108         * domain.c (mono_domain_code_foreach): Improve documentation.
8109
8110 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8111
8112         * appdomain.c:
8113         * generic-sharing.c:
8114         * object.c:
8115         * reflection.c:  Adjust locking order to the new semantics where the loader lock
8116         comes first.
8117
8118 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
8119
8120         * domain.c: Add mono_domain_code_* functions that perform locking
8121         around the domain codeman.
8122
8123         * domain-internals.h: Export those functions.
8124
8125         * object.c: Use new functions instead of acquiring the domain lock.
8126
8127 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
8130         delegate. Fixes #477396.
8131
8132 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8133
8134         * reflection.c (create_custom_attr): Get rid of alloca.
8135
8136 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
8137
8138         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
8139           Adding exception handling for all CCW calls.
8140
8141         Code is contributed under MIT/X11 license.
8142
8143 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8144
8145         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
8146
8147         * marshal.c (emit_marshal_boolean): Add null checks to the new 
8148         native->managed marshalling code. Fixes #476247.
8149
8150 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8151
8152         * class.c (mono_class_get_vtable_entry): Move the addition of
8153         static rgctx invoke wrappers for vtable methods here, this simplifies
8154         a lot of code and causes fewer rgctx wrappers to be created.
8155
8156         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
8157         name of the statistics to begin with an uppercase.
8158
8159 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8160
8161         * reflection.c: Revert previous change as it breaks the build.
8162         
8163 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8164
8165         * verify.c: Properly handle SZARRAY element type.
8166
8167         Fixes #474271.
8168
8169 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8170
8171         * reflection.c (mono_image_create_method_token): Correctly encode
8172         MethodDef MemberRefParent token.
8173
8174         Fixes #472845.
8175
8176 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8177
8178         * image.c (mono_image_close): Delete the critical section before
8179         freeing the memory holding it.
8180
8181 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8182
8183         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
8184         Fixes #476257.
8185
8186 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8187
8188         * pedump.c (main): Call mono_marshal_init so pedump
8189         doesn't crash.
8190
8191 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8192
8193         * loader.c (method_from_memberref): Properly fix #474271 and
8194         don't break the runtime bad.
8195
8196 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
8199         (mono_domain_alloc0): Ditto.
8200
8201 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8202
8203         * loader.c (method_from_memberref): Don't abort if the array
8204         method is not found. A regular loader failure is more informative
8205         and correct.
8206
8207         Fixes #474271.
8208
8209 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8210
8211         *loader.c: Guard MonoImage::method_cache/methodref_cache
8212         using the image lock instead of the loader lock.
8213
8214         * metadata.h: Add comments about which fields are protected by
8215         the image lock.
8216
8217 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
8220
8221         * generic-sharing.c (mono_method_construct_object_context): Remove the
8222         wrapper_type == NONE assert, it is not needed.
8223
8224 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * reflection.c (clear_cached_object): New helper function.
8227         (mono_method_clear_object): New function to clear the cached reflection
8228         objects for a dynamic method.
8229
8230         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
8231         Partly fixes # 463323.
8232         
8233 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8234
8235         * class.c:
8236         * loader.c:
8237         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
8238
8239 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8240
8241         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
8242         take the image lock instead of the loader lock.
8243
8244         * metadata-internals.h: Export new functions.
8245
8246 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8247
8248         * domain.c (app_config_parse): Remove another use of stat that is
8249         not necessary as g_file_get_contents already does the presence
8250         check. 
8251
8252 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
8255
8256         * marshal.c: Move the bstr handling code to cominterop.c.
8257
8258         * marshal.c: Remove some COM interop code missed previously.
8259
8260 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8261
8262         More Paolo patches from the Wii port:
8263         
8264         * security.c: Remove ves_icall_System_Environment_get_UserName
8265         from here.
8266
8267         * icall.c: And put ves_icall_System_Environment_get_UserName
8268         here. 
8269
8270         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8271         redundant call to stat that was only used to test for the file
8272         existence.   Patch from Paolo.
8273
8274         * gc.c (run_finalize): If COM is disabled, do not link in
8275         mono_marshal_free_ccw.
8276
8277         * generic-sharing.c: Use alloca.h here as well.
8278
8279 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8280
8281         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8282
8283 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8284
8285         * cominterop.c cominterop.h: New files.
8286
8287         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8288         function/typedefs which are needed by cominterop.c global.
8289
8290 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8291
8292         * generic-sharing.c: Don't take the loader lock to guard image
8293         mempool allocs.
8294
8295 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8296
8297         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8298         called without the loader lock which is required to guard MonoImage:tokens.
8299
8300 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8301
8302         * class.c:
8303         * metadata.c:
8304         * method-builder.c:
8305         * marshal.c:
8306         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8307
8308 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8309
8310         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8311         Rework the code to use regular mono_image_alloc/0.
8312
8313         * loader.c: Rework the code to use regular mono_image_alloc/0.
8314
8315         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8316
8317 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8318
8319         * object-internals.h : Fixing a typo in the 
8320           MonoReflectionComVisibleAttribute struct.
8321
8322         * marshal.c (cominterop_com_visible): Check the implemented 
8323           interfaces for ComImport.
8324
8325         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8326           assume that bools should be treated as VARIANTBOOLs.
8327
8328         * marshal.c (emit_marshal_boolean): Adding cases for 
8329           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8330
8331         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8332           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8333
8334         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8335           should be treated as VARIANTBOOLs.    
8336
8337         Code is contributed under MIT/X11 license.
8338
8339 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8340
8341         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8342         allocation with the image lock.
8343
8344 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8345
8346         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8347         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8348
8349         * object.c: Add mono_string_to_utf8_image.
8350
8351         * object-internals.h: Export mono_string_to_utf8_image.
8352
8353         * reflection.c: Rework all explicit references to the the image mempool to go thought
8354         the mono_image_alloc set of functions.
8355
8356 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8357
8358         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8359         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8360         and generics-sharing.c.
8361
8362         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8363         as first argument. Note that this function remains broken as it doesn't perform locking around the
8364         mempool allocation.
8365
8366         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8367
8368         * image.c: Add g_slist_append_image.
8369
8370         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8371         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8372
8373         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8374         Fix all related code to do the same.
8375
8376         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8377
8378         * metadata-internals.h: Fix the signatures.
8379
8380 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8381
8382         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8383         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8384         and similar to work using MonoImage.
8385
8386         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8387         MonoMemPool.
8388
8389         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8390
8391         * class.c (mono_metadata_signature_deep_dup): Same.
8392
8393         * class.c (inflate_generic_type): Same.
8394
8395         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8396
8397         * metadata.c (mono_metadata_signature_dup_full): Same.
8398
8399         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8400         mono_metadata_signature_dup_full.
8401
8402         * metadata.c (mono_metadata_type_dup): Same.
8403
8404         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8405
8406         * reflection.c: Same.
8407
8408         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8409
8410         * metadata-internals.h: Fix the signatures.
8411
8412         * class-internals.h: Same.
8413
8414 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8415
8416         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8417         and use mono_image_alloc set of functions instead. 
8418
8419         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8420         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8421         of a MonoMemPool.
8422
8423         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8424
8425         * class.c (g_list_prepend_mempool): Removed.
8426
8427         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8428
8429         * image.c: Add g_list_prepend_image.
8430
8431         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8432
8433         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8434
8435
8436 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8437
8438         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8439         mono_image_unlock.
8440
8441         * image.c (mono_image_init): Init the lock field.
8442  
8443         * image.c (mono_image_init): Cleanup the lock field.
8444
8445         * image.c: Add mono_image_(un)lock functions.
8446
8447 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8448
8449         * class.c, class-internals.h: mono_method_get_context_general()
8450         combines the functionality of mono_method_get_context() and
8451         mini_method_get_context().
8452
8453         * generic-sharing.c, domain-internals.h:
8454         mono_method_construct_object_context() and
8455         mono_domain_lookup_shared_generic() moved from mini.
8456
8457         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8458         method doesn't have the correct instantiation because it's shared
8459         generic code.  Fixes #473999.
8460
8461 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8462
8463         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8464
8465         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8466         
8467 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8468
8469         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8470
8471         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8472
8473         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8474         and recheck the cache for dups after it.
8475
8476         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8477
8478         Fixes one of the deadlocks found in #473150.
8479
8480 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8481
8482         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8483           For Win32, add additional break conditions for accept.
8484
8485         Code is contributed under MIT/X11 license.
8486
8487 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8488
8489         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8490         lazily initialize the native wrapper cache.
8491         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8492         cache, since they are different from the normal wrappers.
8493
8494         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8495
8496         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8497         AOT compiled native wrappers.
8498
8499 2009-02-09  Geoff Norton  <gnorton@novell.com>
8500
8501         * appdomain.h:
8502         * security-core-clr.c: Allow enabling core-clr from the embedding
8503         API.
8504
8505 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8506
8507         * socket-io.c: when requesting all the local ips, if there are no
8508         interfaces up and running, MS returns 127.0.0.1.
8509
8510 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8511
8512         * mono-perfcounters-def.h: processor time is an inverse time.
8513         Fixes bug #468625.
8514
8515 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8516
8517         * socket-io.c: an empty host name returns the list of local IPs.
8518         Fixes bug #386637 part 1/2.
8519
8520 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8521
8522         * verify.c (mono_class_interface_implements_interface): Call
8523         mono_class_setup_interfaces ().
8524         (merge_stacks): Ditto.
8525
8526 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8527
8528         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8529         klass->interfaces.
8530         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8531         (mono_generic_class_get_class): Ditto.
8532
8533 2009-02-06  U-QUACK\miguel  <miguel@quack>
8534
8535         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8536         they live in security.c
8537
8538         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8539         another bit from Paolo's code.
8540
8541 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8542
8543         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8544         methods which will be discarded by add_imt_builder_entry ().
8545
8546         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8547         need to be boxed.
8548
8549         * loader.c: Add a statistics for the size of the memberref signature cache.
8550         
8551         * loader.c (find_cached_memberref_sig): New helper function.
8552         (cache_memberref_sig): Ditto.
8553
8554         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8555         they will be parsed again for every generic instantiation, leading to unbounded
8556         memory growth.
8557
8558 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8559
8560         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8561         parameters of generic methods.
8562
8563         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8564         after the original method is copied to the inflated method.
8565         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8566
8567         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8568         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8569
8570         * class.c metadata.c: Update after the changes above.
8571
8572 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8573
8574         * metadata-verify.c: Simplified error handling and added
8575         section table validation.
8576
8577 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8578
8579         * class-internals.h (MonoClassExt): New structure containing rarely used
8580         fields of MonoClass.
8581         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8582         through a new 'ext' field.
8583
8584         * class.c (mono_class_alloc_ext): New helper function to allocate 
8585         class->ext.
8586
8587         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8588
8589 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8590
8591         * object.c (mono_object_get_virtual_method): Properly inflate
8592         generic methods.  Fixes #472692.
8593
8594 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8595
8596         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8597         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8598         for the parent type, the created type must be ready to be used on a generic
8599         instantiation.
8600         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8601         we won't have duplicated entries in generic_inst_cache.
8602
8603         Fixes #469553.
8604
8605 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8606
8607         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8608         replace with plain BSD per the comments on the bug MONO77637.
8609
8610 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8611
8612         * class.c (mono_class_get_generic_class): New accessor function.
8613         (mono_class_get_generic_container): Ditto.
8614
8615         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8616         fields, similar to the ones in MonoMethod.
8617
8618         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8619         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8620
8621         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8622         
8623         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8624         the same information as element_class->byval_arg.
8625
8626         * class.c reflection.c: Remove references to class->byval_arg.
8627
8628         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8629         klass->enum_basetype directly.
8630
8631         * verify.c metadata.c object.c icall.c reflection.c: Use 
8632         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8633         directly.
8634
8635 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8636
8637         * icall-def.h: Remove internal calls for sockets when
8638         DISABLE_SOCKET is defined, file system writing features when the
8639         OS only support reading and not writing data and Policy support if
8640         the Policy is disabled.
8641         
8642         * image.c (do_mono_image_open): Apply Paolo's patches for using
8643         mono_file_map_ APIs here.
8644
8645         * assembly.c: Add support for platforms to avoid prefix
8646         auto-detection. 
8647
8648 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8649
8650         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8651         warning.
8652
8653         * class.c (mono_class_inflate_generic_class): New helper function.
8654
8655         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8656         statistics for inflated methods/classes.
8657
8658         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8659
8660         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8661         the call is made from Delegate.CreateDelegate () for the invoke method of
8662         a delegate.
8663
8664         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8665
8666         * metadata.c (mono_metadata_signature_size): New helper function.
8667
8668         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8669         generic instances.
8670
8671         * metadata.c (inflated_method_in_image): Avoid calling 
8672         mono_method_signature () if the method does not already have a signature.
8673
8674 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8675
8676         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8677         valuetype is compatible with target type, check by inheritance as a
8678         VT is not really compatible with System.ValueType, for example.
8679
8680         * verify.c (do_invoke_method): Improve error message.
8681
8682         * verify.c (do_box_value): If boxing a nullable, use the type argument
8683         on stack instead.
8684
8685         * verify.c (do_newobj): Improve error message.  
8686
8687         Fixes #469549.
8688
8689 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8690
8691         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8692
8693 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8694
8695         * generic-sharing.c: Don't hold domain lock when calling
8696         instantiate_other_info().  Fixes #471958.
8697
8698         * domain-internals.h, loader.c: Describe locking policy of domain
8699         lock vs loader lock.
8700
8701 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8702
8703         * verify.c (mono_delegate_signature_equal): Make it possible to check
8704         first-arg-bound delegates to static method.
8705
8706         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8707         static methods with the first arg bound.
8708
8709         Fixes #469529.
8710
8711 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8712
8713         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8714         errors.
8715
8716         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8717         under strict mode. Any type, when boxed can be seen as a reference type.
8718
8719         Fixes #469528.
8720
8721 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8722
8723         * object.h: The lower bound of an array is a signed integer value.
8724         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8725         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8726
8727         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8728         calculate the upper bound.
8729         
8730         Fixes #471252.
8731
8732 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8733
8734         From Paolo's work, refactored, cleared up:
8735         
8736         * threadpool.c, icall.c: ifdef code that requires a working socket
8737         stack.
8738
8739         * metadata.c (mono_metadata_field_info): Do not attempt to return
8740         a value from a function declared as void.
8741
8742         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8743         from the console stack.
8744
8745         * assembly.c: use strrchr instead of rindex.
8746
8747         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8748         alloca.h on systems that have it.
8749
8750         * environment.c: Avoid code that uses stuff from
8751         HAVE_SYS_UTSNAME_H
8752         
8753         * appdomain.c: Include sys/time.h.
8754
8755         * console-io.c: include sys/ioctl.h if it is available.
8756
8757 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8758
8759         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8760
8761         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8762         the method builder.
8763
8764         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8765         after it was created and cached, as the later is not thread safe.
8766         
8767 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8768
8769         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8770         called while the debugging module is not initialized. Fixes #471669.
8771
8772 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8773
8774         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8775
8776         Fixes #471255.
8777
8778 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8779
8780         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8781         loader lock is not taken while the templates lock is held.  Fixes
8782         #471089.
8783
8784 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8785
8786         * metadata.c (type_in_image): Added a check to fix a monodis
8787         crash.
8788
8789 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8790
8791         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8792         nullable arguments.
8793
8794         * object.c (mono_runtime_invoke_array): Ditto.
8795         
8796         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8797         freeing wrappers of dynamic methods.
8798
8799         * loader.c (mono_free_method): Call it. Fixes #463323.
8800         
8801         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8802         methods taking vtype/byref arguments, to fix yet another bug caused by
8803         the sharing of runtime invoke wrappers. Partly fixes #471259.
8804
8805 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8808         <first file in file table>:1 when the IL offset does not have an associated
8809         line number.
8810
8811 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8812
8813         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8814         variable info for a method.
8815
8816         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8817         
8818 2009-01-30  Jb Evain  <jbevain@novell.com>
8819
8820         * pedump.c: reuse code from monodis to make sure pedump honors
8821         MONO_PATH, which is needed to verify net_2_1 assemblies.
8822
8823 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8824
8825         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8826         there is no line number info.
8827
8828 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8829
8830         Avoid some MonoType allocations
8831         * reflection.c (mono_reflection_initialize_generic_parameter):
8832         Reuse MonoType from param->pklass rather than allocating one.
8833         (mono_dynamic_image_free): Update to changes.
8834
8835 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8836
8837         Rearrange some code to improve consistency
8838         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8839         (mono_reflection_initialize_generic_parameter): ... here.
8840
8841 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8844         with type constraints as an experiment.
8845
8846         * boehm-gc.c (on_gc_notification): Update mono_stats.
8847
8848 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8849
8850         Avoid some allocations
8851         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8852         pointer to tail array to avoid extra allocation.
8853         * metadata.c (free_generic_inst): Update to changes.
8854         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8855         on-stack struct.
8856
8857 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8858
8859         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8860         return TRUE if the two type objects are the same.
8861
8862 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8863
8864         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8865         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8866         klass->min_align, since klass->min_align contains the managed alignment,
8867         while the native alignment can be different, like for longs on x86.
8868         Fixes #469135.
8869
8870         * class-internals.h (MonoMarshalType): Add a min_align field.
8871
8872 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8873
8874         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8875         the 1.0 format.
8876
8877 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8878
8879         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8880         some comments about the usage of the used_regs field.
8881
8882         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8883         Fixes #469217.
8884
8885 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8886
8887         * appdomain.c: return NULL instead of throwing FileNotFoundException
8888         when LoadAssembly() fails.
8889
8890 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8891
8892         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8893         image if the owner is NULL.  Fixes the AOT failures.
8894
8895 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8896
8897         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8898         MonoGenericParam structure using memset so the image field is initialized
8899         as well.
8900
8901 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8902
8903         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8904         a plain store.
8905
8906 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8907
8908         * class.c (mono_class_setup_vtable_general): In the generic instance
8909         optimization, set method->slot for abstract virtual methods. Fixes part of
8910         #467834.
8911
8912 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8913
8914         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8915         which signals that the unloading has started but all appdomain services must
8916         remain operational.
8917
8918         * appdomain.c (mono_domain_unload): The initial state for unloading now
8919         is unloading_start and we switch to unloading after the managed call to
8920         AppDomain::DomainUnload has finished.
8921
8922         The new unloading state has to be created because managed code in the
8923         DomainUnload event can depend on things like the threadpool still working.
8924         The domain must remain fully functional while the event executes.
8925
8926         This shown as an issue due to Process::WaitForExit, which waits for
8927         async reads of stdout and stderr to complete. Since those are processed
8928         in the threadpool the code deadlocks because the DomainUnload callback 
8929         waits for the async read finished event, which should have been set by a
8930         threadpool job but has been discarded due to the domain been in unload
8931         state.
8932
8933 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8934
8935         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8936         image must match.
8937
8938 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8939
8940         * reflection.c (resolve_object): For fields, inflate the class and
8941         then get the field in the inflated class.
8942
8943 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8944
8945         * object-internals.h (struct _MonoException): Added a comment
8946         explaining the new use of trace_ips.
8947
8948 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8949
8950         * generic-sharing.c (inflate_other_data): Inflate array methods
8951         correctly.
8952
8953         * loader.c, class-internals.h: Rename search_in_array_class() to
8954         mono_method_search_in_array_class() and make it non-static.
8955
8956 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8957
8958         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8959         Hopefully fixes #458168.
8960
8961 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8962
8963         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8964         as it is performed elsewhere.
8965
8966         Code is contributed under MIT/X11 license
8967
8968 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8969
8970         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8971         requests queued.
8972         * object.c (mono_raise_exception): Increment the exceptions total
8973         counter when an exception is thrown.
8974         * class-internals.h: Add a location for storing the total number of
8975         asp.net requests served.
8976         * mono-perfcounters.c: Implement update support for asp.net counters
8977         from the class libraries. Implement read support for asp.net counters
8978         and exceptions total counter.
8979
8980 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8981
8982         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8983         accessing klass->methods. Fixes #467385.
8984
8985 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8986
8987         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8988         for byval arguments without an [Out] attribute. Fixes #467212.
8989
8990         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8991         Fix compilation under android.
8992         
8993         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8994         processed, scan them directly after they are copied, to achieve better locality
8995         and cache usage.
8996
8997         * socket-io.c: Applied patch from Koushik Dutta
8998         (koush@koushikdutta.com). Disable IPV6 when running under android.
8999
9000 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
9001
9002         * icall.c (ves_icall_InternalExecute): Add write barriers.
9003
9004         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
9005         the GC code.
9006
9007         * sgen-gc.c: Implement write barriers in IL code.
9008
9009 2009-01-17  Geoff Norton  <gnorton@novell.com>
9010
9011         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
9012
9013 2009-01-17  Geoff Norton  <gnorton@novell.com>
9014
9015         * image.c: When unloading the image->references table, there can be gaps
9016         in it.  Ensure that we iterate every entry to avoid leaking assembly references
9017         when unloading an appdomain.
9018
9019 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
9020
9021         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
9022         speed up ptr-in-nursery checks.
9023
9024         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
9025         threads_lock () to prevent deadlocks.
9026
9027         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
9028         does not need to be scanned during minor collections, since writes to it
9029         must use write barriers.
9030
9031 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
9032
9033         * metadata-verify.c: Add pe nt header verification.
9034         
9035 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
9036
9037         * gc.c: Fix a few warnings when using SGEN.
9038
9039 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
9040
9041         * metadata-verify.c: Add pe optional header verification.
9042
9043 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
9044
9045         * sgen-gc.c: Add support for user defined marker functions, used by
9046         MonoGHashTable to avoid registering a GC root for every hash node.
9047
9048 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
9049
9050         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
9051         non-pinned roots into separate hashes to avoid having to traverse them
9052         in functions which are only interested in one kind.
9053
9054 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
9055
9056         * metadata-verify.c: Add pe header machine field verification.
9057         
9058 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
9059
9060         * metadata-verify.c: Add pe header size verification.
9061
9062 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
9063
9064         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
9065         using the GC, they don't contain references.
9066
9067         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
9068
9069 2009-01-13  Geoff Norton  <gnorton@novell.com>
9070
9071         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
9072         AppDomains created on the native side can be cleaned up on the native side.
9073
9074 2009-01-13  Geoff Norton  <gnorton@novell.com>
9075
9076         * appdomain.c: Ensure that we call mono_context_init for the embedding api
9077         as well as the managed api.
9078
9079 2009-01-13  Geoff Norton  <gnorton@novell.com>
9080
9081         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
9082         with a MonoAppDomain initialized against it.
9083
9084 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
9085
9086         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
9087         
9088         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
9089
9090         * marshal.c: Avoid setting the exception clauses after a method has been entered 
9091         into the wrapper caches. Fixes #465700.
9092
9093         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
9094         method builder.
9095         (mono_mb_create_method): Set the clauses from the method builder.
9096
9097 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
9098
9099         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
9100         Patch from Makoto Kishimoto.
9101
9102 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
9103
9104         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
9105         encoding them as ROOT_DESC_COMPLEX.
9106         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
9107
9108 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
9109
9110         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
9111         no longer point to the nursery.
9112
9113         * sgen-gc.c: Add a few comments/FIXMEs.
9114         
9115         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
9116
9117         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
9118         initialization of the various _method variables thread safe. Fixes
9119         #465377.
9120
9121 2009-01-12  Mark Probst  <mark.probst@gmail.com>
9122
9123         * domain.c, domain-internals.h: Remove the shared_generics_hash
9124         and its lookup functions.
9125
9126 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
9127
9128         * socket-io.c:  Fixing the MSVC build. 
9129
9130         Code is contributed under MIT/X11 license.
9131
9132 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
9133
9134         * metadata-verify.c: Add pe header watermark verification.
9135
9136 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * metadata-verify.c: Add lfanew verification.
9139
9140 2009-01-12  Jb Evain  <jbevain@novell.com>
9141
9142         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
9143         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
9144
9145 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
9146
9147         * socket-io.c: Fix the build.
9148
9149         * environment.c: Fix an #ifdef.
9150
9151 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9152
9153         * threadpool.c (async_invoke_thread): Handle the wait function returning
9154         WAIT_IO_COMPLETION as well.
9155         (async_invoke_io_thread): Ditto.
9156
9157 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
9158
9159         * threads.c: Fixing the Windows build.
9160
9161         Code is contributed under MIT/X11 license.
9162
9163 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9164  
9165         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
9166         interrupt a wait.
9167         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
9168         the thread to wait again.
9169
9170 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9171
9172         * metadata-verify.c: Initial skeleton of the metadata verifier.
9173
9174         * pedump.c: Add support for the metadata verifier.
9175
9176         * verify-internal.h: Export the whole assembly metadata verifier function.
9177
9178 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9179
9180         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
9181
9182 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9183
9184         * Makefile.am: Upgrade dtrace-prelink.sh location.
9185
9186 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9187
9188         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
9189         well. Otherwise the shutdown deadlock that happens on unix will can happen
9190         as well.
9191         If the main thread code finishes too fast it's possible that the finalizer
9192         thread won't have executed yet, won't record itself as the finalizer thread
9193         and the shutdown sequence will wait on it forever.
9194
9195 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9196
9197         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
9198         with MSVC.
9199
9200 2009-01-08  Miguel de Icaza  <miguel@novell.com>
9201
9202         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
9203         Robert Jordan for pointing this out.
9204
9205 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
9206
9207         * icall.c
9208         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
9209         ves_icall_System_IO_DriveInfo_GetDriveType.
9210
9211 2009-01-07  Miguel de Icaza  <miguel@novell.com>
9212
9213         * icall.c: Wrap calls to mono_strtod in CriticalSection
9214         invocations when using eglib, to work around #464316.
9215
9216 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9217
9218         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
9219         return value of GetCurrentDirectory to never access unitialized memory.
9220
9221 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9222
9223         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
9224         return value of GetCurrentDirectory and expand the buffer if needed.
9225
9226         Fixes #459094.
9227
9228 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
9229
9230         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
9231           Adding a call to mono_init_com_types.
9232
9233         Code is contributed under MIT/X11 license.
9234
9235 2009-01-07  Geoff Norton  <gnorton@novell.com>
9236
9237         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
9238         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
9239         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
9240         be the value of the ip buffer.
9241
9242 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9243
9244         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
9245         interfaces_packed here.
9246
9247         Fixes part of #463294.
9248
9249 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9250
9251         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
9252
9253         Fixes part of #463294.
9254
9255 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9256
9257         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
9258         is a boxed complex as well.
9259
9260         Fixes part of #463294.
9261
9262 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9263
9264         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
9265         control if a methodspec should be created for the generic method definition from external assemblies.
9266         Caching of methodspec is done using the handleref hash table.
9267
9268         Fixes #462592.
9269
9270 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9271
9272         * loader.c (find_method): When searching the interfaces of a class
9273         check the transitive closure of implemented interfaces.
9274
9275         Fixes #463303.
9276
9277 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9278
9279         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9280         
9281 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9282
9283         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9284         interfaces calculation to fill_valuetype_array_derived_types.
9285
9286         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9287         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9288         for example.
9289
9290         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9291         interfaces for valuetypes if needed.    
9292
9293         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9294         for their basetype as well. Types are array expanded if rank is > 0.
9295
9296         Fixes #400716.
9297
9298 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9299
9300         * socket-io.h : Changing the signature of
9301           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9302           the blocking state.
9303
9304         * icall-def.h :  Changing the signature of
9305           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9306
9307         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9308           For Windows only.  Avoid blocking when calling accept by
9309           querying for a connection via select.  The loop also queries
9310           the thread state every 1000 micro seconds for the thread
9311           stop state.  This will avoid the process hanging on shutdown
9312           when using a TcpChannel that is never connected to.
9313
9314         Code is contributed under MIT/X11 license.
9315
9316 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9317
9318         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9319
9320 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9321
9322         * class.c (get_implicit_generic_array_interfaces): Extract common
9323         code to a helper function making it a lot easier on the eyes.
9324
9325 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9326
9327         * class.c (get_implicit_generic_array_interfaces): If the internal
9328         enumerator is an interface inflate System.Object instead of itself.
9329
9330         Fixes #461261.
9331
9332 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9333
9334         * object.c (mono_runtime_invoke_array): Don't assert with
9335         byref nullable types.
9336
9337         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9338         byref nullables we unbox the object and store it on the
9339         stack. 
9340         We can't use the boxed object since it is the T of Nullable<T>
9341         and the boxed representation of a nullable it's underlying type
9342         or null.
9343         We could cheat and create a boxed nullable and use the same
9344         machinery of other byref VTs but this feels like a hack and
9345         using the stack has the bonus of reducing heap pressure.
9346
9347         Fixes #461941.
9348
9349 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9350
9351         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9352         return value.
9353
9354         Fixes #461867.
9355
9356 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9357
9358         * icall-def.h : Adding an internal call definition for 
9359           System.Environment.internalBroadcastSettingChange.
9360
9361         * icall.c : Adding a Windows only implementation to broadcast a 
9362           WM_SETTINGCHANGE when an environment variable has changed.
9363
9364         Code is contributed under MIT/X11 license.
9365
9366 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9367
9368         * class.c, class-internals.h: Made
9369         mono_class_has_parent_and_ignore_generics() non-static.
9370
9371 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9372
9373         * image.c: deal with the mmap failing when loading an image.
9374
9375 2008-12-17  Geoff Norton  <gnorton@novell.com>
9376
9377         * threadpool.c: Ensure that the io_queue_lock is initialized
9378         in all circumstances, as we always attempt to cleanup against it.
9379
9380 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9381
9382         * icall.c (ves_icall_System_Environment_get_Platform): For
9383         compatibility reasons for existing client code we will keep
9384         returning 4 for a while.   
9385
9386         For how long will depend on the documentation being updated, and
9387         for us to give client code a chance to be updated.
9388
9389         This reverts the original decison on #433108 since we did not
9390         catch roughly 33 instances of the broken code in our own source
9391         code base, we did not catch failures on the buildbots, and QA did
9392         not bring this as a problem.
9393
9394         Only today I found some customer's code breaking due to our own
9395         class libraries not being fully updated and tracked it down to
9396         this change.  I am reverting it because if we could not even get
9397         our story straight in our own code base, how can we hope that our
9398         end user code be fixed?
9399
9400         As of this morning, our Wiki page that documents how to detect
9401         Unix had not been fixed.    
9402
9403 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9404
9405         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9406
9407         * class.c (mono_class_get_fields): Handle loading errors.
9408
9409 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9410
9411         * 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.
9412         
9413 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9414
9415         * mono-perfcounters.c: avoid warning.
9416
9417 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9418
9419         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9420         make sure all interfaces have MonoClass::interface_id set.
9421
9422         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9423         method table is property set.
9424
9425 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9426
9427         * class.c: New function mono_class_setup_interface_id that setup
9428         MonoClass::interface_id if needed.
9429
9430         * class-internals.h: Export new function.
9431
9432 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * class.c: Add code to sanity check the vtable after setup_vtable_general
9435         has done it's work.
9436
9437 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9438
9439         * icall.c: make Assembly.GetExecutingAssembly work properly when
9440         reflection is used to invoke the method.
9441         Bug #321781 fixed.
9442
9443 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9444
9445         * metadata/generic-sharing.c: Look for constraints in all type
9446         arguments, not just the first one.
9447
9448 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9449
9450         * appdomain.c: return the correct CodeBase for an Assembly instance
9451         that was loaded from the shadow-copy directories.
9452         Bug #458190 fixed.
9453
9454 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9455
9456         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9457
9458         * sgen-gc.c (check_object): New debugging helper function.
9459
9460         * object.c: Fix calls to mono_value_copy_array ().
9461
9462 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9463
9464         * class.c (mono_class_setup_fields): If working on an inflated class
9465         first check if the generic definition did init with success.
9466
9467         Fixes #445361.
9468
9469 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9470
9471         pedump.c (main): Fix a warning.
9472
9473 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9474
9475         * object-internals.h : Adding a definition for 
9476           MonoReflectionComVisibleAttribute.
9477
9478         * marshal.c (cominterop_com_visible) :  Method added to check the 
9479           ComVisible attribute of a class.
9480
9481         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9482           cominterop_raise_hr_exception added to consolidate common code 
9483           to raise hr exceptions.
9484
9485         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9486           if a managed class should support IDispatch.
9487
9488         * marshal.c 
9489           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9490           Added additional checks for managed object when getting 
9491           an IDispatch interface.
9492
9493         Code is contributed under MIT/X11 license.
9494
9495 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9496
9497         pedump.c (main): Handle mono_get_method () returning NULL. 
9498
9499 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9500
9501         * marshal.h: Fix a warning.
9502
9503 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9504
9505         * marshal.c : Adding cominterop_release_all_rcws to release all
9506           runtime callable wrappers held by the runtime.
9507
9508         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9509           
9510         Code is contributed under MIT/X11 license.
9511
9512 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9513
9514         * metadata.c (mono_image_alloc_lock): New helper function.
9515         (mono_image_alloc0_lock): Ditto.
9516
9517         * metadata.c: Use the alloc_lock () helper functions for allocating
9518         memory from the image mempool.
9519
9520 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9521
9522         * class.c (mono_class_from_generic_parameter): Document it's
9523         locking behavior. Fix double checked locking here, we stored in
9524         param->pklass a partially initialized MonoClass and no membar was used.
9525
9526 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9527
9528         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9529         (3) functions are present in the C library use them to do the
9530         job. If they are absent, make sure that the sum of int_part and
9531         dec_part is rounded before returning. This is necessary due to the
9532         division of dec_part by the power of 10 before the final addition
9533         is performed - if the result is not rounded in some cases it will
9534         yield invalid results.
9535
9536 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9537
9538         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9539         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9540         instruction instead of a pointer constant.
9541
9542 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9543
9544         * loader.c (mono_method_get_header): Do most of the work outside the
9545         loader lock, to avoid assembly load hook deadlocks.
9546
9547         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9548         (mono_metadata_parse_type_full): Ditto.
9549
9550 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9551
9552         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9553         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9554         funtions. Finally, use a lock to produce well ordered output.
9555
9556         The lock looks silly, as all calls to the corlib mempool should be guarded
9557         with the loader lock, but for some reason this fact doesn't help. 
9558
9559         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9560
9561 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9562
9563         * socket-io.c: 64 bit big-endian fixes.
9564
9565 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9566
9567         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9568         targets that require strict compatibility between the types.
9569
9570         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9571         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9572         Kill the strict argument and create a new one valuetype_must_be_boxed.
9573
9574         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9575         state that all valuetypes must be boxed.
9576
9577         Fixes #448560.
9578
9579 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9580
9581         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9582         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9583
9584         Contributed under MIT/X11 license.
9585
9586 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9587
9588         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9589         the inflate_generic_type machinery should handle it.
9590
9591         This avoids a crash when the field's flags is zero and it's type is
9592         a primitive.
9593         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9594         is zero and will return one of the cached built-in primitive types. Since
9595         those types live in read-only memory, the code that copies it crashes.  
9596
9597 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9598
9599         * object.c: Don't put function descriptors into generalized IMT
9600         thunks.
9601
9602 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9603
9604         * class.c: Enable generic code sharing on PPC64.
9605
9606 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9607
9608         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9609         from mini/mini.c.
9610
9611         * generic-sharing.c: Allocate the method template slists from the
9612         image mempool so it doesn't leak.
9613
9614 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9615
9616         * class.c (generic_array_methods): Release the linked list.
9617
9618 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9619
9620         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9621         invocation to g_utf16_to_utf8().
9622
9623 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9624
9625         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9626         arguments on big endian archs.
9627
9628 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9629
9630         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9631         the type name (test added in corlib).
9632
9633 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9634
9635         * pedump.c: initialize perf. counters. Fixes a segv.
9636
9637 2008-11-25  Martin Baulig  <martin@ximian.com>
9638
9639         * mono-debug-debugger.c
9640         (mono_debugger_runtime_invoke): Return the exception object if an
9641         exception was thrown.  Visual Studio displays the exception object
9642         in the locals window.
9643
9644 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9645
9646         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9647         ftnptr.
9648
9649 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9650
9651         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9652         MONO_TYPE_U are sizeof (gpointer), too.
9653
9654 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9655
9656         * marshal.c (mono_type_native_stack_size): Fixed size and
9657         alignment for reference types.
9658
9659 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9660
9661         * class.c (mono_class_generic_sharing_enabled): Disable generic
9662         code sharing for PPC64.
9663
9664 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9665
9666         * icall.c (mono_method_get_equivalent_method): Make sure
9667         method->klass->methods is inited before looping over it.
9668
9669 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9670
9671         * object.c: when calling ExecuteAssembly in a newly created domain,
9672         the configuration file and application base are already set up.
9673         Bug #446353 take 2 fixed.
9674
9675 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9676
9677         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9678         Fixes #444715. Fix a warning.
9679
9680 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9681
9682         * appdomain.c: write the full path of the assembly to the .ini file
9683         created when "shadow-copying"
9684         Bug #446353 fixed.
9685
9686 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9687
9688         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9689         if signature==FALSE.
9690
9691 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9692
9693         * marshal.h : Fix the cygwin build.
9694            marshal.c:12442: undefined reference to `_IID_IMarshal'
9695           
9696         Code is contributed under MIT/X11 license.
9697
9698 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9699
9700         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9701           free threaded marshaler when QueryInterface is called on a COM callable
9702           wrapper requesting the IMarshal interface.
9703           
9704         Code is contributed under MIT/X11 license.
9705
9706 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9707
9708         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9709
9710         * reflection.c (mono_type_get_object): Special case the very common
9711         void type.
9712
9713         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9714         hold typeof(void).
9715
9716 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9717
9718         * process.h : Adding method declaration for
9719           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9720           
9721         * process.c : Adding implementation for
9722           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9723           
9724         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9725           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9726
9727         Code is contributed under MIT/X11 license.
9728
9729 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9730
9731         * appdomain.c (unload_thread_main): Clean up threadpool by
9732         calling mono_thread_pool_remove_domain_jobs.
9733
9734         * domain-internals.h (struct _MonoDomain): Add new fields to
9735         help coordinate the cleanup of the threadpool.
9736
9737         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9738         that cleans up the threadpool of all jobs associated with an appdomain.
9739         It does that by cleaning up the queues and making sure all active
9740         threads are accounted.
9741
9742         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9743         unloaded or in the process of. Take this is such way that there is
9744         no race condition between another thread starting the unload and the
9745         current thread acknowledging it.
9746
9747         * threadpool.c (async_invoke_thread): Same.
9748
9749         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9750         firing the new thread.
9751
9752         * threadpool.c (start_tpthread): Same.
9753
9754         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9755
9756         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9757
9758 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9759
9760         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9761         Add support for DuplicateHandle.
9762         
9763         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9764         Add support for DuplicateHandle.
9765         
9766         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9767         Add support for DuplicateHandle.
9768
9769         Code is contributed under MIT/X11 license.
9770
9771 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9772
9773         * class-internals.h: Make min_align into a whole byte.
9774
9775         * class.c: Set min_align for SIMD types to 16.
9776
9777 2008-11-05  Geoff Norton  <gnorton@novell.com>
9778
9779         * attach.c: Default the attacher to enabled for all cases including
9780         embedded.
9781
9782 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9783
9784         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9785         change r117650.
9786
9787 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9788
9789         * monitor.c, monitor.h: New function for querying offsets of
9790         members of MonoThreadsSync.
9791
9792 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9793
9794         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9795         to speed up this function and to avoid the boundless memory growth caused by
9796         the signature_dup () calls.
9797
9798 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9799
9800         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9801         wrapper.
9802
9803         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9804         by 1 bit.
9805
9806         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9807
9808 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9809
9810         * appdomain.c:
9811         * domain-internals.h: made mono_set_private_bin_path_from_config()
9812         "internal".
9813         * object.c: call the above function after setting the configuration
9814         file path for the root domain.
9815         Fixes bug #314478.
9816
9817 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9818
9819         * assembly.c: when the assembly is loaded from an absolute path, end
9820         basedir with a directory separator.
9821         Bug #440781 fixed.
9822
9823 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9824
9825         * monitor.c (mono_monitor_get_fast_enter_method): If
9826         CompareExchange is not available, don't create the fastpath
9827         instead of asserting.  (The method is missing in the 1.1 profile.)
9828
9829 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9830
9831         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9832
9833         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9834         Monitor.Exit IL fastpaths.
9835
9836 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9837
9838         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9839
9840 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9841
9842         * class.c (mono_class_create_from_typedef): Added Vector2l.
9843
9844 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9845
9846         * class.c (mono_class_create_from_typedef): Added Vector2d.
9847
9848 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9849
9850         * appdomain.c: translate \ into / for cache_path.
9851         * domain-internals.h: new mono_is_shadow_copy_enabled().
9852         * icall.c: (fill_reflection_assembly_name) do the same path
9853         manipulations that get_code_base does.
9854         (get_code_base) use mono_is_shadow_copy_enabled.
9855
9856 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9857
9858         * appdomain.c: shadow-copied assemblies go to CachePath +
9859         ApplicationName when both are set. DynamicBase has nothing to do with
9860         shadow copies.
9861         Bug #406877 fixed.
9862
9863 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9864
9865         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9866         STANDALONESIG table.
9867
9868         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9869         standalone signatures.
9870
9871         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9872         comparison code: instead of comparing the signatures using a custom
9873         equals function, transform them to a common signature and compare that. This
9874         works better with AOT.
9875
9876 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9877
9878         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9879
9880         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9881         call for generic instances.
9882         (mono_class_setup_properties): Call setup_properties () before accessing
9883         gklass->properties.
9884
9885         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9886         over the virtual methods of a class using metadata if possible, avoiding the
9887         creation of MonoMethod's for non-virtual methods.
9888         
9889         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9890         get_virtual_methods () to iterate over the virtual methods of classes.
9891
9892 2008-10-25  Martin Baulig  <martin@ximian.com>
9893
9894         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9895
9896 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9897
9898         * class.c (mono_class_create_from_typedef): Added Vector4i.
9899
9900 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9901
9902         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9903         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9904         special-casing applies to eliminate the call completely.
9905
9906 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9907
9908         * class.c (mono_class_create_from_typedef): Added Vector8s.
9909
9910 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9911
9912         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9913
9914 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9915
9916         * icall.c: get rid of annoying warning.
9917
9918 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9919
9920         * threadpool.c: in 1.x, if you change the background status of the
9921         threadpool thread, it's not reset.
9922         Remove unnecessary calls to SetState.
9923
9924 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9925
9926         * threadpool.c: asynchronously create a set of idle threads upon first
9927         use of the threadpool. SetMinThreads will now start the appropriate
9928         number of idle threads if they are not already running. The default is
9929         1 threadpool thread per CPU. Increased the maximum number of threads
9930         per CPU to 10.
9931
9932 2008-10-22  Martin Baulig  <martin@ximian.com>
9933
9934         Revert r116521 from Zoltan, it breaks the debugger:
9935
9936         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9937         over the virtual methods of a class using metadata if possible, avoiding the
9938         creation of MonoMethod's for non-virtual methods.
9939         
9940         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9941         get_virtual_methods () to iterate over the virtual methods of classes.
9942
9943 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9944
9945         * threads.c: when creating a threadpool thread, set its state to
9946         'background'.
9947         * threadpool.c: reset the background state of a threadpool thread
9948         after finishing each work item
9949         Bug #437888 fixed.
9950
9951 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9954         
9955         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9956         generic instances which works by inflating the methods in the container
9957         class's vtable.
9958
9959         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9960         variant which doesn't make a copy if no inflation was done.
9961         (mono_class_setup_fields): Use it.
9962
9963         * metadata.c (mono_metadata_get_shared_type): New helper function to
9964         return a shared instance of a given MonoType.
9965
9966         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9967         a copy of most non-generic types.
9968
9969 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9970
9971         * threadpool.c: remove one more GetSystemInfo () call.
9972
9973 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9974
9975         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9976         use the code in mono-proclib.h to get processor information.
9977
9978 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9979
9980         * appdomain.c: fixed the logic that determines whether assemblies in a
9981         directory are "shadow-copied" or not. Bug #433483 fixed.
9982
9983 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9984
9985         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9986         warning.
9987
9988 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9991         returning a vtype.
9992
9993         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9994         reflection.c: Use mono_field_get_name () for accessing a field's name.
9995
9996         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9997         class.c
9998
9999         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
10000         field.
10001
10002         * loader.c (find_method_in_class): Reenable the metadata optimization by
10003         not using it for generic instances.
10004
10005         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
10006         data/def_type fields from MonoClassField into a separate structure.
10007         (struct MonoClassField): Remove data/def_type fields.
10008         (struct _MonoClass): Add a 'field_def_values' array to store the default
10009         values/RVA for fields.
10010
10011         * class.c reflection.c: Update after the changes.
10012         
10013         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
10014         for accessing field->data.
10015
10016         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
10017
10018         * loader.c (find_method_in_class): Revert the last change for now as
10019         it breaks Mono.C5 unit tests.
10020
10021         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
10022         'field_generic_types' and 'field_objects' which contain the information
10023         previously stored in MonoInflatedField.
10024         (MonoInflatedField): Delete.
10025         (struct _MonoClassField): Delete 'generic_info' field.
10026
10027         * reflection.c: Store the information which was previously in 
10028         field->generic_info in MonoDynamicGenericClass instead.
10029
10030         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
10031         MonoClassField changes.
10032
10033 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
10034
10035         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
10036         store the value inside the data array of the MonoMethodWrapper.
10037         This saves memory, is faster and fixes the lifetime issues (methods
10038         were never removed from the hash previously). May also fix bug#436996.
10039
10040 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
10041
10042         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
10043         generic instances, compute the type from the generic definition instead of
10044         looking in field->generic_info.
10045
10046         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
10047         for inflated fields, the only user was get_fieldref_token () which no
10048         longer needs it.
10049
10050         * class.c (mono_class_init): Revert the last change as it seems to cause
10051         crashes.
10052
10053         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
10054         bytes on 64 bit platforms.
10055
10056         * object.c (mono_class_create_runtime_vtable): Fix a warning.
10057         
10058         * object.c (mono_class_create_runtime_vtable): Don't initalize
10059         field->data/field->def_type here, it is done lazily by 
10060         mono_class_get_field_default_value ().
10061
10062         * icall.c (ves_icall_get_enum_info): Call 
10063         mono_class_get_field_default_value () instead of directly accessing
10064         field->data and field->def_type.
10065
10066         * object.c (get_default_field_value): Ditto.
10067
10068         * class.c (mono_field_get_data): Ditto.
10069         
10070         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
10071         call for generic instances.
10072
10073         * loader.c (find_method_in_class): If klass != from_class, then inflate
10074         the method with the context of from_class, since the caller assumes this.
10075
10076 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
10077
10078         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
10079         for accessing method->slot.
10080
10081 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
10082
10083         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
10084
10085 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
10086
10087         * class.c (mono_method_get_vtable_index): Use
10088         mono_method_get_vtable_slot () for accessing method->slot.
10089
10090         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
10091         accessing klass->methods.
10092
10093         * class.c (mono_method_get_vtable_slot): New helper function.
10094         (mono_class_get_vtable_entry): Ditto.
10095         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
10096         accessing method->slot.
10097
10098         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
10099         method to get_inflated_method ().
10100
10101         * class.c (mono_class_get_inflated_method): New helper method to obtain
10102         a method of an inflated class without calling setup_methods ().
10103         (mono_class_get_cctor): Use get_inflated_method.
10104
10105         * generic-sharing.c (mono_class_get_method_generic): Ditto.
10106         
10107         * marshal.c image.c: Lazily create all the marshal caches.
10108
10109         * image.c (mono_image_init): Move initialization of runtime_invoke
10110         caches to marshal.c.
10111
10112         * marshal.c (get_cache): New helper function to lazily initialize a 
10113         wrapper cache.
10114         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
10115
10116         * debug-helpers.c (mono_method_full_name): Include generic arguments.
10117
10118 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
10119
10120         * loader.c: fixed check for interface type.
10121
10122 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10123
10124         * appdomain.c: check for NULL setup before it's referenced.
10125
10126 p
10127 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10128
10129         * class.c: remove the unused old vtable setup code.
10130
10131 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10132
10133         * class.c: don't depend on interface order in
10134         setup_interface_offsets (bug #435777).
10135         * reflection.c: sort the InterfaceImpl table (patch from
10136         Jb Evain  <jbevain@novell.com>).
10137
10138 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
10139
10140         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
10141         the low level assemblies lock.
10142
10143 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
10144
10145         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
10146         object.c, reflection.c, socket-io.c, threads.c: introduced
10147         mono_framework_version () to return the major framewrok version,
10148         changed the code that was using more complex patterns to use it.
10149         Return the correct value for PlatformID for OSX.
10150
10151 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
10152
10153         * icall-def.h, process.h, process.c: added an icall to get info about
10154         processes using mono-proclib.
10155
10156 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
10157
10158         * mono-perfcounters.c: use the mono-proclib functions to
10159         access process information.
10160
10161 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10162
10163         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
10164         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
10165         reflection.c: remove rawbuffer usage: mmap support is more sanely
10166         provided by utils/mono-mmap.
10167
10168 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
10169
10170         * gc.c: use posix semaphores when possible so that
10171         mono_gc_finalize_notify() is signal safe.
10172
10173 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
10174
10175         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
10176         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
10177         be #ifdef-ed out, the linker will remove the rest.
10178
10179         * marshal.c: Implement DISABLE_COM.
10180
10181         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
10182
10183 2008-10-11  Miguel de Icaza  <miguel@novell.com>
10184
10185         * locales.c (string_invariant_compare_char): Optimization: do not
10186         call g_unichar_type unless we actually need the information.
10187
10188 2008-10-10  Mark Probst  <mark.probst@gmail.com>
10189
10190         * object.c, class-internals.h: Also create remoting trampolines
10191         for generic methods.  Pass the domain to the remoting trampoline
10192         creation function, too.
10193
10194 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
10195
10196         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
10197
10198 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10199
10200         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
10201         Vector4ui.
10202
10203 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
10204
10205         * assembly.c:
10206         * locales.c: remove the use of g_strdown. Fixes bug #322313.
10207
10208 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10209
10210         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
10211         for the least possible amount of time (extending the fix in r113458).
10212
10213 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10214
10215         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
10216
10217 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
10218
10219         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
10220         as possible simd intrinsic types.
10221         Optimized the test to check for the common prefix first.
10222
10223 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
10224
10225         * class.c: back out part of a broken optimization committed on
10226         May 23th (bug #433908).
10227
10228 2008-10-09  Mark Probst  <mark.probst@gmail.com>
10229
10230         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
10231         Win32.  Should fix #432388 for most cases until we have the new
10232         profiler on Win32.
10233
10234 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
10235
10236         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
10237         instead of using inst->id so the hash is stable for AOT.
10238
10239 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
10240
10241         * appdomain.c:
10242         * icall.c: create a .ini file for shadow-copied assemblies that
10243         contains the location of the original assembly. Use this to return the
10244         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
10245         Also fix the number of '/' for windows when returning the CodeBase.
10246         Fixes bug #430920.
10247
10248 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10249
10250         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
10251
10252         Code is contributed under MIT/X11 license.
10253
10254 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10255
10256         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
10257           if if the class vtable needs initialized.
10258
10259         Code is contributed under MIT/X11 license.
10260
10261 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10262
10263         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
10264           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
10265           STRING->BSTR, and CLASS->INTERFACE.
10266
10267         Code is contributed under MIT/X11 license.
10268
10269 2008-10-07  Marek Habersack  <mhabersack@novell.com>
10270
10271         * sysmath.h: changed the declaration of the
10272         ves_icall_System_Math_Round2 icall by adding an extra
10273         away_from_zero parameter.
10274
10275         * sysmath.c (ves_icall_System_Math_Round2): added support for
10276         away from zero rounding. The icall now takes an extra boolean
10277         parameter to signal that away from zero operation is requested.
10278
10279 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10280
10281         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10282         the delegate klass so it can work with full-aot.
10283         (mono_marshal_get_delegate_end_invoke): Ditto.
10284         (mono_marshal_get_delegate_invoke): Ditto.
10285
10286 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10287
10288         * gc.c, attach.h, attach.c: remove a bad pattern:
10289         add_finalizer_callback () is not implemented correctly, it can't
10290         without adding more overhead to the finalizer loop and it's not
10291         even needed, since we know exactly what we need to call, so there is
10292         no need to do so through an expensive function pointer.
10293
10294 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10295
10296         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10297         for the no-gc case.
10298         * attach.c (mono_attach_init): Remove the #ifdef.
10299
10300 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10301
10302         * attach.c (mono_attach_init): Don't use
10303         mono_gc_add_finalizer_thread_callback when compiling without GC.
10304         Fixes #432306.
10305         
10306         Code is contributed under MIT/X11 license.
10307
10308 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10309
10310         * class.c (mono_class_create_from_typedef): Remove the 
10311         #ifndef DISABLE_SIMD stuff.
10312
10313 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10314
10315         * class-internals.h (MonoClass): Added simd_type bit field.
10316
10317         * class.c (mono_class_create_from_typedef): Check if type is a simd
10318         intrinsic.
10319
10320 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10321
10322         * object.c (mono_method_add_generic_virtual_invocation): Only add
10323         instantiations to the thunk whose count is at least as large as
10324         the threshold.
10325
10326 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10327
10328         * icall.c: changed the Type of the exception thrown when trying to
10329         invoke a constructor on an abstract class. Part of the fix for bug
10330         #324185.
10331
10332 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10333
10334         * class.c, class-internals.h (mono_method_get_vtable_index): New
10335         function which returns the index into the vtable and properly
10336         handles inflated virtual generic methods.
10337
10338 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10339
10340         * object.c, domain.c, object-internals.h, domain-internals.h:
10341         Generalize IMT thunk machinery to also handle thunks for virtual
10342         generic method invokes.  When a virtual generic method is invoked
10343         more than a number of times we insert it into the thunk so that it
10344         can be called without lookup in unmanaged code.
10345
10346         * generic-sharing.c, class-internals.h: Fetching a
10347         MonoGenericInst* for a method from an (M)RGCTX.
10348
10349 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10352         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10353         marshalling. Fixes #431304.
10354
10355 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10356
10357         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10358           handle when ref is specified without In or Out.
10359
10360         Code is contributed under MIT/X11 license.
10361
10362 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10363
10364         * loader.c (mono_get_method_constrained): Don't expand method with
10365         the class's context, because it's already a method of that class.
10366
10367 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10368
10369         * attach.c : should be correct build fix.
10370
10371 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10372
10373         * attach.c: Fix the previous change.
10374
10375 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10376
10377         * attach.c : quick w32 build fix.
10378
10379 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10380
10381         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10382         crashes MonoDevelop: #430455.
10383
10384 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10385
10386         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10387         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10388
10389         * domain.c: Remove initialization/cleanup of the removed fields.
10390
10391 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10392
10393         * class.c (mono_class_generic_sharing_enabled): Enable generic
10394         code sharing for PPC.
10395
10396 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10397
10398         * attach.c : Fixing the Windows builds.
10399
10400         Code is contributed under MIT/X11 license.
10401
10402 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10403
10404         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10405         the default generic sharing mode to 'all'.
10406
10407 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10408
10409         * generic-sharing.c, class-internals.h: New function for checking
10410         whether a method needs a static RGCTX invoke wrapper.  A few
10411         funtions moved from mini/generic-sharing.c.
10412
10413         * icall.c: New function used.
10414
10415 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10416
10417         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10418         Static RGCTX invoke wrapping applies to value type methods, too.
10419
10420         * class.c (mono_class_setup_vtable_general): In generic-shared
10421         value types, wrap methods with a static RGCTX invoke wrapper.
10422
10423 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10426         osx build.
10427
10428 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10431         register a callback which is called when the finalizer thread is woken
10432         up.
10433         (finalizer_thread): Call the callback if it exists.
10434
10435         * attach.h attach.c: New files, implementing the attach mechanism.
10436
10437         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10438         
10439         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10440         by the previous change.
10441
10442 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10443
10444         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10445         loader.c, marshal.c, metadata-internals.h, metadata.c,
10446         method-builder.c, object.c, reflection.c: introduced specific functions
10447         to allocate from the domain and image mempools and cleaned up most of
10448         the code to use them (still missing a few in reflection.c).
10449         Keep the loader bytes counter updated.
10450
10451 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10452
10453         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10454         loader-related counters.
10455
10456 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10457
10458         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10459         added more MS-compatible counters.
10460
10461 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10464         class->blittable. Fixes #428217.
10465
10466 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10467
10468         * reflection.c (mono_image_get_field_on_inst_token): Call 
10469         field_encode_signature () since that handles custom modifiers too.
10470         Fixes #424663.
10471
10472 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10473
10474         * reflection.c (add_custom_modifiers): New helper function to merge custom
10475         modifiers stored in objects to a MonoType.
10476         (fieldref_encode_signature): Encode custom modifiers.
10477         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10478         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10479
10480 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10481
10482         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10483         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10484         64-bit IL only images because imports are not resolved for IL only images.
10485         Special thanks to Bill Holmes for finding this bug and testing the patch.
10486         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10487
10488         Contributed under MIT/X11 license.
10489
10490 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10491
10492         * mono-config.c (dllmap_start): Add support for the bits keyword
10493         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10494
10495 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10496
10497         * reflection.c (inflate_mono_method): When the class the method is
10498         to be inflated for is itself not inflated, just return the method.
10499
10500 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10501
10502         * mono-perfcounters.c: use more user friendly process instance names.
10503
10504 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10505
10506         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10507           handle "[in] ref" and "[in][out] ref" cases.
10508
10509         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10510           to mono_mb_create_method.  This was causing problems calling native to
10511           managed passing Variants by value.
10512
10513         Code is contributed under MIT/X11 license.
10514
10515 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10516
10517         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10518         before accessing the friend_assembly_names field.
10519
10520         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10521         times.
10522         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10523         called lazily when it is needed.
10524
10525         * metadata-internals.h (struct _MonoAssembly): Add 
10526         'friend_assembly_names_inited' flag.
10527
10528 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10529
10530         * mono-perfcounters-def.h: fix the types of a few counters.
10531         * mono-perfcounters.c: implemented the instance names getter
10532         and a few bugfixes.
10533
10534 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10535
10536         * culture-info-table.h : regenerated.
10537
10538 2008-09-17  Robert Jordan  <robertj@gmx.net>
10539
10540         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10541         context bound objects. Fixes #415577.
10542
10543         Code is contributed under MIT/X11 license.
10544
10545 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10546
10547         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10548         implementation (bug #423582).
10549
10550 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10551
10552         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10553         is not set. Fixes #426309.
10554
10555 2008-09-16  Jb Evain  <jbevain@novell.com>
10556
10557         * class.c (mono_class_from_name): fix the exported type look up
10558         when the type is defined in a referenced assembly.
10559
10560 2008-09-16  Jb Evain  <jbevain@novell.com>
10561
10562         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10563         increment the next index counter on each iteration to make that work
10564         for more than one type forwarder. Unmanaged part to fix #422929.
10565
10566 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10567
10568         * object-internals.h: enum ComInterfaceType in
10569         MonoInterfaceTypeAttribute is guint32, not guint16.
10570
10571 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10572
10573         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10574         writing code.
10575
10576 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10577
10578         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10579         not gboolean.
10580
10581 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10582
10583         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10584         Endianness fixes for MonoSymbolFileOffsetTable.
10585
10586 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10587
10588         * process.c (complete_path) : Removing quotes from the 
10589           input path.  The glib file routines do not handle file paths
10590           that have quotes around them.
10591
10592         Code is contributed under MIT/X11 license.
10593
10594 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10595
10596         * socket-io.h : Adding a comment to provide locations where 
10597           changes to MonoSocketAsyncResult need to be synced.
10598
10599         Code is contributed under MIT/X11 license.
10600
10601 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10602
10603         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10604         parameters as well. Fixes #425001.
10605
10606 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10607
10608         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10609         windows build.
10610
10611 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10612
10613         * console-io.c: Add support for tracking the window size if it
10614         changes.
10615
10616         The setup is very simple: the TtySetup function will now return a
10617         pointer to a location in memory that tracks the current console
10618         size.  The managed code checks its current value every time its
10619         queried against the last value set, and updates accordingly.
10620
10621         With this setup we can work with multiple consoles, and we do not
10622         require to poke into managed code from a signal handler.
10623
10624         Additionally, the environment for COLUMNS and LINES is now handled
10625         in unmanaged code.
10626
10627         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10628
10629 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10630
10631         * marshal.c (mono_type_native_stack_size): Treat
10632         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10633
10634 2008-09-04  Jb Evain  <jbevain@novell.com>
10635
10636         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10637         to nullables.
10638
10639 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10640
10641         * verify.c (verify_type_compatibility_full): Revert change
10642         to allow converting a native int to unmanaged pointer be verifiable
10643         under non-strict mode.
10644         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10645
10646         * verify.c: Added some TODOs.
10647
10648 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10649
10650         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10651           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10652           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10653
10654         Code is contributed under MIT/X11 license.
10655
10656 2008-09-02  Jb Evain  <jbevain@novell.com>
10657
10658         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10659
10660 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10661
10662         reflection.c (typebuilder_setup_fields): Handle classes with
10663         explicit size.
10664
10665 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10666
10667         class.c (mono_class_setup_events): Add memory barrier due to
10668         double checked locking.
10669         
10670         class.c (mono_class_setup_properties): Same.
10671
10672 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * class.c (mono_class_is_assignable_from): Fix the build.
10675         
10676         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10677         before accessing klass->interface_bitmap. Fixes #421744.
10678
10679 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10682         the runtime into no-exec mode, useful when running the AOT compiler.
10683
10684         * appdomain.c gc.c object.c: Avoid executing managed code when running
10685         in no-exec mode.
10686         
10687         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10688
10689         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10690         special case when the mono_assembly_loaded () returns NULL because the 
10691         search hook is not installed.
10692
10693 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10694
10695         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10696         crashes in bstr marshalling on linux.
10697
10698 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10701         with more than one parameter.
10702
10703 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10704
10705         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10706         start/stop flow control as well when turning off ICANON (allows
10707         C-s and C-q to be read by Console.ReadKey).
10708
10709 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10710
10711         * class.c (mono_class_init): Move the initialization of nested classes
10712         into mono_class_get_nested_types (). Fixes #418433.
10713
10714         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10715         flag.
10716
10717         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10718         iterating tough the nested classes of a class.
10719
10720 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10721
10722         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10723         on arm.
10724
10725 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10726
10727         * console-io.c (sigcont_handler): Support signal chaining for
10728         SIGCONT.
10729
10730         (console_set_signal_handlers): Use best practices with sigaction,
10731         clear the structure before using it. 
10732
10733 2008-08-22  Robert Jordan  <robertj@gmx.net>
10734
10735         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10736         Fix the Windows build.
10737
10738 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10739
10740         * class.c (mono_class_generic_sharing_enabled): Make the default
10741         sharing mode 'corlib'.
10742
10743 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10744
10745         * console-io.c (console_set_signal_handlers): Fix a warning.
10746
10747         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10748         method normally, the JIT will take care of avoiding recursion.
10749
10750 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10751
10752         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10753
10754         Code is contributed under MIT/X11 license.
10755
10756 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10757
10758         * console-io.c (sigcont_handler): We need to restore the entire
10759         termios state, not only the original settings, as things like echo
10760         can be controlled after this (Booish exposes this issue with its
10761         own ReadLine implementation).
10762
10763         Additionally, we need to set the terminal back into keypad_xmit
10764         mode.
10765         
10766         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10767         string as a paramter as well.   Otherwise we get different
10768         keyboard sequences.
10769
10770 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10771
10772         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10773         delegates with byref out parameter passing. Fixes #351520.
10774
10775         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10776         a generic context.
10777         (mono_type_get_desc): Add the type arguments for GENERICINST.
10778         (mono_method_full_name): Stringify the class name using mono_type_full_name
10779         so it picks up generic arguments.
10780
10781 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10782
10783         * console-io.c: Removed debug output.
10784
10785 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10786
10787         reflection.c (mono_reflection_create_runtime_class): Alloc
10788         the nested classes linked list using the dynamic image mempool.
10789         Fixes leak in corlib compilation.
10790
10791 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10792
10793         * console-io.c: Fix incredibly annoying behavior on the console
10794         after resuming execution after control-z.   This affected every
10795         console application.
10796
10797 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10798
10799         * mempool-internals.h: Header for mono private mempool functions. The first
10800         two function are for allocating glib linked lists using pools.
10801
10802         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10803
10804         * Makefile.am: Added mempool-internals.h.
10805
10806 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10807
10808         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10809         (mono_domain_free): Ditto.
10810
10811         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10812         be used by the JIT to store its domain-specific information, instead of putting
10813         it directly into MonoDomain.
10814
10815         * domain.c (mono_install_create_domain_hook): New helper function to install
10816         a hook which initializes domain->runtime_info.
10817
10818         * domain.c (mono_install_free_domain_hook): Ditto.
10819         
10820 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10821
10822         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10823         asserting if the ares parameter is null.
10824
10825         * mono-perfcounters.c: Fix warnings.
10826
10827         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10828         is not needed, don't check for interruptions either.
10829         (mono_marshal_get_delegate_end_invoke): Ditto.
10830
10831 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10832
10833         * mono-perfcounters.c (predef_readonly_counter): added support for
10834         reading the ASP.NET Requests Queued counter from another process.
10835
10836 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10837
10838         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10839         MonoImage to simplify the AOT code.
10840
10841 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10842
10843         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10844         marshalling. Fixes #416078.
10845
10846 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10847         
10848         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10849         it is set, looking up the icall address is deferred to the JIT, since 
10850         in embedded scenarios, the icall might not be registered in the runtime
10851         doing the AOT compilation. Backported from the 2.0 branch.
10852
10853 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10854
10855         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10856         Fixes #415621.
10857
10858 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10859
10860         * Makefile.am: added support for cross-compilation.
10861
10862 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10863
10864         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10865
10866 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10867
10868         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10869
10870 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10871
10872         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10873         mono-perfcounters.c: performance counters implementation.
10874
10875 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10878         to gpointer, letting the AOT code decide what to store in it.
10879
10880 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10881
10882         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10883           mono_class_setup_methods if the methods are not initialized.
10884
10885         Code is contributed under MIT/X11 license.
10886
10887 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10888
10889         * verify.c: Remove some debug code I commited by accident.
10890
10891         * verify.c (mono_method_is_valid_in_context): Change the return value
10892         to make possible to distinguish between invalid and unverifiable.
10893
10894         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10895         methods.
10896
10897 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10898
10899         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10900         constraints. Fixes regression in gtest-253.
10901
10902 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10903
10904         * verify.c (mono_verifier_verify_class): Don't allow generic types
10905         with explicit layout.
10906
10907         * verify.c (mono_method_verify): Check locals and argument types.
10908
10909 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10910
10911         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10912         wait if the thread is in StopRequested state.
10913
10914         * class.c (mono_class_from_name): Refactor the module searching code into
10915         a separate function so it can be reused in the AOT case too.
10916
10917 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10918
10919         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10920         Check both the type and it's generic type definition for loader errors.
10921         
10922         * verify.c (mono_method_is_valid_in_context): Don't generate another
10923         error when a type errors occur, this leads to the wrong exception been
10924         thrown.
10925
10926 2008-07-28  Dick Porter  <dick@ximian.com>
10927
10928         * icall-def.h
10929         * process.c
10930         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10931         New internal calls to duplicate and close a process handle.
10932
10933 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10934
10935         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10936
10937 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10938
10939         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10940
10941 2008-07-27  Robert Jordan  <robertj@gmx.net>
10942
10943         * class.c (mono_class_init): Don't compute class.has_finalize for
10944         valuetypes. Fixes #412477.
10945
10946 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10947
10948         * verify.c: Implement constraint equivalence checking.
10949         This is required when a generic parameter is used as
10950         argument to a constrained one.
10951
10952         Fixes #410637.
10953
10954 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10955
10956         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10957
10958         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10959
10960         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10961         synch with managed object layout.
10962
10963 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10964
10965         * verify.c (do_branch_op): Handle valuetypes and generic
10966         arguments properly.
10967
10968         * verify.c (do_cmp_op): Same.
10969
10970         Fixes #410383.
10971
10972 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10973
10974         * generic-sharing.c: Fix memory leaks.
10975
10976         * class.c, class-internals.h: Make
10977         mono_class_inflate_generic_type_with_mempool() non-static.
10978
10979 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10980
10981         * pedump.c (dump_verify_info): Dump full class name.
10982
10983 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10984
10985         * generic-sharing.c: Removed some old code that didn't do anything.
10986
10987 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10988         * profiler.c: Added runtime_initialized_event,
10989         mono_profiler_install_runtime_initialized and
10990         mono_profiler_runtime_initialized. This new hook tells the profiler
10991         when the runtime is sufficiently initialized to be able to call
10992         mono_thread_attach on the root appdomain.
10993         * profiler.h, profiler-private.h: Likewise.
10994
10995 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10996
10997         * verify.c (do_cast): Do boxing for generic arguments as well.
10998
10999         * class.c (is_nesting_type): Drop generic instantiations before
11000         checking for nesting.
11001
11002         * class.c (can_access_instantiation): Allow access to generic
11003         arguments.
11004
11005 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
11006
11007         * verify.c (verify_class_for_overlapping_reference_fields):
11008         On some cases, the field size might be zero, guard against that.
11009         Fix the explicit layout check to work as expected.
11010
11011 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11012
11013         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
11014         mono_thread_resume () during shutdown, since the thread we want to abort
11015         might be suspended.
11016
11017 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11018
11019         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
11020         warning.
11021
11022         * debug-mono-symfile.c: Fix a warning.
11023
11024         * mono-perfcounters.c (get_cpu_times): Fix a warning.
11025
11026         * object.c (mono_class_vtable): Check if exception_type is set, and return
11027         NULL as defined by the function comments.
11028
11029 2008-07-22  Mark Probst  <mark.probst@gmail.com>
11030
11031         * mempool.c: Use malloc for every single mempool allocation if the
11032         configure option is set.  This makes it easier to track mempool
11033         allocations with tools like Valgrind.
11034
11035 2008-07-22  Jb Evain  <jbevain@novell.com>
11036
11037         * reflection.c (create_dynamic_mono_image): emit the same
11038         metadata version that SL2 does when creating a SL2 image.
11039
11040 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
11041
11042         * icall-def.h:
11043         * icall.c: New icall System.Enum:get_hashcode. This function
11044         avoids the overhead of boxing the enum to the underlying type.
11045
11046 2008-07-21  Mark Probst  <mark.probst@gmail.com>
11047
11048         * reflection.c (mono_method_get_object): Don't let static RGCTX
11049         invoke wrappers get into MonoReflectionMethods.
11050
11051 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
11052
11053         * object-internals.h:
11054         * object.c: New mono_runtime_class_init_full function
11055         that makes throwing the exception optinal.
11056
11057         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
11058         for the case where the exception object is supplied.
11059
11060 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
11061
11062         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
11063         old ld versions.
11064
11065         Contributed under MIT/X11 license.
11066
11067 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
11068
11069         * string-icalls.c (ves_icall_System_String_InternalSplit):
11070         Optimize array allocation by caching the MonoClass of the
11071         array type.
11072
11073         * icall.c (ves_icall_Type_GetMethodsByName): Same.
11074
11075         * reflection.c (mono_param_get_objects): Same.
11076
11077 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
11078
11079         * icall-def.h:
11080         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
11081         It inflates the given type using the class context.
11082
11083 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
11084
11085         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
11086         the vtable if it already exists.
11087
11088         * object-internals.h: Add mono_class_try_get_vtable as part of the
11089         internal API.
11090
11091         * reflection.c (mono_type_get_object): Use the MonoObject from the
11092         vtable when possible. Reduces locking contention on reflection heavy
11093         code.
11094
11095 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
11096
11097         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
11098         g_bit_nth_msf () since that macro is not implemented in eglib.
11099
11100 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11101
11102         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
11103         on platforms which do not support it.
11104
11105 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11106
11107         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
11108
11109 2008-07-11  Martin Baulig  <martin@ximian.com>
11110
11111         * mono-debug-debugger.h
11112         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
11113
11114         * mono-debug-debugger.c
11115         (_mono_debugger_interruption_request): New global volatile variable.
11116         (mono_debugger_check_interruption): New public function.
11117
11118         * threads.c
11119         (mono_thread_current_check_pending_interrupt): Call
11120         mono_debugger_check_interruption().
11121         (mono_thread_interruption_checkpoint_request): Likewise.
11122
11123 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11124
11125         * verify.c: Add more type checks for loaded types. Verify the result
11126         handle from ldtoken.
11127
11128 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11129
11130         * loader.c (field_from_memberref): Don't crash if the field
11131         wasn't found.
11132
11133 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11134
11135         * verify.c: Verify if type and method instantiations
11136         don't have invalid VAR or MVAR arguments.
11137
11138 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11139
11140         * verify.c: Fix double free of function pointer list.
11141
11142 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11143
11144         * object.c (mono_string_to_utf8): Comment the new code as it
11145         breaks under eglib.
11146
11147 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
11148
11149         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
11150
11151 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11152
11153         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
11154           is not throw too many times.
11155
11156         Code is contributed under MIT/X11 license.
11157
11158 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11159
11160         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
11161         debugging is turned off.
11162
11163 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11164
11165         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
11166
11167 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11168
11169         * class-internals.h, class.c: Added new generic sharing option:
11170         Share only stuff in System.Collections.Generic, which is now the
11171         default.
11172
11173 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11174
11175         * generic-sharing.c, class-internals.h: New function for getting a
11176         generic method in a generic class given the corresponding method
11177         for a different instantiation of the class.  Partly refactored
11178         from mini-trampolines.c.
11179
11180         * class.c: Make sure generic methods have a class_inst if they are
11181         part of a generic class.
11182
11183         * metadata.c (mono_type_stack_size_internal): Handle type
11184         variables.
11185
11186 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11187
11188         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
11189         Signifies whether information on the this/vtable/mrgctx variable
11190         is available.
11191
11192 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11193
11194         * object.c, object-internals.h, icall.c: New function
11195         mono_delegate_ctor_with_method(), which does the same as
11196         mono_delegate_ctor(), but takes an explicit method argument
11197         instead of taking the method from the jit info.
11198
11199         * marshal.c: When creating a delegate with an inflated method take
11200         the "this" argument as the target class for the castclass.
11201
11202 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11203
11204         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
11205         mono_jit_info_table_find() to perform very badly in some cases.
11206
11207 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11208
11209         * icall.c (type_from_typename): Handle 'string'.
11210
11211         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
11212         wrappers into the wrapper_hash, since the key is not a MonoMethod.
11213
11214 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
11217
11218         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
11219         number of available managed allocator types.
11220
11221         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
11222         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
11223
11224 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11225
11226         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
11227         which is a low level lock protecting just the 'jit_code_hash' hash table.
11228
11229         * domain.c: Initialize+cleanup jit_code_hash_lock.
11230         
11231 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11232
11233         * coree.c (mono_load_coree): Set coree_module_handle global variable only
11234         after initialization.
11235
11236         * coree.h: Make MonoFixupExe internal.
11237
11238         Contributed under MIT/X11 license.
11239
11240 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11241
11242         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
11243         because that is platform independent. Check NumberOfRvaAndSizes in PE32
11244         as well.
11245         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
11246         image being loaded is a CLI image and _CorValidateImage gets called.
11247
11248         * coree.h: Add MonoLoadImage.
11249
11250         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
11251         instead of LoadLibrary.
11252
11253         Contributed under MIT/X11 license.
11254
11255 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
11256
11257         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
11258         for any primitive type.
11259
11260 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11261
11262         * object.c (mono_array_new_specific): Optimize this and the other allocation
11263         functions a bit.
11264         
11265         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
11266         domains too if mono_dont_free_domains is set.
11267
11268         * domain-internals.h (mono_dont_free_domains): New internal option controlling
11269         whenever to free appdomain data after it has been unloaded.
11270
11271         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11272         
11273 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11274
11275         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11276         (mono_method_get_equivalent_method): Fix a warning.
11277
11278         * object.c (mono_message_init): Avoid looking up array types for each call.
11279
11280 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11281
11282         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11283         call.
11284
11285         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11286         even more.
11287
11288         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11289         each iteration.
11290
11291         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11292         fields of an enum.
11293
11294 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11295
11296         * object.c (mono_value_box): Fix boxing of nullables.
11297
11298 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11299
11300         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11301         mono_module_handle that is defined by the linker; no initialization required.
11302         * coree.h: Remove mono_module_handle, add __ImageBase, update
11303         mono_image_open_from_module_handle.
11304         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11305         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11306         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11307         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11308         to 4 GB away from image base address. IA64 version is not tested but was very
11309         easy to implement and should work if we ever need it.
11310         * domain.c (mono_init_internal): Avoid system error message boxes.
11311         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11312         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11313         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11314         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11315         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11316
11317         Contributed under MIT/X11 license.
11318
11319 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11320
11321         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11322         as part of the private mono API.
11323         
11324         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11325         Do proper argument checking for methods that belong to generic classes.
11326         Do proper type resolution for GMFH/2.
11327         Fixes #377324.
11328         
11329 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11330
11331         * verify.c (do_switch): Fix a memory corruption bug with
11332         the jump index is out of bound.
11333
11334 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11335
11336         * verify.c: Disable debug code.
11337
11338 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11339
11340         * reflection.c (mono_image_get_methodbuilder_token): Use
11341         mono_image_get_methodspec_token_for_generic_method_definition
11342         instead of mono_image_get_memberref_token. We cache more memberef
11343         entries now.
11344
11345 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11346
11347         * verify.c: Inflate exception clause types.
11348         Fixes #402606.
11349         
11350 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11351
11352         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11353         name.
11354
11355         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11356
11357         * reflection.c (mono_image_create_method_token): Same.
11358
11359 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11360
11361         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11362         It does the same as mono_image_get_methodref_token but works on
11363         MethodBuilder.
11364
11365         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11366         and always generate a methodspec. This follows the old behavior and fixes
11367         the regressions in System.Core. 
11368
11369 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11372         don't event mono_class_get () succeeds. Fixes #402182.
11373
11374 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11375
11376         * metadata-internals.h: Added MonoDynamicImage::methodspec
11377         hashtable to store methodspec tokens created for MethodBuilders.
11378
11379         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11380         MethodBuilders as open instantiations if a methodspec was requested.
11381
11382         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11383
11384         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11385
11386         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11387
11388         Fixes bug #349190.
11389
11390 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11391
11392         * loader.c (method_from_methodspec): Avoid crashing if the
11393         method lookup fails.
11394
11395 2008-06-20  Dick Porter  <dick@ximian.com>
11396
11397         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11398         classes being in a different assembly.  Fixes bug 399184.
11399
11400 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * loader.c (mono_loader_init): Make this callable multiple times.
11403         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11404         the runtime is initialized. Fixes #401755.
11405
11406 2008-06-19  Dick Porter  <dick@ximian.com>
11407
11408         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11409         Fixes bug 349688.
11410
11411 2008-06-19  Dick Porter  <dick@ximian.com>
11412
11413         * socket-io.c:
11414         * icall-def.h: Implement Socket generic Send() and Receive()
11415         methods.  Fixes bug 395168.
11416
11417 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11418
11419         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11420
11421         Contributed under MIT/X11 license.
11422
11423 2008-06-18  Martin Baulig  <martin@ximian.com>
11424
11425         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11426         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11427         set to 80.0.  The debugger <-> runtime interface is now frozen as
11428         well.   
11429
11430         * mono-debug.c
11431         (mono_debug_debugger_version): Bump to 4.
11432
11433 2008-06-18  Martin Baulig  <martin@ximian.com>
11434
11435         * debug-mono-symfile.c
11436         (load_symfile): Don't check the minor version.
11437
11438         * debug-mono-symfile.h: Bump the version number to 50.0.
11439
11440 2008-06-18  Martin Baulig  <martin@ximian.com>
11441
11442         * debug-mono-symfile.c
11443         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11444         minimum required version.
11445
11446 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11447
11448         * reflection.c (mono_custom_attrs_from_property): Fix support for
11449         retriveving cattrs of dynamic inflated generic types.
11450
11451         * reflection.c (mono_custom_attrs_from_event): Same.
11452
11453         * reflection.c (mono_custom_attrs_from_field): Same;
11454
11455         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11456
11457         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11458         Moved to metadata.c.
11459
11460         * metadata.c: New functions to retrive the equivalent field, event
11461         of property from the generic type definition.
11462
11463         * metadata-internals.h: Added new functions from metadata.c.
11464
11465 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11466
11467         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11468         to cached in a mempool is used.
11469
11470         * metadata.c (free_generic_class): In some situations field generic_info type
11471         is not properly dup'ed and leads to double free'ing.
11472
11473         Fixes #400643.
11474
11475 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11476
11477         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11478         this arguments (will be needed later for generic methods).
11479         Collect stats.
11480
11481 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11482
11483         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11484         Create a static RGCTX invoke wrapper for methods which require it.
11485
11486 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11487
11488         * object.c, class-internals.h: New function for checking whether
11489         an individual field is special static.
11490
11491 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11492
11493         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11494         linear search since the table is sorted.
11495
11496         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11497         Fixes #324180.
11498
11499 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11500
11501         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11502         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11503
11504         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11505
11506         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11507         
11508         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11509         InterlockedCompareExchange to query and modify 
11510         thread->interruption_requested.
11511
11512         * object-internals.h (struct _MonoThread): Change interruption_requested
11513         to a gint32 so it can be modified by atomic operations. Add 
11514         'critical_region_level' from the managed side, change small_id to a guint32,
11515         add new set of 'unused' fields.
11516
11517         * appdomain.c: Bump corlib version.
11518
11519 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11520
11521         * class.c (mono_class_from_name): Search modules as well. Fixes
11522         #322332.
11523
11524 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11525
11526         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11527         templates.  Templates are generalized with an additional type_argc
11528         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11529         have type_argc>0.
11530
11531         * domain-internals.h, domain.c: New hash table for looking up
11532         MRGCTXs.
11533
11534         * metadata.c, metadata-internals.h: Rename hash and equal
11535         functions for MonoGenericInst's and make them public.
11536
11537         * class-internals.h: New data structures for the MRGCTX.  Macros
11538         for distinguishing slots in the RGCTX and the MRGCTX.
11539
11540 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11541
11542         * object.c (mono_method_get_imt_slot): Put the same methods of
11543         different instantiations of the same generic interface in the same
11544         IMT slots, to make generic sharing simpler.
11545
11546 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11547
11548         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11549
11550         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11551         This function works just like mono_metadata_field_info, but
11552         accept a mempool as argument to be used allocating memory.
11553
11554         * marshal.c (mono_marshal_load_type_info): Use new function
11555         to load marshal data into image mempool.
11556
11557 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11558
11559         * class.c (mono_class_inflate_generic_type_with_mempool):
11560         This function allows to inflate a generic type using
11561         a mempool.
11562
11563         * class.c (inflate_generic_type): Take a mempool as argument
11564         and use it to do type dup'ing.
11565
11566         * class.c (mono_class_setup_fields): Field type for generic
11567         generic classes are allocated from the image mempool.
11568
11569         * metadata.c (free_generic_class): Inflated field type is
11570         now allocated in the image mempool.
11571
11572 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11573
11574         * threads.c (thread_cleanup): Free MonoThread::name.
11575
11576 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11577
11578         * appdomain.c (ensure_directory_exists): avoid unnecessary
11579         mkdir(2) calls when the shadow directory already exists.
11580         (mono_make_shadow_copy): copy also satellite assemblies from the
11581         private bin directories.
11582
11583 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11584
11585         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11586         
11587         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11588         a page boundary. Fixes #396219.
11589
11590 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11591
11592         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11593         due to double-checked locking.
11594
11595 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11596
11597         * assembly.c (build_assembly_name): Release memory on failure.
11598
11599         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11600
11601 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11602
11603         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11604         memory on failure.
11605
11606 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11607
11608         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11609         memory on failure.
11610
11611 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11612
11613         * loader.c (field_from_memberref): Check if field signature type is equal
11614         to the non-inflated type of the field. Fixes #398980.
11615
11616 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11617
11618         * assembly.c (mono_assembly_load_from_full): Call 
11619         mono_assembly_load_friends () outside the assemblies lock, since it can
11620         acquire the loader lock. Fixes #323696.
11621
11622         * reflection.c (resolve_object): Inflate the inst with the context for
11623         FieldOnTypeBuilderInst. Fixes #399010.
11624
11625 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11626
11627         * reflection.c (mono_image_get_field_on_inst_token): Don't
11628         inflate the field to encode it's signature. If it's a
11629         VAR or MVAR it should stay that way in the signature.
11630         Fixes #399047.
11631
11632 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11633
11634         * reflection.c (resolve_object): Release memory of inflated types.
11635
11636 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11637
11638         * loader.c (mono_method_get_signature_full): Remove assert about
11639         loading a methodspec to a generic method. We have such methods, such as
11640         System.Threading.Interlocked::CompareExchange<T>.
11641         This assert was removed since it crashes the verifier when it checks
11642         methods calling CompareExchange<T>.
11643
11644 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11645
11646         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11647         of Type array and not MonoType.
11648
11649 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11650
11651         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11652         <lupus@ximian.com>
11653
11654 2008-06-10  Martin Baulig  <martin@ximian.com>
11655
11656         * debug-mono-symfile.h
11657         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11658         changes to the file format, but we were generating incorrect
11659         source file indices in the line number table due to a bug, which
11660         made backtraces report an incorrect source file.
11661
11662 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11663
11664         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11665         mini/debug-mini.c to here.
11666
11667         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11668
11669         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11670         use it to release structs returned by mono_debug_find_method.
11671
11672 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11673
11674         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11675         since it needs to set method->slot for all interface methods.
11676
11677 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11678
11679         * class-internals.h: Forgot to add.
11680
11681 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11682
11683         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11684
11685         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11686         Lookup the custom attributes from property_hash.
11687
11688         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11689         in property_hash. Allocate all data using the image mempool.
11690
11691         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11692         for dynamic_custom_attrs to checks if the image is dynamic.
11693
11694 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11695
11696         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11697         assemblies array.
11698         
11699         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11700         runtime functions while holding the domain assemblies lock.
11701
11702 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11703
11704         * verify.c: Reapplied the last bit of the reverted changes.
11705
11706 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11707
11708         * verify.c: Reapplied more of the reverted changes.
11709
11710 2008-06-09  Martin Baulig  <martin@ximian.com>
11711
11712         * debug-mono-symfile.c (load_symfile): Check the major version
11713         first; if it's wrong, don't print the minor version in the error message.
11714
11715 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11716
11717         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11718         lock instead of the domain lock to avoid deadlocks, since the thread might
11719         already hold the loader lock.
11720
11721         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11722         (mono_thread_attach): Ditto.
11723
11724         * monitor.c: Use a TLS variable for holding the current thread id instead
11725         of calling pthread_self ().
11726         (mono_monitor_init_tls): New internal function to initialize the TLS
11727         variable.
11728         (mono_monitor_try_enter_internal): Put the owner == id check after the
11729         owner == 0 check.
11730
11731         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11732         missed optimizations when using gcc-4.3.
11733
11734 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11735
11736         * reflection.c (mono_dynamic_image_free): Free the memory
11737         used by MonoGenericParam in MonoDynamicImage::gen_param.
11738
11739         * reflection.c (mono_reflection_setup_generic_class): Allocate
11740         container from mempool.
11741
11742         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11743         container from mempool.
11744
11745 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11746
11747         * threads.c (mono_set_pending_exception): New internal function to set the
11748         pending exception of the current thread.
11749         (mono_thread_get_and_clear_pending_exception): Check for 
11750         thread->pending_exception as well.
11751
11752         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11753
11754         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11755         it can trigger a collection.
11756
11757 2008-06-06  Martin Baulig  <martin@ximian.com>
11758
11759         Merged the `debugger-kahalo' branch.
11760
11761         * mono-debug.h
11762         (MONO_DEBUGGER_VERSION): Bumped to 72.
11763
11764         * debug-mono-symfile.h
11765         (MonoSymbolFileMethodIndexEntry): Removed.
11766         (MonoSymbolFileMethodEntry): New public typedef.
11767         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11768         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11769         `data_offset'.
11770         (MonoSymbolFileMethodEntry): Removed.
11771         (MonoSymbolFileLexicalBlockEntry): Removed.
11772         (MonoSymbolFileLineNumberEntry): Removed.
11773         (MonoDebugLexicalBlockEntry): Removed.
11774         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11775         removed `num_il_offsets' and `il_offsets'.
11776         (MonoSymbolFile): Replace `version' with `major_version' and
11777         `minor_version'.
11778         (MONO_SYMBOL_FILE_VERSION): Replace with
11779         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11780         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11781
11782         * debug-mono-symfile.c
11783         (mono_debug_symfile_lookup_location): Add support for the new line
11784         number table format.
11785
11786 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11787
11788         * metadata.c (free_generic_class): Release the inflated
11789         MonoClass of dynamic generic classes if it's not a generic
11790         type definition.
11791
11792 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11793
11794         * verify.c: Reapplied more of the reverted changes.
11795
11796 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11797
11798         * reflection.c (lookup_custom_attr): Clean the cached flag or
11799         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11800         for SRE types.
11801
11802 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11803
11804         * verify.c: Reapplied a small part of the reverted changes.
11805
11806 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11807
11808         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11809
11810         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11811         previously in managed code.
11812         (mono_monitor_exit): Ditto.
11813         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11814
11815         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11816         the managed definition.
11817
11818 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11819
11820         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11821
11822 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11823
11824         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11825         
11826         * monitor.c: Add some micro optimizations.
11827
11828         * icall.c (type_from_typename): Handle 'bool'.
11829
11830 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11831
11832         * verify.c: Implement constructor verification per P III 1.8.1.4.
11833         Fixes #396716.
11834
11835 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11836
11837         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11838         holding the assemblies lock here too.
11839
11840 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11841
11842         * verify.c: Kill stack_top function.
11843
11844 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11845
11846         * verify.c: Kill stack_get function.
11847
11848 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11849
11850         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11851
11852 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11853
11854         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11855         more reliable.
11856
11857         * verify.c (mono_method_verify): Inflate params and locals to avoid
11858         mismatch when checking for compatibility.
11859
11860 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11861
11862         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11863         Length prefix should be size in bytes. Fix bug #339530.
11864         
11865         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11866         Length prefix should be size in bytes. Fix bug #339530.
11867
11868         Code is contributed under MIT/X11 license.
11869
11870 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11871
11872         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11873
11874         Contributed under MIT/X11 license.
11875
11876 2008-06-05  Martin Baulig  <martin@ximian.com>
11877
11878         * mono-debug-debugger.c
11879         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11880
11881 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11882
11883         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11884         while holding the assemblies lock to prevent deadlocks. Handle the case
11885         where the search hook returns NULL but the assembly was still loaded.
11886         Fixes #323696.
11887
11888         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11889         modify domain state.
11890
11891 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11892
11893         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11894         * Makefile.am (pedump_LDADD): Post-process object files and
11895         add dtrace-generated object file, if necessary.
11896
11897         Code is contributed under MIT/X11 license.
11898
11899 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11900
11901         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11902
11903 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11904
11905         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11906
11907 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11908
11909         * threads.c: Try to free everything from the delayed free table
11910         when shutting down threads, and set the variable to NULL after the
11911         table is freed so that calling
11912         mono_thread_hazardous_try_free_all() when shutting down the root
11913         domain doesn't crash.
11914
11915 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11916
11917         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11918         the caller if resulting type was inflated.
11919
11920         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11921         was inflated.
11922
11923         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11924
11925
11926 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11927
11928         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11929         class library tests.
11930
11931         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11932         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11933         #396989.
11934
11935 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11936
11937         * domain.c, domain-internals.h: The JIT infos are now freed by the
11938         JIT info table code.  They are freed immediately if there only a
11939         single JIT info table in circulation.  If there is more, the free
11940         is delayed via a queue.
11941
11942         * threads.c, threads-types.h: New hazard pointer function for
11943         freeing all freeable delayed items in one sitting.
11944
11945 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11946
11947         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11948
11949         * reflection.c (typebuilder_setup_properties): Same.
11950
11951         * reflection.c (typebuilder_setup_events): Same.
11952
11953 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11954
11955         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11956         and use it for allocating memory.
11957
11958         * reflection.c (mono_marshal_spec_from_builder): Same.
11959
11960         * reflection.c: Change code to use new signatures.
11961
11962         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11963
11964 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11965
11966         * decimal.c (rescale128): Put back one line which was accidently commented
11967         out.
11968         
11969         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11970         to cause crashes.
11971
11972 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11973
11974         * reflection.c (mono_reflection_generic_class_initialize): Name must
11975         be always malloc'ed so we can free it later on. Do this for field, property
11976         and event.
11977
11978         * metadata.c (free_generic_class): Free field, property and event names.
11979
11980 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11981
11982         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11983         instead of g_memdup.
11984
11985         * reflection.c (typebuilder_setup_fields): Same.
11986
11987 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11988
11989         * decimal.c (rescale128): Optimize this function a bit more.
11990
11991 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11992
11993         * metadata.c (free_generic_class): Release some memory from
11994         SRE generic classes.
11995
11996 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11997
11998         * reflection.c (mono_image_get_generic_field_token): No reference
11999         to name is kept, free it.
12000
12001         * reflection.c (mono_reflection_generic_class_initialize): Free
12002         more memory of the inflated field.
12003
12004 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
12007         code.
12008
12009 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
12010
12011         * reflection.c (mono_dynamic_image_free): Release memory used by
12012         MonoDynamicImage::array_methods elements.
12013
12014         * reflection.c (assembly_add_win32_resources): Release memory after
12015         encoding.
12016
12017 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
12018
12019         * decimal.c (log2_32): Use an optimized version for this function too.
12020         
12021         * decimal.c (log2_64): Fix this on 32 bit machines.
12022
12023 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
12024
12025         * class.c (mono_dup_array_type): Implement allocation using a mempool.
12026
12027         * class.c (mono_metadata_signature_deep_dup): Same.
12028
12029         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
12030         a mempool.
12031
12032         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
12033
12034         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
12035
12036         * metadata-internals.h: Added mono_metadata_signature_dup_full.
12037
12038         * class-internals.h: Update signatures to take a MonoMemPool.
12039
12040 2008-06-02  Dick Porter  <dick@ximian.com>
12041
12042         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
12043         * icall-def.h: Add
12044         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
12045         FormatMessage API to get the error text.  Fixes bug 321827.
12046
12047 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
12048
12049         * decimal.c: Add some micro optimizations to make decimal operations faster.
12050
12051 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
12052
12053         * reflection.c (method_encode_clauses): Take a mempool
12054         as parameter and use it to allocate the clause array.
12055
12056         * reflection.c (mono_image_get_field_on_inst_token): Free
12057         the inflated type after encoding it.
12058
12059         * reflection.c (mono_dynamic_image_free): Free each element
12060         of MonoDynamicImage::gen_params.
12061
12062         * reflection.c (reflection_methodbuilder_to_mono_method):
12063         Allocate the generic param array from the mempool.
12064         Allocate signature params from the mempool.
12065
12066         * reflection.c (mono_reflection_generic_class_initialize):
12067         Free inflated fields after been used.
12068
12069 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
12070
12071         * icall.c: Reapply the memory leak fixes as they no
12072         longer make mono crash.
12073
12074 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
12075
12076         * reflection.c (mono_type_get_object): Don't store the suplied
12077         MonoType with type_hash. A caller which pass a type that
12078         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
12079         might end with a pointer to freed memory.
12080         The solution is to use byval_arg or this_arg from the associated
12081         MonoClass of the supplied type.
12082
12083 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * icall.c: Revert the rest of the last change as it breaks the build too.
12086
12087 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12088
12089         * icall.c: Revert a leak fix as it's breaking the build.
12090
12091 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12092
12093         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
12094
12095 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12096
12097         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
12098
12099 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12100
12101         * icall.c: Fix some memory leaks.
12102
12103 2008-05-29  Dick Porter  <dick@ximian.com>
12104
12105         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
12106         async socket operations from the pending list when a socket
12107         closes.  Leaving it until the threadpool services the event
12108         exposes a race condition when a socket descriptor is reused.
12109         Fixes bug 377589.
12110
12111 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12112
12113         * object.c: Fix negative index check for array alocation.
12114
12115 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12116
12117         * icall.c, marshal.c: Delegate wrappers should skip visibility.
12118         This check is performed by the verifier for IL created delegates
12119         and by Delegate::CreateDelegate for programatically created ones.
12120         Fixes #372406.
12121
12122 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12123
12124         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
12125         Fix code to use mono_array_size_t instead of int.
12126
12127         Based on patch by Luis F. Ortiz.
12128         Contributed under X11 license.
12129         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12130
12131 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12132
12133         * icall.c: Added ves_icall_System_Array_GetLongLength and
12134         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
12135         arrays.
12136
12137         * icall.h: Export both new functions.
12138
12139         Based on patch by Luis F. Ortiz.
12140         Contributed under X11 license.
12141         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12142
12143 2008-05-28  Martin Baulig  <martin@ximian.com>
12144
12145         The debugger now requires exactly r103463.
12146
12147         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
12148         This version is not supported by the debugger, wait for 72.
12149
12150 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12151
12152         * object.h: Changed array related functions to use
12153         mono_array_size_t instead of guint32. Forgot to commit this file.
12154
12155         Patch by Luis F. Ortiz.
12156         Contributed under X11 license.
12157         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12158
12159
12160 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12161
12162         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
12163         don't define it. Use the number literal instead.
12164
12165 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12166
12167         * icall.c: Changed array related functions to use
12168         mono_array_size_t instead of guint32.
12169
12170         * icall.c (ves_icall_System_Array_GetLength): Check for length
12171         overflow under MONO_BIG_ARRAYS.
12172
12173         Based on patch by Luis F. Ortiz.
12174         Contributed under X11 license.
12175         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12176
12177 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12178
12179         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
12180
12181         Based on patch by Luis F. Ortiz.
12182         Contributed under X11 license.
12183         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12184
12185 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12186
12187         * object.c, object.h: Changed array related functions to use
12188         mono_array_size_t instead of guint32.
12189
12190         Patch by Luis F. Ortiz.
12191         Contributed under X11 license.
12192         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12193
12194 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12195
12196         * object.h: Introduced mono_array_size_t typedef. This must be used
12197         in all places an array length is expected. This is 64bits wide if
12198         MONO_BIG_ARRAYS is enabled.
12199
12200         Patch by Luis F. Ortiz.
12201         Contributed under X11 license.
12202         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12203
12204 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * security-manager.c class.c: Set the class exception info by calling
12207         mono_class_set_failure ().
12208
12209         * class.c (mono_class_get_exception_data): New accessor function.
12210         (mono_class_set_failure): Store exception_data in the property hash.
12211
12212         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
12213         the struct as a property.
12214
12215         * loader.c (mono_get_method_full): Store the lookup result for method
12216         tokens in method_cache, the others in methodref_cache to decrease the memory
12217         usage of hash tables.
12218
12219         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
12220         (mono_image_init): method_cache is lazy inited now.
12221
12222         * metadata-internals.h (struct _MonoImage): Change method_cache to
12223         a MonoValueHashTable, add a separate methodref_cache.
12224
12225 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
12226
12227         * number-formatter.h: Fix tables to avoid arithemtic overflow in
12228           Double.ToString as exposed by Bug #383531.
12229
12230 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12231
12232         * number-formatter.h: Make some tables static.
12233
12234         * class.c (mono_method_set_generic_container): New accessor function.
12235         (mono_method_get_generic_container): Ditto.
12236
12237         * class-internals.h (struct _MonoMethod): Remove rarely used 
12238         'generic_container' field, store it in the property hash instead. Add 
12239         'is_generic' boolean field instead.
12240
12241         * image.c (mono_image_init): Initialize property_hash.
12242         (mono_image_close): Destroy property_hash.
12243
12244         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
12245         hold rarely used fields of runtime structures belonging to this image.
12246
12247         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
12248         to get/set method->generic_container.
12249
12250         * loader.c (mono_get_method_from_token): Avoid loading the method header for
12251         generic methods.
12252
12253 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
12254
12255         * class.c (mono_class_inflate_generic_method_full): Don't increase
12256         mono_stats.inflated_method_count for methods found in the cache.
12257
12258         * threads.c (mono_thread_request_interruption): Add a comment about 
12259         QueueUserAPC ().
12260
12261 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
12264         interface_offsets_packed table.
12265         
12266         * class.c (mono_class_init): Remove some dead code.
12267
12268         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
12269         mono_class_setup_vtable () when CAS is active to detect security problems.
12270
12271 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12272
12273         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12274
12275         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12276         parameters as it's irrelevant for delegate checking.
12277
12278 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12279
12280         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12281
12282         * class.c (mono_class_init): Control the creation of a generic vtable using
12283         a global which is true by default, but set to false by the runtime startup code.
12284         
12285         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12286         Disabled for now since it breaks the embedding API.
12287         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12288         (mono_class_setup_methods): Add a memory barrier.
12289
12290         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12291         when mono_class_init () doesn't compute the generic vtable.
12292         
12293 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12294         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12295         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12296         to support call chains (backtrace) in the stat profiler.
12297         * profiler.c, profiler-private.h: Likewise.
12298
12299 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12300
12301         * generic-sharing.c: Init generic class when a method of it is
12302         requested via a runtime generic context.
12303
12304 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12305
12306         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12307
12308         * reflection.c (mono_type_get_object): Add a FIXME.
12309
12310         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12311
12312         * class.c (mono_class_get_method_by_index): New helper function, returning an
12313         entry in the class->methods array.
12314
12315 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12316
12317         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12318         Avoid creating a generic vtable for generic instances as well.
12319         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12320         generic instances.
12321
12322 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12323
12324         * loader.c (mono_get_method_constrained): Inflate the signature
12325         with class context. Fix #325283.
12326
12327 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12328
12329         * object.c (mono_class_create_runtime_vtable): Add a comment.
12330
12331         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12332         where needed.
12333         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12334         (mono_class_setup_vtable_general): Add an assert.
12335         (mono_class_init): Avoid creating a generic vtable for arrays.
12336
12337         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12338         here, let mono_class_init () do that.
12339
12340         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12341         interfaces in mscorlib.
12342
12343         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12344         interfaces. Add some comments.
12345         (mono_class_init): Call mono_class_setup_methods () here since it is no
12346         longer called by mono_class_setup_vtable ().
12347
12348         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12349         not set in class->vtable.
12350         (mono_class_create_runtime_vtable): Reenable the disabled code.
12351
12352         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12353         now as it causes some test failures.
12354
12355         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12356         if using the vtable trampoline. Also remove some strange code which put the
12357         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12358         stuff as it is no longer needed.
12359
12360 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12361
12362         * pedump.c: Give make --verify all option check code as well.
12363         Using --verify code won't check for metadata now.
12364
12365 2008-05-19  Martin Baulig  <martin@ximian.com>
12366
12367         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12368
12369         * mono-debug.c
12370         (_mono_debug_using_mono_debugger): New global variable; it's set
12371         directly by the debugger, so mono_debug_using_mono_debugger() also
12372         works after attaching.
12373
12374 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12375
12376         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12377         as we do double checked locking on MonoClass::runtime_info and
12378         MonoClassRuntimeInfo::domain_vtables.
12379
12380 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * debug-helpers.c (print_field_value): Fix a warning.
12383
12384 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12385
12386         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12387         set in the AOT case.
12388
12389 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12390
12391         * class.c (mono_class_setup_vtable_general): Use memory barriers
12392         as we do double checked locking on MonoClass::vtable.
12393
12394 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12395
12396         * reflection.c (resolve_object): Inflate only if the generic context
12397         is not null. Fixes #389886.
12398
12399 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12400
12401         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12402         instead of g_free.
12403
12404         Code is contributed under MIT/X11 license.
12405
12406 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12407
12408         * class.c: Revert unrelated change.
12409
12410 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12411
12412         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12413         a generic instantiation, use mono_class_from_mono_type instead of playing
12414         with MonoType directly.
12415
12416 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12417
12418         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12419         checks must ignore generic instantiations, so mono_class_has_parent is not
12420         suitable. Fixes #390128.
12421
12422 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12423
12424         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12425         it to avoid registering tokens during metadata generation. Fixes #390023.
12426
12427 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12428
12429         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12430         consistent.
12431
12432         Contributed under MIT/X11 license.
12433
12434 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12435
12436         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12437         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12438         to fixup the EXE image.
12439         (mono_cleanup): Use mono_close_exe_image.
12440         (mono_close_exe_image): New function.
12441         * image.c: Include "marshal.h".
12442         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12443         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12444         counting when the image is loaded outside of mono_image_open_full. Set status
12445         based on GetLastError.
12446         * coree.c: Include required headers. Add init_from_coree.
12447         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12448         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12449         (_CorExeMain): Set init_from_coree.
12450         (CorExitProcess): Only call ExitProcess for now.
12451         (CorBindToRuntimeEx): New stub implementation.
12452         (CorBindToRuntime): New function.
12453         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12454         (MonoFixupExe): ILONLY executables require no fixups.
12455         (mono_set_act_ctx): New function to set activation context.
12456         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12457         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12458         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12459         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12460         as MONO_INTERNAL.
12461         * domain-internals.h: Add mono_close_exe_image.
12462
12463         Contributed under MIT/X11 license.
12464
12465 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12466
12467         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12468         size for generic param and event tables. Fixes #388977.
12469
12470 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12471
12472         * loader.c (mono_method_signature): Use memory barriers because of the double
12473         checked locking pattern.
12474
12475         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12476         aborting or aborted as well. Fixes #376391.
12477         
12478         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12479         existing runtime state in the Suspend handler during shutdown.
12480
12481 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12482
12483         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12484
12485         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12486         which are starting up or shutting down.
12487
12488         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12489         this function never returns if the runtime is already shutting down.
12490
12491         * icall.c (ves_icall_System_Environment_Exit): Update after 
12492         mono_threads_set_shutting_down () signature change.
12493         
12494 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12495
12496         * class.c: Added can_access_instantiation to verify if the instantiation
12497         is visible. Fix access check for nested types as they returned TRUE
12498         before doing type and generic instantiation visibility checks.
12499
12500 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12501
12502         * reflection.c (mono_reflection_create_generic_class): The created type
12503         must have a different container from its TypeBuilder. Otherwise they
12504         will end sharing generic arguments, which is wrong.
12505
12506         Due to the sharing, making a generic instance of the created type using
12507         the TypeBuider generic arguments resulted in the generic type definition
12508         been returned, which is wrong as well.
12509
12510         As a bonus the code was leaking the type_params array. This memory should
12511         be allocated from the image mempool.
12512
12513         This fixes bug #354047.
12514
12515 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12516
12517         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12518         to here         as they are now used in assembly.c new code.
12519         Added a skipverification flag to MonoAssembly.
12520         New internal function mono_assembly_has_skip_verification.
12521
12522         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12523         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12524         part of #387274.
12525
12526 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12527
12528         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12529         needed. Fixes #387034.
12530
12531         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12532
12533 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12534
12535         * assembly.c (mono_assembly_load_reference): Prevent crash while
12536         disassembling Silverlight 2.0 executables while we still do not
12537         have GACed libraries.
12538
12539 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12540
12541         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12542
12543 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12544
12545         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12546         of the dynamic case. Fixes #387404.
12547
12548 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12549
12550         *verify.c (mono_verifier_is_class_full_trust): If under
12551         verify_all and the verifier mode was not set, only
12552         gac and corlib types are fulltrust. This makes --verify-all
12553         usable to detect unverifiable code, which is the expected
12554         use case.
12555
12556 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12557
12558         * verify.h: Ops, commited the header with debug
12559         enabled.
12560
12561 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12562
12563         * verify.c (merge_stack): Use the new value on unverifiable
12564         stack merges.
12565
12566         * verify.c (verify_type_compatibility_full): Comparison
12567         of nullable types can't use mono_class_is_assignable_from.
12568
12569         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12570         that makes all verification errors be reported.
12571
12572         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12573         mono_method_verify.
12574
12575 2008-05-05  Robert Jordan  <robertj@gmx.net>
12576
12577         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12578         support for value types. See #386415.
12579
12580         * object.c: comments.
12581
12582         Code is contributed under MIT/X11 license.
12583
12584 2008-05-05  Martin Baulig  <martin@ximian.com>
12585
12586         * debug-mono-symfile.h
12587         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12588         for old pre-terrania symbol files.
12589
12590 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12591
12592         * mono-config.c: Add ppc64 architecture.
12593
12594         Code is contributed under MIT/X11 license.
12595
12596 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12597
12598         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12599           PPC64 uses function descriptors as well.
12600
12601         Code is contributed under MIT/X11 license.
12602
12603 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12604
12605         * object.c (compute_class_bitmap): Ignore literal static fields.
12606
12607         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12608         var has an invalid format.
12609         (describe_ptr): Add some sanity checks for the vtable.
12610         (add_nursery_frag): Clear unused nursery fragments.
12611         (major_collection): Clear all remaining nursery fragments.
12612
12613 2008-05-03  Robert Jordan  <robertj@gmx.net>
12614
12615         * image.c, metadata-internals.h: add thunk_invoke_cache.
12616
12617         * marshal.c, marshal.h: implement
12618         mono_marshal_get_thunk_invoke_wrapper ().
12619
12620         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12621
12622         Code is contributed under MIT/X11 license.
12623
12624 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12625
12626         * verify.c (do_leave): Empty the stack.
12627
12628 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12629
12630         * class.c (mono_class_is_assignable_from): Variance
12631         doesn't work between reference and value types. For example,
12632         given type C<T+>, C<int32> is not assignable to C<object>.
12633         Break the argument checking loop on first error. 
12634
12635 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12636
12637         * icall.c : base64_to_byte_array() needs some more strict
12638           check for sequence of '=' characters. Patch by Santa
12639           Marta (http://deee.g.hatena.ne.jp/santamarta).
12640
12641           Contributed under MIT/X11 license.
12642           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12643
12644 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12645
12646         * domain.c: Disable LoadLibrary support to fix Win32 build.
12647
12648         Code is contributed under MIT/X11 license.
12649
12650 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12651
12652         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12653         to help with cache behaviour.
12654
12655 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12656
12657         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12658         method. 
12659
12660 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12661
12662         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12663
12664 2008-05-01  Dick Porter  <dick@ximian.com>
12665
12666         * process.c (process_get_fileversion): Only pass 16 bits of
12667         language ID to VerLanguageName.  Fixes bug 381204.
12668
12669 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12670
12671         * verify.c (mono_method_verify): Fix the comparison
12672         operator for code bounds check.
12673
12674 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12675
12676         * verify.c (mono_method_verify): Check the bounds of
12677         all access of the code array.
12678
12679 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12680
12681         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12682
12683 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12684
12685         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12686         not valid.
12687
12688 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12689
12690         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12691         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12692         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12693         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12694         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12695         mono_runtime_load.
12696         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12697         runtime initialization from metadata.
12698         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12699         (mono_set_rootdir): Use mono_get_module_file_name.
12700         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12701         handles.
12702         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12703         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12704         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12705         MonoCLIImageInfo. Add support for module handles.
12706         (load_cli_header): Update mono_cli_rva_image_map signature.
12707         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12708         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12709         (mono_image_rva_map): Add support for module handles.
12710         (mono_image_ensure_section_idx): Add support for module handles.
12711         (mono_image_close): Add support for module handles.
12712         (do_load_header): Add support for module handles.
12713         (mono_image_open_from_module_handle): New function for internal use.
12714         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12715         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12716         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12717         handles.
12718         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12719         * image.h: Add mono_image_fixup_vtable.
12720         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12721         support.
12722         * coree.h: New file.
12723         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12724         unsupported native code.
12725         (mono_marshal_set_callconv_from_modopt): New function splitted from
12726         mono_marshal_get_managed_wrapper.
12727         (mono_marshal_get_managed_wrapper): Use
12728         mono_marshal_set_callconv_from_modopt.
12729         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12730         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12731         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12732         that results in a deadlock when the runtime is loaded in _CorDllMain.
12733         * Makefile.am: Add coree.c and coree.h.
12734
12735         Contributed under MIT/X11 license.
12736
12737 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12738
12739         * generic-sharing.c: Search for type arguments in array element
12740         types as well.
12741
12742 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12743
12744         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12745
12746         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12747
12748         * object.c: Don't setup the RGCTX when the vtable is created,
12749         because we're setting it up lazily now.
12750
12751 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12752
12753         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12754         64 bit support.
12755
12756 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12757
12758         * verify.c (verify_class_for_overlapping_reference_fields): 
12759         If class is under fulltrust allow reference types to overllap
12760         if they have the same RVA.
12761
12762 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12763
12764         * pedump.c: Added new flag valid-only, that makes the verifier
12765         behaves just like --security=validil. It won't fail type load
12766         due to unverifiable restrictions.
12767
12768 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12769
12770         * class-internals.h (struct MonoMethod): Added a verification_success
12771         field to cache verifier executions. Reduced MonoMethod:slot size by
12772         one bit.
12773
12774 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12775
12776         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12777         instead of a 'vt' argument to save an indirection and to allow these to be used
12778         for valuetypes.
12779         (scan_vtype): New helper function to scan an area using a gc descriptor.
12780         (mono_gc_wbarrier_value_copy): Implement this.
12781         (handle_remset): Add support for REMSET_VTYPE.
12782         (find_in_remset_loc): Ditto.
12783         (mono_gc_base_init): Allow some debugging options to be controlled through the
12784         use of the MONO_GC_DEBUG env variable.
12785         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12786         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12787
12788 2008-04-23  Martin Baulig  <martin@ximian.com>
12789
12790         * domain.c (mono_domain_create): Move the call to
12791         mono_debug_domain_create() down, after allocating the domain id.
12792
12793 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12794
12795         verify.c (verify_class_for_overlapping_reference_fields): Skip
12796         static fields while verifying for overlapping fields as they
12797         don't matter at all.
12798
12799 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12800
12801         * domain-internals.h: added a declaration of
12802         mono_make_shadow_copy.
12803
12804         * assembly.c (mono_assembly_open_full): shadow copying of
12805         assemblies moved to here, so that all the assemblies within the
12806         application domain's private binary directories can be
12807         processed. Fixes bug #380546
12808
12809         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12810         mono_make_shadow_copy and made non-static. The decision whether
12811         to shadow-copy an assembly is made based on its location - it's
12812         copied if it's in one of the private application domain binary
12813         directories and its different to the target file in the shadow
12814         directory. Fixes bug #380546
12815
12816 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12819
12820         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12821         types.
12822
12823         * reflection.c (mono_image_create_token): Handle 
12824         Method/ConstructorOnTypeBuilderInst.
12825         (resolve_object): Ditto.
12826         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12827         so it can be called from resolve_object. Also handle the case when the inflated
12828         class already has its methods setup.
12829
12830 2008-04-21  Martin Baulig  <martin@ximian.com>
12831
12832         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12833
12834 2008-04-20  Geoff Norton  <gnorton@novell.com>
12835
12836         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12837         pointer dereference.
12838
12839 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12840
12841         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12842         portability API to look up the assembly file. Fixes behavior in
12843         situations when the application has a bin/ directory, but the
12844         assembly search patch refers to Bin/ (and thus the requested file
12845         name is Bin/SomeLibrary.dll). Fixes bug #379888
12846
12847 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12848
12849         verify.c (mono_type_is_generic_argument): Extracted this check
12850         from a dozen places to here.
12851
12852         verify.c: Fixed all issues related to boxing generic arguments
12853         and their constraints.
12854
12855 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12856
12857         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12858
12859 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12860
12861         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12862         isn't finished yet. Fixes #363447.
12863
12864 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12867         Fixes #346419.
12868
12869 2008-04-13  Jb Evain  <jbevain@novell.com>
12870
12871         * domain.c: update the 2.1 profile versions.
12872         Merged from the Moonlight 2 branch.
12873
12874 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12875
12876         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12877         mscorlibs for the non-refonly case as well.
12878
12879         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12880         in mono_assembly_load_from_full (). Fixes #378924.
12881
12882 2008-04-11  Geoff Norton  <gnorton@novell.com>
12883
12884         * icall.c: The global extern environ doesn't exist on Mac.  We
12885         need to call NSGetEnviron instead.
12886
12887 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12888
12889         verify.c: Add generic method constraint verification.
12890
12891 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12892
12893         class.c (mono_class_inflate_generic_method_full): Add a long
12894         explanation to the is_mb_open hack. Remove the FIXME.
12895
12896 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12897
12898         * verify.c (mono_method_verify): Mark all unknown opcodes
12899         as invalid. Mark jmp as unverifiable.
12900
12901 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12902
12903         * verify.c: Add code to do type constraint verification on class instances.
12904
12905         * verify.c (mono_verifier_verify_class): Use the type constraint 
12906         verification code.
12907
12908 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12909
12910         * class.c (mono_class_get_field_default_value): Don't pass cindex
12911         as hint to mono_metadata_get_constant_index. The local is not initialized
12912         and should contain garbage most of the time. This could only work
12913         with a lot of luck.
12914
12915 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12916
12917         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12918
12919 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12920
12921         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12922
12923         * class.c (mono_class_from_generic_parameter): Save the token of the
12924         generic param in MonoClass::sizes.generic_param_token.
12925
12926         * reflection.c (mono_custom_attrs_from_class): If the class type is
12927         VAR or MVAR retrieve the attributes of the generic param.
12928
12929 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12930
12931         * class.c (mono_class_init): Do class verification if the verifier
12932         is enabled.
12933
12934 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12935
12936         * verify-internal.h: Added mono_verifier_verify_class.
12937
12938         * verify.c: Added mono_verifier_verify_class. It checks for
12939         classes with explicit layout that have overlapping reference fields.
12940
12941         * pedump.c: Init the verifier state prior to verification. Fixed
12942         command line arguments.
12943
12944 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12945
12946         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12947
12948 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12949
12950         * verify-internals.h: Fix a warning.
12951
12952 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12953
12954         * verify-internals.h: New header with the verifier configuration
12955         extracted from mini.c.
12956
12957         * verify.c: Implemented the new functions exported by verify-internals.h.
12958
12959 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12960
12961         * verify.c: Add proper verification of ckfinite.
12962
12963 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12964
12965         * verify.c (do_conversion): Improved error message to something
12966         more meanfull.
12967
12968         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12969         with primitive types.
12970
12971 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12972
12973         * verify.c: Added tail prefix checking. Marked icall
12974         as unverifible.
12975
12976 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12977
12978         * verify.c: Fix the detection of branches to the middle
12979         of an instruction.
12980
12981 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12982
12983         * verify.c: Implemented verification of volatile. and
12984         unaligned. prefix. Check if a type is valid after retrieving it.
12985
12986 2008-04-01  Dick Porter  <dick@ximian.com>
12987
12988         * process.c (process_get_fileversion): If there's no string block,
12989         set the file language to en_US.  Fixes the other new part of bug
12990         374600.
12991
12992 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12993
12994         * class.c: New functions mono_method_can_access_field_full and
12995         mono_method_can_access_method_full. They perform type visibility
12996         and type site check.
12997
12998         * class-internal.h: Added exported functions.
12999
13000         * verify.c: Use new functions to implement proper visibility checks.
13001
13002 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
13003
13004         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
13005
13006 2008-03-28  Dick Porter  <dick@ximian.com>
13007
13008         * process.c (process_get_fileversion): Use the first language ID
13009         we see, rather than insisting on an invariant language.  Fixes bug
13010         374600.
13011
13012 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
13013
13014         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
13015         the streams to fix reading of invalid memory later.
13016
13017         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
13018         to ease debugging.
13019
13020 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
13021
13022         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
13023         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
13024
13025 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
13026         * threads.h: Added MonoThreadManageCallback type and
13027         mono_thread_set_manage_callback prototype
13028         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
13029         (used to store the mono_thread_manage callback).
13030         * threads.c: Added mono_thread_set_manage_callback, and handle
13031         "MonoThread->manage_callback" in build_wait_tids.
13032
13033 2008-03-26  Dick Porter  <dick@ximian.com>
13034
13035         * process.c (process_get_fileversion): Set FileVersionInfo strings
13036         to Empty when the resource doesn't have the particular info.
13037         Fixes bug 355717.
13038
13039 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
13040
13041         * verify.c (mono_method_verify): Proper prefix validation.
13042
13043 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13044
13045         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
13046         itself in a separate argument instead of throwing them. Fixes #373448.
13047
13048         * appdomain.c: Bump corlib version.
13049
13050 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
13051
13052         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
13053
13054 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
13055
13056         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
13057         version macros.
13058
13059 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13060
13061         * generic-sharing.c, class-internals.h: Code for putting
13062         reflection types into the runtime generic context.
13063
13064 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
13065
13066         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
13067         Fixes #340662. 
13068
13069
13070 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
13071
13072         * verify.c (VerifyContext): Added instruction prefix data to the struct.
13073
13074         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
13075
13076         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
13077
13078         * verify.c (do_cast): Let the result value keep the boxed status.
13079
13080         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
13081
13082 2008-03-17  Jb Evain  <jbevain@novell.com>
13083
13084         * reflection.c: when running on a 2.0 runtime, emit
13085         unconditionally the #~ header version as 2.0, and the
13086         CLI header version as 2.5, for symmetry's sake with csc.
13087
13088 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
13089
13090         * class.c: Remove the unused cache_interface_offsets stuff.
13091
13092         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
13093         profiler.c: Fix warnings.
13094
13095 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13096
13097         * generic-sharing.c, class-internals.h: Support for putting
13098         methods into the runtime generic context.
13099
13100 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
13101
13102         * class.c (mono_class_setup_fields): Ignore calls made to this function for
13103         classes which are generic instances of not-yet finished typebuilders. Fixes
13104         #351172.
13105
13106         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
13107
13108 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
13109
13110         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
13111
13112         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
13113         field, replace it with a hash table in MonoDynamicImage.
13114
13115         * reflection.c (inflate_mono_method): Access the generic definition object from
13116         image->generic_def_objects instead of imethod->reflection_info.
13117
13118         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
13119
13120         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
13121         
13122         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
13123         function in reflection.c so it is easier to keep in sync with the dynamic image
13124         creation code.
13125
13126         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
13127         mono_image_close ().
13128
13129 2008-03-15  Mark Probst  <mark.probst@gmail.com>
13130
13131         * class.c (mono_class_generic_sharing_enabled): Disable generic
13132         sharing for all architectures except AMD64 and x86 to fix build.
13133
13134 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13135
13136         * verify.c: Use the generic definition MonoGenericContext when available.
13137         Remove code for checking generics instance compatibility in favor of
13138         mono_class_is_assignable_from.
13139
13140 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13141
13142         * marshal.c, marshal.h, metadata-internals.h, image.c,
13143         wrapper-types.h: New wrapper for invoking a shared static method
13144         without having to pass the runtime generic context argument.
13145
13146 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13147
13148         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
13149
13150 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13151
13152         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
13153         
13154         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
13155         create a token from a FieldOnTypeBuilderInst.
13156         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
13157         (resolve_object): Ditto.
13158
13159         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
13160         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
13161
13162 2008-03-14  Martin Baulig  <martin@ximian.com>
13163
13164         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
13165
13166         * debug-mono-symfile.h
13167         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
13168         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
13169
13170 2008-03-10  Martin Baulig  <martin@ximian.com>
13171
13172         * debug-mono-symfile.h
13173         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
13174         `lexical_block_table_offset'.
13175         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
13176         `lexical_blocks'.
13177         (MonoSymbolFile): Added `version'.
13178
13179         * mono-debug.h
13180         (MonoDebugLexicalBlockEntry): Removed.
13181         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
13182         `lexical_blocks'.
13183
13184         * mono-debug.c (mono_debug_add_method): Don't compute lexical
13185         blocks here; the debugger now does this internally.
13186
13187 2008-02-27  Martin Baulig  <martin@ximian.com>
13188
13189         * object.c (mono_runtime_exec_main): Call
13190         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
13191         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
13192
13193 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13194
13195         * verify.c (verify_type_compatibility_full): Allow native int to be converted
13196         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
13197
13198 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13199
13200         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
13201         ldftn with a virtual method.
13202
13203 2008-03-13  Geoff Norton  <gnorton@novell.com>
13204
13205         * decimal.c:  Only include memory.h if the platform has it.
13206
13207 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
13208
13209         * assembly.c, class.c, metadata-internals.h: make sure public key
13210         tokesns are compared in a case-insensitive way. Also, all
13211         the lookups in the GAC use a lowercase public key token
13212         (gaacutil already does the lowercasing on install). Fixes
13213         bug #369541.
13214
13215 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
13216
13217         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
13218         and return value.
13219
13220 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
13221
13222         * image.c: when someone loads a mscorlib from a file, return the
13223         currently loaded mscorlib (fixes bug #369253).
13224
13225 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13226
13227         * class.c: handle types with no parents by forcing them to have
13228         System.Object as a parent and marking them as broken (this currently
13229         allows the first part of bug #369173 to work as well, likely because
13230         we don't check for typeload exceptions everywhere yet).
13231
13232 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
13233
13234         * class.c: more complete check that types belong to corlib
13235         (fixes second part of bug #369173).
13236
13237 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
13238
13239         * generic-sharing.c:  Including glib.h for the MSVC builds to define
13240           "inline" to "__inline" before including mono-membar.h.
13241           
13242         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
13243           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
13244           MSVC builds.
13245
13246         Contributed under MIT/X11 license.
13247
13248 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13249
13250         * verify.c (do_invoke_method): Remove return type validation.
13251
13252         * verify.c (do_ret): Do return type validation at return site instead of
13253         call site.
13254
13255 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13256
13257         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
13258
13259         * verify.c: Some todos cleaned and improved a few error messages.
13260
13261 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
13262
13263         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
13264
13265 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13266
13267         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
13268         system types correctly.
13269
13270         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13271         function.
13272
13273 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13274
13275         * assembly.c (build_assembly_name): Fix a warning.
13276
13277 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13278
13279         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13280         the called function takes an object type argument. Fixes storing or
13281         valuetypes across remoting as well as reducing memory usage.
13282         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13283         stfld_remote wrapper caches.
13284
13285 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13288         is not found.
13289
13290         * reflection.c (mono_image_register_token): New helper function to save
13291         a token->object mapping.        
13292
13293         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13294         managed code.
13295
13296         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13297         one dimension arrays. Fixes #367670.
13298         (mono_reflection_get_type_internal): Ditto.
13299
13300 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13301
13302         * marshal.c: mono_load_remote_field_new() always returns object.
13303         so use the proper signature (fixes bug #366445).
13304
13305 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13306         
13307         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13308         add an 'inline_failure' flag instead.
13309
13310 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13311
13312         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13313         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13314         contains the location of "this", used for exception handling.
13315
13316 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13317
13318         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13319         their size on all platforms for perf reasons.
13320
13321 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13322
13323         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13324         object-internal.h
13325
13326         * object-internal.h: Same.
13327
13328 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13329
13330         * reflection.h: Fix the build I just broke.
13331
13332 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13333
13334         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13335         Test if a token is valid, this remove explicit usage of 
13336         MonoDynamicImage::tokens from the verifier code.
13337
13338         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13339
13340         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13341         instead of direct access to MonoDynamicImage::tokens.
13342
13343 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13344
13345         * verify.c (token_bounds_check): Fix the build I just broke.
13346
13347 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13348
13349         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13350
13351         * verify.c (verifier_load_method): Fixed the errors message.
13352
13353         * verify.c (mono_method_verify): Fixed a debug message.
13354
13355 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13356
13357         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13358         mono-perfcounters.h, class-internals.h: support for predefined
13359         writable counters, query of categories and counters, bugfixes.
13360
13361 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13362
13363         * verify.c (do_refanytype): Verify the refanytype opcode.
13364
13365         * verify.c (mono_method_verify): Use do_refanytype.
13366
13367 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13368
13369         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13370
13371         * verify.c (mono_method_verify): Use do_mkrefany.
13372
13373 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13374
13375         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13376         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13377         implementation.
13378
13379 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13380
13381         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13382         the type load exception.
13383
13384 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13385
13386         * verify.c: Added a few FIXME for method signatures
13387
13388         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13389         of mono_method_get_signature and get vararg call working. Removed unused
13390         checks for return value.
13391
13392         * verify.c (do_refanyval): Verify the refanyval opcode.
13393
13394         * verify.c (mono_method_verify): Implemented verification of arglist and
13395         use do_refanyval.
13396
13397 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13398
13399         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13400         vtypes to marshal.c.
13401
13402         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13403         it works for AOT as well.
13404
13405 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13406
13407         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13408         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13409         the system time is adjusted.
13410
13411 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13412
13413         * icall.c, icall-def.h: use the new time functions (fixes the
13414         non-monotonic behaviour of TickCount).
13415
13416 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13417
13418         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13419         it breaks the build.
13420         
13421         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13422         cattr is not finished yet.
13423
13424 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13425
13426         * verify.c: Proper token validation for field, method and type.
13427
13428 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13429
13430         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13431
13432         * loader.c (method_from_memberref): Generate type load error instead of method missing
13433         if the type is not found.
13434
13435 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13436
13437         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13438         some of the conversions caused the generation of a marshal directive exception.
13439
13440 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13441
13442         verify.c: Report which exception should be thrown by the JIT.
13443         Added a lot of FIXME notes.
13444
13445 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13446
13447         * generic-sharing.c: Runtime generic context slots are not
13448         instantiated on init anymore.  Instead, provide function to do the
13449         instantiating on demand.
13450
13451         * class-internals.h: Added vtable to runtime generic context.
13452         Macros for encoding direct and indirect slot offsets in one
13453         guint32.
13454
13455 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13456
13457         * object.c, generic-sharing.c: Moved some generic sharing code
13458         from object.c to generic-sharing.c.
13459
13460         * generic-sharing.c: Added support for extensible runtime generic
13461         context.
13462
13463         * metadata-internals.h: Two new hash tables in MonoImage for
13464         extensible runtime generic context support.
13465
13466         * domain.c: Unregister generic vtables upon domain unloading.
13467
13468         * image.c: Destroy new hash tables upon image unloading.
13469
13470         * metadata.c: Unregister generic subclasses upon image unloading.
13471
13472         * class-internals.h: New data structure for runtime generic
13473         context template.  New fields in the runtime generic context for
13474         extensible part.
13475
13476         * Makefile.am: Added generic-sharing.c.
13477
13478 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13479
13480         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13481         there is a pending loader exception, raise it.
13482
13483         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13484         same.
13485
13486         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13487         same.
13488
13489         Fixes #363450.
13490
13491 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13492
13493         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13494
13495         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13496         
13497         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13498         ref-only requests for compatibility with MS.
13499
13500 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13501
13502         * reflection.c (mono_custom_attrs_from_method): Don't silently
13503         return an empty list for generic method instances.
13504         (mono_custom_attrs_from_param): Likewise.
13505
13506 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13507             Raja R Harinath  <harinath@hurrynot.org>
13508
13509         Fix #354757
13510         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13511         * class.c (mono_class_inflate_generic_method_full): Initialize it
13512         when a fully-open method is instantiated.
13513         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13514         to new field.
13515         * reflection.c (inflate_mono_method): Don't create a temporary context.
13516
13517 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13518
13519         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13520         Compute correct value, to prepare for imethod->reflection_info going away.
13521
13522 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13523
13524         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13525
13526 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13527
13528         * verify.c: Implement skip visibility flag.
13529
13530 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13531
13532         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13533         which contains an extra field to tell the kind of exception that should be thrown.
13534
13535         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13536
13537 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13538
13539         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13540         'method' is updated.
13541
13542 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13545         explicit layout as well. Fixes #360375.
13546
13547 2008-02-11  Geoff Norton  <gnorton@novell.com>
13548
13549         * loader.c: Guard and dereference against inflated generic methods
13550
13551 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13552
13553         * class.c: Include Retargetable spec in assembly name.
13554         * assembly.c: Always include PublicKeyToken spec in assembly name
13555         (with value "null" if assembly is not signed), and include
13556         Retargetable spec.
13557         * icall-def.h: Added icall for Assembly.get_fullname.
13558         * icall.c: Added icall returning the fullname of an assembly.
13559
13560 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13561
13562         * class.c (mono_class_setup_vtable_general): Add a missing call to
13563         mono_class_setup_methods () which is needed in the AOT case.
13564
13565 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13566
13567         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13568         stack type of the given MonoType.
13569
13570         * verify.c (verify_type_compatibility_full): Handle the void type.
13571
13572         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13573         way stack merging works.
13574
13575         * verify.c (store_local): Improved verification message.
13576
13577         * verify.c (do_branch_op): If the merging is invalid, the method
13578         is unverifiable and not invalid. Improved error message.
13579
13580         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13581         a reference type diferent than System.Object. Improved error
13582         message.
13583
13584 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13585
13586         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13587
13588         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13589         type of an enum even if the argument is byref.
13590
13591         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13592         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13593
13594         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13595
13596         *verify.c (verify_type_compatibility_full): Make enum types
13597         compatible with their base types.
13598
13599         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13600         types are compatible for the special case of a boxed valuetype and
13601         System.Object.
13602
13603         * verify.c (verify_stack_type_compatibility): The function
13604         is_compatible_boxed_valuetype was extracted from here.
13605
13606         * verify.c (push_arg): Only set ctx->has_this_store if the method
13607         is not static.
13608
13609         * verify.c (do_ldelem): Fixed a typo in an error message and added
13610         strict check for mixing int32 and native int as the array type
13611         and ldelem type.
13612
13613         * verify.c (merge_stacks): Consider boxed valuetypes in the
13614         compatibility checks.
13615
13616 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13617         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13618
13619 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13620         *class.c: use_new_interface_vtable_code: renamed the env var to have
13621         a "MONO_" prefix, and fix the logic to enable it by default.
13622
13623 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13624         *class.c:
13625         mono_class_setup_vtable_general: rewrote the way in which interface
13626         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13627         makes the code more maintainable.
13628         For now the old code is still there, and can be activated setting
13629         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13630
13631 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13632
13633         * verify.c: guarded some debug functions around and #ifdef.
13634
13635         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13636
13637 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13638
13639         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13640         changes for now since they seem to break too many things.
13641
13642 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13643
13644         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13645         mono_marshal_find_nonzero_bit_offset): Added macro and function
13646         for finding the byte- and bit-offset of a bitfield within a
13647         struct.
13648
13649 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13650
13651         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13652         (mono_marshal_get_struct_to_ptr): Ditto.
13653
13654         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13655         cctor_signature.
13656
13657 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13658
13659         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13660         between methods for non-corlib types.
13661
13662 2008-02-02  Geoff Norton  <gnorton@novell.com>
13663
13664         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13665         generic parameters as well. (Fixes #342536)
13666
13667 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13668
13669         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13670
13671         * verify.c (do_invoke_method): Fix for calling with byref structs.
13672
13673         * verify.c (do_cast): push a boxed value type based on the type token and not
13674         the type of stack.
13675
13676 2008-01-31  William Holmes  <billholmes54@gmail.com>
13677
13678         * process.c (process_module_string_read): Check the size returned form 
13679           VerQueryValue to avoid out of memory exception. 
13680
13681 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13684         Handle properly modules which are not in the moduleref table. Fixes
13685         #356938.
13686
13687 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13688
13689         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13690         the dynamic case which is now in managed code.
13691         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13692
13693         * marshal.c (mono_string_to_bstr): Fix a warning.
13694         (init_com_provider_ms): Ditto.
13695
13696         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13697
13698         * exception.c (mono_get_exception_out_of_memory): New helper function.
13699
13700 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13701
13702         * marshal.c: Add support for BSTR marshalling
13703         using other COM systems.
13704
13705         Code is contributed under MIT/X11 license.
13706
13707 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13708
13709         * object.c (mono_runtime_invoke_array): reverted previous
13710         commit as it breaks the build.
13711
13712 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13713
13714         * object.c (mono_runtime_invoke_array): Verify arguments for
13715         invalid types. Fixes #348522.
13716
13717 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13718
13719         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13720         non-final virtual calls using call. 
13721
13722         * verify.c (do_invoke): fixed some TODOs.
13723
13724         * verify.c (push_arg): set has_this_store for "ldarga 0".
13725
13726 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13727
13728         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13729         which belong to an inflated class. Fixes #356531.
13730
13731 2008-01-26  Robert Jordan  <robertj@gmx.net>
13732
13733         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13734         which resort to FindFirstFile when a certain error condition
13735         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13736         Code is contributed under MIT/X11 license.
13737
13738 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13739
13740         * marshal.c (emit_marshal_string): Fix out string marshalling
13741         to use specified encoding. Fixes #323900.
13742
13743         Code is contributed under MIT/X11 license.
13744
13745 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13746
13747         * class.c (mono_class_inflate_generic_method_full): Don't modify
13748         iresult->context after cache check.
13749
13750 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13751
13752         * class.c (mono_class_inflate_generic_method_full): Change the
13753         struct assignments to memcpy for better visibility and add some comments.
13754
13755 2008-01-23  Dick Porter  <dick@ximian.com>
13756
13757         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13758         procedure, and make it work on windows.
13759
13760 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13761
13762         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13763         a MonoReflectionTypeBuilder since it is always of that type.
13764
13765         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13766
13767         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13768
13769         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13770         
13771         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13772
13773         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13774
13775         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13776         instantiations from the type cache.
13777
13778 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13779
13780         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13781
13782         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13783
13784 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13785
13786         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13787
13788         * verify.c (mono_method_verify): removed old TODO
13789
13790 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13791
13792         * verify.c (do_newobj): add visibility check.
13793
13794 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13795
13796         * verify.c (do_load_function_ptr): add visibility check.
13797
13798 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13799         *class.c:
13800         mono_generic_class_get_class: hook profiler events.
13801         mono_field_get_offset: added to support heap-shot in the new profiler.
13802         *class.h: exported mono_field_get_offset.
13803         * reflection.c:
13804         mono_reflection_setup_internal_class: hook profiler events.
13805
13806 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13807
13808         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13809         argument here too and use it to avoid checking for pending exceptions if 
13810         possible.
13811
13812 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13813
13814         * assembly.c (build_assembly_name): add arg for passing the assembly
13815         flags. Do not consider a PublicKey with value "null" valid.
13816         (mono_assembly_name_parse_full): added boolean argument that will be
13817         set if the assembly name contains a PublicKeyToken spec. Added support
13818         for the Retargetable spec for which only Yes or No are allowed as valid
13819         value. Consider assembly name invalid if Retargetable spec is set, but
13820         either version, culture or public key (token) are not specified.
13821         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13822         with implementation in assembly.c.
13823         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13824         from MonoAssemblyName.
13825         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13826         introduced argument for mono_assembly_name_parse_full to know if the
13827         assembly name has a PublicKeyToken spec, and if it has instruct
13828         fill_reflection_assembly_name to use default value for keyToken (if
13829         PublicKeyToken is null).
13830
13831 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13832
13833         * verify.c (mono_method_verify): fixed ovf ops with
13834         float values. They are unverifiable now.
13835
13836 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13837
13838         * class.c (set_failure_from_loader_error): add BadImageException to the
13839         list of exceptions that can cause a type to fail to load.
13840
13841         * class.c (mono_class_get_exception_for_failure): same.
13842
13843 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13844
13845         * verify.c (in_any_exception_block): added, check if offset
13846         is part of any exception handling clause.
13847
13848         * verify.c (get_stack_type): added VAR and MVAR types.
13849
13850         * verify.c (do_stobj): better error messages.
13851
13852         * verify.c (do_cpobj): added, check cpobj.
13853
13854         * verify.c (do_initobj): added, check initobj.
13855
13856         * verify.c (do_sizeof): added, check sizeof.
13857
13858         * verify.c (do_localloc): added, check localloc.
13859
13860         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13861
13862 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13863
13864         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13865         save_lmf/restore_lmf opcodes.
13866
13867         * threads.c (mono_threads_install_notify_pending_exc): New function to
13868         install a callback notifying the JIT there is a pending exception on a thread.
13869         (mono_thread_request_interruption): Call the new callback.
13870         (mono_thread_get_and_clear_pending_exception): New function to return the
13871         exception pending on a thread.
13872
13873         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13874         to turn off checking for pending exceptions.
13875         (mono_marshal_get_native_wrapper): Ditto.
13876
13877 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13878
13879         * threads-types.h: Get rid of the unnecessary extern declarations.
13880
13881 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13882
13883         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13884         return field from parent class if not private.
13885         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13886         returns fields from parent class if they are not private.
13887         (method_nonpublic): added function to determine if a given method
13888         should be considered non-public. Returns false for private methods
13889         on parent class, and internal methods from parent on the 1.0 profile.
13890         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13891         use method_nonpublic function to determine whether method should be
13892         returned.
13893         (property_accessor_public): use newly introduced method_nonpublic
13894         function to determine whether accessor is non-public. 
13895         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13896         event from parent class if not private. Only return static event if
13897         Static flag is set, and only return static event from parent class if
13898         FlattenHierarchy flag is set.
13899         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13900         include non-private events from parent class.
13901
13902 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13903
13904         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13905         warning.
13906
13907 2008-01-16  Wade Berrier <wberrier@novell.com>
13908
13909         * security.c: Add assembly.h header to appease some warnings
13910
13911 2008-01-16  Dick Porter  <dick@ximian.com>
13912
13913         * process.c (process_module_string_read): Remove trailing null
13914         when saving string.
13915
13916 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13917
13918         * class-internals.h: A new data structure describing the layout of
13919         a runtime generic context (MonoRuntimeGenericContextTemplate).
13920
13921         * metadata-internals.h: Added a hash table to MonoDomain that maps
13922         from open generic classes to their runtime generic context
13923         templates.
13924
13925         * object.c: Building of the runtime generic context, including
13926         proper handling of generic type arguments of superclasses.
13927         Building of the runtime generic context according to the template.
13928
13929 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13930
13931         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13932         Fixes #350856.
13933
13934         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13935         mono_portability_find_file (). Fixes #325466.
13936         (mono_image_get_public_key): Fix a warning.
13937
13938 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13939
13940         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13941         Fixes #353550.
13942         (mono_class_from_name_case): Ditto.
13943
13944 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13945
13946         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13947           common storage for the tables used in the System/NumberFormatter class.
13948
13949 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13950
13951         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13952
13953 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13954
13955         * verify.c (get_boxable_mono_type): check if the token is valid.
13956
13957         * verify.c (set_stack_value): changed to add an error if an
13958         invalid type is set on stack. Changed all callers due to signature change.
13959
13960         * verify.c (do_stobj): implement stobj validation.
13961
13962 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13963
13964         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13965         set container->is_method, it was set earlier.
13966
13967         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13968         generic methods.
13969
13970         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13971         is_method of the generic container to TRUE for methods.
13972
13973 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13974
13975         * metadata.c (type_in_image): Handle type parameters properly.
13976
13977         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13978         memory ownership of this structure.
13979
13980 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13981
13982         * verify.c (get_boxable_mono_type): make typedref types been just
13983         unverifiable. check for void type.
13984
13985         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13986
13987         * verify.c (do_load_function_ptr): accept method spec tokens.
13988
13989 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13990
13991         * marshal.c (mono_class_native_size): Always set *align even if this is called
13992         recursively.
13993
13994 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13995
13996         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13997         out-of-date.
13998
13999 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
14000
14001         * verify.c: removed some old unused tables. A huge bunch of small fixes
14002         to things found while testing the verifier with mono basic.
14003
14004         * verify.c (dump_stack_value): dump null literal flag to.
14005
14006         * verify.c (verify_type_compatibility_full): fix comparison
14007         for types that have a generic super type.
14008
14009         * verify.c (verify_stack_type_compatibility): fix compatibility
14010         between null literals and reference types. fix compatibility between
14011         boxed valuetypes and object. fix corner case test for enums.
14012
14013         * verify.c (do_cmp_op): proper verification of cgt.un in case
14014         of reference types.
14015
14016         * verify.c (do_invoke_method): fix error message.
14017
14018         * verify.c (do_store_indirect
14019
14020         * verify.c (check_is_valid_type_for_field_ops): proper verification
14021         of managed pointers to valuetypes and boxed valuetypes. proper verification
14022         of null literals.
14023
14024         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
14025         allow token to be a reference type.
14026
14027         * verify.c (do_cast): proper handling of boxes valuetypes.
14028
14029         * verify.c (do_stelem): proper handling of storing a boxed valuetype
14030         in object[].
14031
14032         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
14033         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
14034         fixed the decoding of unbox_any
14035
14036 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14037
14038         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
14039
14040 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
14041
14042         * verify.c (do_newobj): do delegate verification.
14043
14044         * verify.c (verify_delegate_compatibility): perform delegate
14045         verification.
14046
14047         * verify.c (verify_ldftn_delegate): perform tests related to
14048         ldftn delegates.
14049
14050         * verify.c (mono_delegate_signature_equal): perform the
14051         slightly diferent signature comparison required by delegates.
14052
14053         * metadata.c (mono_metadata_type_equal_full): added and exported
14054         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
14055         allows signature only comparison.
14056
14057         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
14058         as MONO_INTERNAL.
14059
14060 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
14061
14062         * verify.c: added a bunch of stack_slot_* functions to
14063         make access to stack slot type easier. This is required to
14064         allow optional flags, like null literal, boxed value and
14065         this pointer.
14066         All access paths to IlStackDesc::stype have been changed 
14067         to use these new funcions.
14068         Removed a bunch of unused functions and cleared all warnings.
14069         This patch introduces the usage of the this pointer and 
14070         boxed value flags.
14071
14072 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
14073
14074         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
14075
14076 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14077
14078         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
14079         match managed version.
14080
14081         * appdomain.c: Bump corlib version.
14082         
14083         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
14084         argument.
14085
14086 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
14087
14088         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
14089         Set public key token to zero-length byte array if assembly is not
14090         strongnamed.
14091
14092 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14093
14094         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
14095         writing a vtype array elem.
14096
14097 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
14098
14099         * assembly.c (build_assembly_name): return FALSE if length of token is
14100         not 16 (if not "null").
14101         (mono_assembly_name_parse_full): return FALSE if value of version,
14102         culture, token or key is 0.
14103         * icall.c (fill_reflection_assembly_name): add boolean arguments to
14104         specify whether public key and public key token must be set to default
14105         value (zero-length byte array) if not available. Set versioncompat to
14106         SameMachine. If public key is available or the default is set, then
14107         set PublicKey flag.
14108         (ves_icall_System_Reflection_Assembly_FillName): if no public key
14109         is available, use empty byte array as default value. On the 2.0
14110         profile, use default value for public key token if not set.
14111         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
14112         profile, use default value for public key if not set. On the 2.0
14113         profile, use default value for public key token if not set.
14114         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
14115         default values for public key and public key token.
14116
14117 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14118
14119         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
14120         field to keep it in synch with the managed object.
14121
14122         * marshal.c (emit_marshal_object): Add support for byref marshalling of
14123         delegates. Fixes #351520.
14124
14125         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
14126         contains defined memory.
14127         
14128         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
14129
14130         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
14131         
14132         * sgen-gc.c (check_consistency): New helper function to do a consistency check
14133         of the GC data structures.
14134
14135         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
14136
14137         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
14138         
14139         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
14140         barrier.
14141         (mono_array_clone_in_domain): Ditto.
14142         (mono_array_clone_in_domain): Ditto.
14143
14144         * threads.c (start_wrapper): Register the thread start argument as a GC root.
14145         (cache_culture): Use a write barrier.
14146
14147         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
14148         (ves_icall_get_property_info): Ditto.
14149
14150         * object.h (MONO_STRUCT_SETREF): New macro.
14151
14152         * class-internals.h (MonoStats): Add some GC statistics.
14153
14154         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
14155
14156 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
14157
14158         * exception.c (mono_exception_from_name_two_strings):
14159         Break from loop after method is found.
14160
14161 2008-01-04  Dick Porter  <dick@ximian.com>
14162
14163         * process.c (process_module_string_read): Rename variable to
14164         reflect correct usage, after fixing bug 345972.
14165
14166 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
14167
14168         * verify.c (mono_type_create_fnptr_from_mono_method): 
14169         created a MonoType function pointer instance to be used during
14170         verification. The verifier releases this memory at end.
14171
14172         * verify.c (mono_method_is_constructor): extracted repeated
14173         checks for constructor into a single class.
14174
14175         * verify.c (do_push_field): use new extracted method
14176         for constructor check.
14177
14178         * verify.c (do_newobj): same.
14179
14180         * verify.c (do_ldftn): renamed to do_load_function_ptr
14181         and make it verify ldvirtftn too.
14182
14183         * verify.c (mono_method_verify: proper verification
14184         of ldvirtftn. release created MonoMethod instances.
14185
14186 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14187
14188         * verify.c (token_bounds_check): added.
14189
14190         * verify.c (do_ldftn): added.
14191
14192         * verify.c (mono_method_verify): proper verificartion of ldftn.
14193
14194 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14195
14196         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
14197         than the table row count. It's the resposibility of the caller to
14198         make the bounds check and raise the correct error.
14199
14200         * metadata.c (mono_metadata_decode_row_col): Same.
14201
14202         * loader.c (mono_get_method_from_token): perform bounds check
14203         on token for methoddef table.
14204
14205 2007-12-29  Miguel de Icaza  <miguel@novell.com>
14206
14207         * icall.c
14208         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
14209         assert into a negative result, the managed code already coped with
14210         that.
14211
14212         Some folks on Windows reported this error. 
14213
14214 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
14215
14216         * appdomain.c: Bump corlib version.
14217         * icall.c:
14218         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
14219         CultureInfo.CreateCulture to create CultureInfo for name.
14220         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
14221         create CultureInfo for name. Fixes bug #347174.
14222
14223 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14224
14225         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
14226         flags.
14227
14228         * verify.c (is_valid_branch_instruction): allow branching to the
14229         first instruction of the protected block.
14230
14231         * verify.c (is_valid_cmp_branch_instruction): same.
14232
14233         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
14234         avoid double initialization.
14235
14236         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
14237         detect which cases the eval stack should just be copied.
14238
14239         * verify.c (mono_method_verify): check if the eval stack
14240         is empty when entering a protected block.
14241
14242 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14243
14244         * verify.c: added is_clause_in_range, is_clause_inside_range,
14245         is_clause_nested and verify_clause_relationship. They perform
14246         the verifications stated in P1 12.4.2.7.
14247
14248         * verify.c (mono_method_verify): remove some unused variables,
14249         add the new exception clause checks, add instruction border
14250         checks for protected block start/end, improved some error 
14251         messages and fixed a bug in the way invalid instruction access
14252         is detected.
14253
14254 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14255
14256         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
14257         from GC 7.0 if available.
14258
14259         * object.c: Remove an unused define.
14260         
14261         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
14262
14263         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
14264
14265         * null-gc.c (mono_gc_make_descr_for_array): Implement.
14266
14267         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
14268
14269         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
14270         to take the same arguments as the other make_descr functions.
14271
14272         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14273
14274         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14275         directly.
14276
14277         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14278         mini.c.
14279
14280         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14281         call to boehm-gc.c.
14282
14283         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14284
14285         * null-gc.c (mono_gc_register_root): Fix a warning.
14286
14287         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14288
14289         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14290         (mono_gc_base_init): Call GC_init ().
14291
14292         * null-gc.c: Define mono_gc_register_root () as a no-op.
14293
14294         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14295
14296 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14297
14298         * verify.c: add prototype for merge_stacks at top
14299
14300         * verify.c (do_switch): added.
14301
14302         * verify.c (merge_stacks): on some cases the stack merging
14303         was not happening properly. Unequal stack sizes at merge
14304         points should be invalid.
14305
14306         * verify.c (mono_method_verify): added more debug info on stack state.
14307         verify switch properly.
14308
14309 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14310
14311         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14312         marshal.h.
14313
14314         * boehm-gc.c marshal.c: Include method-builder.h.
14315
14316         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14317
14318         * marshal.c: Remove some code which is now in method-builder.c.
14319
14320 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14321
14322         * method-builder.c: New file, extraction of the method builder functionality 
14323         from marshal.c.
14324
14325         * marshal.c: Move the mb functions into method-builder.c.
14326
14327         * marshal.h marshal.c: Export some mono_mb_... functions.
14328
14329         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14330
14331         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14332         the caller.
14333
14334         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14335
14336         * loader.c (mono_field_from_token): Ditto.      
14337
14338         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14339         type as well.
14340         
14341         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14342         Fixes #342565.
14343
14344         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14345         a helper function for setting it.
14346
14347         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14348
14349         
14350         * assembly.c: Significally simplify code now that referenced assemblies are 
14351         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14352
14353         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14354         #349952.
14355
14356 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14357
14358         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14359         instructions that were target of branches or are at protected block boundaries.
14360
14361         * verify.c (in_same_block): handle filter clauses.
14362
14363         * verify.c (is_valid_branch_instruction): added. checks the target of
14364         instructions br or brtrue/false.
14365
14366         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14367         binary branch instructions such as beq and bge.
14368
14369         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14370         and made it pin the instruction as been part of the exception block.
14371
14372         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14373         of in_same_block.
14374
14375         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14376         of in_same_block.
14377
14378         * verify.c (do_ret): ret from a protected block is unverifiable and
14379         not invalid.
14380
14381         * verify.c (do_static_branch): verify br and br.s instructions.
14382
14383         * verify.c (merge_stacks): add extra param to support detection
14384         of branches in the middle of instructions.
14385         
14386         * verify.c (mono_method_verify): verify branches and exception blocks
14387         that target the middle of instructions. Proper verification of br and br.s.
14388
14389 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14390
14391         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14392         skip_visibility field.
14393         (reflection_methodbuilder_from_dynamic_method): Ditto.
14394
14395         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14396         registrations. Fixes #348193.
14397
14398         * threads.h: Move the internal mono_thread_get_pending_exception () to
14399         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14400
14401 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14402
14403         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14404         icall registration. Fixes #348193.
14405
14406         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14407         for corlib classes into object. Fixes #349621.
14408
14409 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14410
14411         * icall.c (property_accessor_nonpublic): new function to determine
14412         whether an accessor allows a property to be considered non-public.
14413         Returns false for private accessor(s) from parent class, and internal
14414         accessor(s) from parent on 2.0 profile (and higher).
14415         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14416         to determine whether property should be included if NonPublic flag
14417         is set. Fixes bug #349078.
14418
14419 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14420
14421         * verify.c (init_stack_with_value): added.
14422
14423         * verify.c (mono_method_verify): extracted common
14424         code for exception initialization into init_stack_with_value.
14425
14426         * verify.c (mono_method_verify): initialize the exception
14427         for handler clauses as well.
14428
14429         * verify.c (mono_method_verify): fix the exception clause
14430         ordering rules, it should use handler end offset and not
14431         start offset.
14432
14433 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14434
14435         * rawbuffer.c: remove useless warning.
14436
14437 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14438
14439         * threads.h, threads-types.h: move functions to the correct header
14440         (fixes bug#349952).
14441
14442 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14443
14444         * verify.c (mono_method_verify): proper verification
14445         of exception handling clauses ranges and fallthru in
14446         and out of protected blocks.
14447
14448 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14449
14450         * verify.c (mono_method_verify): fixed compilation issue.
14451
14452 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14453
14454         * verify.c (mono_method_verify): a printf slipped in, changed
14455         to use verifier debug macro.
14456
14457 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14458
14459         * verify.c (is_correct_leave): check for filter clauses.
14460
14461         * verify.c (do_filter): added.
14462
14463         * verify.c (mono_method_verify): property verification of leave.
14464
14465
14466 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14467
14468         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14469         Win32 build, until we figure out how to do the proper thing on
14470         Win32.
14471
14472 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14473
14474         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14475         by the previous patch.
14476         
14477         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14478         the assembly resolve handler for refonly assemblies.
14479
14480 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14481
14482         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14483         Make sure only one thread is allowed to commence shutdown, and
14484         don't allow new threads to be started once shutdown is in
14485         progress.
14486
14487 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14488
14489         * verify.c (is_correct_endfilter): added.
14490
14491         * verify.c (is_unverifiable_endfilter): added.
14492
14493         * verify.c (do_endfilter): added.
14494
14495         * verify.c (mono_method_verify): property verification of endfilter
14496         and fixed a corner case or endfinally.
14497
14498 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14499
14500         * verify.h: new flags to support fail fast of unverifiable code and
14501         do non-strict verification. Non-strict verification is required to
14502         have MS runtime compatibility. There are a huge amount of unverifiable
14503         code that it accepts as verifiable. The strict mode verifies the code
14504         as the specs says.
14505         Non-strict mode will be required in cases where code needs to be
14506         accepted as verifiable but fails under strict mode.
14507
14508         * pedump.c: added support to fail fast and non-strict verification.
14509
14510         * verify.c: added support for both fail fast and non-strict verification.
14511
14512 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14513
14514         * verify.c (is_correct_endfinally): added.
14515
14516         * verify.c (mono_method_verify): property verification of endfinally.
14517
14518 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14519
14520         * verify.c (in_any_block): check for filter clauses.
14521
14522         * verify.c (is_correct_rethrow): added.
14523
14524         * verify.c (mono_method_verify): property verification of rethrow.
14525
14526         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14527
14528 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14529
14530         * verify.c (do_throw): added.
14531
14532         * verify.c (mono_method_verify): property verification of throw
14533
14534 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14535
14536         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14537         assemblies. Fixes #346425.
14538
14539 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14540
14541         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14542         FieldBuilders.
14543
14544         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14545
14546         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14547         prevent asserts when this is called with a token which might not be valid.
14548
14549         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14550         lookup_dynamic_token_class with valid_token == FALSE.
14551
14552         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14553
14554         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14555
14556         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14557         
14558 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14559
14560         * gc.c: Don't delay threadpool thread finalization unless Mono is
14561         shutting down.
14562
14563 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14564
14565         * threads.c: turn an assert into a non-fatal warning.
14566
14567 2007-12-09  Robert Jordan  <robertj@gmx.net>
14568
14569         * icall.c (GetVirtualMethod): Add missing argument validation.
14570
14571 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14572
14573         * verify.c (do_cast): added.
14574
14575         * verify.c (mono_method_verify): property verification of castclass and isinst.
14576
14577
14578 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14579
14580         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14581
14582         * verify.c (do_stelem): added.
14583
14584         * verify.c (mono_method_verify): property verification of stelem.X.
14585
14586 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14587
14588         * class.c, class-internals.h: Introduce an environment variable
14589         (MONO_GENERIC_SHARING) through which the extent of generic code
14590         sharing can be controlled (share all classes, share only corlib
14591         classes, or share nothing).
14592
14593         * object.c: Only create runtime generic context for classes for
14594         which sharing is enabled.
14595
14596 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14597
14598         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14599
14600         * verify.c (mono_method_verify): property verification of ldelem.any.
14601
14602 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14603
14604         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14605         added ldelem.X opcodes.
14606
14607         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14608
14609         * verify.c: proper verification of ldelem.X 
14610
14611 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14612
14613         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14614
14615 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14616
14617         * verify.c (mono_method_verify): null literal requires special handling,
14618         the value pushed on stack need to be flagged as so.
14619
14620         * verify.c (do_ldelema): Verify ldelema properly.
14621
14622 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14623
14624         * verify.c: Verify ldlen properly.
14625
14626 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14627
14628         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14629         to the target object's type. Fixes #346160.
14630
14631 2007-12-05  Dick Porter  <dick@ximian.com>
14632
14633         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14634         Solaris needs the same workaround as BSD-derived systems.  Fixes
14635         bug 323524, patch by Burkhard Linke
14636         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14637
14638 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14639
14640         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14641         handle to use when error dialog is shown; otherwise, update mask
14642         to show no error dialog when an error occurs.
14643
14644 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14645
14646         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14647
14648         * class.c (mono_class_get_field_default_value): New helper function to initialize
14649         field->def_type and field->data.
14650
14651 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14652
14653         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14654         the general one.
14655
14656         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14657
14658         * marshal.c: Avoid depending on delegate->method_info being set.
14659
14660         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14661         
14662         * object.c (mono_delegate_ctor): Set delegate->method.
14663
14664         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14665
14666         * appdomain.c: Bump corlib version.
14667
14668 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14669
14670         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14671         equality check if we're comparing canonicalized MonoGenericInsts.
14672
14673 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14674
14675         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14676         accessing class->methods.
14677
14678 2007-11-22  Dick Porter  <dick@ximian.com>
14679
14680         * threads.c: Ensure that the synch_cs is set before trying to use
14681         it.
14682
14683 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * profiler.c: r89126 broke the statistial profiler, unbreak.
14686
14687 2007-11-22  Martin Baulig  <martin@ximian.com>
14688
14689         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14690
14691         * mono-debug.c
14692         (mono_debug_debugger_version): Bump to 3.
14693         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14694         -> mono_debugger_class_initialized().
14695
14696         * mono-debug-debugger.c
14697         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14698
14699         * class.c
14700         (mono_debugger_start_class_init_func): Removed.
14701         (mono_debugger_class_loaded_methods_func): Added.
14702         (mono_class_setup_methods): Call it here.
14703
14704 2007-11-22  Martin Baulig  <martin@ximian.com>
14705
14706         * mono-debug.c
14707         (mono_debug_add_delegate_trampoline): New public method.
14708         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14709
14710         * mono-debug.h
14711         (MonoSymbolTable): Added `global_data_table'.
14712         (MonoDebuggerTypeKind): Removed.
14713
14714 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14715
14716         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14717         these methods.
14718
14719         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14720         
14721 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14722
14723         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14724
14725 2007-11-20  Martin Baulig  <martin@ximian.com>
14726
14727         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14728
14729         * mono-debug-debugger.c
14730         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14731         (mono_debugger_remove_breakpoint): Likewise.
14732         (mono_debugger_check_breakpoints): Likewise.
14733         (mono_debugger_register_class_init_callback): New public method.
14734         (mono_debugger_remove_class_init_callback): Likewise.
14735         (mono_debugger_add_type): Likewise.
14736
14737         * mono-debug-debugger.h
14738         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14739
14740 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14741
14742         * class.c: more interface implementations needed for the
14743         array enumerator (fixes bug #341112).
14744
14745 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14746
14747         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14748         fix ParamName of ArgumentNullExceptions.
14749
14750 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14751
14752         * reflection.c (mono_reflection_encode_sighelper): Generate the
14753         modopts and modreqs.   I have a useless test that crashes monodis,
14754         but that shows the code working.
14755
14756 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14757
14758         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14759         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14760
14761 2007-11-15  Dick Porter  <dick@ximian.com>
14762
14763         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14764         When joining a thread, it's the thread that's calling Join that
14765         gets WaitSleepJoin state not the target.  Fixes the standalone
14766         test case in bug 334740, and hopefully the whole bug too.
14767
14768 2007-11-15  Dick Porter  <dick@ximian.com>
14769
14770         * process.c: Read file version info from the files pointed at by
14771         process modules, not the current process.  Fixes bug 315969.
14772
14773         Use windows typedef names in some places to fix warnings on the
14774         windows build.
14775
14776 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14777
14778         * image.c, metadata-internals.h: Added a generic_class_cache hash
14779         to MonoImage for looking up generic classes when sharing generics.
14780
14781 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14782
14783         * sgen-gc.c: warning cleanups.
14784
14785 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14786
14787         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14788         inherited properties.
14789
14790 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14791
14792         * object.c, class-internals.h: Added more information to the
14793         runtime generic context.
14794
14795 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14796
14797         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14798         instead of just the target method. Generalize the abstract method handling to
14799         handle any non-static method.
14800
14801         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14802         mono_marshal_get_delegate_invoke () signature change.
14803
14804 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14805
14806         * class.c, class-internals.h: Made
14807         mono_type_get_basic_type_from_generic () public.  Fixed member
14808         access check for shared generics.
14809
14810         * loader.c: Don't insert field into field cache if it's part of a
14811         non-inflated generic class.
14812
14813         * domain.c, domain-internals.h: The generic sharing context is now
14814         part of the jit info data structure.  Added two accessor
14815         functions.
14816
14817 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14818
14819         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14820         the array Get/Set/Address methods, since the JIT inlines them.
14821
14822         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14823
14824         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14825         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14826
14827         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14828         mono_marshal_get_delegate_invoke signature change.
14829
14830         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14831         an additional argument. Add support for invoking abstract methods.
14832
14833         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14834
14835         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14836
14837 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14838
14839         * class.c: Do field layout for open generic classes as well.
14840
14841 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14842
14843         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14844         other objects, because the threadpool is still around.  Put them
14845         in a list instead and after finalizing all other objects in the
14846         root domain shut down the thread pool and then finalize the
14847         threads.  Fixes bug #337383.
14848
14849         * threads.c, thread-types.h: New mono_thread_create_internal()
14850         function for marking a thread with the threadpool flag before it
14851         started.  Set synch_cs to NULL after freeing it.
14852
14853         * threadpool.c: Mark threadpool threads before they start.
14854
14855 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14856
14857         * reflection.h, reflection.c: don't export random functions
14858         and lazy load dbnull and missing objects.
14859
14860 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14861
14862         * class.c: Initialize COM types if COM interfaces
14863         are present (not just COM classes).
14864         
14865         Code is contributed under MIT/X11 license.
14866
14867 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14868         * reflection.c:
14869         create_dynamic_mono_image: hook module profiler events (dynamic case).
14870         mono_image_basic_init: hook assembly profiler events (dynamic case).
14871
14872 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14873         * profiler.c:
14874         simple_appdomain_unload: completely terminate the profiler
14875         instead of only processing the statistical samples.
14876         simple_shutdown: make sure this is really called exactly once,
14877         even in multithreaded applications, and always listen to
14878         appdomain events.
14879         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14880         here, the "[un]load" functions will do it.
14881         Fixes bugs #333791 and #325261.
14882
14883 2007-11-07  Geoff Norton  <gnorton@novell.com>
14884
14885         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14886         rather than depend on __APPLE__.
14887
14888 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14889
14890         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14891
14892 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14893
14894         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14895         UTF16 MonoString. Fix the crash from bug #335488
14896
14897 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14898
14899         * marshal.c: Correct (for non-Win32 OS) length != size in 
14900         mono_string_from_bstr. Fix #339530.
14901
14902 2007-11-06  Geoff Norton  <gnorton@novell.com>
14903
14904         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14905         to succeed
14906
14907 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14908
14909         * process.c: Added run-time GetProcessId API detection for Windows.
14910
14911 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14912
14913         * reflection.c  (mono_param_get_objects): If a parameter has the
14914         attribute [System.Runtime.InteropServices.Optional] we should
14915         set the DefaultValue of the ParameterInfo to be
14916         System.Reflection.Missing instead of DBNull.
14917
14918         See bug #339013.
14919
14920         (mono_get_reflection_missing_object): New method,
14921         returns the System.Reflection.Missing.Value singleton instance.
14922
14923 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14924
14925         * culture-info-table.h : regenerated.
14926
14927 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14928
14929         * icall.c: Use GetEnvironmentStrings on windows
14930         so we are using the same environment block as 
14931         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14932         #333740.
14933         
14934         Code is contributed under MIT/X11 license.
14935
14936 2007-10-31  Martin Baulig  <martin@ximian.com>
14937
14938         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14939
14940         * mono-debug-debugger.h
14941         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14942
14943 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14944
14945         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14946         classes.
14947
14948 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14949
14950         * culture-info-table.h : regenerated.
14951
14952 2007-10-30  Robert Jordan  <robertj@gmx.net>
14953
14954         * icall-def.h, icall.c:
14955         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14956
14957         Code is contributed under MIT/X11 license.
14958
14959 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14960
14961         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14962         inflated class instead of inflating them again.
14963         
14964         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14965         dynamic case.
14966
14967         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14968         Call setup_supertypes () after klass->parent is set.
14969         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14970
14971         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14972         for inflated instances of not yet created dynamic generic classes.
14973         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14974         times from inflated_method.
14975         (methodbuilder_to_mono_method): Ditto.
14976
14977 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14978
14979         * gc.c: code cleanup and removed old untested option of not creating the
14980         finalizer thread.
14981
14982 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14983
14984         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14985         creating a jump trampoline for dynamic methods.
14986
14987 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14988
14989         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14990         generic TypeBuilders when called from another method of the same type (bug #335131).
14991
14992
14993 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14994
14995         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14996         doesn't seem to work perfectly.
14997         
14998         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14999         called multiple times.
15000         (methodbuilder_to_mono_method): Ditto.
15001         (resolve_object): Inflate FieldBuilder's.
15002
15003 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15004
15005         * string-icalls.c, string-icalls.h, appdomain.c: patch from
15006         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
15007         RemoveEmptyEntries in the string.Split implementation (bug #322375).
15008
15009 2007-10-26  Dick Porter  <dick@ximian.com>
15010
15011         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
15012         Thread initialisation changes
15013
15014 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
15015
15016         * verify.c: fix compatibility check between arrays and System.Array
15017
15018 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
15019
15020         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
15021         too. Fixes #336999.
15022
15023 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
15024
15025         * object.c (mono_value_box): Use typed allocation here.
15026
15027 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
15028
15029         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
15030         trampoline instead of compiling the method right away.
15031
15032         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
15033
15034 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
15035
15036         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
15037         related fields for dynamic classes. Fixes #334493.
15038
15039 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
15040
15041         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
15042         
15043         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
15044
15045         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
15046         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
15047
15048         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
15049
15050         * reflection.c (create_generic_typespec): Initialize klass->generic_container
15051         if needed.
15052         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
15053
15054 2007-10-18  Jonathan Chambers <joncham@gmail.com>
15055
15056         * marshal.c: Use correct key when removing item
15057         from ccw_hash.
15058         
15059         Code is contributed under MIT/X11 license.
15060
15061 2007-10-17  William Holmes  <billholmes54@gmail.com>
15062
15063         *marshal.c: Adding a case to marshal booleans to U1
15064
15065         Code is contributed under MIT/X11 license.
15066
15067 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
15068
15069         * class.c (mono_class_from_name): Search the modules compromising dynamic
15070         assemblies. Fixes #331601.
15071
15072 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
15075         exception if the type name contains an assembly component. Fixes #334203.
15076
15077         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
15078         modules inside dynamic assemblies. Fixes #334200.
15079         
15080         * reflection.c: Set image->public_key and image->public_key_length;
15081
15082         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
15083         fields.
15084
15085         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
15086         
15087 2007-10-16  Mark Probst  <mark.probst@gmail.com>
15088
15089         * metadata.c: Implemented correct comparing of generic classes.
15090         An inflated generic class can be equal to a non-inflated one if it
15091         is inflated with generic type variables as type arguments.  Fixes
15092         bug #333798.
15093
15094 2007-10-15  Dick Porter  <dick@ximian.com>
15095
15096         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
15097         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
15098         81646.
15099
15100         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
15101         instead of a monitor lock.  This means that monitor_try_enter and
15102         co can set the thread state safely.
15103         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
15104         thread_interrupt_requested, so interrupt actually works.
15105
15106         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
15107         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
15108         state accessor function
15109
15110 2007-10-15  Martin Baulig  <martin@ximian.com>
15111
15112         * mono-debug.h
15113         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
15114         the debugger with the current runtime.
15115
15116 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15117
15118         * object.c, object-internals.h: added the ability to set a single
15119         trampoline for all the slots in a vtable.
15120
15121 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15122
15123         * marshal.c: deal with a possible race condition during multicast
15124         delegate invocation.
15125
15126 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15127
15128         * class.c: ensure value type methods don't have the synchronized
15129         flag set.
15130
15131 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
15132
15133         * string-icalls.c, string-icalls.h: reverted unapproved patch that
15134         breaks the build.
15135
15136 2007-10-11  Joel Reed  <joelwreed@comcast.com>
15137
15138         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
15139         to take an options parameter so that empty entries can be removed during
15140         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
15141
15142 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15143
15144         * marshal.c: make sure we don't store the signature from a dynamic
15145         method into the runtime invoke cache (bug #327189).
15146
15147 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15148
15149         * marshal.c: make sure the wrapper methods are properly initialized.
15150
15151 2007-10-11  Mark Probst  <mark.probst@gmail.com>
15152
15153         * metadata.c, metadata-internals.h: Generalized
15154         mono_type_stack_size() to mono_type_stack_size_internal() which
15155         takes an additional argument specifying whether it allows open
15156         types.
15157
15158 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
15159
15160         * verify.c (do_invoke_method): handle typedbyref params
15161         correctly and check for unverifiable return values.
15162
15163         * verify.c (do_newobj): fix a warning.
15164
15165 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15166
15167         * verify.c: don't tread typedbyref as allways unverifable,
15168         so uses, like (ld/st)loc.0 are valid. verify for the cases
15169         that it matters, like boxing related operations.
15170
15171 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15172
15173         * verify.c: add verification of the newobj opcode. verification
15174         of delegate instantation still missing due ldftn and virldftn not
15175         pushing the function type on stack
15176
15177 2007-10-08  Mark Probst  <mark.probst@gmail.com>
15178
15179         * class-internals.h: Runtime generic context data structure
15180         definition.
15181
15182         * object.c: Initialization of runtime generic context at runtime
15183         vtable creation time.
15184
15185 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
15186         * class.c (mono_class_create_from_typedef,
15187         mono_class_from_generic_parameter, mono_ptr_class_get,
15188         mono_fnptr_class_get, mono_bounded_array_class_get)
15189         * domain.c (mono_domain_create, mono_domain_free)
15190         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
15191         * image.c (do_mono_image_load, mono_image_close):
15192         Hooked up load-unload profiler events.
15193
15194 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15195
15196         * domain.c: track statistics about the actual amount of native code
15197         allocated.
15198
15199 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15200
15201         * class.c: the valuetype enumerators don't have the additional
15202         supertypes interfaces.
15203
15204 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15205
15206         * class.c: need more interfaces setup for the IEnumerator<T>
15207         object created for arrays (tests/ienumerator-interfaces.2.cs).
15208
15209 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
15210
15211         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
15212
15213 2007-10-05  Alp Toker  <alp@atoker.com>
15214
15215         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
15216         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
15217         #315863.
15218
15219 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15220
15221         * verify.c (verify_type_compatibility_full): verification of
15222         compatibility improved, validates correctly non-strict checks between
15223         native int and I4 types different than (unsigned)int32.
15224
15225         * verify.c (do_store_indirect): added, do all verification of
15226         ldind.X opcodes. 
15227
15228         * verify.c (get_load_indirect_mono_type): renamed to
15229         get_indirect_op_mono_type, as it now returns the MonoType for 
15230         ldind.X and stind.X opcodes.
15231
15232 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15233
15234         * reflection.c: Fix the encoding of generic type definition for
15235         TypeBuilders.
15236
15237         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
15238         mono_image_typedef_or_ref but allows to specify if typespec lookups should
15239         be made. Typespec check is done prior to typeref cache lookup.
15240
15241         * reflection.c (mono_image_typedef_or_ref): now just delegate to
15242         mono_image_typedef_or_ref_full.
15243
15244         * reflection.c (encode_generic_class): encode the generic class
15245         directly instead of calling encode_type.
15246
15247         * reflection.c (encode_type): encode the generic type definition
15248         MonoClass as a generic instantiation.
15249
15250         * reflection.c (create_typespec): cache typespec tokens in
15251         the assembly->typespec cache. Don't create typespec for a generic
15252         instance MonoClass. Create typespec for the generic type defintion.
15253
15254         * reflection.c (create_generic_typespec): encode the generic
15255         class directly instead of calling encode_type.
15256
15257         * reflection.c (mono_image_create_token): encode the generic
15258         type definition not using a typespec for MonoType instances.
15259
15260
15261 2007-10-04  Raja R Harinath  <rharinath@novell.com>
15262
15263         Fix #328812
15264         * class.c (mono_image_init_name_cache): Don't return nested
15265         'protected internal' classes.
15266         (mono_class_from_name_case): Likewise.
15267
15268 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15269
15270         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15271           common function used by both DefaultConfig in System.dll and
15272           InternalConfigurationHost in System.Configuration.dll.
15273
15274 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15275
15276         * class.c: automatically add to vectors only a few essential explicit
15277         generic interfaces. The rest of the interfaces that arrays should
15278         provide are currently implicitly added (but still not lazily, see the
15279         design in the discussion of bug#325495 for the details of what is
15280         needed for that). Additionally, implicit interfaces are assigned the
15281         same vtable slot as the explicit interfaces (as they are compatible):
15282         this enables huge memory savings since we don't need to instantiate
15283         as many memthods and as large vtables anymore. Also, Since
15284         GetEnumerator<T> returns an instance of a type that is required to
15285         support a similarly large set of interfaces as arrays, we add
15286         implicit interfaces and interface offset sharing support to those
15287         types, too. This change adds all the required interfaces so that
15288         the anonarray.cs test case in the bug report works (we don't add
15289         all the interfaces to arrays of arrays 3-level deep and more because
15290         of the memory requirements explained in the bug and since they are much
15291         less common: the lazy-loading support will enabled them to work, too).
15292
15293 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15294
15295         * verify.c (merge_stacks): major clean up, all type compatibility
15296         checks are done by verify_type_compatibility. This fix my earlier lack
15297         of understanding of the CLR type system and merge_stacks no longer looks
15298         scary.
15299
15300         * verify.c: fixed some bad spelling.
15301
15302 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15303
15304         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15305         a given stack slock.
15306         
15307         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15308         verify_type_compatibility_full. This removed a near indentical function and fixed
15309         handling of Int32 and IntPtr across all opcodes.
15310
15311 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15312
15313         * class.c: only vectors have the additional generic interfaces.
15314
15315 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15316
15317         * mono-config.c: Use g_strcasecmp instead of
15318         strcasecmp like everywhere else to fix
15319         compilation with MSVC.
15320         
15321         Code is contributed under MIT/X11 license.
15322
15323 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15324
15325         * object.c, object-internals.h: refactored the IMT code to enable
15326         building a single slot at a time and lazily creating the IMT trampolines
15327         and thunks.
15328
15329 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15330
15331         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15332
15333         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15334         Fixes #328501.
15335         
15336 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15337
15338         * loader.c (method_from_methodspec): Rearrange to avoid
15339         un-necessary exposition.  Don't assert out if the method's
15340         declaring type is a generic type definition.
15341
15342 2007-09-28  Martin Baulig  <martin@ximian.com>
15343
15344         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15345
15346 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15347
15348         * class-internals.h: optimize field layout of MonoClass to
15349         requires less cachelines at runtime and save a few bytes on 64 bit
15350         systems.
15351
15352 2007-09-28  Jb Evain  <jbevain@novell.com>
15353
15354         * reflection.c: when encoding type names in custom attributes,
15355         if the type is a closed generic type, its generic arguments
15356         have to be serialized as AssemblyQualifiedName, so that when
15357         they are deserialized, it's possible to re-create them properly.
15358         Fixes #329450.
15359
15360
15361 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15362
15363         * object.c, class-internals.h: added delegate-creation counter.
15364
15365 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15366
15367         * class.c: cleanup of the code that synthetizes interfaces for
15368         arrays in 2.0: saves quit a bit of corlib mempool memory.
15369         Code to fix bug #325495 ifdeffed out for now until the issues
15370         with memory usage and O(n^2) behaviour are fixed.
15371
15372 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15373
15374         * marshal.c: when possible, do not duplicate the name of the methods
15375         in the method builder and in the generated MonoMethod.
15376
15377 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15378         * verify.c: added support for type checking ldind_* opcodes.
15379
15380 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15381
15382         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15383         which is used to distinguish the fully open instantiation of a TypeBuilder
15384         with the rest. This temporary hack is required to restore the property that
15385         the fully open instantiation is the same type of the generic type definition.
15386
15387         * class-internals.h (mono_generic_class_is_generic_type_definition):
15388         new function as part of the internal API.
15389
15390         * class.c (inflate_generic_type): return NULL when the generic inst is
15391         fully open. The fully open generic type is now the same as the generic type
15392         definition for non TypeBuilder types.
15393
15394         * class.c (mono_generic_class_get_class): removed assert since it is
15395         no longer valid, gklass->cached_class can point to the generic type definition.
15396
15397         * class.c (mono_generic_class_is_generic_type_definition): new.
15398
15399         * metadata.c (mono_generic_class_hash): added is_tb_open field
15400         to the hash calculation.
15401
15402         * metadata.c (free_generic_class): if the generic class is associated
15403         with the generic type definition, its field will come from the mempool and
15404         must not be freed.
15405
15406         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15407         new, this function identifies the corner case of a TypeBuilder fully open
15408         instantiation.
15409
15410         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15411         for lookup. Set gclass->cached_class to be the container class in case of
15412         the fully open instantiation of non TypeBuilder types.
15413
15414         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15415         to compare generic classes.
15416
15417         * reflection.c (method_encode_methodspec): remove assert that
15418         no longer is valid.
15419
15420         * reflection.c (mono_reflection_generic_class_initialize): add
15421         an aditional assert to ensure the proper type is used.
15422
15423 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15424
15425         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15426         to enjoy it.
15427
15428 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15429
15430         * verify.c (push_arg): Fixed support for ldarga
15431         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15432         MonoType used as first arg in case of instance calls.
15433
15434 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15435
15436         * verify.c: Support for verifying VAR and MVAR types, 
15437
15438 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15439
15440         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15441         accessors correctly.
15442
15443 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15444
15445         * threads.c: support OSX and other systems in
15446         mono_thread_get_stack_bounds (bug #328026).
15447
15448 2007-09-25  Martin Baulig  <martin@ximian.com>
15449
15450         * mono-debug.h
15451         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15452
15453 2007-09-24  Martin Baulig  <martin@ximian.com>
15454
15455         * mono-debug.h
15456         (MonoDebugClassEntry): Moved the definition of this struct into
15457         mono-debug.c to make it private.
15458
15459         * mono-debug.c
15460         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15461         type table per symbol file, we don't need to store the symfile id
15462         any longer.
15463
15464 2007-09-24  Martin Baulig  <martin@ximian.com>
15465
15466         Create one type table per symbol file, since a `MonoClass *' gets
15467         invalid when its image is unloaded.
15468
15469         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15470         (MonoDebugHandle): Added `type_table'.
15471
15472 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15473
15474         * mempool.c, mempool.h: added mono_mempool_new_size () API
15475         to be able to specify a smaller initial size for the pool.
15476         Adjusted the code to slowly increase pool size before using
15477         the previous default size.
15478         * image.c: use a small initial size for image mempools.
15479
15480 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15481
15482         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15483         Fixes ##320990.
15484
15485         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15486         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15487
15488 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15489
15490         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15491         free. Fixes #327438.
15492
15493 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15494
15495         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15496         generic instantiations, etc.
15497         <MONO_TYPE_ARRAY>: Likewise.
15498
15499 2007-09-21  Martin Baulig  <martin@ximian.com>
15500
15501         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15502         these structs were never defined.
15503         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15504
15505 2007-09-21  Martin Baulig  <martin@ximian.com>
15506
15507         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15508
15509 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15510
15511         * image.c: removed the guid hash tables: we can get the same info
15512         without the additional memory usage hit (partially fixes also bug #327052).
15513
15514 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15515
15516         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15517         event to handle unloading methods. After the event is called, the
15518         corresponding MonoMethod* must be considered invalid.
15519         * loader.c (mono_free_method): call the new mono_profiler_method_free
15520         event.
15521
15522 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15523
15524         * domain-internals.h: New flag in MonoJitInfo which marks shared
15525         generic methods.  New hash table (shared_generics_hash) in
15526         MonoDomain to keep track of shared generic methods.  Prototypes
15527         for functions to register and lookup shared generic methods.
15528
15529         * domain.c: Support for registering and looking up shared generic
15530         methods via a hash table (shared_generics_hash) in MonoDomain.
15531
15532         * class-internals.h: New exception to signal failure of shared
15533         compilation of a generic method.  New counters for generics
15534         sharing in MonoStats.
15535
15536 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15537
15538         * image.c, metadata-internals.h: don't keep a file descriptor open
15539         for loaded assemblies (bug#325988).
15540
15541 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15542
15543         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15544         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15545         use the corresponding datatypes.
15546         (type_in_image): Update to changes.
15547         (CleanForImageUserData): Simplify.
15548         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15549         Avoid quadratic behaviour in handling the "stolen" list by
15550         separating the filter predicate out, and by prepending the stolen
15551         items rather than appending them.
15552         (steal_ginst_in_image): Likewise.
15553         (mono_metadata_clean_for_image): Update to changes.
15554
15555 2007-09-19  Martin Baulig  <martin@ximian.com>
15556
15557         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15558
15559 2007-09-19  Martin Baulig  <martin@ximian.com>
15560
15561         * mono-debug.c (mono_debug_cleanup): Don't call
15562         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15563
15564 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15565
15566         Fix crash on 'make run-test' in mcs/errors
15567         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15568         Avoid more potential allocations in mono_class_from_mono_type.
15569         (ginst_in_image): Update to changes.
15570         (gclass_in_image): Rearrange slightly.
15571
15572 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15573
15574         * class.c (mono_class_init): Move the code that sets up class->methods to 
15575         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15576
15577         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15578         canonical instance of an inflated generic signature.
15579         (mono_type_create_from_typespec): Remove an invalid free.
15580
15581         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15582
15583 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15584
15585         * domain-internals.h: added a declaration of the
15586         mono_assembly_load_full_nosearch internal function.
15587
15588         * assembly.c (mono_assembly_load_with_partial_name): use
15589         mono_try_assembly_resolve return value properly.
15590         (mono_assembly_load_full_nosearch): copied the function body from
15591         mono_assembly_load_full, without the code to invoke assembly
15592         search hooks.
15593         (mono_assembly_load_full): calls the above new function and if the
15594         assembly is not resolved, invokes the search hooks.
15595
15596         * appdomain.c (mono_runtime_init): restore the global postload
15597         assembly search handlers.
15598
15599 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15600
15601         * class.c (mono_class_init): Make sure class->methods and class->properties
15602         are never NULL in the generics case.
15603
15604         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15605
15606 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15607
15608         * metadata.c (free_generic_class): Disable some code to fix the build.
15609
15610         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15611
15612         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15613         from the image mempool.
15614
15615         * metadata.c (free_generic_class): Free more data from the inflated class.
15616
15617         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15618
15619         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15620         mempool.
15621         (mono_type_create_from_typespec): Ditto.
15622
15623         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15624         MonoImage to the caller.
15625         (mono_init_internal): Save the opened image in a global variable.
15626         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15627
15628         * reflection.c (resolve_object): Fix a leak.
15629
15630         * metadata.c: Fix the freeing of data in the generics caches.
15631         
15632         * metadata.c (free_generic_inst): Comment this out to fix the build.
15633         (free_generic_class): Ditto.
15634
15635         * metadata.c: Free cached generic methods, instantinations and classes when
15636         they are removed from the caches.
15637         (mono_metadata_free_type): Free the type itself.
15638
15639         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15640         places.
15641
15642 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15643
15644         * boehm-gc.c: restrict managed allocs to __thread supporting
15645         architectures.
15646
15647 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15648
15649         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15650         (mono_generic_class_get_class): Fix a leak.
15651
15652         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15653         mono_metadata_free_type ().
15654         (mono_metadata_inflate_generic_inst): Fix a leak.
15655
15656 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15657
15658         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15659
15660         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15661         mempool.
15662
15663         * mono-debug.c (mono_debug_close_image): Fix call to 
15664         g_hash_table_remove ().
15665
15666 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15667
15668         * icall-def.h: redirect all the string ctor to the managed
15669         CreateString () methods.
15670         * string-icalls.c, string-icalls.h: removed dead code for string
15671         ctors and icalls.
15672
15673 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15674
15675         * mono-debug.c: Fix memory leaks.
15676
15677 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15678
15679         * threads-types.h: Implement mono_hazard_pointer_set and 
15680         mono_hazard_pointer_clear macros using do/while(0) to fix
15681         compilation with MSVC.
15682         
15683         Code is contributed under MIT/X11 license.
15684
15685 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15686
15687         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15688         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15689
15690 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15691
15692         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15693         icalls.
15694
15695 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15696
15697         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15698         managed-code allocated as well.
15699
15700 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15701
15702         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15703
15704 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15705
15706         * boehm-gc.c: fixed the build after the AOT changes.
15707
15708 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15709
15710         * wrapper-types.h: Add an ALLOC wrapper type.
15711
15712         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15713         reference managed allocator methods.
15714
15715 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15716
15717         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15718         of Type array and not MonoType, a fix suggested by Hari.
15719         
15720 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15721
15722         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15723         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15724         
15725         Code is contributed under MIT/X11 license.
15726
15727 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15728
15729         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15730
15731 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15732
15733         * image.c (do_mono_image_open): if assembly file fails to open and
15734         MONO_IOMAP is in effect, try to find the path in a
15735         case-insensitive way.
15736
15737         * appdomain.c (mono_runtime_init): do not install postload hooks -
15738         tests show that MS.NET doesn't use anything of that sort to
15739         trigger the AppDomain.AssemblyResolve event.
15740         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15741         made non-static.
15742         (mono_runtime_init): init portability helpers here.
15743
15744         * assembly.c (mono_assembly_load_with_partial_name): if other   
15745         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15746         to resolve the assembly.
15747
15748         * domain-internals.h: added mono_try_assembly_resolve and marked
15749         it as internal.
15750
15751 2007-09-11  Jb Evain  <jbevain@novell.com>
15752
15753         * object-internals.h (MonoReflectionDynamicMethod): add
15754         a `MonoReflectionType *owner` field. The owner is used
15755         * reflection.c:
15756         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15757         method as the class declaring the dynamic method.
15758         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15759         dynamic method to the declaring type of the methodbuilder.
15760
15761 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15762
15763         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15764         rules for calling methods via reflection.
15765
15766 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15767
15768         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15769         Inflate MonoType's.
15770
15771 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15772
15773         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15774         provide a managed method that does fast allocations without needing
15775         a managed->unmanaged transition. Boehm GC implementation currently
15776         enabled for ptrfree objects on sane architectures.
15777
15778 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15779
15780         * marshal.c, marshal.h: exported a couple of useful functions and
15781         added mono_mb_get_label () to easily handle backward branches.
15782
15783 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15784
15785         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15786
15787 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15788
15789         * loader.c (find_method): Fixed the regression introduced while
15790         fixing bug #81466.
15791
15792 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15793
15794         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15795         well.
15796         
15797         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15798         icall.c reflection.c: Pass a MonoGenericContext argument to 
15799         mono_lookup_dynamic_token ().
15800
15801         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15802         #82744.
15803         
15804 2007-09-09  Robert Jordan  <robertj@gmx.net>
15805
15806         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15807         for generic methods.
15808
15809         * object.c (mono_object_get_virtual_method): Handle generic methods.
15810         Fixes bug #78882.
15811
15812         Code is contributed under MIT/X11 license.
15813
15814 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15815
15816         * image.c: fix locking in mono_image_load_file_for_image ().
15817
15818 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15819
15820         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15821         used only as a cache: added an icall to fill it.
15822
15823 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15824
15825         * reflection.h: exposed mono_reflection_free_type_info
15826         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15827         since mono_reflection_bind_generic_parameters makes a copy of it.
15828         * reflection.c (free_type_info): subinfos should be freed.
15829         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15830         made non static.
15831         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15832         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15833         this fixes #82695 and #81726.
15834    
15835
15836 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15837
15838         * process.h, process.c:  added support for user profile/info in
15839           ProcessStartInfo. For now only Windows works.
15840
15841 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15842
15843         * metadata.c: consider the generic arguments when comparing
15844         signatures (bug #82614).
15845
15846 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15847
15848         * cil-coff.h, image.c: updated assembly loader to cope with the
15849         PE32+ 64 bit file format.
15850
15851 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15852
15853         * assembly.c, class.c, domain.c, loader.c: remove useless
15854         inclusion of cil-coff.h.
15855
15856 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15857
15858         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15859         if interface is marked with CoClassAttribute. 
15860    
15861         Code is contributed under MIT/X11 license.
15862
15863 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15864
15865         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15866         if it's seen twice in major collections.
15867
15868 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15869
15870         * sgen-gc.c: big objects are not copied to the gray area, but they
15871         need to be considered for scanning, too, if they are brought alive
15872         by an object ready for finalizations or a survived one.
15873
15874 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15875
15876         * sgen-gc.c: properly account the number of disappearing links when
15877         they are nullified.
15878
15879 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15880
15881         * sgen-gc.c: share the code to scan the registered roots between the
15882         different types of collections.
15883
15884 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15885
15886         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15887
15888 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15889
15890         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15891         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15892
15893 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15894
15895         * security-manager.c (mono_security_manager_get_methods):
15896         LinkDemandSecurityException now has 2 arguments instead of 3.
15897
15898 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15899
15900         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15901         platforms which need it.
15902
15903 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15904
15905         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15906         dtor.
15907
15908 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15909
15910         * threads.c: free the thread static data on thread exit.
15911
15912 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15913
15914         * class.c: walk the hierarchy to find the generic definition for
15915         a class (fixes runtime part of bug #82498).
15916
15917 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15918
15919         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15920         ...
15921
15922         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15923
15924 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15925
15926         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15927
15928 2007-08-24  Robert Jordan  <robertj@gmx.net>
15929
15930         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15931
15932 2007-08-24  Jb Evain  <jbevain@novell.com>
15933
15934         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15935         for byref types.
15936
15937 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15938
15939         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15940         #82286.
15941
15942 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15943
15944         * assembly.c: Fix a warning.
15945         
15946 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15947
15948         * appdomain.c: parse the <runtime> section looking for the probing
15949         element with the 'privatePath' attribute, which sets additional
15950         directories in which the runtime should look for assemblies.
15951
15952 2007-08-23  Robert Jordan  <robertj@gmx.net>
15953
15954         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15955         Fixes #82499.
15956
15957 2007-08-23  Martin Baulig  <martin@ximian.com>
15958
15959         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15960         _mono_debug_init_corlib() and remove it from the header file.
15961
15962 2007-08-23  Martin Baulig  <martin@ximian.com>
15963
15964         * mono-debug-debugger.c
15965         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15966         don't notify the debugger about it.
15967
15968         * mono-debug-debugger.h
15969         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15970
15971 2007-08-23  Robert Jordan  <robertj@gmx.net>
15972
15973         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15974         Code is contributed under MIT/X11 license.
15975
15976 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15977
15978         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15979
15980 2007-08-22  Martin Baulig  <martin@ximian.com>
15981
15982         * mono-debug.c: Store debugging info on a per-domain basis and
15983         free it on domain unload.  Add support for unloading symbol files.
15984
15985         * mono-debug.h
15986         (MonoDebugList): New typedef.
15987         (MonoSymbolTable):
15988         - add `data_tables and `type_table'.
15989         - replace 'symbol_files' and `num_symbol_files' with a
15990           `MonoDebugList *'.
15991         (mono_debug_data_table): Removed.
15992         (mono_debug_list_add): New public function.
15993         (mono_debug_list_remove): New public function.
15994         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15995         (mono_debug_init_2_memory): Renamed into
15996         mono_debug_open_image_from_memory().
15997         (mono_debug_close_image): New public function.
15998         (mono_debug_domain_create): Likewise.
15999         (mono_debug_domain_unload): Likewise.
16000         (MONO_DEBUGGER_VERSION): Bump to 60.
16001
16002         * mono-debug-debugger.h
16003         (MonoDebuggerEvent):
16004         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
16005         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
16006         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
16007         - rename `THREAD_CREATED' and `THREAD_EXITED' into
16008           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
16009         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
16010           meaning.
16011         (mono_debugger_add_symbol_file): Removed.
16012         (mono_debugger_add_type): Removed.
16013         (mono_debugger_lookup_type): Removed.
16014         (mono_debugger_lookup_assembly): Removed.
16015
16016         * domain.c
16017         (mono_domain_create): Call mono_debug_domain_create().
16018         (mono_init_internal): Call mono_debug_init_corlib().
16019
16020         * assembly.c
16021         (mono_assembly_close): Call mono_debug_close_image().
16022
16023 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
16024
16025         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
16026         mmap call.
16027
16028 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
16029
16030         * sgen-gc.c: ensure section->pin_queue_end is initialized
16031         correctly when non pinning objects in the section have been found.
16032
16033 2007-08-22  Marek Habersack  <mhabersack@novell.com>
16034
16035         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
16036         containing a list of directories separated by ':'. MSDN docs say
16037         the directories should be separated with ';'. Part of a bugfix for
16038         bug #81446
16039
16040 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
16041
16042         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
16043         it should MonoType and not MonoClass.
16044
16045 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
16046
16047         * culture-info-table.h : regenerated.
16048
16049 2007-08-20  William Holmes  <billholmes54@gmail.com>
16050
16051         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
16052          to call ReplaceFile Kernel32 on windows or in io-layer.
16053         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
16054         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
16055          as an internal call.
16056
16057         Code is contributed under MIT/X11 license.
16058
16059 2007-08-20  Jb Evain  <jbevain@novell.com>
16060
16061         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
16062         and MONO_EXCEPTION_FIELD_ACCESS.
16063
16064         * debug-helpers.[c|h]: new mono_field_full_name function.
16065
16066 2007-08-20  Mark Probst  <mark.probst@gmail.com>
16067
16068         * class.c: Removed class_security_level() and moved it to
16069         security-core-clr.c.
16070
16071         * security-core-clr.c, security-core-clr.h: class_security_level()
16072         is now public and renamed to mono_security_core_clr_class_level().
16073         It also looks for security attributes in the classes a class is
16074         nested in.
16075
16076 2007-08-20  Mark Probst  <mark.probst@gmail.com>
16077
16078         * security-core-clr.c, security-core-clr.h: CoreCLR security
16079         utility functions.
16080
16081         * Makefile.am: Added security-core-clr.[ch].
16082
16083         * security-manager.c, security-manager.h: Functions and enum for
16084         setting and getting the security mode.
16085
16086         * class.c: CoreCLR security checks.
16087
16088 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
16089
16090         * icall-def.h, process.c, process.h: implemented icall to get
16091         user/system processor times.
16092
16093 2007-08-17  Mark Probst  <mark.probst@gmail.com>
16094
16095         * domain.c, threads.c, class-internals.h, domain-internals.h: New
16096         reader-lock-free jit_info_table.
16097
16098 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
16099
16100         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
16101
16102         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
16103
16104         * object-internals.h (MonoException): Add missing _data member.
16105
16106 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16107
16108         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
16109         checking that only methods with matching qname or fqname are picked
16110         from implemented interfaces.
16111
16112 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16113
16114         * verify.c (do_newarr):added, do type verification of
16115         newarr ops, push the right value on the eval stack.
16116         * verify.c (mono_method_verify): use do_newarr
16117
16118
16119 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16120
16121         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
16122         factored the common code into get_boxable_mono_type, which
16123         is now using mono_type_get_full, this fixed byref related tests.
16124
16125 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16126
16127         * class.c: added mono_type_get_full, this function has the same
16128         behavior of mono_class_get_full but the returned MonoType has
16129         all metadata of the associated token in case of a typespec token.
16130         * class.c: added mono_type_retrieve_from_typespec, used by 
16131         mono_type_get_full to retrieve the token type.
16132         * class.c (mono_class_create_from_typespec): changed to use
16133         mono_type_retrieve_from_typespec.
16134         * class.c (mono_ldtoken): changed to use mono_type_get_full
16135         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
16136         * class-internals.h: exported mono_type_get_full for internal use.
16137
16138 2007-08-16  Jb Evain  <jbevain@novell.com>
16139
16140         * domain.c (supported_runtimes): add entry for
16141         the 'moonlight' runtime version.
16142
16143 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16144
16145         * verify.c (mono_method_verify): small typo sliped in.  
16146
16147 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16148
16149         * verify.c (do_unbox_value): added, do type verification of
16150         unboxing ops
16151         * verify.c (mono_method_verify): use do_unbox_value
16152
16153
16154 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16155
16156         * verify.c (dump_stack_value): fixed typo, was printing string
16157         instead of object on stack.
16158         * verify.c (do_box_value): moved the byref check up as it leads
16159         to invalid code and should be done earlier.
16160         * verify.c: improved error messages for and ldobj
16161
16162 2007-08-15  William Holmes  <billholmes54@gmail.com>
16163
16164         * marshal.c (emit_marshal_custom): Omit the call to 
16165           marshal_native_to_managed when calling native to managed 
16166           and the argument is specified as an out argument.
16167
16168         Code is contributed under MIT/X11 license.
16169
16170 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16171
16172         * verify.c: fixed the type checks for generics, function pointers and vectors.
16173         Added type verification for ldobj and ldtoken. The verifier
16174         would segfault if header or signature of a method contained references
16175         to non-existant types.
16176
16177 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16178
16179         * marshal.c (cominterop_get_ccw): Patch from
16180         Bill Holmes to no walk up interface hierarchy. 
16181         All parent methods should be present in the interface for COM.
16182    
16183         Code is contributed under MIT/X11 license.
16184
16185 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16186
16187         * marshal.c (emit_marshal_com_interface): Patch from
16188         Bill Holmes to handle COM Interfaces as return values
16189         for native->managed calls.
16190    
16191         Code is contributed under MIT/X11 license.
16192
16193 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
16194
16195         * marshal.c (cominterop_get_idispatch_for_object): Implement
16196         for runtime callable wrappers.
16197    
16198         Code is contributed under MIT/X11 license.
16199
16200 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
16201
16202         * pedump.c (main): changed from mono_init to mono_init_from_assembly
16203         so 2.0 types are accessible
16204
16205
16206 2007-08-13  Miguel de Icaza  <miguel@novell.com>
16207
16208         * domain.c (mono_init_internal): Call mono_assembly_load_friends
16209         once we load mscorlib.   Due to the order in which we initialize,
16210         the mono_assembly_load_full routine that loads mscorlib did not
16211         load friends.   We now load it once we load the
16212         mono_defaults.internals_visible_class class. 
16213
16214         * assembly.c: Expose the mono_load_friend_assemblies method.
16215
16216 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
16217
16218         * verify.c: improved the handling of boxing, better
16219         type checking for unary ops and conversion. Fix bug
16220         regarding managed pointer compatibility checking
16221
16222 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
16223
16224         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
16225
16226         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
16227
16228 2007-08-09  Raja R Harinath  <rharinath@novell.com>
16229
16230         * reflection.c (dup_type): Remove.
16231         * class.c (dup_type): Remove.
16232         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
16233         instead of the dodgy 'dup_type'.
16234         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
16235         handle the case where 'dup_type' needed the second argument.
16236
16237 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
16238
16239         * domain.c: Fix a warning.
16240
16241 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16242
16243         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
16244         checking that methods with the same fqname are not overridden
16245         with a method from an ancestor.
16246
16247 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
16248
16249         * threads.c (free_thread_static_data_helper): Avoid a crash if
16250         thread->static_data is not yet set.
16251
16252 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
16253
16254         * marshal.c: Use correct image when emitting
16255         native wrapper for COM calls.
16256    
16257         Code is contributed under MIT/X11 license.
16258
16259 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
16260
16261         * icall-def.h, security.c, security.h :
16262           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
16263
16264 2007-08-07  Martin Baulig  <martin@ximian.com>
16265
16266         * mono-debug-debugger.h
16267         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
16268
16269         * domain.c (mono_domain_free): Call
16270         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16271
16272 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16273
16274         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16275         * verify.c (in_same_block): code should test if either offset is inside the clauses
16276         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16277         and filter blocks
16278
16279 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16280
16281         * image.c (mono_image_close): Fix a leak.
16282
16283         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16284
16285         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16286
16287 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16288
16289         * domain.c, threads.c, threads-types.h: fix memory retention issue
16290         with thread static variables not being cleared on domain unload.
16291         Reuse thread static slots after domain unload.
16292
16293 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16294
16295         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16296         nullable type.
16297
16298         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16299         now done in mono_runtime_invoke_array.
16300
16301         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16302         receiver is a nullable type.
16303
16304         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16305         generic parameter.
16306
16307 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16308
16309         * marshal.c: Implement COM Objects as return type for 
16310         managed->unmanaged calls. Added Release calls for COM Object
16311         out/return values in managed->unmanaged calls.
16312
16313         Code is contributed under MIT/X11 license.
16314
16315 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16316
16317         * threads.h, threads-type.h: move the hazard pointer declarations
16318         to the private header.
16319
16320 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16321
16322         * file-io.c, appdomain.c: memory leak fixes.
16323
16324 2007-08-02  Dick Porter  <dick@ximian.com>
16325
16326         * socket-io.c
16327         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16328         SO_REUSEADDR setting into io-layer/sockets.c.
16329
16330 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16331
16332         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16333         from Object when called on a generic parameter. Fixes #82211.
16334
16335 2007-08-01  Dick Porter  <dick@ximian.com>
16336
16337         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16338         Fixes bug 79250 yet again.
16339
16340 2007-07-30  Martin Baulig  <martin@ximian.com>
16341
16342         Merged the `debugger-dublin' branch.
16343
16344         * mono-debug.h
16345         (MonoDebugDataTable): New typedef.
16346         (MonoDebugMethodAddressList): New typedef.
16347         (MonoDebugWrapperData): Removed.
16348         (MonoDebugSymbolTable): Removed `current_data_table',
16349         `current_data_table_size', `current_data_table_offset'.
16350         (MonoDebugDataItemType): Moved into mono-debug.c.
16351         (MonoDebugMethodJitInfo): Remove `address'.
16352         (mono_debug_data_table): New global variable.
16353         (mono_debug_lookup_method_addresses): New public function.
16354         (mono_debug_find_method): Take a `MonoMethod *', not a
16355         `MonoDebugMethodInfo *'.
16356
16357         * mono-debug.c: Drop support for the old symbol tables.
16358
16359 2007-06-28  Martin Baulig  <martin@ximian.com>
16360
16361         * mono-debug.c (mono_debug_debugger_version): New public variable.
16362
16363 2007-07-31  William Holmes  <billholmes54@gmail.com>
16364
16365         * metadata.c Changed mono_type_create_from_typespec to not insert
16366           the type into the hash map until after
16367           do_mono_metadata_parse_type has completed.
16368         Fixes Bug #82194
16369         Code is contributed under MIT/X11 license.
16370
16371 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16372
16373         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16374         generic parameter. Fixes #82211.
16375
16376 2007-07-27  Jb Evain  <jbevain@novell.com>
16377
16378         * pedump.c (dump_metadata, dump_metadata_header): dump
16379         versions contained in the metadata header.
16380
16381 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16382
16383         * threads.c: register small_id_table with the GC.
16384
16385 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16386
16387         * threads.c, threads.h, class-internals.h, object-internals.h:
16388         Hazard pointers, to be used by lock-free parallel algorithms.
16389
16390 2007-07-26  Dick Porter  <dick@ximian.com>
16391
16392         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16393         routine on non-windows platforms, as I've not managed to think of
16394         a non-kludgy way of doing this.  Finishes off bug 78739.
16395
16396 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16397
16398         * object.c: properly setup interface_bitmap in proxy vtables.
16399
16400 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16401
16402         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16403         to create unique shadow copy target directories, use the domain's
16404         serial number instead. Each domain gets a unique target directory
16405         that way.
16406
16407         * domain.c (mono_domain_create): added code to increment domain
16408         shadow copy serial number and cache the value in the current
16409         domain structure.
16410
16411         * domain-internals.h (struct _MonoDomain): added a new field -
16412         shadow_serial to hold the serial number used in generation of
16413         shadow-copy directories. This is to make sure that the directory
16414         name is unique for each and every domain created. We avoid a race
16415         condition with overriding assemblies already in use by other app
16416         domains.
16417
16418 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16419
16420         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16421         binding generic parameters.
16422
16423 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16424
16425         * metadata.c (do_mono_metadata_parse_generic_class): Use
16426         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16427         error.
16428
16429 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16430
16431         * loader.c, class-internals.h, reflection.c: removed the per-method
16432         generics hashtable: we use the global one through the call of
16433         mono_class_inflate_generic_method ().
16434
16435 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16436
16437         * class.c, metadata.c, class-internals.h: introduce yet another
16438         generics global cache for inflated methods (fixes 98% of the perf
16439         issue in bug #81806).
16440
16441 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16442
16443         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16444         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16445         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16446         return a MonoGenericInst containing (a copy) of those types.
16447         (mono_metadata_inflate_generic_inst): Update to changes.
16448         (mono_metadata_parse_generic_inst): Likewise.
16449         (mono_get_shared_generic_inst): Likewise.
16450         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16451         (mono_reflection_bind_generic_method_parameters): Likewise.
16452         * metadata-internals.h: Likewise.
16453         * icall.c (free_generic_context): Kill.
16454         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16455
16456         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16457         mono_metadata_type_dup.
16458         * marshal.c (mono_mb_create_method): Likewise.
16459
16460         * metadata.c (mono_metadata_type_dup): Rename from
16461         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16462         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16463         * marshal.c, metadata-internals.h: Update to changes.
16464
16465 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16466
16467         * class.c: fixed a small leak for array classes and removed warning.
16468
16469 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16470
16471         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16472         Return 0x8000000 for return parameters. Fixes #82161.
16473
16474 2007-07-21  Marek Habersack  <grendello@gmail.com>
16475
16476         * appdomain.c (get_shadow_assembly_location): append the current
16477         ticks value to the path. Avoids overwriting the same assemblies by
16478         several threads at the same time.
16479
16480 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16481         and Raja R Harinath  <rharinath@novell.com>
16482
16483         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16484         Simplify slightly.
16485         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16486         property for testing if a method is a generic method definition.
16487
16488 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16489
16490         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16491
16492 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16493
16494         * verify.c: used function from private branch, reverted to the one in class.h 
16495
16496 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16497
16498         * verify.c: a typo slipped in and the code wont compile
16499
16500 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16501
16502         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16503         disabled box instruction as it is doing the wrong thing
16504         improved stack dump messages, now it is easier to debug type related issues
16505
16506
16507 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16508
16509         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16510
16511 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16512
16513         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16514         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16515         grouped with class and valuetype. This change will simply 
16516         the code as it should be handled just like unmanaged pointers.
16517
16518 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16519
16520         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16521
16522 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16523
16524         * verify.c: several stack merge issues fixed, reference comparisons now
16525         check the type size. strict type check now works correctly.
16526         added more uses of IS_MANAGED_POINTER macro.
16527         fixed issues pointed by running the test suite against .net.
16528         
16529
16530 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16531
16532         * class.c, loader.c, class-internals.h: Removed the
16533         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16534         defines.
16535
16536         * icall.c: Better error checking in some internal reflection
16537         methods.
16538
16539 2007-07-18  William Holmes  <billholmes54@gmail.com>
16540
16541         * filewatcher.c : removed unused variable 'filename' in 
16542           ves_icall_System_IO_FSW_SupportsFSW
16543
16544 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16545
16546         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16547         obsolete, removed.
16548
16549 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16550
16551         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16552         
16553         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16554
16555 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16556
16557         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16558         Implement generics support.
16559         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16560
16561         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16562         type_args and method_args arguments.
16563         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16564         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16565         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16566
16567 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16568
16569         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16570           It adds a rootimage parameter to mono_reflection_get_type_internal,
16571           adds new function mono_reflection_get_type_with_rootimage and use
16572           the rootimage to resolve the types instead of the current image
16573
16574 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16575
16576         * culture-info-table.h: Forgot to update after r78304.
16577
16578 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16579
16580         * class.c (mono_class_is_open_constructed_type)
16581         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16582
16583 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16584
16585         * class.c (mono_bounded_array_class_get):  method fails if used with
16586         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16587         avoiding calculating the size for such array as it cannot be instantiated.
16588         Fix bug #82015
16589
16590 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16591
16592         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16593         field.
16594         * metadata.c, reflection.c: Update to changes.
16595
16596 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16597
16598         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16599         mono_class_is_valid_enum, they are used to valide a enum when loading.
16600         * reflection.c: used new functions to throw TypeLoadException when and
16601         invalid enum is build with TypeBuilder. Fixes #82018
16602   
16603 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16604
16605         * object.c: forgot commit of mono_class_setup_methods () to access
16606         iface->methods.
16607         * object-internals.h: added a few more handy fields to
16608         MonoIMTCheckItem.
16609
16610 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16611
16612         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16613         iface->methods.
16614
16615 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16616
16617         * class-internals.h, object-internals.h, object.c: IMT-based
16618         interface invocation core from Massimiliano Mantione
16619         (massi@ximian.com) with a reworked arch-specific interface,
16620         bsearch implementation and a few bugfixes and memory savings by me.
16621
16622 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16623
16624         * class.c (mono_class_create_from_typedef): mono would segfault if 
16625         an enum did not have a __value field. It now throws a TypeLoadException
16626         for such cases. Fix bug #82022
16627
16628 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16629
16630         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16631
16632 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16633
16634         * class.c (mono_class_init): If a class is already inited but has
16635         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16636
16637 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16638
16639         * class.c: Properly handle the case of an unimplemented interface
16640         method.  Fixes: 81673.
16641
16642 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16643
16644         * class-internals.h, object.c: cleanup patch from massi: use
16645         MonoVTable->interface_bitmap since the vtable interfaces offset array
16646         is going away.
16647
16648 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16649
16650         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16651         GetMDStreamVersion icall instead.
16652
16653 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16654
16655         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16656         not use mono_dl_build_path() with a full library name: makes
16657         fallbacks to libgaim and libfam work.
16658
16659 2007-07-06  William Holmes  <billholmes54@gmail.com>
16660
16661         * assembly.c: Added a continue statement in probe_for_partial_name when
16662          parse_assembly_directory_name fails.  Fixes : 82002
16663
16664 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16665
16666         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16667         and added a verification  for TYPEDBYREF.
16668         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16669         make native int interchangeable with int32 and some small cleanup and formating.
16670         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16671         handle byref of byref.
16672         * verify.c (push_local): handle byref of byref.
16673         * verify.c (do_binop): invalid mix of values is unverifiable
16674         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16675         added visibility checks
16676         * verify.c (field related method): added visibility checks
16677         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16678
16679 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16680
16681         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16682         string.
16683
16684 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16685
16686         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16687
16688         * marshal.c (emit_marshal_string): When returning a string from managed code,
16689         allways make a copy even for unicode strings. Fixes #81990.
16690
16691 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16692
16693         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16694         of byref generic inst types (bug #81997).
16695
16696 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16697
16698         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16699         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16700
16701 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16702
16703         * marshal.c (emit_marshal_string): Add support for unicode strings in
16704         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16705
16706 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16707
16708         * verify.c: field load/store are now verified, missing only access checks now
16709
16710 2007-06-28  Martin Baulig  <martin@ximian.com>
16711
16712         * mono-debug.c (mono_debug_debugger_version): New public variable.
16713
16714 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16715
16716         * locales.c: When constructing DateTimeFormat or NumberFormat for
16717         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16718         MonoCultureInfo contructed from the current locale is always
16719         read-only and has UseUserOverride set to true. All MonoCultureInfo
16720         instances returned for GetCultures have both IsReadOnly and
16721         UseUserOverride set to true. Fixes part of bug #81930.
16722
16723 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16724
16725        * icall-def.h: Update System.__ComObject icalls
16726        * marshal.c: Avoid managed transition (and object creation)
16727        when looking up COM interface in RCW.
16728        * marshal.h: Ditto.
16729        
16730        Code is contributed under MIT/X11 license.
16731
16732 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16733
16734         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16735         to avoid crashes during assembly unloading.
16736
16737 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16738
16739         Fix MethodInfo.IsGenericMethodDefinition
16740         * reflection.c (mono_reflection_bind_generic_method_parameters):
16741         Rearrange code to ensure we always uses a generic method definition.
16742         * class.c (mono_class_inflate_generic_method_full): Set
16743         'generic_container' field only for generic method definitions.
16744         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16745         Use presense of 'generic_container' field as indication of being a
16746         generic method definition.
16747
16748 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16749
16750         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16751
16752         * object-internals.h: Reflect changes in the layout of the managed Delegate
16753         class.
16754         
16755         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16756         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16757         runtime memory used by the dynamic method. Fixes #77146.
16758
16759 2007-06-21  Dick Porter  <dick@ximian.com>
16760
16761         * file-io.h: 
16762         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16763         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16764         81767.
16765
16766 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16767
16768         * reflection.c (method_encode_methodspec): Add a tripwire.
16769         * class.c (inflate_generic_type): The fully open generic type is
16770         not the same as the generic type definition.
16771
16772 2007-06-21  Martin Baulig  <martin@ximian.com>
16773
16774         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16775
16776         * mono-debug-debugger.h
16777         (MonoDebuggerBreakpointInfo): Removed.
16778         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16779         (mono_debugger_remove_breakpoint): Likewise.
16780         (mono_debugger_breakpoint_callback): Likewise.
16781         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16782
16783 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16784
16785         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16786         generic type is not the same as the generic type definition.
16787         * class.c (mono_generic_class_get_class): Likewise.
16788
16789 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16790
16791         * icall.c: The second argument to 
16792         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16793         is a MonoType not a MonoClass.
16794
16795 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16796
16797         * verify.c: support for function pointers in the verifier
16798
16799 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16800
16801         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16802
16803 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16804
16805         * assembly.c: removed Mono.Data.SqliteClient from the list of
16806         forward-compatible assemblies as it breaks the ABI (bug #81899).
16807
16808 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16809
16810         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16811         lookup/update with the loader lock.
16812         * reflection.c (mono_class_bind_generic_parameters): No need to
16813         protect mono_metadata_lookup_* with the loader lock.
16814         * class.c (inflate_generic_type): Likewise.
16815         
16816         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16817         on a generic instantiated type.
16818
16819 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16820
16821         *verify.c: produce meanfull error messages on verification error
16822         *verify.c: fixed some cases of verification errors reported as validation errors
16823         *pedump.c: fixed the error name array, now it shows validation errors properly
16824         *verify.h: fixed the contant that should be used for verification errors
16825
16826 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16827
16828         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16829         for bug #77596, 81858 and 80743 (generics data structures on domain
16830         unload).
16831
16832 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16833
16834         Avoid allocating 'MonoGenericContext' on the heap.
16835         * class-internals (_MonoMethodInflated::context): Make field
16836         inline, not a pointer.
16837         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16838         stack.  Use the context embedded within the inflated method as the
16839         hash key, rather than 'new_context'.
16840         * class.c (inflate_generic_context): Simplify.  Return a struct
16841         rather than allocating on the heap.
16842         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16843         doesn't salt away a copy of the context -- simplifying the
16844         lifetime rules of a 'MonoGenericContext *'.
16845         (mono_method_get_context): Return pointer to embedded context.
16846         (setup_generic_array_ifaces): Allocate temporary context on stack.
16847         * reflection.c (inflate_mono_method): Likewise.
16848         (mono_reflection_bind_generic_method_parameters): Likewise.
16849         Use the context embedded within the inflated method as the hash key.
16850
16851         Avoid a source of allocation of 'MonoGenericContext'.
16852         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16853         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16854         * class.c: Update to changes.
16855         (mono_generic_class_get_context): Simplify drastically.  Now just
16856         returns a pointer to the field.
16857         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16858         argument as a const pointer.
16859         (mono_metadata_generic_context_equal): Likewise.
16860         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16861         Update to changes.
16862
16863 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16864
16865         * verify.c improved the handling of brtrue/brfalse, factored out common code
16866
16867 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16868
16869         Kill MonoGenericMethod.
16870         * class-internals.h (MonoGenericContext::method_inst): Rename from
16871         'gmethod' and convert to a MonoGenericInst.
16872         (MonoGenericMethod): Remove.
16873         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16874         * loader.c (method_from_methodspec): Update to changes.  Use a
16875         MonoGenericContext as the key to the hashtable.
16876         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16877         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16878         (mono_metadata_generic_context_hash): Likewise from
16879         'mono_metadata_generic_method_hash'.  Change hash function.
16880         (mono_metadata_load_generic_params): Update to changes.
16881         (mono_get_shared_generic_method): Remove.
16882         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16883         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16884         (inflate_generic_context): Likewise.
16885         (mono_class_inflate_generic_method_full): Likewise.
16886         (setup_generic_array_ifaces): Likewise.
16887         (mono_class_create_from_typespec): Likewise.
16888         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16889         (method_encode_methodspec): Update callsite.
16890         (reflection_methodbuilder_to_mono_method): Update to changes.
16891         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16892         MonoGenericContext as the key to the hashtable.
16893         (inflate_mono_method): Update to changes.
16894
16895         * class-internals.h (MonoGenericMethod::container): Remove.
16896         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16897
16898 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16899
16900         * profiler-private.h, profiler.c, profiler.h: added API to profile
16901         exception events.
16902
16903 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16904
16905         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16906
16907 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16908
16909         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16910         Fixed overflow and underflow not aborting the verification process.
16911
16912 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16913
16914         * class-internals.h (MonoStats): Added stats entries for dynamic
16915         code allocations.
16916
16917 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16918
16919         * loader.c (mono_free_method): Free header->locals and header->clauses.
16920
16921         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16922         dynamic case.
16923
16924         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16925
16926         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16927
16928 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16929
16930         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16931         the tables.
16932
16933 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16934
16935         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16936
16937 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16938
16939         MonoGenericMethod on a diet
16940         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16941         here ...
16942         (_MonoGenericMethod::reflection_info): ... from here.
16943         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16944         Update to changes.
16945         * reflection.c (inflate_mono_method): Likewise.
16946         (mono_reflection_bind_generic_method_parameters): Likewise.
16947
16948 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16949
16950         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16951         *verify.c: factored long ldarg forms to share code with short forms
16952
16953 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16954
16955         *verify.c: fixed code formating factored some duplicate code
16956         into a new function
16957
16958         *verify.h: fixed binary incompatibility introduced earlier
16959
16960         *pedump.c: fixed formating
16961
16962 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16963
16964         Fix assertion when disassembling Mono.C5.dll
16965         * loader.c (method_from_methodspec): Avoid inflating a method
16966         twice with the same context.  If the methodref is inflated, use
16967         the declaring method instead.
16968
16969         * class.c (mono_class_from_generic_parameter): Fix case similar to
16970         bug #81830 handled below, but for method containers.
16971
16972 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16973
16974         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16975         get_shared_generic_class.  Directly inflate the instance.
16976         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16977         (inflate_generic_class): Delete.
16978         (get_shared_generic_class): Delete.  Move setting of
16979         'cached_class' and 'cached_context' ...
16980         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16981
16982         * metadata.c (mono_metadata_lookup_generic_class): Change
16983         signature to take the components of a MonoGenericClass rather than
16984         an allocated MonoGenericClass.  Change semantics to be intern-like.
16985         * reflection.c (mono_class_bind_generic_parameters): Update to
16986         changes.  Make locking region tighter.
16987         * class.c (inflate_generic_class): Update to changes.
16988         (get_shared_generic_class): Likewise.
16989         * metadata-internals.h: Likewise.
16990
16991         * reflection.c (mono_class_bind_generic_parameters): Take and
16992         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16993         (mono_reflection_bind_generic_parameters): Use
16994         'mono_class_bind_generic_parameters' rather than duplicate the code.
16995         * class.c (mono_bounded_array_class_get): Update to changes.
16996         * object-internals.h: Likewise.
16997
16998         * reflection.c (mono_class_bind_generic_parameters): Only support
16999         parameterizing generic type definitions.  Remove support for other
17000         open types.
17001
17002 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
17003
17004         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
17005
17006         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
17007         in the dynamic case.
17008
17009 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
17010
17011         * threads.c: When cleaning up thread, reset the Background bit.
17012         Fixes bug #81720.
17013
17014 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
17015
17016        * metadata.c: Move variable declarations to top of scope.
17017        * verify.c: Move variable declarations to top of scope.
17018
17019        Code is contributed under MIT/X11 license.
17020
17021 2007-06-08  Raja R Harinath  <rharinath@novell.com>
17022
17023         * reflection.c (mono_class_bind_generic_parameters): Replace
17024         open-coded loop with mono_metadata_inflate_generic_inst.
17025
17026         * class.c (get_shared_generic_class): Don't call
17027         mono_get_shared_generic_inst.  Use the container's own
17028         'class_inst'.
17029
17030         * metadata.c (mono_metadata_load_generic_params): Move
17031         initialization of 'context' field here from ...
17032         * class.c (mono_class_create_from_typedef): ... here, and ...
17033         * loader.c (mono_get_method_from_token): ... here.
17034
17035         * class.c (get_shared_generic_class): Rename from
17036         mono_get_shared_generic_class and make static.
17037         (mono_get_shared_generic_inst): Move to metadata.c.
17038         * loader.c (mono_get_shared_generic_method): Likewise.
17039         * class-internals.h, metadata-internals.h: Update to changes.
17040
17041         Fix #81830
17042         * class.c (mono_class_from_generic_parameter): Don't assume a
17043         generic container owner exists.  Generic containers from monodis
17044         don't have any.
17045
17046 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
17047
17048         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
17049         * verify.h: new typedefs to returns the non-verifiable status
17050         * verify.c: initial implementation of generics, stack merging and object compatibility check
17051
17052 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17053
17054         * class.c, image.c, class-internals.h (MonoImage): class_cache is
17055         a MonoInternalHashTable again (fixed bug in internal hash table
17056         code).
17057
17058 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17059
17060         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
17061         MonoInternalHashTable again (fixed bug in internal hash table
17062         code).
17063
17064 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17065
17066         * class.c, image.c, class-internals.h, domain.c,
17067         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
17068         changes.  Have to figure out what makes them break the SWF
17069         regression.
17070
17071 2007-06-04  Mark Probst  <mark.probst@gmail.com>
17072
17073         * class.c, image.c, class-internals.h (MonoImage): class_cache is
17074         a MonoInternalHashTable now.
17075
17076 2007-06-04  Mark Probst  <mark.probst@gmail.com>
17077
17078         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
17079         MonoInternalHashTable now.
17080
17081 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
17082
17083         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
17084         invoke_impl code.
17085
17086         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
17087
17088         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
17089         dependent trampoline.
17090
17091         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17092
17093         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
17094
17095 2007-05-29  Robert Jordan  <robertj@gmx.net>
17096
17097         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
17098
17099 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
17100
17101         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
17102
17103 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
17104
17105        * marshal.c: Fix interface lookup loops for
17106        cominterop_get_com_slot_for_method and 
17107        cominterop_get_method_interface. Only need to lookup
17108        if type is a class, else use interface type method is on.
17109
17110        Code is contributed under MIT/X11 license.
17111
17112 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
17113
17114         * reflection.c: HasSecurity can be present even if no specially 
17115         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
17116         SecurityAttribute). Fix CAS regression tests on buildbot.
17117
17118 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
17119
17120        * appdomain.c: Add configure checks for header files.
17121        * image.c: Add configure checks for header files.
17122        * file-io.c: Add configure checks for header files.
17123        * debug-mono-symfile.c: Add configure checks for header files.
17124        * threadpool.c: Add configure checks for header files.
17125        * console-io.c: Add configure checks for header files.
17126        * profiler.c: Add configure checks for header files.
17127        * rawbuffer.c: Add configure checks for header files.
17128        * icall.c: Add configure checks for header files.
17129        * rand.c: Add configure checks for header files.
17130        * socket-io.c: Add configure checks for header files.
17131
17132        Code is contributed under MIT/X11 license.
17133
17134 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
17135
17136         * reflection.c (mono_custom_attrs_from_builders): Remove the 
17137         assertion as it breaks the build.
17138         
17139         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
17140
17141         * reflection.c (lookup_custom_attr): Make a copy here too.
17142
17143         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
17144         dynamic images.
17145
17146         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
17147         images.
17148
17149         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
17150         info.
17151
17152 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
17153
17154         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
17155         (load_cattr_value): Ditto.
17156
17157 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
17158
17159         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
17160
17161 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
17162
17163         * threads.c: In "start_wrapper", set apartment_state to MTA if
17164         apartment_state is Unknown and we're running on 2.0 profile or
17165         higher.
17166         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
17167         to main method, then set apartment_state to Unknown on 1.0 profile,
17168         and MTA on 2.0 profile.
17169
17170 2007-05-16  Jb Evain  <jb@nurv.fr>
17171
17172         * class-internals.h (MonoDefaults): Add an attribute_class and
17173           customattribute_data_class.
17174         * domain.c (mono_init_internal): Populate them.
17175         * reflection.c: Use them to remove duplicates. Make a vew
17176         MonoClass variables `static'.
17177
17178 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
17179
17180         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
17181         step in implementing IMT, so that all isinst checks now can go
17182         through the bitmap.
17183         This was needed because vtables for TransparentProxy need to look
17184         like the vtable of the "target" class, so they need to point to
17185         its interface bitmap directly.
17186
17187         * object.c: inside "mono_class_create_runtime_vtable" and
17188         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
17189
17190 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
17191
17192         * object-internals.h
17193           culture-info.h : added territory field in MonoCulture and
17194           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
17195         * locales.c : fill territory field above too.
17196         * culture-info-table.h : regenerated.
17197
17198 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
17199
17200         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
17201         Fixes #81599.
17202
17203 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
17204
17205         * object.c: Always initialize apartment, even if 
17206         there is no custom attributes on entry point.
17207         
17208         Code is contributed under MIT/X11 license.
17209
17210 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
17211
17212         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
17213         * metadata.c: If no encoding is set, check for unicode
17214         on class.
17215         
17216         Code is contributed under MIT/X11 license.
17217
17218 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17219
17220         * threads.c: Handle if mono_thread_current returns NULL 
17221         
17222         Code is contributed under MIT/X11 license.
17223
17224 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17225
17226         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
17227         in start_wrapper. Added mono_thread_init_apartment_state and
17228         mono_thread_cleanup_apartment_state.
17229         * object.c: Initialize thread apartment state on main thread
17230         by checking for STAThreadAttribute on entry point.
17231         * object-internals.h: Add apartment_state field to MonoThread.
17232         * threads-types.h: Add unmanaged definition of 
17233         System.Threading.ApartmentState, MonoThreadApartmentState.
17234         
17235         Code is contributed under MIT/X11 license.
17236         
17237 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
17238
17239         * class.c: Fix windows build.
17240         * class-internals.h: Fix windows build.
17241         
17242         Code is contributed under MIT/X11 license.
17243
17244 2007-05-08  Robert Jordan  <robertj@gmx.net>
17245
17246         * process.c (CreateProcess_internal):
17247         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
17248         .CreateNoWindow was specified. Fixes #81496.
17249
17250 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17251
17252         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
17253         step in implementing IMT, replaced it with two compact arrays
17254         (interfaces_packed and interface_offsets_packed) and a bitmap that
17255         is used for isinst checks (interface_bitmap).
17256
17257         * class.c: (compare_interface_ids): compare function to pass to
17258         bsearch when looking for an interface with a given id.
17259         (mono_class_interface_offset): reimplemented using bsearch on
17260         interfaces_packed, getting the offset from interface_offsets_packed.
17261         (print_implemented_interfaces): utility debugging function.
17262         (setup_interface_offsets): reworked to initialize interfaces_packed,
17263         interface_offsets_packed and interface_bitmap.
17264
17265         * object.c: replaced all accesses to "MonoClass.interface_offsets"
17266         with uses of interfaces_packed and interface_offsets_packed.
17267
17268 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17269
17270         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17271         mono_class_interface_offset prototype to wrap all accesses to
17272         "MonoClass.interface_offsets".
17273
17274         * class.c: Implemented mono_class_interface_offset, and wrapped all
17275         accesses to "MonoClass.interface_offsets".
17276
17277         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17278         "MonoClass.interface_offsets".
17279
17280 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17281
17282         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17283         GetMethodFromHandle overloads (bug #78637).
17284
17285 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17286
17287         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17288         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17289
17290 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17291
17292         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17293         #81498.
17294
17295         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17296         gracefully.
17297         (mono_custom_attrs_from_index): Ditto.
17298
17299         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17300         Fixes #81501.
17301
17302 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17303
17304         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17305         is now allocated from a mempool.
17306
17307 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17308
17309         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17310         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17311
17312 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17313
17314         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17315         mono_loader_clear_error () too late. Fixes #81463.
17316
17317 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17318
17319         * culture-info-table.h : regenerated.
17320
17321 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17322
17323         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17324         is missing.
17325
17326 2007-04-25  Dick Porter  <dick@ximian.com>
17327
17328         * Makefile.am: Put the mingw enforced-optimisation back into the
17329         PLATFORM_WIN32 section.
17330
17331 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17332
17333         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17334         patch.
17335
17336         * image.c (mono_image_load_module): New API function to load a module reference.
17337
17338         * image.c (load_modules): Load modules lazily. Fixes #80812.
17339
17340         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17341         
17342         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17343
17344         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17345         to mono_image_load_module_dynamic.
17346
17347 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17348
17349         * marshal.c: Fix calling convention for CCW on non-windows
17350         platforms. STDCALL on windows, CDECL everywhere else to work 
17351         with XPCOM and MainWin COM.
17352         
17353         Code is contributed under MIT/X11 license.
17354
17355 2007-04-23  Martin Baulig  <martin@ximian.com>
17356
17357         Fix #80969.
17358
17359         * loader.c
17360         (method_from_memberref): Added `gboolean *used_context' argument.
17361         (mono_get_method_from_token): Likewise.
17362         (mono_get_method_full): Don't insert the method in the cache when
17363         `used_context' is true.
17364
17365 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17366
17367         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17368
17369         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17370         create new MonoTypes for returned types.
17371         * class.c (mono_generic_class_get_class): Export mono-internal.
17372         * class-internals.h: Update to changes.
17373
17374 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17375
17376         * threadpool.c, threadpool.h, icall-def.h: patch from
17377         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17378
17379 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17380
17381         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17382         
17383         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17384
17385         * threads.c (mono_thread_get_stack_bounds): New helper function.
17386
17387         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17388         Correctly compute stack bounds when attaching. Fixes #81394.
17389
17390 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17391
17392         * reflection.c: fix handling of doubles in custom attributes
17393         for the arm-fpa format (bug #81368).
17394
17395 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17396
17397         * reflection.c (assembly_add_win32_resources): Mildly relax an
17398         bounds check to let the end pointer point just past the end of the
17399         allocated buffer.  (may fix #81384)
17400
17401 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17402
17403         * culture-info-table.h : regenerated.
17404
17405 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17406
17407         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17408         the thread is aborted early.
17409
17410 2007-04-05  Dick Porter  <dick@ximian.com>
17411
17412         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17413         FindFirstFile()/FindNextFile() to find entries.  This lets the
17414         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17415         81038.
17416
17417         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17418         the parameters of
17419         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17420
17421 2007-04-04  Martin Baulig  <martin@ximian.com>
17422
17423         * debug-helpers.c
17424         (mono_method_desc_full_match): Add support for nested classes.
17425
17426 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17427
17428         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17429
17430 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17431
17432         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17433         waiting for too many threads.
17434
17435 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17436
17437         * environment.c: Fix return value check on uname so we can get the 
17438         executing version on Solaris operating systems.
17439
17440 2007-03-28  Jb Evain  <jbevain@gmail.com>
17441
17442         * class.c (mono_type_get_name_recurse): Complete the
17443         fix for the creation of assembly qualified names for
17444         pointer types. Fixes #81208.
17445
17446 2007-03-27  Dick Porter  <dick@ximian.com>
17447
17448         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17449         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17450         changed.
17451
17452         * threads.c
17453         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17454         the value of ReleaseMutex().
17455
17456 2007-03-27  Dick Porter  <dick@ximian.com>
17457
17458         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17459         in little-endian order, not network endian, so must be converted
17460         to host endian here.  Fixes bug 80593.
17461
17462 2007-03-22  Jb Evain  <jbevain@gmail.com>
17463
17464         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17465         qualified names for pointer types. Fixes #81208.
17466
17467 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17468
17469         * marshal.c: Add support for PreserveSigAttribute. 
17470         
17471         Code is contributed under MIT/X11 license.
17472
17473 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17474
17475         * process.c: Fix endianness issues. Fixes #81126.
17476
17477         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17478         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17479
17480         * image.c (mono_image_lookup_resource): Make this work on big-endian
17481         machines.Change API contract so the caller needs to free the return value.
17482         
17483         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17484         API change.
17485         
17486 2007-03-14  Martin Baulig  <martin@ximian.com>
17487
17488         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17489         mono_type_get_desc() as well.
17490
17491 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17492
17493         * icall.c:  Fix environ access in VS.  
17494         
17495 2007-03-13  Alp Toker  <alp@atoker.com>
17496
17497         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17498         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17499         #63841.
17500
17501 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17502
17503         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17504         circular references among dynamic methods. Fixes #81091.
17505
17506         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17507
17508 2007-03-09  Martin Baulig  <martin@ximian.com>
17509
17510         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17511
17512 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17513
17514         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17515         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17516         
17517         Code is contributed under MIT/X11 license.
17518         
17519 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17520
17521         * loader.c: Reapply patch for bug #79424.
17522
17523 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17524
17525         * metadata.c (mono_type_to_unmanaged): Only convert object to
17526         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17527
17528 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17529
17530         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17531         (and incorrectly set) is_reference field from MonoGenericInst.
17532
17533 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17534
17535         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17536         a little earlier.
17537
17538         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17539
17540         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17541
17542 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17543
17544         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17545         FileOptions.1 value to mean "temporary", map that to
17546         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17547
17548         Fixes 80688
17549
17550 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17551
17552         * appdomain.c: implement MS .Net style shadow copying. Copies of
17553         the assemblies are made in a subdirectory of the dynamic base
17554         directory, the assembly names are preserved.
17555         Copy .mdb and .config files along with the assemblies being shadowed.
17556
17557 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17558
17559         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17560         (emit_marshal_handleref): Ditto.
17561
17562         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17563         on Visual C++. Fixes #80671.
17564
17565 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17566
17567         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17568         for clone operations.
17569
17570 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17571
17572         * marshal.c: Fix warnings.
17573
17574 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17575
17576         * loader.c: allow case-insensitive matching of the dll name
17577         in dllmap handling when prefixed with "i:".
17578
17579 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17580
17581         * threads.c: Fix #ifdef for dummy_apc function for VS.
17582
17583 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17584
17585         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17586
17587 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17588         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17589         giving precedence to the methods with a fully qualified name
17590         (InterfaceName.MethodName) when building the interface sections
17591         of the vtable.
17592
17593 2007-02-16  Dick Porter  <dick@ximian.com>
17594
17595         * threadpool.c (append_job): Fix fast-path array handling, so it's
17596         less likely the array will grow exponentially when the load is
17597         heavy.
17598
17599 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17600
17601         * metadata-internals.h, loader.c: fix dllmap lookup order
17602         for non-function maps, too, and prepare for fallback code.
17603
17604 2007-02-12  Robert Jordan  <robertj@gmx.net>
17605
17606         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17607         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17608         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17609         GlobalFree. Fixes a part of bug #77075.
17610
17611 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17612
17613         * loader.c: implemented typedef parent in field memberref.
17614
17615 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17616
17617         * marshal.c: Fix warnings and remember to call Release on
17618         IUnknown of RCW.
17619         
17620         Code is contributed under MIT/X11 license.
17621
17622 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17623
17624         * class-internals.h: Add MonoHandleRef definition, and
17625         handleref_class to mono_defaults. 
17626
17627         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17628         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17629
17630         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17631         (do nothing on this stage)
17632         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17633         (emit_marshal_handleref): New method, used for argument handling
17634         of HandleRefs. 
17635
17636 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17637
17638         * class.c (mono_class_setup_parent): Lazily init com types.
17639         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17640         init com types.
17641         * object.c (mono_remote_class_vtable): Lazily init com types.
17642         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17643         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17644         * domain-internals.h: Expose mono_init_com_types.
17645         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17646         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17647         Add support for COM Callable Wrapper marshalling.
17648         * marshal.h: Add icall definitions.
17649         * gc.c: Handle freeing of CCWs in finalizer code.
17650         
17651         Code is contributed under MIT/X11 license.
17652
17653 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17654
17655         * reflection.c: changed all the signature encoding code to use
17656         a variable-sized buffer.
17657
17658 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17659
17660         * marshal.c: locking fixes: never take the loader lock
17661         or other runtime locks when holding the marshal lock
17662         (fixes bug#80664).
17663
17664 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17665
17666         * marshal.c: make the delegate function pointer mapping
17667         work for the moving GC.
17668
17669 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17670
17671         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17672         for bug #80618.
17673
17674 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17675
17676         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17677         gmodule.
17678
17679 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17680
17681         * threadpool.c: made the code moving-GC safe.
17682
17683 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17684
17685         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17686         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17687         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17688         warning cleanup.
17689         * reflection.c: warning cleanup, some threading and moving GC fixes.
17690
17691 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17692
17693         * class.c, loader.c: create the needed Set/Get/Address array methods
17694         as well as the .ctors in mono_class_init (), fixes bug #80567.
17695
17696 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17697
17698         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17699         we doesn't decrease its alignment. Should fix the sparc build.
17700
17701 2007-01-24  Dick Porter  <dick@ximian.com>
17702
17703         * socket-io.c
17704         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17705         Create the returned object if we need to ignore an unsupported
17706         socket option.  Fixes a segfault reported by Atsushi.
17707
17708 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17709
17710         * class.c, object.c: restrict GC-tracked fields to
17711         UIntPtr fields used inside corlib, so we provide better
17712         type info to the GC and also allow broken packing as in
17713         bug #80580.
17714
17715 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17716
17717         * sgen-gc.c: removed duplicated function.
17718
17719 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17720
17721         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17722         value that means that the value is not supported, but that we
17723         should not return a failure, but instead report this as a
17724         successful operation.
17725
17726 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17727
17728         Fix tests/bug79956.2.il
17729         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17730         (mono_generic_class_get_class): If the generic definition in an
17731         enum, copy over other fields related to it.
17732
17733 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17734
17735         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17736         genericinst enums (bug #79215).
17737
17738 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17739         * class.c: Fix bug 80307.
17740
17741 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17742
17743         * image.c: if the file table is not present, try to load
17744         all the modules, since we don't have info about them
17745         having or not metadata (bug #80517).
17746         * assembly.c: allow mono_assembly_load_references () to
17747         work for netmodules.
17748
17749 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17750
17751         * image.c, metadata-internals.h, object.c: execute module
17752         cctors when running on the 2 runtime if present (bug #80487).
17753
17754 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17755
17756         * icall.c: optimized InitializeArray() on bigendian.
17757
17758 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17759
17760         * icall.c: fix for the broken ARM FPA double format.
17761
17762 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17763
17764         * icall.c: handle endian issues for r4 and r8 types, too, in
17765         the InitializeArray() icall.
17766
17767 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17768
17769         * loader.c (mono_loader_error_prepare_exception): Clear the error
17770         once we have extracted the information from it, do this before we
17771         call into the JIT's class loading mechanisms.
17772
17773         * object.c (mono_class_create_runtime_vtable): Do not clear the
17774         loader error before calling mono_class_get_exception_for_failure
17775         as the loader error is needed inside
17776         mono_class_get_exception_for_failure to throw the error (thinko).
17777
17778         Fixes #80521
17779         
17780 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17781
17782         * reflection.c: align fields rva data so it's faster to load at
17783         runtime.
17784
17785 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17786
17787         Prepare to simplify GenericMethod handling.
17788         * class-internals.h (mono_method_get_context): New accessor function.
17789         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17790         rather than directly accessing '->context' field.
17791
17792         * class-internals.h (_MonoGenericParam.method): Move ...
17793         (_MonoGenericContainer): ... here.  Add into union with klass field.
17794         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17795         Update to changes.
17796
17797 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17798
17799         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17800         the wrapper type enum and reduce relocations.
17801
17802 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17803
17804         * reflection.c (inflate_mono_method): Reuse method instantiation
17805         from the generic method, if available.
17806
17807 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17808
17809         * marshal.c (emit_marshal_variant): Fix conv_arg
17810         type in last commit, based on whether parameter is byref.
17811         
17812 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17813
17814         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17815         marshalling.
17816         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17817         MONO_TYPE_OBJECT back for VARIANT support.
17818
17819 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17820
17821         * marshal.c, marshal.h, icall-def.h: Implement 
17822         Marshal.ReAllocCoTaskMem.
17823
17824 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17825
17826         * marshal.c: memory retention fixes: use the proper
17827         image cache for runtime_invoke method lookups.
17828
17829 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17830
17831         * mempool.c: added code to help debug mempool allocations.
17832
17833 2007-01-11  Dick Porter  <dick@ximian.com>
17834
17835         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17836         support (experimenting with faking it with IP_MTU_DISCOVER for
17837         systems that don't have IP_DONTFRAGMENT.)
17838         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17839         icall.
17840
17841         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17842
17843         * socket-io.h: Add new fields to MonoSocketAsyncResult
17844         corresponding to the new ones in Socket.cs.
17845
17846 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17847
17848         Fix IronPython regression mentioned in #80249
17849         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17850         'cached_context' field, since it may have been initialized as a
17851         side-effect of metadata parsing.
17852
17853         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17854         (_MonoGenericClass.cached_class): Move here and rename from lone
17855         remaining field of ...
17856         (_MonoInflatedGenericClass): ... this.  Remove.
17857         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17858         to changes.
17859
17860         Fix mcs/tests/test-128.cs regression.
17861         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17862         2007-01-10 change below.
17863         [MONO_TYPE_OBJECT]: Recurse into array case.
17864
17865 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17866
17867         * class-internals.h (mono_get_inflated_generic_class): Remove.
17868         * class.c (mono_get_inflated_generic_class): Remove.
17869         (mono_generic_class_get_class): Rename from
17870         mono_class_create_generic.
17871         (mono_class_from_mono_type) [GENERICINST]: Use it.
17872         * reflection.c, metadata.c: Update to changes.  Use
17873         'mono_class_from_mono_type'.
17874
17875 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17876
17877         * reflection.c: use passed type when encoding an array element
17878         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17879
17880 2007-01-09  Robert Jordan  <robertj@gmx.net>
17881
17882         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17883         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17884         Fixes bug #80392.
17885
17886 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17887
17888         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17889
17890         * object.c (set_value): Avoid aliasing between type->data.klass
17891         and type->data.generic_class.
17892
17893         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17894
17895 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17896
17897         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17898         between type->data.klass and type->data.generic_class.
17899
17900 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17901
17902         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17903         value in out parameters.
17904
17905 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17906
17907         Simplify invariant for MonoGenericClass::klass field.
17908         * class.c (mono_class_create_generic): Verify 'klass' is null.
17909         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17910         initialize 'klass' field.
17911
17912 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17913
17914         Ongoing work to avoid redundant data and simplify invariants.
17915         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17916         'generic_class', and change type to a GenericInst.
17917         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17918         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17919
17920 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17921
17922         * class.c : skip io-layer under PLATFORM_WIN32.
17923
17924 2007-01-03  Tor Lillqvist  <tml@novell.com>
17925
17926         Fix #80305: In a bundled executable, look in the bundled exe
17927         assembly to determine the runtime version. Add the possibility to
17928         bundle also the machine.config file.
17929         
17930         * assembly.c (mono_assembly_open_from_bundle): Make
17931         non-static. Allow being called even if we have no bundled
17932         assemblies, and return NULL right away in that case.
17933
17934         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17935         here.
17936
17937         * domain.c (app_config_parse): Take an assembly exe file name as
17938         parameter instead of a config file name. Check for a bundled
17939         config file for that assembly by calling
17940         mono_config_string_for_assembly_file() (see below) before looking
17941         for one in the file system.
17942         (get_runtimes_from_exe): Corrsponding change to call of
17943         app_config_parse().
17944         (get_runtimes_from_exe): Check for bundled assembly exe file first
17945         by calling mono_assembly_open_from_bundle(). If no bundled
17946         assembly exe file is found, call mono_image_open() as before to
17947         look it up in the file system.
17948
17949         * mono-config.c: Add variable bundled_machinec_onfig.
17950         (mono_config_string_for_assembly_file): New function.
17951         (mono_config_for_assembly): Move code snippet that looks for a
17952         bundled assembly .config file into the above new function. Call
17953         it.
17954         (mono_register_machine_config, mono_get_machine_config): New
17955         functions to set and retrieve
17956
17957         * assembly.h: Declare mono_register_machine_config().
17958
17959         * mono-config.h: Declare mono_get_machine_config() and
17960         mono_config_string_for_assembly_file().
17961
17962         * icall.c: No declaration of environ necessary on Win32. It is
17963         declared (as a macro expanding to a function call) in stdlib.h.
17964         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17965         New internal mono function. Returns the value of
17966         mono_get_machine_config() as a Mono string.
17967
17968         * icall-def.h: Add get_bundled_machine_config().
17969
17970 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17971
17972         Remove redundant field
17973         * class-internals.h (_MonoGenericContext.container): Remove field.
17974         * loader.c (mono_method_get_signature_full): Don't parse a
17975         "container" for a signature parse when the signature is inflated
17976         immediately.
17977         (method_from_methodspec): Likewise, for a generic_inst.
17978         * class.c, metadata.c, reflection.c: Update to changes.
17979
17980 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17981
17982         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17983         'cached_context', and change semantics -- it starts off NULL, and
17984         is initialized on demand.
17985         * class.c (mono_generic_class_get_context): New accessor to
17986         replace 'context' field accesses.
17987         (mono_class_get_context): New helper.
17988         (*): Update to changes.
17989         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17990
17991 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17992
17993         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17994         before the memcpy.   Fixes Marshal2 regression.
17995
17996 2007-01-02  Jb Evain  <jbevain@gmail.com>
17997
17998         * blob.h: add a MONO_TYPE_ENUM definition
17999         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
18000         fix the encoding of arrays of enums in custom attributes.
18001
18002         Fixes #79666.
18003
18004 2007-01-01  Miguel de Icaza  <miguel@novell.com>
18005
18006         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
18007         string is null terminated, but only cut the string short if it
18008         overflows the buffer.   
18009         
18010         (mono_string_to_byvalstr): Also fix this routine.   The code here
18011         was not properly terminating a string (it was only terminated
18012         because of the previous catch-all memset). 
18013
18014         I left the memset, because I do not know if applications expect
18015         the runtime to clear this region. 
18016
18017         Fixes #79944.
18018
18019         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
18020         Clear the error before returning to unmanaged code to prevent the
18021         runtime from being confused later on (fixes  80420).
18022         (ves_icall_type_from_name): Always call mono_loader_clear_error
18023         after parsing a type that could have failed.
18024         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
18025
18026         * loader.c (mono_loader_clear_error): Fix indentation.
18027
18028 2006-12-28  Martin Baulig  <martin@ximian.com>
18029
18030         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
18031
18032 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18033
18034         * reflection.c: patch from Rolf Bjarne Kvinge to fix
18035         getting a token for an EnumBuilder.
18036
18037 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
18038
18039         * reflection.c: be more careful in case resource generation
18040         fails to create the data array.
18041
18042 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18043
18044         * sgen-gc.c: write barrier for clone and fix unregister handles.
18045
18046 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18047
18048         * reflection.c: some fixes needed in the generics code for the moving GC.
18049
18050 2006-12-22  Robert Jordan  <robertj@gmx.net>
18051
18052         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
18053         account. Fixes bug #80299.
18054
18055 2006-12-21  Raja R Harinath  <rharinath@novell.com>
18056
18057         Fix WaitHandle usage in delegates.
18058         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
18059         * object.c (mono_wait_handle_new): Use the property set method to
18060         initialize the handle.
18061         (mono_wait_handle_get_handle): New.
18062         * threadpool.c (mono_async_invoke): Use it.
18063         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
18064         Likewise.
18065         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
18066
18067 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
18068
18069         * marshal.c (emit_marshal): Call emit_marshal_variant and
18070         emit_marshal_com_interface when applicable.
18071         (emit_marshal_variant, emit_marshal_com_interface): Add
18072         methods for this case and remove if's from emit_marshal_object.
18073         
18074 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
18075
18076         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
18077
18078 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
18079
18080         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
18081         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
18082         and GlobalFree on Windows. Remove FIXME.
18083
18084 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18085
18086         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
18087         implementation for managed objects.
18088
18089 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
18090
18091         * object.c: implemented code to be used for checking
18092         that no reference field overlaps with non-references.
18093
18094 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18095
18096         * threadpool.c: fix queue code to be compatible with the
18097         moving GC.
18098
18099 2006-12-18  Miguel de Icaza  <miguel@novell.com>
18100
18101         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
18102         in structures by throwing ArgumentNullException.
18103
18104         (emit_marshal_safehandle): Also when they are null parameters.
18105
18106         (emit_marshal_safehandle): Add support for ref
18107         SafeHandles parameters
18108
18109 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18110
18111         * profiler.c: updated to use the mono-dl API instead of
18112         gmodule.
18113
18114 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18115
18116         * profiler.c: updated to use the mono-dl dynamic loading
18117         API instead of gmodule.
18118
18119 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18120
18121         * profiler.c: use readlink, older versions of glib don't have
18122         g_file_read_link ().
18123
18124 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18125
18126         * profiler.c: try to detect the path to mono if libc fails to provide
18127         a useful name (bug #80286).
18128
18129 2006-12-16  Raja R Harinath  <rharinath@novell.com>
18130
18131         Fix #80242
18132         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
18133         instance, use the generic type definition instead.
18134         (ves_icall_Type_GetNestedTypes): Likewise.
18135         * class.c (mono_class_create_generic): Always set the
18136         nested_classes of a generic instance to NULL, even if the generic
18137         type definition has nested types.
18138
18139 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
18140
18141         * marshal.c (mono_string_from_bstr): Revert previous Windows change
18142         and fix on Linux.
18143         
18144 2006-12-15  Miguel de Icaza  <miguel@novell.com>
18145
18146         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
18147         my arguments were in the wrong order.   I also fixed the Windows
18148         version which seems to have had the same issue.
18149
18150         (mono_free_bstr): On Unix, this is g_free.
18151         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
18152         conversions (for the tests in corlib to pass).
18153
18154 2006-12-14  Miguel de Icaza  <miguel@novell.com>
18155
18156         * marshal.c (emit_ptr_to_object_conv): For now, ignore
18157         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
18158         exception if a ref SafeHandle in a struct has changed).
18159         
18160         (emit_struct_conv): Do not perform layout checks for classes
18161         derived from SafeHandle, as those are specially handled. 
18162
18163         (emit_object_to_ptr_conv): Add support for
18164         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
18165
18166         (emit_marshal_safehandle): Implement conversion of return values
18167         of safehandles (MARSHAL_ACTION_CONV_RESULT).
18168         
18169         * threads.c: WaitHandle now is compiled with two different handles
18170         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
18171         for 2.0.
18172         
18173         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
18174         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
18175         these routines to cope with both kinds of fields.
18176
18177 2006-12-12  Miguel de Icaza  <miguel@novell.com>
18178
18179         * metadata.c (mono_type_to_unmanaged): Handle the case where
18180         type->data.klass is a SafeHandle, and in that case, return the
18181         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
18182         MONO_MARSHAL_CONV_SAFEHANDLE. 
18183
18184 2006-12-11  Miguel de Icaza  <miguel@novell.com>
18185
18186         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
18187         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
18188         calling emit_marshal_object.
18189
18190         (emit_marshal_safehandle): Implement marshalling of
18191         SafeHandle parameters (no ref support yet).
18192
18193         (MarshalAction): Document the defines as I implement
18194         them for SafeHandle.
18195
18196         (emit_marshal_object): indentation police.
18197
18198         * class-internals.h: Define MonoSafeHandle.
18199         Add safehandle_class to MonoDefaults type.
18200
18201         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
18202         list of classes to check for fields. 
18203
18204         * domain.c (mono_init_internal): Add SafeHandle to the list of
18205         mono_defaults loaded.
18206
18207 2006-12-15  Raja R Harinath  <rharinath@novell.com>
18208
18209         Fix #80253
18210         * reflection.c (mono_reflection_bind_generic_parameters): If the
18211         generic type definition is a type builder, ensure that it is fully
18212         initialized before instantiating it.  Kill some dead code.
18213
18214 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18215
18216         * object.c: clear the loader_error () before loading
18217         more metadata stuff (bug #80258).
18218
18219 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
18220
18221         * icall.c, icall-defs.h: type modifiers icalls for
18222         parameters and properties.
18223
18224 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
18225
18226         * object.c, icall.c: fixed warnings.
18227
18228 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18229
18230         * marshal.c: fixed a couple of leaks and coding style in a few places.
18231
18232 2006-12-08  Dick Porter  <dick@ximian.com>
18233
18234         * process.c: Cope with NULL ProcessStartInfo arguments on windows
18235         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
18236         80173.
18237
18238 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18239
18240         * process.c: ProcessStartInfo may have only filename set and
18241         arguments can be NULL.
18242
18243 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18244
18245         * icall.c: fix leak found by Robert Jordan.
18246
18247 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18248
18249         * marshal.c, marshal.h: generate managed method to access an element
18250         of a multi-dimensional array.
18251
18252 2006-11-30  Paolo Molaro (lupus@ximian.com)
18253
18254         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
18255
18256 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18257
18258         * icall.c: back out GetFields () fix until the serialization code is
18259         fixed to not depend on the incorrect behaviour.
18260
18261 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18262
18263         * profiler.c: provide defaults if none are set.
18264
18265 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18266
18267         * Makefile.am, attrdefs.h: new public header file with
18268         constants for attributes for use by embedders.
18269
18270 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18271
18272         * icall.c: GetFields () fix for bug #80064.
18273
18274 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18275
18276         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18277         removed long unused icalls.
18278
18279 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18280   
18281         * marshal.c: 
18282                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18283                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18284                 can be generated without a delegate class.
18285                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18286         
18287         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18288
18289 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18290
18291         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18292         #80069.
18293
18294 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18295
18296         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18297         icall-def.h: added icalls needed by System.GC.
18298
18299 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18300
18301         * loader.c: ensure the class in catch clauses is handled
18302         correctly for generics methods (fixes bug#79980).
18303
18304 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18305
18306         * monitor.h, monitor.c: added mono_locks_dump () function
18307         to help debug deadlocks involving managed locks.
18308
18309 2006-11-13  Dick Porter  <dick@ximian.com>
18310
18311         * file-io.c (get_file_attributes): If the file is a symlink try
18312         and get the stat data for the target, but also add the
18313         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18314         the specs for the windows symlink support, but will probably have
18315         to be reworked when I have test data from a vista machine.  Fixes
18316         bug 79887.
18317
18318 2006-11-13  Dick Porter  <dick@ximian.com>
18319
18320         * gc.c (mono_domain_finalize): 
18321         * marshal.c (mono_delegate_begin_invoke): 
18322         * threadpool.c (socket_io_init, mono_thread_pool_init)
18323         (mono_thread_pool_finish): 
18324         * monitor.c (mono_monitor_try_enter_internal): 
18325         * threads.c (mono_thread_resume, mono_thread_init)
18326         (mono_thread_suspend_all_other_threads)
18327         (mono_thread_execute_interruption): 
18328         * appdomain.c (mono_domain_unload): Check for NULL error returns
18329         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18330         75733.
18331
18332 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18333
18334         * process.c
18335         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18336         Only close the handle if the value of the handle is not
18337         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18338         robust.
18339
18340         Improvement for #75733, so that we do not run into this problem. 
18341
18342         
18343         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18344         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18345         internal variables.  Fixes #79462 
18346         
18347
18348 2006-11-09  Dick Porter  <dick@ximian.com>
18349
18350         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18351         Use poll() not select().  Fixes bug 79397.
18352
18353 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18354
18355         Fix #79872
18356         * assembly.c (mono_assembly_load_from_full): Check that the given
18357         image has an assembly manifest.
18358
18359 2006-11-09  Ankit Jain  <jankit@novell.com>
18360
18361         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18362         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18363         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18364
18365 2006-11-07  Dick Porter  <dick@ximian.com>
18366
18367         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18368         Put the old resolver behaviour back for pre-2.0 profiles.
18369
18370 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18371
18372         * threadpool.c: precise GC and locking fixes.
18373
18374 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18375
18376         * class.c: don't load types that have an explicit unaligned
18377         managed reference. Provide better info in the TypeLoad exception.
18378         Part of the fix for bug #79744.
18379         * object.c: use the correct check for class type load issues.
18380
18381 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18382
18383         * class.c: enforce alignment of fields with managed references
18384         even when Pack=1 is forced by the user (bug #77788).
18385
18386 2006-11-03  Dick Porter  <dick@ximian.com>
18387
18388         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18389         If the address reverse lookup fails, return it as the hostname
18390         anyway.  Fixes bug 79721.
18391
18392 2006-11-03  Dick Porter  <dick@ximian.com>
18393
18394         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18395         Fix build on Windows.
18396
18397 2006-11-02  Dick Porter  <dick@ximian.com>
18398
18399         * icall-def.h: 
18400         * object-internals.h: 
18401         * exception.c (mono_get_exception_thread_interrupted): 
18402         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18403         Fixes bug 74525.
18404
18405         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18406         Check for pending Thread.Interrupt.
18407
18408 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18409         * loader.c: Fixed bug 79684.
18410
18411 2006-10-27  Dick Porter  <dick@ximian.com>
18412
18413         * file-io.c (get_file_attributes): Force symlinks to directories
18414         to be returned as a regular file.  Fixes bug 79733.
18415 2006-10-26  Dick Porter  <dick@ximian.com>
18416
18417         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18418         CreateFile to open a directory then we need to set the
18419         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18420
18421 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18422
18423         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18424         friends.
18425
18426 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18427
18428         * sgengc.c: small cleanup of timer code.
18429
18430 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18431
18432         * sgen-gc.c: fix some warnings and start adding support for
18433         complete object removal on domain unload.
18434
18435 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18436
18437         * assembly.c: build_assembly_name should not consider a version
18438         number without build or revision number invalid. Fixes bug #79715.
18439
18440 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18441
18442         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18443         call kernel32 function OutputDebugString directly.
18444         
18445         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18446         
18447 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18448
18449         * reflection.c: small cleanup, using a function to insert a MonoString
18450         in the string heap.
18451
18452 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18453
18454         * reflection.c: moving GC fixes.
18455
18456 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18457
18458         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18459         all the objects with finalizers belonging to an unloading appdomain.
18460
18461 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18462
18463         * sgen-gc.c: added ability to allocate even when the nursery is fully
18464         pinned and fixed a couple of bugs.
18465
18466 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18467
18468         * threads.h: Revert the last change for now.
18469
18470         * threads.h (mono_thread_get_pending_exception): Rename this to
18471         mono_thread_get_undeniable_exception ().
18472
18473 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18474
18475         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18476         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18477         when fname does not refer to valid assembly. This result in a more
18478         meaningful error message.
18479         * exception.c: added mono_get_exception_bad_image_format2 which 
18480         constructs a BadImageFormatException using the ctor taking a custom
18481         message and the file name. Passing in a NULL msg results in a default
18482         message.
18483         * exception.h: define mono_get_exception_bad_image_format2 function.
18484         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18485         when file name pointed to an invalid IL image. Use 
18486         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18487         as this results in a more meaningful error message.
18488
18489 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18490
18491         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18492         #79465.
18493
18494 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18495
18496         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18497         consistency with the other _size functions.
18498         (mono_type_stack_size): Ditto.
18499
18500         * class.c object.c icall.c: Fix warnings caused by the above change.
18501
18502         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18503
18504         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18505
18506         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18507
18508 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18509
18510         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18511         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18512         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18513         threadpool.h, threads-types.h: mark more internal functions.
18514
18515 2006-10-11  Dick Porter  <dick@ximian.com>
18516
18517         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18518         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18519         reproduce the bug even before applying the fix.)
18520
18521 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18522
18523         * reflection.c: allow retrieving attributes for arguments in generic
18524         methods (bug #79241).
18525
18526 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18527
18528         * debug-mono-symfile.c: properly check fopen () result (found by
18529         coverity).
18530
18531 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18532
18533         * reflection.c: make error message clearer and fixed two
18534         issuelets found by Coverity.
18535
18536 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18537
18538         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18539
18540 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18541
18542         * object-internals.h, gc-internal.h, profiler-private.h:
18543         mark internal functions.
18544
18545 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18546
18547         * reflection.c: put data in the text section.
18548         * icall.c: recognize more types in type_from_typename ().
18549         * process.c, marshal.c: added some GC FIXMEs.
18550
18551 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18552
18553         * loader.c: check for NULL before initializing.
18554
18555 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18556
18557         * gc.c (finalizer_thread): Use a non-alertable wait here.
18558
18559         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18560         until the correct solution is found.
18561
18562 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18563
18564         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18565         modules with no metadata. Fixes #79596.
18566
18567         * image.c (load_metadata_ptrs): Put back the error message when
18568         the #- heap is encountered since the support is not complete yet.
18569
18570 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18571
18572         * gc.c: do not allow the user to SuppressFinalize () a
18573         delegate because it would leak the trampoline if present.
18574
18575 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18576
18577         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18578         PropertyPtr table.
18579
18580 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18581
18582         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18583
18584         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18585
18586         * row-indexes.h: Add definitions for *Ptr tables.
18587
18588         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18589
18590         * metadata.c (mono_metadata_translate_token_index): New helper function to
18591         translate table indexes used in uncompressed metadata.
18592         (mono_metadata_decode_table_row): Ditto.
18593         (mono_metadata_decode_table_row_col): Ditto.
18594
18595         * metadata.c: Add table schema for *Ptr tables.
18596
18597         * class.c loader.c: Use the new helper function to access the affected metadata
18598         tables.
18599         
18600         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18601         #38532.
18602         
18603 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18604
18605         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18606         sequences which can be unbounded in size. Fixes #79583.
18607
18608 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18609
18610         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18611         static initialization.
18612
18613         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18614
18615         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18616
18617         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18618
18619         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18620         ctor fails, i.e. throw the same exception on subsequent accesses.
18621         
18622 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18623
18624         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18625         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18626         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18627         Handle marshalling of interfaces and VARIANTs contained in structs.
18628         
18629         Code is contributed under MIT/X11 license.
18630         
18631 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18632
18633         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18634         
18635         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18636         mempool.
18637
18638 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18639
18640         * console-io.c: ignore previous SIGINT handler.
18641
18642 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18643
18644         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18645         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18646         #79460, #79461, #79485.
18647
18648         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18649
18650         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18651         #79217.
18652
18653 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18654
18655         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18656         could be generated from it.
18657
18658 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18659
18660         * rand.c: fix read loop to correctly handle EINTR.
18661
18662 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18663
18664         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18665         internal calls are defined to keep methods closer to the declaring
18666         type and allow a significant reduction in runtime relocations and
18667         memory usage.
18668
18669 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18670
18671         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18672         exception message to have FileNotFoundException use the default
18673         assembly load error message. Fixes bug #79426.
18674         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18675
18676 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18677
18678         * threadpool.c: (start_thread_or_queue) use the root domain when
18679         creating the thread instead of the async object one.
18680
18681 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18682
18683         * class.c, object.c, class-internals.h, reflection.c:
18684         for arrays, store element_size inside MonoClass (speedup
18685         for array object creation).
18686
18687 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18688
18689         * icall.c: fixed CodeBase to use the file name and not the module
18690         name (bug #79365).
18691
18692 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18693
18694         * mono-debug.c, mono-debug.h: export find_method as
18695         mono_debug_find_method ().
18696
18697 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18698
18699         * debug-helpers.c, class-internals.h: added a few functions useful
18700         when debugging under gdb.
18701
18702 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18703
18704         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18705         characters that need special handling.
18706
18707 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18708
18709         * mono-config.c: make the os/cpu specification more flexible,
18710         allowing lists and negation.
18711
18712 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18713
18714         * marshal.c: COM Interop fixes. Handle case where method->klass.
18715         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18716         calling convention on non-windows platforms. This is for
18717         compatibility with XPCOM and MainWin COM.
18718         
18719         Code is contributed under MIT/X11 license.
18720         
18721
18722 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18723
18724         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18725         correctly. Fixes #79217.
18726
18727         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18728
18729 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18730
18731         * mono-config.c: allow both an os and cpu attribute for dllmap
18732         and dllentry elemnets to enable a single config file to be used
18733         for multiple architectures.
18734
18735 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18736
18737         * loader.c: MonoLoaderError was cleared too soon on load failure.
18738         Fixes bug #79424.
18739
18740 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18741
18742         * icall.c: use the defining class vtable when accessing a
18743         static field, not a pobblibly derived class.
18744
18745 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18746
18747         * icall.c string-icalls.c: Remove references to unicode.h.
18748
18749         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18750
18751         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18752
18753         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18754         indicating the image where custom marshaller types should be looked up.
18755         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18756         custom marshallers, instead of corlib. Fixes #79425.
18757
18758 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18759
18760         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18761
18762 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18763
18764         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18765         Implement Environment.ProcessorCount.
18766         
18767         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18768         Implement Environment.ProcessorCount.
18769         
18770         * icall.c: 
18771         Add Environment.ProcessorCount icall.
18772         
18773         Patch by Jason McFall.
18774
18775 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18776
18777         * assembly.c: don't append .exe/.dll when the filename already contains
18778         one of those extensions.
18779
18780 2006-09-12  Martin Baulig  <martin@ximian.com>
18781
18782         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18783         to array interfaces.
18784
18785 2006-09-11  Martin Baulig  <martin@ximian.com>
18786
18787         * reflection.c (mono_image_build_metadata): Create the
18788         MethodImpl's after emitting all types and methods, so we don't
18789         need another fixup pass for them.
18790
18791 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18792
18793         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18794         change.
18795
18796 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18797
18798         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18799         unload.
18800
18801 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18802
18803         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18804         args is not set. Fixes #78926.
18805
18806 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18807
18808         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18809
18810         * image.c (load_class_names): Move this to class.c, and rename it to 
18811         'mono_image_init_name_cache'.
18812         (load_modules): Fix a warning.
18813
18814         * class.c icall.c image.c: Initialize image->name_cache lazily.
18815
18816         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18817         on its name using information in the AOT file.
18818
18819         * class.c (mono_class_from_name): Use the new hook function.
18820
18821 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18822
18823         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18824         correctly.
18825
18826         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18827         Fixes #79289.
18828         
18829 2006-09-06  Martin Baulig  <martin@ximian.com>
18830
18831         * icall.c (mono_lookup_internal_call): Small fix.
18832
18833 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18834
18835         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18836         double g_free.
18837
18838 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18839
18840         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18841         when --debug is specified.
18842
18843 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18844
18845         * class.c (setup_generic_array_ifaces): Fix a warning.
18846
18847 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18848
18849         * Temporarily remove the patch to assemly.c that checks the
18850         assembly versions as it breaks our gacutil.
18851
18852 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18853
18854         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18855
18856         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18857         a net 1.0 runtime.
18858
18859         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18860         created using the default ctor. Fixes #79152.
18861         (mono_string_builder_to_utf16): Ditto.
18862
18863 2006-09-01  Martin Baulig  <martin@ximian.com>
18864
18865         Fix handling of the generic array interfaces.
18866
18867         * class-internals.h
18868         (MonoDefaults): Removed `generic_array_class' and added
18869         `generic_ilist' class.
18870
18871         * class.c
18872         (mono_bounded_array_class_get): Add the new generic array interfaces.
18873         (setup_generic_array_ifaces): New static method; create vtable
18874         entries for each method in the generic array interfaces.
18875
18876         * metadata.c
18877         (select_container): Allow "parent-less" generic methods.
18878
18879         * marshal.c
18880         (mono_marshal_get_generic_array_helper): New public method.
18881
18882         * icall.c
18883         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18884         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18885         moved the interncall into System.Array.
18886
18887 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18888
18889         A few more cases of avoiding work on types with ->byref set.
18890         Has the real fix for #79238
18891         * icall.c (is_generic_parameter): New helper.
18892         (ves_icall_Type_GetGenericParameterPosition): Use it.
18893         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18894         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18895         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18896         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18897         reference types.
18898         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18899         reference types.
18900         (ves_icall_Type_get_IsGenericInstance): Likewise.
18901         (ves_icall_Type_get_IsGenericType): Likewise.
18902
18903 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18904
18905         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18906         class if possible.
18907
18908         * mempool.h (mono_mempool_get_allocated): New helper function.
18909
18910         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18911         change.
18912
18913         * mempool.c: Fix warnings and the calculation of stats.
18914
18915         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18916
18917         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18918
18919         * loader.c (mono_get_method_from_token): Update method_count stat.
18920
18921         * class-internals.h (MonoStats): Add some stats.
18922
18923 2006-08-31 Robert Jordan  <robertj@gmx.net>
18924
18925         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18926         with managed variants.
18927         All code is contributed under the MIT/X11 license.
18928         
18929 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18930
18931         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18932         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18933
18934         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18935
18936         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18937         with cycles in classes.
18938
18939         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18940
18941         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18942         missing a [MarshalAs] directive. Fixes #79203.
18943
18944         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18945         klass->marshal_info. Fixes #79217.
18946
18947 2006-08-30  Martin Baulig  <martin@ximian.com>
18948
18949         Committing a patch from Joachim Ante <joe@otee.dk>:
18950         Add support for binary data symbol stores.
18951
18952         * debug-mono-symfile.c
18953         (mono_debug_open_mono_symbol_file): Renamed into
18954         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18955         arguments.
18956
18957         * mono-debug.c
18958         (mono_debug_open_image): Added `raw_contents' and `size' args.
18959         (mono_debug_init_2_memory): New public function.
18960
18961 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18962
18963         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18964
18965 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18966
18967         * appdomain.c: implement support for ShadowCopyFiles.
18968
18969 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18970
18971         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18972         when value is NULL (and should remove CID #51).
18973
18974 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18975
18976         * image.c: moved 2 functions to ../utils.
18977
18978 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18979
18980         * gc.c: cope with the target object of a GC handle being NULL
18981         (bug #78877).
18982
18983 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18984
18985         * class.c: recursively check parent's explicit implementations
18986         of interface methods (fixes bug #79125).
18987
18988 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18989
18990         * filewatcher.c: Avoid warnings when building, do not redefine
18991         constants that are defined.
18992
18993         Remove warnings.
18994
18995 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18996
18997         * image.c: don't fail when the link points to an absolute path.
18998
18999 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
19000
19001         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
19002         Fix CID #3.
19003
19004 2006-08-17  Miguel de Icaza  <miguel@novell.com>
19005
19006         * image.c (full_path): A new method used to obtain the actual path
19007         of an assembly even in the presence of symbolic links.  
19008
19009         This is necessary for the case where we are running a binary that
19010         has been GACed, but we are using the "published" path name
19011         ($prefix/mono/1.0/blah.exe) which happens to point to the real
19012         file in the GAC.
19013
19014         This was the source of the failure for the `xsp' command with the
19015         recent AppDomain changes, as far as the runtime was concerned,
19016         there were two different assemblies: $prefix/mono/1.0/blah.exe and
19017         $prefix/mono/gac/blah/version/blah.exe.
19018
19019         (do_mono_image_open): use full path
19020
19021 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19022
19023         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
19024
19025 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
19026
19027         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
19028         domain_id is supplied. Fix CID #241 and corlib's unit tests.
19029
19030 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19031
19032         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
19033         small structures. Fixes #78990.
19034
19035 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19036
19037         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
19038
19039         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
19040
19041 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19042
19043         * appdomain.c:
19044         * marshal.c: don't load all the assemblies from a domain into newly
19045         created ones. The new domains might have different rules and load
19046         assemblies from different locations. Fixes bug #76757.
19047
19048         Patch by Lluis. Conflicts resolved by Brian Crowell.
19049
19050 2006-08-16  Alp Toker  <alp@atoker.com>
19051
19052         * socket-io.c: First half of the fix for #79084.
19053         Set sa_size to the length of the content, not that of the struct.
19054         Don't add NULL suffix to the content, this should be done in
19055         managed code if needed.
19056
19057 2006-08-14  Raja R Harinath  <rharinath@novell.com>
19058
19059         Fix part of #79012
19060         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
19061         mono_metadata_parse_type returns NULL.
19062
19063 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
19064
19065         * normalization-tables.h : new file for string normalization data.
19066         * locales.c, locales.h, icall.c :
19067           added load_normalization_resource() for string normalization,
19068           and icall as well.
19069         * Makefile.am : added normalization-tables.h to the sources.
19070
19071 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
19072
19073         * marshal.c: Add more helper functions to reduce code duplication and use them
19074         everywhere.
19075
19076 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
19077
19078         * marshal.c: Fix non-x86 stdcall warnings.
19079         
19080         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
19081         them everywhere.
19082
19083 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
19084
19085         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
19086         type check on multi-dimensional arrays. Fixes #79000.
19087
19088 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
19089
19090         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
19091         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
19092         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
19093         * class-internals.h: add is_com_object to class structure.
19094         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
19095         null checks to COM object marshalling. Fix .ctor call on RCW.
19096         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
19097         
19098         All code is contributed under the MIT/X11 license.
19099
19100 2006-08-09  Dick Porter  <dick@ximian.com>
19101
19102         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
19103         racing mono_monitor_allocator_lock() somewhere, so don't delete
19104         the critical section for now.  Found by running and exiting
19105         monodevelop.
19106
19107 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
19108
19109         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
19110         (ves_icall_System_ComObject_FindInterface): Ditto.
19111         (ves_icall_System_ComObject_CacheInterface): Ditto.
19112
19113         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
19114         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
19115
19116 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19117
19118         * threadpool.c: treat pipes from process asynchronous reads as sockets
19119         when reading from them, so we get select/poll or epoll to wait for
19120         data.
19121
19122 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
19123
19124         * loader.c: Fix a typo (CID #233) in the null check.
19125
19126 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
19127
19128         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
19129         Hopefully fixes #78949.
19130         
19131         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
19132         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
19133         bytes. Fixes #78972.
19134
19135 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19136
19137         * filewatcher.c: we need to set errno here.
19138
19139 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19140
19141         * filewatcher.c: let Win32Exception get the error value.
19142
19143 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19144
19145         * filewatcher.c: translate errno into win32 errors for Win32Exception
19146         to know what happened.
19147
19148 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
19149
19150         * threadpool.c: Fix more warnings.
19151
19152         * assembly.c (search_loaded): Fix warnings.
19153
19154         * threadpool.c (mono_thread_pool_finish): Fix warnings.
19155         (mono_async_invoke): Ditto.
19156
19157 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
19158
19159         * object.c (mono_remote_class_vtable): Need to create proxy vtable
19160         entries for __ComObject type in addition to ComImport types.
19161         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
19162         about hash table.
19163         
19164         All code is contributed under the MIT/X11 license.
19165
19166 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
19167
19168         * image.c: avoid tentative loading of modulerefs that contain
19169         no metadata (P/Invoke library names).
19170
19171 2006-07-28  Dick Porter  <dick@ximian.com>
19172
19173         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
19174         mono_loader_lock() somewhere, so don't delete the critical section
19175         for now.  Found by running and exiting monodevelop.
19176
19177 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19178
19179         * filewatcher.c: define the inotify syscalls when we're building on
19180         linux and have sys/syscall.h. The build system might not have support
19181         for inotify but the target system might have it.
19182
19183 2006-07-26  Miguel de Icaza  <miguel@novell.com>
19184
19185         * domain.c: Documentation updates.
19186
19187         * loader.c (mono_free_method): Do not release the method
19188         information if we are being profiled, as profilers will use this
19189         information at shut down to present some data to the user.
19190
19191         This is needed so that the profiler does not crash, as the
19192         profiler tends to keep MonoMethods around, and they might become
19193         invalid if we free these.
19194
19195         (mono_get_method_constrained): Return the original CIL stream
19196         method as well, so verification can be performed against it.
19197
19198 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19199
19200         * filewatcher.[ch]: support for inotify file system watcher.
19201         * icall.c: add new internal calls for the inotify file system watcher.
19202
19203 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19204
19205         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
19206         #78888.
19207
19208 2006-07-20  Dick Porter  <dick@ximian.com>
19209
19210         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
19211         warning.
19212
19213 2006-07-20  Dick Porter  <dick@ximian.com>
19214
19215         * threads.c (start_wrapper): Do the thread cleanup while we still
19216         hold a reference to its object.  Fixes bug 78123.
19217
19218 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
19219
19220         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
19221         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
19222           "managed-to-managed".
19223         * icall.c: Redirect string constructors that take sbyte* to
19224           ves_icall_System_String_ctor_RedirectToCreateString.
19225         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
19226           to CreateString () methods with matching signature.
19227         * reflection.c: Use original security informations for
19228           MONO_WRAPPER_MANAGED_TO_MANAGED.
19229         * security-manager.c: Use original security informations for
19230           MONO_WRAPPER_MANAGED_TO_MANAGED.
19231         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
19232           that is a placeholder and only its address should be used.
19233         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
19234           that is a placeholder and only its address should be used.
19235
19236 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
19237
19238         Begin implementing COM Interop.
19239         * appdomain.c: Increment corlib version.
19240         * class.c: Set ComImport classes' parent to __ComObject.
19241         * loader.c: Mark cominterop methods as such.
19242         * domain.c: Add __ComObject class to MonoDefaults structure.
19243         * image.c: Add 2 hashtables to the image for COM Interop related methods
19244         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
19245         using the mempool allocator
19246         
19247         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
19248         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
19249         declaration for mono_metadata_type_dup_mp.
19250         
19251         * debug-helpers.c: Added strings for two additional wrapper types
19252         * object.c: Create proxy objects for ComImport classes
19253         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
19254         and added __ComObject class to MonoDefaults structure.
19255         
19256         * object-internals.h: Finish MonoRealProxy definition, and add definition of
19257         MonoComInteropProxy and MonoComObject.
19258         
19259         * marshal.c: Added support for COM Interop
19260         (signature_cominterop): Converts managed signature to corresponding
19261         unmanaged COM signature.
19262         (cominterop_get_function_pointer): gets unmanaged function pointer via
19263         COM object vtable
19264         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
19265         (cominterop_get_method_interface): returns interface type that method is defined on
19266         (mono_mb_emit_cominterop_call): emits native call to function pointer
19267         gotten from vtable
19268         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
19269         that matches signature of unmanaged function.
19270         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19271         (cominterop_get_invoke): forwards call from proxy to __ComObject
19272         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19273         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19274         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19275         
19276         * marshal.h: Added Marshal icall declarations.
19277         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19278         so we can access them in finalizer
19279         
19280 2006-07-14  Dick Porter  <dick@ximian.com>
19281
19282         * object.c (mono_type_initialization_cleanup): Fix a race
19283         condition by temporarily commenting out the critical section
19284         deletion.
19285
19286 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19287
19288         * reflection.c (create_custom_attr): Fix some warnings.
19289         (create_custom_attr_data): Ditto.
19290         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19291         types. Fixes #78855.
19292
19293 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19294
19295         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19296
19297         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19298
19299 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19300
19301         * reflection.c (resolve_object): Add support for DynamicMethod.
19302
19303         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19304         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19305
19306 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19307
19308         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19309         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19310
19311 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19312
19313         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19314         Fixes #77888.
19315
19316 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19317
19318         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19319         slightly: remove a shadow local variable.
19320
19321 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19322
19323         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19324         definition that introduces the virtual function slot.
19325         Also fix Coverity #105.
19326
19327 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19328
19329         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19330         for dynamic assemblies. Fixes #78724.
19331
19332 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19333
19334         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19335         Fixes #78722.
19336
19337 2006-06-21  Martin Baulig  <martin@ximian.com>
19338
19339         * reflection.c
19340         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19341         fixes #76484.
19342
19343 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19344
19345         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19346
19347 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19348
19349         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19350         nor TYPEREFs.
19351         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19352         Inflate result if necessary.
19353         (mono_class_get_full): Remove old version.  Rename from
19354         'mono_class_get' and add 'context' argument.  Pass it to
19355         ..._create_from_typespec.
19356         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19357         (mono_ldtoken): Revert change below.
19358
19359 2006-06-20  Martin Baulig  <martin@ximian.com>
19360
19361         * class.c (mono_ldtoken): Don't pass the generic context to
19362         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19363
19364 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19365
19366         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19367         and later freeing it. Fixes #78638.
19368
19369 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19370
19371         * icall.c (mono_class_get_throw): Revert over-zealous error
19372         throwing, the caller for mono_class_get_throw will cope with
19373         errors when classes are not properly initialized already.
19374
19375         The code still copes with loader exceptions though.
19376
19377         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19378         
19379 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19380
19381         Fixes the `make run1' version of RuntimeAbort (to be commited,
19382         source is in Bugzilla).
19383         
19384         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19385         FALSE on class loading failure instead of returning true.
19386
19387         * class.c (mono_class_create_from_typedef): It is possible for
19388         mono_metadata_interfaces_from_typedef_full to fail if a class is
19389         not found, cope with this.
19390         
19391
19392 2006-06-14  Dick Porter  <dick@ximian.com>
19393
19394         * socket-io.c: 
19395         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19396         4.1.1
19397
19398 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19399
19400         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19401
19402 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19403
19404         * icall.c: Another fix for building mono in Visual Studio.
19405
19406 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19407
19408         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19409         
19410 2006-06-09  Martin Baulig  <martin@ximian.com>
19411
19412         * debug-mono-symfile.c: Put this back and really fix it this
19413         time. Sorry for all the trouble.
19414
19415 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19416
19417         * icall.c (mono_class_get_throw): Fix a warning.
19418         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19419         ReflectionTypeLoadException if needed. Fixes #78606.
19420
19421         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19422         (mono_class_init): Ditto.
19423
19424         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19425         ref_only exceptions.
19426         (mono_loader_clear_error): Make this work even if there is no error.
19427
19428 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19429
19430         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19431         Marshal.GetComSlotForMethodInfo using internal call.
19432
19433 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19434
19435         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19436         a function for signalling it.
19437
19438         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19439         a referenced assembly is not found.
19440
19441         * loader.c (mono_loader_error_prepare_exception): Add support for 
19442         LOADER_ERROR_ASSEMBLY. Fix formatting.
19443
19444 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19445
19446         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19447         for VARIANT marshalling on windows and increment corlib version
19448         since Variant struct was added.
19449
19450 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19451
19452         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19453         stack trace line information:
19454
19455         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19456         (Martin) when looking up B which is between A and C, return A not C.
19457
19458         Bug is #78573.
19459
19460         Thanks to Alexander Olk for tracking this down.
19461
19462 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19463
19464         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19465         
19466         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19467         avoid clobbering its value.
19468         (mono_string_to_lpstr): Fix a warning on windows.
19469
19470 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19471
19472         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19473
19474         * reflection.c loader.c: Removed references to 'dummy' flag.
19475
19476         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19477
19478         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19479         it gets GC tracking.
19480
19481         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19482         GC tracking.
19483         
19484         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19485
19486         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19487
19488         * appdomain.c: Bump corlib version.
19489
19490 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19491
19492         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19493         CEE_STIND_REF when working with object references.
19494
19495 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19496
19497         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19498         Fixes #78539.
19499
19500 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19501
19502         * loader.c (method_from_memberref): Fix argument value for
19503         mono_loader_set_error_method_load (I was passing the MonoClass
19504         instead of the class name char *).
19505
19506 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19507
19508         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19509         CEE_STIND_REF when working with object references.
19510
19511 2006-05-30  Martin Baulig  <martin@ximian.com>
19512
19513         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19514         mono_method_full_name() change and replace the ':' with a '.'
19515         here.
19516
19517 2006-05-30  Martin Baulig  <martin@ximian.com>
19518
19519         * debug-mono-symfile.c
19520         (mono_debug_symfile_lookup_location): Fix the algorithm:
19521         when looking up B which is between A and C, return A not C.
19522
19523 2006-05-29  Martin Baulig  <martin@ximian.com>
19524
19525         * mono-debug.h
19526         (MonoDebugMethodInfo): Make the typedef public.
19527         (MonoDebugSourceLocation): New public struct.
19528
19529         * mono-debug.c
19530         (mono_debug_source_location_from_address): Removed.
19531         (mono_debug_source_location_from_il_offset): Removed.
19532         (mono_debug_il_offset_from_address): Removed.
19533         (mono_debug_address_from_il_offset): Removed.
19534         (mono_debug_lookup_method): New public function.
19535         (mono_debug_lookup_source_location): New public function; replaces
19536         the old mono_debug_source_location_from_*() functions; see the
19537         inline documentation.
19538         (mono_debug_free_source_location): New public function.
19539         (mono_debug_print_stack_frame): New public function; see the
19540         inline documentation.
19541
19542         * debug-mono-symfile.c
19543         (mono_debug_find_source_location): Renamed into
19544         mono_debug_symfile_lookup_location(); only take a
19545         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19546         documentation.
19547         (mono_debug_find_method): Renamed into
19548         mono_debug_symfile_lookup_method().
19549
19550 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19551
19552         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19553         returned by mono_image_open_full ().
19554
19555         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19556         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19557         #78517.
19558
19559         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19560         #78518.
19561
19562 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19563
19564         * class.c (mono_class_from_typeref): handle missing images
19565         earlier, deals with bug #78418.   Refactor code; 
19566
19567         Fix a warning introduced in my previous commit (some stale code
19568         from before I revisited my patch).
19569
19570         * class.c (mono_class_create_from_typedef): On failure, remove the
19571         class from the MonoImage->class_cache as the class is not
19572         initialized;   Fixes the leak pointed out by Paolo.
19573
19574 2006-05-25  Dick Porter  <dick@ximian.com>
19575
19576         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19577         DeleteCriticalSections until I figure out which one may still be
19578         sometimes locked when mono_thread_cleanup is called.
19579
19580 2006-05-24  Dick Porter  <dick@ximian.com>
19581
19582         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19583         of mono_thread_manage and back into its own function, so it can be
19584         called after the finalizer thread has finished.
19585
19586         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19587
19588 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19589
19590         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19591         Fixes #78495.
19592
19593         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19594         with non-blittable elements.
19595         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19596
19597 2006-05-24  Martin Baulig  <martin@ximian.com>
19598
19599         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19600         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19601
19602         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19603         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19604         `mono_debugger_event_handler' to NULL.
19605
19606 2006-05-24  Martin Baulig  <martin@ximian.com>
19607
19608         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19609
19610 2006-05-24  Martin Baulig  <martin@ximian.com>
19611
19612         * mono-debug-debugger.h
19613         (mono_debugger_create_notification_function): Added
19614         `MonoCodeManager *' argument.
19615
19616 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19617
19618         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19619
19620 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19621
19622         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19623         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19624         implementation.
19625
19626 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19627
19628         * icall.c: precise GC support: objects can't be stored in unmanaged
19629         memory anymore, even if they are kept alive by other references: since
19630         they can move the GC needs to be able to always find them.
19631
19632 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19633
19634         * object.c: precise GC support for static fields. Support
19635         for moving GCs: write barriers and pinned allocation for interned
19636         strings.
19637
19638 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19639
19640         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19641         structure.
19642
19643 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19644
19645         * class.c, gc.c: sgen and precise GC updates.
19646
19647 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19648
19649         * marshal.h, marshal.c: added write barrier wrapper and precise type
19650         fixes.
19651
19652 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19653
19654         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19655         support.
19656
19657 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19658
19659         * reflection.c: precise and sgen GC updates.
19660
19661 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19662
19663         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19664
19665 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19666
19667         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19668
19669 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19670
19671         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19672         MONO_TYPE_OBJECT. Fixes #78462.
19673
19674 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19675
19676         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19677         and blittable types.
19678
19679 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19680
19681         * class.c (mono_class_get_exception_for_failure): Implement parts
19682         of a TODO: if the loader error is set (instead of the class
19683         error), we return a Loader exception that can be properly thrown
19684         elsewhere.
19685
19686         This was exposed by some Winforms 2.0 code that I tried to run
19687         (Atsushi pointed me to it).
19688
19689 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19690
19691         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19692         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19693         
19694         * marshal.c (emit_marshal_vtype): Add limited support for 
19695         UnmanagedType.LPStruct. Fixes #78427.
19696
19697         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19698         Applied a patch from kangaroo to fix #77523.
19699
19700 2006-05-17  Martin Baulig  <martin@ximian.com>
19701
19702         * threads.c
19703         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19704         (debugger_thread_created): Removed.
19705         (debugger_thread_exited): Removed.
19706
19707 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19708
19709         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19710
19711         * object-internals.h (MonoReflectionResource): Sync with managed version.
19712
19713 2006-05-12  Wade Berrier <wberrier@novell.com>
19714
19715         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19716
19717 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19718
19719         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19720         functions try to allocate from the image mempool.
19721
19722 2006-05-12  Dick Porter  <dick@ximian.com>
19723
19724         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19725
19726 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19727
19728         * object.c: The FieldGetter and FieldSetter methods require the full
19729         name of the class, not only the name. Fixes bug #78277.
19730
19731 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19732
19733         * loader.c (method_from_memberref): Do not pass the NULL klass to
19734         mono_loader_set_error_() methods.  Pass the non-NULL value
19735         (class). 
19736
19737 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19738
19739         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19740         (mono_assembly_close): Null out assembly->image->references after freeing it.
19741
19742         * image.c (mono_image_close): Free image->references.
19743         
19744         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19745
19746 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19747
19748         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19749         before checking if it's NULL (g_assert).
19750
19751 2006-05-10  Martin Baulig  <martin@ximian.com>
19752
19753         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19754         I thought I already killed that two months ago, but now it somehow reappeared.
19755
19756 2006-05-10  Martin Baulig  <martin@ximian.com>
19757
19758         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19759
19760 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19761
19762         * reflection.c: Allocate memory for dynamically created methods in the image
19763         mempools.
19764
19765 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19766
19767         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19768         don't use the ad pointer before checking if it's NULL (g_assert).
19769
19770 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19771
19772         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19773         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19774
19775         * marshal.c: Allocate all signatures from mempools.
19776
19777         * marshal.c: Allocate some more signatures from mempools.
19778
19779 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19780
19781         * object.c (mono_load_remote_field): The code used to provide a
19782         temporary variable for returning results if the user did not
19783         provide a result pointer.  But our temporary variable was allocted
19784         on the satck.
19785
19786         Fix calling code to always pass a result area.   Coverity ID 103.
19787
19788 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19789
19790         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19791         value, not the old. Fixes #78312.
19792         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19793
19794         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19795         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19796         per-image cache.
19797
19798         * assembly.c (mono_assembly_close): Free image->references.
19799
19800         * assembly.c (mono_assembly_names_equal): Fix a warning.
19801         (mono_assemblies_cleanup): Cleanup more global data.
19802
19803         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19804
19805         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19806         ptr_cache and image->modules.
19807
19808         * image.c (mono_image_init): Allocate array_cache lazily.
19809         
19810 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19811
19812         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19813         behavior was changed recently and has bad side effects.
19814
19815 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19816
19817         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19818         
19819         * assembly.c (mono_assembly_close): Remove a debug printf.
19820
19821         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19822
19823         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19824         to also allow for temporary references between mono_image_open ()/close ().
19825
19826         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19827
19828 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19829
19830         * marshal.c: Fix support for dynamic methods.
19831
19832         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19833
19834         * marshal.c (mono_marshal_cleanup): New cleanup function.
19835
19836         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19837         image mempools.
19838
19839         * class.c (mono_class_init): Fix leaking class->nested_classes.
19840
19841         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19842
19843         * image.c (mono_image_init): Initialize the new cashes.
19844
19845         * image.c (mono_image_close): Destroy the new cashes.
19846
19847         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19848
19849         * mempool.c (mono_mempool_strdup): New helper function.
19850
19851         * class-internals.h: Add prototype for mono_loader_unlock ().
19852
19853         * domain.c (mono_jit_info_table_find): Fix a warning.
19854         (mono_debugger_check_runtime_version): Ditto.
19855
19856         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19857         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19858         functions to these modules.
19859
19860         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19861         metadata modules.
19862         
19863         * marshal.c (mono_free_bstr): Fix a warning.
19864
19865         * assembly.c (mono_assembly_open_full): Fix another small leak.
19866
19867         * object.c: Fix some unload leaks in the remoting code.
19868
19869         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19870         function.
19871
19872         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19873
19874         * reflection.c: Fix some unload leaks in dynamic assemblies.
19875
19876 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19877
19878         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19879         * marshal.h: Add BSTR support on Win32
19880         * icall.c: Add BSTR icalls
19881         * metadata.h: Add BSTR enums
19882
19883 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19884
19885         Work to catch the crash from #76795 and turn it into an
19886         exception.   As I stubbed out pieces of the VisualBasic support,
19887         I found a number of places where the code was failing and I added
19888         checks to those places. 
19889         
19890         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19891         function return a status code.  If we fail to parse the signature
19892         from mono_metadata_parse_generic_inst, return FALSE.
19893
19894         * loader.c (mono_get_method_from_token): If we fail to load the
19895         method (mono_class_get) return NULL.   
19896
19897         * (method_from_memberref): Return NULL if we are unable to parse
19898         the method signature
19899
19900         (mono_loader_error_prepare_exception): Since we now use the
19901         loader_error flag internally to stop processing, and obtaining
19902         exceptions that might be thrown will walk this code path the
19903         proper way of going from a MonoLoaderError into a
19904         MonoException was convoluted.   This new routine encapsulates the
19905         process of turning the error into an exception and *clearing* the
19906         error afterwards.
19907         
19908 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19909
19910         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19911         with missing assemblies), and to cope with:
19912
19913                 * Missing fieldref from a non-existing assembly.
19914                 * Missing methodref from a non-existing assembly.
19915
19916         The first batch of work to address *some* of the issues from 76661.
19917         
19918         * object.c (mono_class_create_runtime_vtable): If we fail to
19919         initialize the class raise the exception here. 
19920
19921         * metadata.c (mono_class_get_overrides_full): If any methods fail
19922         to load return the failure to the caller.
19923
19924         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19925         flagging assemblies that failed to load.   
19926
19927         Do not crash if we are unable to load the assembly.
19928
19929         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19930         assemblies. 
19931
19932         * loader.c (mono_loader_set_error_type_load): Change the
19933         convention to always pass unallocated strings, so we make our own
19934         copies (I know our own code had duplicated strings before, but
19935         this keeps the normal conventions).
19936         (method_from_memberref): Call mono_loader_set_error_method_load
19937         for all possible failures of loading the class. 
19938         Remove assert, turn into a loader error.
19939
19940         (mono_loader_error_to_exception): Move this routine from mini
19941         (mini_loader_error_to_exception) there was no need to have that in
19942         mini. 
19943
19944         * class.c (mono_class_from_typeref): If we were not able to load
19945         the assembly with mono_assembly_load_reference, call the
19946         mono_loader_set_error_type_load to register the problem.
19947
19948         (mono_class_setup_fields): If we fail to load the type from
19949         mono_metadata_parse_type_full, call mono_class_set_failure and
19950         break from the loop.
19951
19952         If class->exception_type is set, we do not layout the fields as
19953         that might crash the runtime, and instead return (from breaking
19954         from the previous loop).
19955
19956         (mono_class_setup_vtable): This now returns a boolean indicating
19957         whether the table was properly setup.   The decision is driven by
19958         mono_class_get_overrides_full which might run into non-existing
19959         methods. 
19960         
19961         (mono_class_init): Returns TRUE on success or FALSE if there was a
19962         problem in loading the type (incorrect assemblies, missing
19963         assemblies, methods, etc).
19964
19965         When we call mono_class_setup_fields we also check for a potential
19966         error inside this call (either a class exception or a general
19967         loader exception).
19968
19969         (mono_class_create_from_typedef): If the parent fails to load
19970         (calling mono_class_get_full) return NULL.
19971         
19972         ** Important **
19973
19974         calls to mono_metadata_parse_type_full should be checked
19975         everywhere and set the mono_class_set_failure
19976         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19977
19978         The current patch checks the places where my manually constructed
19979         tests show the errors are showing up, but we should do it
19980         everywhere. 
19981
19982         ** Important2 **
19983
19984         mono_class_init return values should be tested everywhere, like
19985         the previous case this is something that we should audit
19986         everywhere and not only on the cases exposed by the tests I
19987         created. 
19988
19989 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19990
19991         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19992         boolean parameter and instead pass the information on `options'
19993         parameter (FileOptions).
19994
19995         * icall.c: Register the new signature for MonoIO.Open.
19996
19997         * debug-helpers.c (dis_one): Trying to understand how coverity
19998         works.  Fix Run 5, item 78.
19999
20000 2006-04-26  Dick Porter  <dick@ximian.com>
20001
20002         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
20003         dereference.
20004
20005 2006-04-25  Martin Baulig  <martin@ximian.com>
20006
20007         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
20008
20009         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
20010         debugger_thread_created().
20011         (debugger_gc_push_all_stacks): Don't handle the main thread in any
20012         special way.
20013         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
20014         (mono_debugger_finalize_threads): New function; undo the effects
20015         of mono_debugger_init_threads().
20016         (mono_debugger_create_all_threads): Removed.
20017
20018 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
20019
20020         * image.c (mono_image_close): Tidy up trace messages.
20021
20022         * assembly.c (mono_assembly_close): Ditto.
20023
20024         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
20025         no longer references an already freed assembly. Fixes #78168.
20026
20027 2006-04-21  Dick Porter  <dick@ximian.com>
20028
20029         * threads.c (mono_thread_detach): Fix reference counting when
20030         detaching threads.
20031
20032 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
20033
20034         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
20035         #78155.
20036
20037 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
20038
20039         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
20040         (mono_type_to_stind): Ditto.
20041
20042         * marshal.c: Use the new helper functions to simplify code.
20043
20044         * image.c (mono_image_close): Add some code for help debug assembly unloading
20045         problems.
20046
20047         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
20048         image mempool.
20049
20050         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
20051         assembly was already loaded in another appdomain. Fixes #78083.
20052
20053 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
20054
20055         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
20056         referenced assemblies.
20057         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
20058
20059         * domain.c (mono_domain_free): Add a trace message.
20060
20061         * appdomain.c (add_assemblies_to_domain): Ditto.        
20062
20063         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
20064         field.  
20065
20066 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
20067
20068         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
20069
20070 2006-04-12  Martin Baulig  <martin@ximian.com>
20071
20072         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
20073         `USE_INCLUDED_LIBGC'.   
20074
20075 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
20076
20077         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
20078         the patch contains ../ and a small directory name later. Hopefully fixes
20079         #78035.
20080
20081 2006-04-10  Martin Baulig  <martin@ximian.com>
20082
20083         Clean up the debugger's thread-handling code.
20084
20085         The debugger's thread-handling code has been moved from
20086         ../mini/debug-debugger.c to threads.c.  We now iterate directly
20087         over the `threads' hash, keep track of exiting threads and also
20088         use proper locking.
20089
20090         We can now debug XSP and XSP based applications with the debugger.
20091
20092         * object-internals.h (MonoThread): Added `gpointer end_stack'.
20093
20094         * threads.h
20095         (MonoThreadCallbacks): Removed; this was only used by the debugger.
20096         (mono_install_thread_callbacks): Likewise.      
20097
20098         * threads.c (mono_thread_callbacks): Removed.
20099         (debugger_thread_created, debugger_thread_exited): New static functions.
20100         (start_wrapper): Call debugger_thread_created().
20101         (thread_cleanup): Call debugger_thread_exited().
20102         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
20103         (mono_debugger_init_threads): New public function.
20104         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
20105         iterate directly over the `threads' hash and also use proper locking.
20106
20107         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
20108
20109         * mono-debug-debugger.h
20110         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
20111
20112 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
20113
20114         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
20115         argument type=array. Fixes #78057.
20116
20117 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
20118
20119         * culture-info-table.h : regenerated. Fixed bug #69652.
20120
20121 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
20122
20123         * loader.c metadata.c: Reapply a variant r59116.
20124         
20125         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
20126
20127         * class.c (mono_class_setup_interface_offsets): New internal function.
20128
20129         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
20130         interfaces too. Fixes #77398.
20131
20132         * reflection.c (encode_cattr_value): Add support for 
20133         parameter type=object, argument type=array.
20134         (load_cattr_value): Ditto. Fixes #77916.
20135
20136         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
20137         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
20138
20139         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
20140         a byval char array and CharSet is Ansi.
20141
20142         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
20143
20144 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
20145
20146         * metadata.c: Add some locking comments.
20147         
20148         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
20149         mempool.
20150         (mono_metadata_free_method_signature): Don't free the signature itself.
20151
20152         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
20153
20154         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
20155         reference the same MonoImage.
20156         (mono_assembly_load_from_full): Add an assert.
20157
20158 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
20159
20160         * image.c (mono_image_close): Don't put the image we are about to free into the
20161         loaded_images_guid_hash.
20162
20163         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
20164         to reduce code duplication.
20165
20166         * marshal.c: Register the native functions called by this module as icalls, to
20167         somewhat centralize the creation of MonoMethodSignature's.
20168
20169         * loader.c (mono_method_signature): Add a cache for method signatures.
20170
20171         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
20172         the parameter attributes of a method.
20173         (mono_metadata_parse_method_signature_full): Refactored the computation of
20174         parameter attributes into a separate function. Also avoid one allocation in
20175         most cases.
20176
20177         * assembly.c (mono_assembly_close): Ditto.
20178
20179         * image.c (mono_image_close): Log trace messages with INFO level.
20180
20181         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
20182
20183         * image.c reflection.c: Correct reference counting of image modules.
20184         
20185         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
20186         of this function from the image mempool.
20187         
20188         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
20189         to allow more cached types to be used.
20190
20191         * mono-debug.c (mono_debug_add_method): Appled patch from
20192         David S. Miller  <davem@sunset.davemloft.net>: Access 
20193         minfo->lexical_blocks[] entry elements using read32().
20194
20195 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
20196
20197         * loader.c (mono_free_method): No longer free the method header for non-dynamic
20198         methods as it is allocated from the mempool.
20199
20200         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
20201         image mempool.
20202
20203         * metadata-internals.h: Add comments describing the reference counting scheme
20204         used for MonoImage and MonoAssembly.
20205
20206         * image.c assembly.c reflection.c: Rework reference counting of images and 
20207         assemblies so they are freed when the runtime is shut down. Free some 
20208         additional memory structures when an image is unloaded.
20209         
20210 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
20211
20212         * class.c loader.c reflection.c: Allocate more data structures in
20213         the image mempool.
20214
20215 2006-03-31  Miguel de Icaza  <miguel@novell.com>
20216
20217         * icall.c
20218         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
20219         build on pre glib 2.4 systems.
20220
20221 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
20222
20223         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
20224
20225         * icall.c: Fix some warnings.
20226
20227 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
20228
20229         * culture-info-table.h : regenerated.
20230
20231 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
20232
20233         * threads.c, object-internals.h, verify.c: changed the culture caching
20234         code to use a normal MonoArray for storage so the GC can keep track of
20235         them easily. Fixed bits of the cache logic, too and simplified the
20236         code.
20237
20238 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
20239
20240         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
20241         thread for non-Boehm GCs.
20242
20243 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
20244
20245         * domain.c, object.c, domain-internals.h: reduce the amount of memory
20246         needed to keep track of the data for static fields.
20247
20248 2006-03-29  Raja R Harinath  <rharinath@novell.com>
20249
20250         Fix #75172
20251         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
20252         for interface classes.  Use 'num_methods' instead.
20253         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
20254         before using '->vtable_size' field.
20255
20256 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
20257
20258         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
20259         doesn't contain managed pointers, so use a normal hashtable.
20260
20261 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
20262
20263         * reflection.c, class-internals.h, domain.c: fixed handling of types
20264         used as values for objects in custom attributes (bug #77915):
20265
20266 2006-03-24  Martin Baulig  <martin@ximian.com>
20267
20268         * class.c (mono_class_setup_fields): Added support for generic
20269         instances; fixes #77580.
20270
20271 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20272
20273         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20274
20275 2006-03-24  Dick Porter  <dick@ximian.com>
20276
20277         * file-io.c (get_file_attributes): More stat macro breakage.
20278         Fixes bug 77759.
20279
20280 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20281
20282         * profiler.c: added the file=filename option in the default profiler
20283         to output the profile data to filename.
20284
20285 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20286
20287         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20288         bug #77877.
20289
20290 2006-03-22  Martin Baulig  <martin@ximian.com>
20291
20292         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20293         allocated `MonoClassField *' in `fb->handle'.
20294
20295 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20296
20297         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20298         allocate interface ID to save memory and allow better ID reuse on
20299         appdomain unload. setup_generic_vtable () removal from Martin.
20300
20301 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20302
20303         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20304         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20305         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20306         write barriers for reference stores with managed objects accessed with
20307         C structures in the runtime and in embedding programs.
20308
20309 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20310
20311         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20312         'interface_id' and 'max_interface_id' fields of MonoClasses
20313         representing open generic types.
20314
20315 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20316
20317         * object.h, object.c, icall.c: added functions to deal with
20318         storing valuetypes that contain references in managed objects.
20319         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20320         fixes and comments around uses of mono_array_addr ().
20321
20322 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20323
20324         * object.h, icall.c, monitor.c: object.GetHashCode ()
20325         implementation that supports the moving garbage collector.
20326
20327 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20328
20329         * icall.c, threads-types.h, threads.c: implemented finalizer for
20330         LocalDataStoreSlot.
20331
20332 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20333
20334         * metadata.c (mono_type_size): Add a fixme.
20335         (mono_type_stack_size): Ditto.
20336
20337         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20338         'type_forwarders' field.
20339
20340         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20341         attribute from net 2.0.
20342
20343         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20344         from class.c.
20345
20346         * class.c (mono_class_setup_fields): Fix a warning.
20347         
20348         * class.c (mono_class_from_name): Add support for assemblyref entries
20349         in the EXPORTEDTYPE table.
20350
20351         * reflection.c: Add support for handling type forwarders under net 2.0.
20352
20353         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20354         
20355 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20356
20357         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20358         overwriting entries in ModuleBuild->types, also clean up the code
20359         a little. Fixes #77774.
20360
20361 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20362
20363         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20364         load friend assembly info when present.
20365
20366 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20367
20368         Fix crasher on gtest-158.cs.
20369         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20370         the return value if the MonoClass we want is yet in an
20371         inconsistent state.
20372         * class.c (mono_class_create_from_typedef): Add an comment
20373         explaining an order dependency between mono_class_setup_parent and
20374         mono_class_setup_mono_type.
20375
20376 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20377
20378         * class.c: documentation updates and events bug fix.
20379
20380 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20381
20382         * class.c: some cleanup, locking fixes.
20383
20384 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20385
20386         * class.c: fix the generics code to setup nested
20387         type info to the instantiated type (bug #77770).
20388
20389 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20390
20391         * marshal.c: fixed a few type correctness issues.
20392
20393 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20394
20395         * loader.c: the Set/Get/Addrtess array methods should be public.
20396
20397 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20398
20399         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20400         
20401         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20402         info->wrapper.
20403
20404 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20405
20406         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20407
20408         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20409
20410         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20411         (mono_mempool_alloc0): Ditto.
20412
20413 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20414
20415         * socket-io.c:
20416         (create_object_from_sockaddr): it was allocating 4 extra bytes
20417         for the AF_UNIX data. Fixes bug #77747.
20418
20419 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20420
20421         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20422
20423 2006-03-09  Dick Porter  <dick@ximian.com>
20424
20425         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20426         Fixes bug 76966 again.
20427
20428 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20429
20430         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20431         names from r57532
20432         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20433
20434 2006-03-07  Martin Baulig  <martin@ximian.com>
20435
20436         * object.c
20437         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20438
20439 2006-03-07  Martin Baulig  <martin@ximian.com>
20440
20441         * class.c
20442         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20443         regression introduced in r56970; see gtest-252.cs.
20444
20445         * loader.c (mono_get_method_constrained): Correctly handle generic
20446         methods; see gtest-253.cs.
20447
20448 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20449
20450         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20451
20452 2006-03-04  Martin Baulig  <martin@ximian.com>
20453
20454         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20455         compute the parent type at runtime, just like we're already doing
20456         it for interfaces.
20457
20458         * reflection.c
20459         (mono_reflection_bind_generic_parameters): Don't compute the
20460         parent type anymore.
20461
20462         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20463
20464 2006-03-04  Martin Baulig  <martin@ximian.com>
20465
20466         * mono-debug-debugger.h
20467         (mono_debugger_create_notification_function): Allocate memory at
20468         runtime and return a pointer to it.
20469
20470 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20471
20472         * assembly.c: Fix windows build.
20473         
20474         * assembly.c: Fix build.
20475
20476         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20477
20478         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20479         
20480 2006-03-03  Dick Porter  <dick@ximian.com>
20481
20482         * process.c
20483         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20484         Check parameters before dereferencing them.  Fixes Aaron's part of
20485         bug 77393.
20486
20487 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20488
20489         Fix performance regression.
20490         * loader.c (find_method_in_class): Add 'from_class' argument.
20491         Rename 'klass' argument to 'in_class'.  The signature is compared
20492         against the method in 'in_class', and the corresponding method is
20493         returned from 'from_class'.
20494         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20495         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20496         type definition and generic instantiation in parallel.
20497         (mono_get_method_constrained): Update to changes.
20498
20499 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20500
20501         * threads.c: make sure the domain is correct, too when doing
20502         mono_thread_attach ().
20503
20504 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20505
20506         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20507         windows. Fixes #77683.
20508
20509 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20510
20511         * object.h, *: introduced specific way to set elements of an array
20512         of references to be used as write barrier. Still need to audit the
20513         uses of mono_array_addr.
20514
20515 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20516
20517         * object-internals.h: New field to cache the assmebly name, patch
20518         from Tambet Ingo (tambet@ximian.com)
20519
20520 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20521
20522         * decimal.h, class-internals.h, metadata-internals.h,
20523         file-io.h: mark a few function declarations as internal, to
20524         reduce the number of PLT entries.
20525
20526 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20527
20528         * file-io.c: fix typo in warning message.
20529
20530 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20531
20532         * loader.c: on unix, lookup the "*A" version of a function
20533         if charset is auto as a second option before failing.
20534
20535 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20536
20537         * class.h (mono_class_inflate_generic_method): Revert to two
20538         argument version.
20539         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20540         (mono_class_inflate_generic_method_full): Add.
20541         * class.c (mono_class_inflate_generic_method_full): Rename from
20542         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20543         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20544         * loader.c, reflection.c: Update to changes.
20545
20546 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20547
20548         * icall.c: const fixes and small improvements.
20549
20550 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20551
20552         * threadpool.c: for asynchronous connect(), enable the same workaround
20553         for BSD 6 as for the Mac. Fixes bug #77637.
20554
20555 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20556
20557         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20558         formatted classes. Fixes #77524.
20559
20560 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20561
20562         * class.c (inflate_generic_type): Add a couple more
20563         micro-optimizations.
20564         (inflate_generic_context): Don't use the 'gmethod' from
20565         'inflate_with'.
20566         (mono_class_inflate_generic_method): If the method has generic
20567         parameters, but the passed-in context doesn't have a 'gmethod',
20568         create one.  Use the possibly simplified generic instantiation
20569         from the declaring class instead of the one passed in.
20570
20571 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20572
20573         Make generic method signature and method header handling lazy.
20574         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20575         (inflate_generic_header): Likewise.
20576         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20577         parameter to avoid inflating types.
20578         (mono_get_inflated_method): Empty out.
20579         * class.h (mono_class_inflate_generic_method): Update to changes.
20580         * loader.c (mono_get_method_from_token): Don't parse signature for
20581         generic methods, nor methods of generic classes.
20582         (mono_method_signature): Rename from 'mono_method_signature'.
20583         Inflate signature on demand.
20584         (mono_method_get_header): Inflate method header on demand.
20585         * reflection.c: Update to changes.
20586
20587 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20588
20589         * metadata.c (mono_metadata_inflate_generic_inst): If the
20590         instantiation is closed, don't bother expanding it in the new
20591         context.
20592         * class.c (inflate_generic_class): If the generic instantiation
20593         doesn't change after inflation, return the argument itself.
20594         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20595         Add bounds checks.
20596         (inflate_generic_context): If neither the generic class nor the
20597         generic method instantiations change, return the original context.
20598         * reflection.c (mono_method_get_object): Do
20599         'mono_get_inflated_method' before accessing the ->klass field.
20600         (inflate_mono_method): Don't create a MonoGenericMethod unless
20601         necessary.
20602         (inflate_method): Don't pass a constructed type as the declaring
20603         type of a methodbuilder.
20604
20605 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20606
20607         * object.c: fix memory overwrite.
20608
20609 2006-02-22  Dick Porter  <dick@ximian.com>
20610
20611         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20612         it doesn't work any more.
20613         (mono_threads_request_thread_dump): Fix unused variable warnings.
20614
20615 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20616
20617         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20618         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20619         the public header file.
20620
20621 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20622
20623         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20624
20625 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20626
20627         * class-internals.h, object.c: reduce the size of MonoVTable
20628         and store the interface_offsets array at negative offsets.
20629
20630 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20631
20632         * metadata.c: tweak table descriptors data structures to reduce
20633         size and runtime relocations.
20634
20635 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20636
20637         * marshal.c: fix some types and opcodes to be type-safe
20638         in marshaling wrappers.
20639
20640 2006-02-21  Ankit Jain  <jankit@novell.com>
20641
20642         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20643
20644 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20645
20646         * metadata.c (get_constraints): Relax debugging checks for monodis.
20647
20648 2006-02-21  Ankit Jain  <jankit@novell.com>
20649
20650         * metadata.c (mono_metadata_load_generic_params): Move the code
20651         checking for ambiguous generic params from here to mono/dis/get.c
20652         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20653
20654 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20655
20656         Fix assertion triggered when compiling nemerle.
20657         * class.c (mono_get_shared_generic_inst): Rename from
20658         get_shared_inst and make non-static.
20659         * loader.c (mono_get_shared_generic_method): New.  Used to create
20660         the MonoGenericContext-equivalent of a MonoGenericContainer.
20661         (mono_get_method_from_token): Initialize the 'context' field of
20662         the created MonoGenericContainer.
20663         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20664         * metadata.c (get_constraints): Add sanity check.
20665         * class-internals.h: Add new internal methods.
20666
20667         * reflection.c (verify_safe_for_managed_space): New sanity check.
20668         Currently checks that owner-less generic parameters aren't allowed
20669         in managed space.
20670         (mono_type_get_object): Use it.
20671         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20672         that are now in mono_type_get_object.
20673         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20674
20675 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20676
20677         * metadata.c (mono_type_create_from_typespec): Rename from
20678         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20679         argument and caching of types in the generic container.
20680         (unwrap_arrays, find_generic_param): Remove.
20681         * metadata-internals.h: Update.
20682         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20683
20684 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20685
20686         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20687
20688         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20689         return values. Fixes #77581.
20690
20691         * class.c (mono_fnptr_class_get): Switch name and name_space.
20692
20693         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20694         classes and add support for [In, Out] attributes.
20695         (mono_marshal_free_asany): Ditto. Fixes #77524.
20696
20697 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20698
20699         * class.c (mono_class_from_generic_parameter): Make more robust to
20700         incomplete MonoGenericContainers from monodis.
20701
20702 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20703
20704         * class-internals.h: added some more exception types.
20705         * class.c, metadata.c: added a few checks to handle missing
20706         types.
20707
20708 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20709
20710         Use owner-less generic-params some more.
20711         * class.c (my_mono_class_from_generic_parameter): Remove.
20712         (mono_class_from_generic_parameter): Handle null image,
20713         param->name and param->owner.
20714         (mono_class_from_mono_type): Update.
20715         (mono_class_create_from_typespec): Remove 'container' parameter.
20716         If that parameter is non-null, the result is always inflated by
20717         'mono_class_get_full' anyway.
20718         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20719         parameter.
20720         (mono_class_get_full): Update.
20721
20722         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20723         instance is not open, don't bother inflating.
20724         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20725         parse metadata for inflated classes.
20726         (_mono_class_get): Change GenericContext* parameter to
20727         GenericContainer*.
20728         (mono_class_create_from_typespec): Likewise.  Simplify, and
20729         implement trivially.  All the cases are handled in
20730         mono_class_from_mono_type.  Don't inflate returned class.
20731         (mono_class_get_full): Delegate GENERICINST optimization to
20732         inflate_generic_type.
20733         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20734
20735 2006-02-16  Dick Porter  <dick@ximian.com>
20736
20737         * socket-io.c (create_object_from_sockaddr): Fix typo.
20738         (create_sockaddr_from_object): Check array lengths before
20739         potentially accessing items off the end.
20740         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20741         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20742         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20743         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20744         length checks to avoid wraparound overflows.
20745         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20746         contents of the array of sockets
20747         (hostent_to_IPHostEntry2)
20748         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20749         Check return value of inet_ntop ().
20750         (addrinfo_to_IPHostEntry): Fix typo
20751
20752 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20753
20754         Type metadata parsing doesn't use generic-instantiation information.
20755         * metadata.c (mono_metadata_parse_array_full): Change
20756         MonoGenericContext* parameter to MonoGenericContainer*.
20757         (mono_metadata_parse_type_full): Likewise.
20758         (mono_type_create_from_typespec_full): Likewise.
20759         (mono_metadata_parse_mh_full): Likewise.
20760         (mono_metadata_parse_generic_inst): Likewise.
20761         (do_mono_metadata_parse_generic_class): Likewise.
20762         (do_mono_metadata_parse_type): Likewise.
20763         * metadata-internals.h: Update to changes.
20764         * class.c (mono_class_find_enum_basetype): Likewise.
20765         (mono_class_setup_fields): Likewise.
20766         (mono_class_create_from_typespec): Likewise.
20767         * loader.c (method_from_methodspec): Likewise.
20768         (mono_get_method_from_token): Likewise.
20769         (mono_method_get_header): Likewise.
20770
20771 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20772
20773         * marshal.c: handle additional GENERICINST case (patch from
20774         Thong Nguyen <tum@veridicus.com>).
20775         Fix a few cases where LDIND_I/STIND_I was used for references.
20776
20777 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20778
20779         * reflection.c (mono_reflection_get_token): Remove unused variable.
20780
20781 2006-02-16  Martin Baulig  <martin@ximian.com>
20782
20783         * reflection.c (mono_reflection_get_token): Add support for fields
20784         in instantiated generic types.
20785
20786         * icall.c
20787         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20788
20789 2006-02-15  Martin Baulig  <martin@ximian.com>
20790
20791         * icall.c
20792         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20793         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20794         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20795         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20796
20797 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20798
20799         * class.c, metadata.c, metadata.h, object.c, icall.c,
20800         marshal.c: changed mono_type_get_underlying_type () to do
20801         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20802         Fixed handling of instantiated generic valuetypes (bug #75479).
20803
20804 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20805
20806         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20807         Delegate to mono_metadata_decode_value, and work on the returned value.
20808
20809         * icall.c (ves_icall_MonoType_GetGenericArguments):
20810         Add consistency check here too.
20811         
20812 2006-02-15  Ankit Jain  <jankit@novell.com>
20813
20814         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20815         char/short etc.
20816
20817 2006-02-15  Ankit Jain  <jankit@novell.com>
20818
20819         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20820         signed values, used only for representing lower bounds of arrays.
20821         (mono_metadata_parse_array_full): Use new
20822         mono_metadata_decode_signed_value to decode lower bounds.
20823
20824 2006-02-14  Martin Baulig  <martin@ximian.com>
20825
20826         * reflection.c
20827         (mono_reflection_get_token): Support "MonoGenericMethod" and
20828         "MonoGenericCMethod" and allow generic instances / methods.
20829
20830 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20831
20832         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20833         to obtain the terminal size using an ioctl.
20834
20835         * object.c (mono_nullable_init): Revert this as nullable reference
20836         types are not valid.
20837         (mono_nullable_box): Ditto.
20838
20839 2006-02-09  Dick Porter  <dick@ximian.com>
20840
20841         * threads.c (mono_thread_detach): Drop a reference to the thread
20842         we're detaching.
20843
20844 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20845
20846         * object.c (mono_nullable_init): Handle nullable reference types.
20847         (mono_nullable_box): Ditto. Fixes #77446.
20848
20849 2006-02-07  Martin Baulig  <martin@ximian.com>
20850
20851         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20852
20853 2006-02-07  Ankit Jain  <jankit@novell.com>
20854
20855         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20856         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20857         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20858         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20859         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20860         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20861
20862 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20863
20864         * class.c (mono_class_create_generic): Set type_token as well.
20865
20866         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20867         compatible with MS.
20868
20869 2006-02-02  Martin Baulig  <martin@ximian.com>
20870
20871         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20872         has never been used so far.
20873
20874 2006-02-02  Martin Baulig  <martin@ximian.com>
20875
20876         * mono-debug-debugger.h: Changed comment at the top of this file;
20877         the header is not installed, but it's safe to #include it from
20878         within the JIT.
20879
20880         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20881         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20882
20883 2006-02-02  Martin Baulig  <martin@ximian.com>
20884
20885         * mono-debug.h
20886         (MonoSymbolTable): Removed the `metadata_info' field.
20887
20888         * mono-debug.c
20889         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20890
20891         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20892         (mono_debugger_add_builtin_types): Removed.
20893         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20894         (mono_debugger_create_notification_function): We now operate on a
20895         pre-allocated area; take a `gpointer' and return `void'.
20896
20897         * mono-debug-debugger.c
20898         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20899         (mono_debugger_add_builtin_types): Removed.
20900
20901 2006-02-02  Martin Baulig  <martin@ximian.com>
20902
20903         * threads.c (mono_debugger_create_all_threads): New public method.
20904
20905 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20906
20907         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20908         breaks on several platforms.
20909
20910 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20911
20912         * assembly.c: the VS.NET build doesn't supply default values for
20913         MONO_ASSEMBLIES and MONO_CFG_DIR.
20914
20915 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20916
20917         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20918         helper function.
20919
20920         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20921
20922         * loader.c (method_from_memberref): Fix a warning.
20923
20924         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20925
20926         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20927         with explicit layout. Fixes #77433.
20928
20929 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20930
20931         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20932         max_interface_id is initialized before using it. Fixes #77398.
20933         (ves_icall_Type_GetInterfaces): Ditto.
20934
20935 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20936
20937         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20938         allocate memory for parameter attributes when parsing memberref
20939         signatures.
20940         * loader.c (mono_loader_set_error_method_load): Don't warn.
20941         (method_from_memberref): Ensure MissingMethodException gets thrown
20942         if method is not found.  Make warning more informative.
20943
20944 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20945
20946         Fix #77397
20947         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20948         return true if is byref.
20949         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20950         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20951         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20952
20953 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20954
20955         Fix tests/find-method.2.il
20956         * loader.c (find_method, find_method_in_class): Remove is_inflated
20957         argument.  Revert 2006-01-18 change.
20958         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20959         is generic, search for method in its generic definition.
20960         * class.c (mono_class_setup_vtable_general): Print generic
20961         arguments of generic types in debugging printf.
20962
20963 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20964
20965         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20966
20967         * threads.c (mono_threads_request_thread_dump): New helper function.
20968
20969 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20970
20971         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20972
20973 2006-01-25  Ankit Jain  <jankit@novell.com>
20974
20975         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20976         move definition to ..
20977         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20978         
20979 2006-01-25  Ankit Jain  <jankit@novell.com>
20980             Raja R Harinath  <rharinath@novell.com>
20981
20982         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20983         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20984         as necessary.
20985
20986 2006-01-25  Martin Baulig  <martin@ximian.com>
20987
20988         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20989         `MonoDebuggerThread' into debug-debugger.c.
20990
20991 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20992
20993         * profiler.c: fix printing of data.
20994
20995 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20996
20997         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20998           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20999
21000 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
21001
21002         * object.c: fix deadlock related to string interning.
21003
21004 2006-01-23  Martin Baulig  <martin@ximian.com>
21005
21006         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
21007
21008         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
21009
21010 2006-01-23  Martin Baulig  <martin@ximian.com>
21011
21012         * mono-debug.h: Moved the prototypes of some functions which are
21013         used by the JIT here from mono-debug-debugger.h.
21014
21015 2006-01-21  Martin Baulig  <martin@ximian.com>
21016
21017         * Makefile.am: Don't install mono-debug-debugger.h.
21018
21019 2006-01-21  Martin Baulig  <martin@ximian.com>
21020
21021         * mono-debug-debugger.h: Enforce the private status of this header
21022         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
21023         Moved some stuff from mono-debugger-jit-wrapper.h here.
21024
21025 2006-01-20  Raja R Harinath  <rharinath@novell.com>
21026
21027         * class.c (mono_class_from_typeref): Add a sanity test to help
21028         catch lack of assembly load/search hooks.
21029
21030 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
21031
21032         * marshal.c (emit_struct_conv): Relax the fields with same offset
21033         check even more. Fixes #77230.
21034
21035 2006-01-18  Martin Baulig  <martin@ximian.com>
21036
21037         * loader.c (find_method_in_class): Added `gboolean is_inflated'
21038         argument; if false, we compare the uninstantiated signatures.
21039         (method_from_memberref): Compare the uninstantiated signatures;
21040         fixes #76417.
21041
21042 2006-01-18  Robert Jordan  <robertj@gmx.net>
21043
21044         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
21045         Clear the weak link. Fixes bug #77170.
21046
21047         * gc.c (mono_gchandle_free):
21048         Reflect *-gc.c changes (tiny optimization).
21049
21050 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
21051
21052         * metadata.c (mono_metadata_signature_dup): Applied patch from
21053         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
21054         Fixes #77288.
21055
21056 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
21057
21058         * marshal.c (emit_struct_conv): Allow fields with the same offset when
21059         marshalling from native to managed code. Fixes #77230.
21060
21061 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21062
21063         * threadpool.c: fix problem (Mac only) when more than one asynchronous
21064         connect. Fixes bug #77020.
21065
21066 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
21067
21068         * class.c: fixed id assignement for nested interfaces (bug #77275).
21069         Added also better info for --print-vtable debugging.
21070
21071 2006-01-12  Martin Baulig  <martin@ximian.com>
21072
21073         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
21074         interfaces on-the-fly; fixes #76625.
21075
21076         * class-internals.h
21077         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
21078         don't need that anymore.
21079
21080 2006-01-12  Miguel de Icaza  <miguel@novell.com>
21081
21082         * socket-io.c
21083         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
21084         To avoid initing the nested_classes when not needed I turned the
21085         PeerCredData as a toplevel internal class, as it has to be shared
21086         anyways. 
21087
21088         Fixes the CASA issue.
21089
21090 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
21091
21092         * domain.c: Accessors for MonoJitInfo
21093
21094         * profiler-private.h: Add jitinfo to the end jit hook
21095
21096         * profiler.[ch]: Define new hooks, called after jitting which give
21097         the MonoJitInfo that was compiled
21098
21099 2006-01-10  Martin Baulig  <martin@ximian.com>
21100
21101         * class.c (mono_class_setup_events): Add support for generic
21102         classes; fixes #76440.
21103
21104 2006-01-06  Raja R Harinath  <rharinath@novell.com>
21105
21106         Fix #77160.
21107         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
21108         on passed-in method.
21109
21110 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
21111
21112         * object.c (mono_runtime_invoke_array): Add Nullable support.
21113
21114         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
21115
21116 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
21117
21118         * file-io.c: Don't consider sockets as directory and avoid an endless
21119         loop. Fix bug #76966.
21120
21121 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
21122
21123         * object.c (mono_nullable_init): New helper function.
21124         (mono_nullable_box): Ditto.
21125
21126         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
21127
21128         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
21129
21130         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
21131         
21132 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
21133
21134         * class.c (mono_class_is_assignable_from): Make T assignable to 
21135         Nullable<T>.
21136
21137 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
21138
21139         * appdomain.c: Bump corlib version to 46.
21140         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
21141         serialization purpose) and changed ves_icall_System_Reflection_
21142         Assembly_get_code_base signature to accept a boolean (to escape, or 
21143         not, the assembly code base).
21144
21145 2005-12-23  Dick Porter  <dick@ximian.com>
21146
21147         * icall.c: 
21148         * threads-types.h: 
21149         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
21150         CreateEvent icall now returns "created" boolean parameter.
21151
21152 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
21153
21154         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
21155         #76967.
21156
21157         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
21158         when attr_klass is an interface. Fixes #77045.
21159
21160 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
21161
21162         * marshal.c (emit_struct_conv): Fix previous patch.
21163         
21164         * marshal.c (emit_struct_conv): Add a check for fields with the same
21165         offset.
21166
21167 2005-12-20  Raja R Harinath  <rharinath@novell.com>
21168
21169         Fix regression in Mono.C5.
21170         * class.c (mono_class_create_generic): If 'klass' is an interface
21171         set up the interface offsets.
21172         (mono_class_is_assignable_from): Don't throw away generic arguments.
21173
21174 2005-12-19  Raja R Harinath  <rharinath@novell.com>
21175
21176         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
21177         type parameters.
21178
21179 2005-12-15  Raja R Harinath  <rharinath@novell.com>
21180
21181         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
21182         dead store.
21183         (do_mono_metadata_parse_generic_class): Don't pass the current
21184         generic context when parsing the type being instantiated: it
21185         cannot use it, anyway.
21186
21187         * loader.c (method_from_memberref): Don't inflate a signature if
21188         it doesn't contain any type parameters.
21189
21190 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
21191
21192         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
21193
21194 2005-12-14  Martin Baulig  <martin@ximian.com>
21195
21196         * class.c
21197         (mono_type_get_name_recurse): Don't return null for type
21198         parameters and open generic classes.
21199         (mono_class_setup_methods): Don't exclude generic instances.
21200         (mono_get_unique_iid): Use different IDs for different
21201         instantiations of the same generic type.
21202         (mono_class_setup_vtable): Only use setup_generic_vtable() for
21203         open generic instances; create a normal vtable for closed generic
21204         instances.
21205         (mono_class_setup_vtable_general): We're now also called for
21206         closed generic instances.
21207
21208         * reflection.c
21209         (mono_reflection_bind_generic_parameters): Correctly use
21210         mono_metadata_lookup_generic_inst() everywhere.
21211
21212 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
21213
21214         * object.c (mono_class_create_runtime_vtable): Call 
21215         mono_class_setup_vtable ().
21216
21217         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
21218         function.
21219         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
21220         #76959.
21221
21222         * loader.c (mono_loader_set_error_type_load): Print the type load
21223         warnings to the console so they are more visible to the user.
21224         (mono_loader_set_error_method_load): Ditto.
21225
21226         * reflection.c (ensure_runtime_vtable): Revert the last change as it
21227         is still broken.
21228         
21229         * reflection.c (ensure_runtime_vtable): Fix build.
21230
21231         * reflection.c (ensure_runtime_vtable): Disable an optimization which
21232         doesn't work in all cases.
21233
21234 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
21235
21236         * object.c (mono_array_new_full): Treat a single dimensional array
21237         with 0 lower bounds as an szarray. Fixes #76973.
21238
21239         * reflection.c (custom_attr_visible): Really fix this.
21240
21241 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
21242
21243         * reflection.c (custom_attr_visible): Allow nested public attributes
21244         as well.
21245
21246         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
21247         interface check.
21248
21249 2005-12-12  Raja R Harinath  <harinath@gmail.com>
21250
21251         * class.c (set_generic_param_owner): Delete.
21252         (mono_class_create_from_typedef): Don't set ->owner field of
21253         generic parameters to "param containers" of enclosing classes.
21254         * reflection.c (mono_reflection_initialize_generic_parameter):
21255         Likewise.
21256
21257 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
21258
21259         * reflection.c (custom_attr_visible): Fix build.
21260
21261 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
21262
21263         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
21264         private attributes.
21265         
21266         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
21267         handling of null parameter defaults.
21268
21269 2005-12-09  Raja R Harinath  <rharinath@novell.com>
21270
21271         * class.c (mono_class_from_generic_parameter): Don't set
21272         klass->generic_container.
21273         (my_mono_class_from_generic_parameter): Likewise.
21274
21275 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21276
21277         * reflection.c (load_public_key): Fix a warning.
21278         (method_encode_code): Fix unaligned accesses.
21279
21280 2005-12-07  Martin Baulig  <martin@ximian.com>
21281
21282         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21283
21284         * reflection.c
21285         (write_generic_param_entry): Encode our custom attrs.
21286
21287         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21288
21289 2005-12-07  Martin Baulig  <martin@ximian.com>
21290
21291         * reflection.c (encode_new_constraint): Removed; we don't use the
21292         `NewConstraintAttribute' anymore.
21293
21294 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21295
21296         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21297         not fire a TypeResolve event when Assembly.GetType () is called.
21298
21299 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21300
21301         Beginning of support for nullable types in the runtime. Parts of
21302         this patch are from Martin.
21303
21304         * appdomain.c (MONO_CORLIB_VERSION): Bump
21305
21306         * domain.c (mono_init_internal): get the nullable type
21307
21308         * class.c (mono_class_is_nullable): New method
21309         (mono_class_get_nullable_param): New mehod
21310         (mono_class_create_generic): In types T? set cast_class to T
21311
21312         * class-internals.h (MonoDefaults): new nullable default class
21313         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21314         new methods.
21315
21316 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21317
21318         * metadata.c (select_container): New.  Refactor code to select the
21319         appropriate GenericContainer given the type of generic parameter
21320         we are looking for.
21321         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21322         not a MonoGenericContext.  Use select_container.  Update parameters.
21323         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21324         and MONO_TYPE_MVAR.
21325         (unwrap_arrays): Remove duplicate tests.
21326         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21327         generic instantiated class to find any arguments that are generic
21328         parameters.
21329         (mono_type_create_from_typespec_full): Use find_generic_param to
21330         avoid evicting some generic instantiations from the typespec
21331         cache.
21332
21333 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21334
21335         * reflection.c: fixed writing of doubles on ARM FPA.
21336
21337 2005-12-02  Robert Jordan  <robertj@gmx.net>
21338
21339         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21340
21341 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21342
21343         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21344         least on SUSE 10 they are not the same (on debian, they are just the
21345         same thing).
21346
21347 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21348
21349         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21350         DeclaringType for VARs and MVARs.
21351         * class.c (set_generic_param_owner): Fix initialization of owner
21352         fields.
21353
21354 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21355
21356         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21357
21358 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21359
21360         * threadpool.c: workaround for a bug that shows up on the Mac:
21361         select()+connect() on a blocking socket is not like it should
21362         be, so we proceed to connect() in that case, wasting the I/O
21363         threadpool thread until connect succeedes. Fixes bug #75436.
21364
21365 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21366
21367         * threadpool.c: fix typo when setting file descriptor states.
21368
21369 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21370
21371         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21372         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21373         create a temporary signature container.
21374         (mono_metadata_parse_generic_param): Update to changes.
21375         (mono_type_create_from_typespec_full): Update to changes.
21376         * loader.c (method_from_memberref): Don't use a
21377         MonoGenericContainer while parsing a memberref signature.
21378         (method_from_methodspec): Remove dead-store of the 'container'
21379         variable.  It's overwritten before use.
21380
21381         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21382         checks tighter.
21383         (mono_metadata_parse_generic_param): Likewise.
21384         * loader.c (find_method_in_class): Does not need a
21385         MonoGenericContainer.  Use 'mono_method_signature' rather than
21386         'mono_method_signature_full'.
21387         (find_method, mono_get_method_constrained, method_from_memberref):
21388         Update to changes.
21389
21390         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21391         owner-less generic-parameters are never evicted from the typespec
21392         cache.
21393
21394         * loader.c (method_from_memberref): Don't use the current context
21395         when parsing signatures.
21396         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21397
21398         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21399         side-effects in g_assert.
21400         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21401         that we don't potentially lose information.
21402
21403 2005-11-26  Dick Porter  <dick@ximian.com>
21404
21405         * icall.c:
21406         * threads.c: icalls to implement basic (ie, not named)
21407         System.Threading.Semaphore.
21408
21409 2005-11-24  Dick Porter  <dick@ximian.com>
21410
21411         * process.c
21412         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21413         Use GetProcessId() if it's available.
21414
21415 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21416
21417         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21418
21419 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21420             Ankit Jain  <jankit@novell.com>
21421
21422         * loader.c (mono_get_method_from_token): Initialize 'method' field
21423         of all generic parameters before parsing the signature.  Remove
21424         code that "fixed"-up MVAR references.
21425
21426 2005-11-23  Ankit Jain  <jankit@novell.com>
21427
21428         * metadata.c (mono_metadata_has_generic_params):
21429         (mono_metadata_load_generic_param_constraints):
21430         (mono_metadata_load_generic_params): Move duplicate code ...
21431         (mono_metadata_get_generic_param_row): ... here. Returns the
21432         first row-id in GenericParam table for a given owner (token).
21433         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21434         prototype.
21435
21436 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21437             Ankit Jain  <jankit@novell.com>
21438
21439         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21440         comparing VARs too.
21441         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21442         type->data.generic_param only if the type is an MVAR.
21443         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21444         leak owner-less VARs and MVARs into managed space.
21445
21446 2005-11-21  Martin Baulig  <martin@ximian.com>
21447
21448         * class-internals.h
21449         (MonoMethod): Moved the `generic_container' here from
21450         `MonoMethodNormal' since we now also need it for
21451         `MonoMethodPInvoke';
21452         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21453         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21454         an union containing both `MonoMethodNormal' and
21455         `MonoMethodPInvoke'.
21456
21457         * loader.c
21458         (mono_get_method_from_token): Allow implementing generic methods
21459         as interncalls.
21460
21461         * threads.c
21462         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21463         icall.
21464
21465 2005-11-17  Dick Porter  <dick@ximian.com>
21466
21467         * icall.c: 
21468         * process.h: 
21469         * process.c: Split the Process Start_internal icall into
21470         ShellExecuteEx_internal and CreateProcess_internal, which are
21471         called depending on whether UseShellExecute is true.  Fixes bug
21472         76670.
21473
21474         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21475
21476 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21477
21478         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21479         'msize' parameters, use the information in 'mspec' instead.
21480         (emit_object_to_ptr_conv): Ditto.
21481
21482         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21483         fields out of order. Fixes #76733.
21484
21485 2005-11-17  Ankit Jain  <jankit@novell.com>
21486
21487         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21488
21489 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21490
21491         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21492           bug #76575.
21493
21494 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21495
21496         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21497         for types with non-auto layout. Fixes #76717.
21498
21499 2005-11-16  Ankit Jain  <jankit@novell.com>
21500
21501         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21502         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21503         if generic_context is null.
21504           (mono_metadata_generic_param_equal): param->owner can be null.
21505           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21506         null.
21507
21508 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21509
21510         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21511         the correct value.
21512
21513 2005-11-15  Martin Baulig  <martin@ximian.com>
21514
21515         * object.c (set_value): Use mono_class_from_mono_type() instead of
21516         the hack for generic instances; fixes #76136.
21517
21518 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21519
21520         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21521         fields.
21522
21523         * image.c (load_metadata_ptrs): Initialize the new fields.
21524
21525         * reflection.c (create_dynamic_mono_image): Ditto.
21526
21527         * reflection.c (build_compressed_metadata): Use the new fields.
21528
21529         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21530         icall.
21531
21532         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21533         icall.
21534         
21535 2005-11-15  Ankit Jain  <jankit@novell.com>
21536             Raja R Harinath  <harinath@gmail.com>
21537
21538         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21539         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21540         new per-generic_container cache if the cached MonoType's context matches
21541         the current context.
21542           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21543         to the expected context.
21544           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21545
21546 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21547
21548         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21549         we changed the signature of an icall.
21550         * icall.c: Modify to mono_double_ParseImpl return true/false 
21551         depending on the success, instead of throwing the exception. This will
21552         help us in Double.TryParse methods.
21553         
21554 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21555
21556         * marshal.c (emit_marshal_object): Throw an exception when
21557         marshalling 'object' instead of crashing. Fixes #76696.
21558
21559 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21560
21561         * class-internals.h: Add prototype for mono_type_get_full_name ().
21562
21563 2005-11-11  Dick Porter  <dick@ximian.com>
21564
21565         * threads.c (mono_thread_manage): Make sure the main thread has
21566         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21567
21568 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21569
21570         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21571         console about the missing type.
21572         (mono_loader_set_error_method_load): Ditto.
21573
21574 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21575
21576         * mono-config.c (mono_get_config_dir): Set the system defaults if
21577         none is specified.
21578
21579         * assembly.c (mono_set_dirs): New API entry point to set the
21580         assembly and the config directory in one call
21581
21582 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21583
21584         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21585         the ftnptr was created from a delegate in a domain other than the
21586         current domain. Fixes #75377.
21587
21588         * exception.h exception.c: Add mono_get_exception_not_supported ().
21589
21590 2005-11-08  Martin Baulig  <martin@ximian.com>
21591
21592         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21593
21594 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21595
21596         * security-manager.h: Added definitions to deal with strongname key 
21597         pairs bigger (and smaller) than 1024 bits.
21598         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21599         adjust wrt the public key length being used.
21600
21601 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21602
21603         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21604           Windows build (r51396-51397).
21605
21606 2005-11-03  Martin Baulig  <martin@ximian.com>
21607
21608         * class.c (mono_class_setup_vtable_general): Also add generic
21609         methods to the vtable; fixes #76581.
21610
21611 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21612
21613         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21614         sure that we lookup GetString method from the System.Text.Encoding
21615         class, not the derived class or we get an empty method.
21616
21617         Fixed class #76612.
21618
21619 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21620
21621         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21622         if it has been previously set (embedders). 
21623
21624         Make mono_set_rootdir available also on Unix.
21625
21626 005-10-24  Robert Jordan  <robertj@gmx.net>
21627
21628         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21629
21630 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21631
21632         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21633         only calls which are made to native code use this flag.
21634
21635         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21636
21637 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21638
21639         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21640         Add support for FieldBuilders.
21641
21642 2005-10-29  Martin Baulig  <martin@ximian.com>
21643
21644         * mono-debug.c
21645         (mono_debug_using_mono_debugger): New public method; returns
21646         whether we're running inside the debugger.
21647
21648 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21649
21650         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21651         for Method/Constructor/FieldBuilders.
21652
21653 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21654
21655         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21656         and fields as well.
21657
21658 2005-10-26  Martin Baulig  <martin@ximian.com>
21659
21660         * mono-debug-debugger.c
21661         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21662
21663 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21664
21665         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21666         integer to isspace.
21667
21668 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21669
21670         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21671         when passing valuetypes byref. Fixes #76502.
21672
21673 2005-10-19  Jackson Harper  <jackson@ximian.com>
21674
21675         * profiler.c: Don't put a . in front of types that are not in a
21676         namespace.
21677
21678 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21679
21680         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21681
21682 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21683
21684         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21685         #76436.
21686         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21687
21688 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21689
21690         * assembly.c metadata-internals.h icall.c: Define an additional
21691         parameter for mono_assembly_name_parse_full, so we can avoid creating
21692         S.R.AssemblyName.Version when no version info wasn't passed.
21693         
21694 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21695
21696         * class.c (mono_type_get_full_name): Reimplement method that was
21697         removed. 
21698
21699         * image.c: Some docs
21700
21701 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21702
21703         * profiler.c (output_newobj_profile): Fix printing of Total memory
21704         on x86.
21705
21706 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21707
21708         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21709
21710 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21711
21712         * threads.c: remove debug output.
21713
21714 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21715
21716         * threads.c (mono_thread_manage): Fix crashes if more than 64
21717         threads need to be aborted. Hopefully fixes #75899.
21718
21719         * assembly.c (mono_stringify_assembly_name): New helper function.
21720
21721         * class.c: Use mono_stringify_assembly_name instead of the similar
21722         static function.
21723
21724         * assembly.h assembly.c: Add support for calling a postload search 
21725         hook if an assembly cannot be loaded.
21726
21727         * appdomain.c: Register new search hooks which call the AssemblyResolve
21728         events in AppDomain. Fixes #75231
21729
21730 2005-10-07  Martin Baulig  <martin@ximian.com>
21731
21732         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21733         methods without debug info.
21734
21735 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21736
21737         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21738         wrappers.
21739
21740 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21741
21742         * file-io.c: now that we return symlinks, use lstat and, when the file
21743         is a symbolic link, stat, to get the file attributes. Also avoid the
21744         conversion to/from utf16/external.
21745
21746 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21747
21748         * class.c (mono_class_layout_fields): Compute klass->has_references
21749         correctly if an embedded valuetype is not yet initialized. Fixes
21750         #76331.
21751
21752 2005-10-04  Martin Baulig  <martin@ximian.com>
21753
21754         * metadata.c
21755         (mono_metadata_load_generic_param_constraints): New public
21756         function; splitted the constraints loading out from
21757         mono_metadata_load_generic_params().
21758
21759         * class.c (mono_class_create_from_typedef): Call
21760         mono_metadata_load_generic_param_constraints() after setting up
21761         the type and creating our parent; fixes #75329.
21762
21763 2005-10-04  Martin Baulig  <martin@ximian.com>
21764
21765         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21766         non-dynamic parent classes.
21767
21768 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21769
21770         * file-io.c : win32 build fix (ETXTBSY seems not found).
21771
21772 2005-10-04  Martin Baulig  <martin@ximian.com>
21773
21774         * reflection.c
21775         (mono_image_get_methodspec_token): Make the cache actually work;
21776         fixes #75974.
21777
21778 2005-10-04  Martin Baulig  <martin@ximian.com>
21779
21780         * class.c (mono_class_name_from_token): Removed the unneccessary
21781         `MonoGenericContext *' argument.
21782
21783 2005-10-04  Martin Baulig  <martin@ximian.com>
21784
21785         * loader.c
21786         (method_from_methodspec): Make the caching work again; fixes the
21787         performance regression from #76262.
21788
21789 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21790
21791         * file-io.c:
21792         * file-io.h:
21793         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21794         GetFileSystemEntries that performs the same work but without going
21795         into io-layer, locking, etc.
21796
21797 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21798
21799         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21800         ThreadState_Stopped as well. Fixes #76047.
21801
21802 2005-09-29  Martin Baulig  <martin@ximian.com>
21803
21804         * class.c
21805         (inflate_generic_context): If the new context has a `gmethod', set
21806         its `container' that that gmethod's `container'.
21807
21808         * metadata.c
21809         (mono_metadata_parse_generic_param): Simplify things;
21810         `generic_container = generic_context->container;' is just fine.
21811
21812         * loader.c (method_from_methodspec): Code cleanups.
21813
21814 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21815
21816         * decimal.c: fix warning (and let gcc generate correct
21817         code on ARM with optimizations).
21818
21819 2005-09-28  Martin Baulig  <martin@ximian.com>
21820
21821         * loader.c
21822         (method_from_memberref): Added `MonoGenericContext *class_context'
21823         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21824         (method_from_methodspec): If we're a memberref, use the enclosing
21825         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21826
21827 2005-09-28  Martin Baulig  <martin@ximian.com>
21828
21829         * object.c (mono_runtime_invoke_array): Added support for
21830         MONO_TYPE_GENERICINST; fixes #75917.
21831
21832 2005-09-27  Martin Baulig  <martin@ximian.com>
21833
21834         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21835         `k->byval_arg.type' to determine the actual type.
21836
21837         * loader.c (method_from_methodspec): Removed some hacks.
21838
21839 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21840
21841         * class-internals.h (mono_field_is_deleted): Do the test for
21842         rtspecialname before we check the actual name of the field. This
21843         prevents us from dereferencing a pointer into the string table,
21844         saving us from accessing a few pages
21845
21846         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21847         macros. This will allow a deadlock debugger to easily be plugged
21848         in.
21849
21850 2005-09-27  Martin Baulig  <martin@ximian.com>
21851
21852         * loader.c (method_from_methodspec): Create a "signature"
21853         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21854
21855 2005-09-27  Martin Baulig  <martin@ximian.com>
21856
21857         * class.c
21858         (inflate_generic_class): Correctly set the new context's
21859         container.
21860
21861         * loader.c
21862         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21863         instead of a `MonoGenericContext *'.
21864         (mono_method_signature_full): Take a `MonoGenericContainer *'
21865         instead of a `MonoGenericContext *'.
21866
21867         * metadata.c
21868         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21869         instead of a `MonoGenericContext *'.
21870         (mono_metadata_parse_method_signature_full): Likewise.
21871
21872 2005-09-26  Martin Baulig  <martin@ximian.com>
21873
21874         * class.c
21875         (mono_class_from_generic_parameter): Set `klass->generic_container'
21876         (mono_class_from_generic_parameter): Likewise.
21877         (mono_bounded_array_class_get): We inherit the generic container
21878         from the element class.
21879
21880         * loader.c
21881         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21882         argument rather than computing it here.
21883         (method_from_memberref): Correctly set the generic context before
21884         parsing the signature.  Fixes #75681.
21885
21886 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21887
21888         * object.c (mono_class_has_special_static_fields): Fix warnings.
21889
21890 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21891
21892         * assembly.c: Add parse_public_key function, to
21893         par the public keys. Also added mono_assembly_name_parse_full,
21894         to define it the parsed key should be freed or not.
21895         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21896         to parse a long format assembly name.
21897         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21898         private, since calling it to preserve the key requires
21899         freeing it manually.
21900         
21901 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21902
21903         * locales.c : removed HAVE_ICU part.
21904
21905 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21906
21907         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21908         field_is_special_static if the klass has no special static fields.
21909
21910         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21911         (MonoCachedClassInfo): Likewise.
21912
21913         * object.c (mono_class_has_special_static_fields): New helper function.
21914
21915 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21916
21917         * class.c (mono_class_create_from_typedef): Don't call 
21918         interfaces_from_typedef_full for enums.
21919         (mono_class_create_from_typedef): Compute the base types of enums directly
21920         without calling mono_class_setup_fields ().
21921         (mono_class_find_enum_basetype): New helper function.
21922
21923         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21924         one place inside the string heap.
21925         
21926 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21927
21928         * class.c: locking fixes, code cleanups, some docs added.
21929         Allocate some data structures in the image mempool.
21930
21931 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21932
21933         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21934         the example code.
21935         
21936 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21937
21938         * class-internals.h, class.c, reflection.c: reduce memory taken by
21939         MonoClass.
21940
21941 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21942
21943         * metadata.c, metadata.h, loader.h: documentation updates, code and
21944         API cleanups.
21945
21946 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21947
21948         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21949         the example code.
21950
21951         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21952         page faults caused by the runtime while reading metadata.
21953
21954 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21955
21956         * socket-io.c: the field names were changed 3 months ago and no one
21957         realized until bug #76077 got filed!
21958
21959 2005-09-20  Martin Baulig  <martin@ximian.com>
21960
21961         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21962
21963 2005-09-20  Martin Baulig  <martin@ximian.com>
21964
21965         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21966         write the rank into the class entry.
21967
21968 2005-09-20  Martin Baulig  <martin@ximian.com>
21969
21970         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21971
21972 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21973
21974         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21975
21976         * icall.c (custom_attrs_defined_internal): New icall.
21977
21978         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21979         function.
21980         (mono_custom_attrs_construct_by_type): New helper function.
21981
21982 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21983
21984         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21985         terminate the resulting string. Fixes #76123.
21986
21987 2005-09-16  Martin Baulig  <martin@ximian.com>
21988
21989         * mono-debug.c
21990         (mono_debug_add_method): Ignore inflated methods for the moment.
21991
21992 2005-09-14  Martin Baulig  <martin@ximian.com>
21993
21994         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21995
21996 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21997
21998         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21999         return a success/failure indication.
22000         (mono_metadata_interfaces_from_typedef_full): Ditto.
22001         (get_constraints): Ditto.
22002
22003 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
22004
22005         * marshal.c (emit_marshal_array): Fix handling of null arrays.
22006         
22007         * marshal.c (emit_marshal_array): Add support for returning string
22008         arrays from delegates. Fixes #76063.
22009
22010         * marshal.c: Use the emit_ldloc/stloc macros where possible.
22011
22012 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
22013
22014         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
22015         icall.
22016
22017 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
22018
22019         * reflection.c icall.c: Fix after mono_get_exception_type_load
22020         signature change.
22021
22022         * assembly.c (mono_assembly_get_assemblyref): New helper function.
22023         (mono_assembly_load_reference): Use the new helper.
22024
22025         * class-internals.h (MonoLoaderError): New structure containing 
22026         information about type loading errors.
22027
22028         * class-internals.h loader.c: Add APIs to store per-thread loader
22029         error information.
22030
22031         * loader.c class.c: Set the loader error if needed.
22032
22033         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
22034
22035 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
22036
22037         * decimal.c: fixed to handle the broken ARM fp format.
22038
22039 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
22040
22041         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
22042         broken.
22043
22044 2005-09-06  Martin Baulig  <martin@ximian.com>
22045
22046         * domain.c (supported_runtimes): Added v2.0.50727.
22047
22048 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
22049
22050         * culture-info.h: reduce the size of some structures.
22051
22052 2005-09-05  Martin Baulig  <martin@ximian.com>
22053
22054         Reflect latest API changes in the August CTP.
22055
22056         * icall.c
22057         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
22058         ("MonoType.HasGenericArguments"): Removed.
22059         ("MonoMethod.BindGenericParameters"): Renamed to
22060         "MakeGenericMethod".
22061         ("MethodBuilder.BindGenericParameters"): Renamed to
22062         "MakeGenericMethod".    
22063
22064 2005-09-05  Martin Baulig  <martin@ximian.com>
22065
22066         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
22067
22068 2005-09-05  Martin Baulig  <martin@ximian.com>
22069
22070         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22071
22072         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
22073         generic_container is non-NULL.
22074
22075 2005-09-05  Martin Baulig  <martin@ximian.com>
22076
22077         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22078
22079         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
22080
22081 2005-08-29  Michal Moskal  <malekith@nemerle.org>
22082
22083         * reflection.c (encode_locals,
22084         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
22085         for large generic types.
22086
22087 2005-09-05  Martin Baulig  <martin@ximian.com>
22088
22089         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22090
22091         * class.c (mono_dup_array_type): New public method.
22092         (mono_metadata_signature_deep_dup): New public method.
22093         (dup_type): Correctly duplicate array and function types.
22094
22095 2005-09-05  Martin Baulig  <martin@ximian.com>
22096
22097         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22098
22099         * reflection.c (get_default_param_value_blobs): Handle generic types
22100         and generic methods.
22101
22102 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
22103
22104         * class.c: Fixed error reporting (method/class were inversed) for 
22105         inheritance demands.
22106         * security-manager.c|h: Added the AppDomain when calling the managed
22107         System.Security.SecurityManager.InheritanceDemand method.
22108
22109 2005-09-01  Raja R Harinath  <rharinath@novell.com>
22110
22111         * reflection.c (encode_marshal_blob): 'marshaltype' and
22112         'marshaltyperef' are alternate sources for the custom marshaler
22113         name.
22114
22115 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
22116
22117         * class.c: fix creation of array classes with rank == 1
22118         (patch by Ankit Jain <jankit@novell.com>).
22119
22120 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
22121
22122         * object.c: fix check for creating the bound data for arrays vs
22123         szarrays.
22124
22125 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22126
22127         * object.c: configuration file name is now based on the executable name,
22128         not the image name. Fixes bug #75931.
22129
22130 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
22131
22132         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
22133         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
22134
22135 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
22136
22137         * rand.c: Use wincrypt.h instead of WinCrypt.h.
22138
22139 2005-08-24  Ankit Jain  <jankit@novell.com>
22140             Raja R Harinath  <rharinath@novell.com>
22141
22142         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
22143           called by it recursively.
22144           (mono_class_init): Remove special case in pending_init handling, since it's
22145           superseded by the fix to mono_class_from_typeref.
22146
22147 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
22148
22149         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
22150         BROKEN_THREAD_START stuff.
22151
22152 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
22153
22154         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
22155         trampoline.
22156
22157         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
22158         
22159         * object.c (mono_delegate_ctor): Replace the original function address with
22160         a delegate trampoline.
22161
22162 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
22163
22164         * icall.c: add boolean argument to base64_to_byte_array and 
22165         InternalFromBase64String to control whether a whitespace-only string
22166         is allowed (or should casue a FormatException to be thrown). We need
22167         this as the behavior has changed between MS.NET 1.x and 2.0, and we
22168         to match the MS behaviour in both profiles.
22169         * appdomain.c: Bump corlib version.
22170
22171 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22172
22173         This patch implements a big portion of publisher policy
22174         support, used to bind assembly versions and redirect
22175         one assembly from version A to version B.
22176
22177         * assembly.c:
22178         New GSList loaded_assembly_bindings, for storing the cached
22179         assembly bindings.
22180         (assembly_binding_maps_name): New static function for checking if a 
22181         assembly binding information maps an assembly name.
22182         (mono_assembly_binding_info_free): New function for freeing
22183         assembly binding information resources.
22184         (get_publisher_policy_info): New static function for retrieving 
22185         assembly binding information from a MonoImage.
22186         (compare_versions): New static function for comparing an assembly
22187         binding information data and the version of an assembly name.
22188         (check_policy_versions): New static function for checking if an
22189         assembly binding info mapping an assembly name is valid for it.
22190         (mono_assembly_load_publisher_policy): New static function for
22191         loading the 'policy.major.minor.MyAssembly' image for an assembly
22192         with an assembly name 'aname'.
22193         (mono_assembly_bind_version): New static function for updating
22194         assembly redirection.
22195         (mono_assembly_apply_binding): New static function for applying
22196         assembly binding.
22197         (search_binding_loaded): New static function for searching 
22198         loaded assembly binding infos in the cache domain.
22199         (mono_assembly_load_full): Don't apply assembly binding for
22200         reflection only assemblies.
22201
22202         * metadata-internals.h: Add MonoAssemblyBindingInfo,
22203         which contains information about assembly binding. Also
22204         declare signature for mono_config_parse_publisher_policy ()
22205         function, used to retrieve pub policy info.
22206         
22207         * mono-config.c:
22208         (publisher_policy_start): New static function used to parse publisher 
22209         policy config files.
22210         (publisher_policy_parser): New static MonoParseHandler containing 
22211         the functions used when parsing config files.
22212         (mono_config_parse_publisher_policy): New function for parsing
22213         publisher policy files.
22214         
22215 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
22216
22217         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
22218
22219         * marshal.c (mono_delegate_free_ftnptr): Ditto.
22220
22221         * object.c (mono_get_addr_from_ftnptr): New helper function.
22222
22223         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
22224
22225         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22226
22227 2005-08-19  Dick Porter  <dick@ximian.com>
22228
22229         * threads.c, threads.h, appdomain.c, appdomain.h,
22230         profiler-private.h, monitor.c, object.c, object-internals.h,
22231         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
22232         store the thread ID, so it can hold a 64 bit value if needed.
22233
22234 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
22235
22236         * reflection.c (mono_reflection_create_dynamic_method): Store the
22237         handle class into the method references as well so ldtoken works in
22238         dynamic methods.
22239
22240         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
22241         types.
22242
22243 2005-08-19  Ankit Jain <jankit@novell.com>
22244
22245         Fix #75847.
22246         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
22247           here rather than using the method signature of a arbitrary function
22248           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
22249           two arguments.
22250           Hack done with Harinath.
22251
22252 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22253
22254         * threadpool.c: disable printing stack traces when we get a exception
22255         in a threadpool thread. I need to do more testing to figure out which
22256         cases actually print this. Fixes bug #75828.
22257
22258 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22259
22260         * icall.c: there might be ignored whitespace after the last '='. This
22261         fixes length computation and bug #75840.
22262
22263 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
22264
22265         * assembly.c (mono_assembly_load_full): Consider .exe extension as
22266         well. Fixes #75809.
22267
22268         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
22269         #75784.
22270         
22271         * reflection.c (create_custom_attr_data): Ditto.
22272
22273 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22274
22275         * locales.c, culture-info.h : removed RegionLCIDMap.
22276         * culture-info-tables.h : regenerated.
22277
22278 2005-08-16  Martin Baulig  <martin@ximian.com>
22279
22280         * class.c (mono_type_get_name_recurse): Small fix.
22281
22282 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22283
22284         * locales.c : indentation fixie.
22285
22286 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22287
22288         * object-internals.h,
22289           locales.h,
22290           locales.c,
22291           culture-info.h,
22292           icall.c : added RegionInfo table support.
22293         * culture-info-table.h : regenerated for region support.
22294
22295 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22296
22297         * reflection.c (resolve_object): handle all kinds of MonoMethod
22298         including generic ones
22299
22300 2005-08-12  Ankit Jain <jankit@novell.com>
22301
22302         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22303           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22304
22305 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22306
22307         * process.c: Don't close a thread handle when it's NULL. This is a
22308         workaround for bug #75733.
22309
22310 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22311
22312         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22313
22314 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22315
22316         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22317
22318 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22319
22320         * threadpool.c: if a work item in the thread pool has a callback that
22321         catches a exception, don't propagate it after invoking the callback.
22322         Fixes bug #75336.
22323
22324 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22325
22326         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22327
22328         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22329
22330         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22331
22332         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22333
22334 2005-08-03  Ankit Jain  <jankit@novell.com>
22335
22336         Fix #75683.
22337         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22338           PInvoke calling convention is 0.
22339
22340 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22341
22342         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22343         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22344
22345 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22346
22347         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22348         to handle threads not started by the GC (patch by Michael Meeks
22349         <michael.meeks@novell.com>).
22350
22351 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22352
22353         * reflection.c: Make buffer used in emitting types larger for some
22354         big generic types (patch by Michal Moskal).
22355
22356 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22357
22358         * mono-debug.c: Fix some (not all) alignment problems.
22359
22360 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22361
22362         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22363         Invoke mono_image_load_from_data_full passing the refonly
22364         parameter.
22365
22366         * assembly.c
22367         (mono_assembly_open_from_bundle): Add the refonly argument, 
22368         in order to pass it to other methods it calls to.
22369         (do_mono_assembly_open): Add the refonly argument, in order 
22370         to pass it to other methods it calls to.
22371         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22372         the refonly parameter to it.
22373
22374         * image.c: Add loaded_images_refonly_hash and
22375         loaded_images_refonly_guid_hash to cache the reflection
22376         only loaded images.
22377         (mono_images_init): Initialize the hash tables used for
22378         caching the reflection only images.
22379         (load_modules): Invoke mono_image_open_full passing the refonly
22380         parameter to load the modules the correct way.
22381         (build_guid_table): Add the refonly argument, to re-build the 
22382         correct hash table.
22383         (do_mono_image_open): Added the refonly argument, in order to
22384         define it for the loaded image.
22385         (mono_image_loaded_full): New function, which receives an
22386         additional parameter to look for the image in the refonly or
22387         non-refonly section.
22388         (mono_image_loaded): Updated, using mono_image_loaded_full.
22389         (mono_image_loaded_by_guid_full): The same case that happens
22390         with mono_image_loaded_full.
22391         (mono_image_loaded_by_guid): Likewise.
22392         (register_image): Use the ref_only variable inside MonoImage
22393         to decide in which hash table store the current image.
22394         (mono_image_open_from_data_full): Rename
22395         mono_image_open_from_data to mono_image_open_from_data_full,
22396         adding the refonly argument, to define the ref_only variable 
22397         inside MonoImage.
22398         (mono_image_open_from_data): Return 
22399         mono_image_open_from_data_full.
22400         (mono_image_open_full): Rename mono_image_open to
22401         mono_image_open_full, receiving the new refonly argument,
22402         to pass it to inner methods.
22403         (mono_pe_file_open): Update this function, to open
22404         a MonoImage as a non-refonly image.
22405         (mono_image_close): Use the refonly variable inside
22406         MonoImage to remove the image from the correct caches.
22407
22408         * image.h: Add the signatures of mono_image_open_full,
22409         mono_image_open_from_data_full, mono_image_loaded_full,
22410         mono_image_loaded_by_guid_full.
22411
22412         * metadata-internals.h: Add the ref_only field to 
22413         MonoImage.
22414         
22415 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22416
22417         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22418         Fix the last behavior, which used to load the assemblies and
22419         extract MonoReflectionAssemblyName information, instead of
22420         extract it from the metadata tables. Needed for Reflection
22421         Only assemblies.
22422         
22423 2005-07-29  Martin Baulig  <martin@ximian.com>
22424
22425         * mono-debug-debugger.c
22426         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22427         not initialized.
22428
22429         * mono-debug.c
22430         (mono_debug_address_from_il_offset): Check whether we have
22431         debugging support before attempting to take the lock.
22432         (mono_debug_source_location_from_address): Likewise.
22433         (mono_debug_source_location_from_il_offset): Likewise.
22434         (mono_debug_il_offset_from_address): Likewise.
22435         (mono_debug_address_from_il_offset): Likewise.
22436
22437 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22438
22439         * class.c (mono_class_from_name_case): Add support for dynamic images.
22440         Fixes #75650.
22441
22442         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22443         for #75479.
22444
22445 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22446         
22447         * reflection.c (mono_method_get_object): Fix warning.
22448
22449 2005-07-28  Martin Baulig  <martin@ximian.com>
22450
22451         * mono-debug.c
22452         (mono_debug_add_wrapper): Also write the wrapper type.
22453
22454 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22455
22456         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22457         
22458         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22459         data indicates the class has none.
22460
22461 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22462
22463         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22464         loader lock with the debugger lock. Prevents deadlocks for beagle.
22465
22466         Beagle can now run on an smp box for a weekend without any
22467         issues. Woohoo!
22468
22469 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22470
22471         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22472         in a module. Fixes #75629.
22473
22474 2005-07-26  Martin Baulig  <martin@ximian.com>
22475
22476         * mono-debug.c (mono_debug_add_wrapper): New static method.
22477         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22478         interncall or a wrapper.
22479
22480         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22481         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22482         (MONO_DEBUGGER_VERSION): Bump to 51.
22483
22484         * mono-debug-debugger.c
22485         (mono_debugger_add_type): Removed this empty function.
22486         (mono_debugger_add_method): Likewise.
22487
22488 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22489
22490         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22491         before accessing method->slot.
22492
22493 2005-07-21  Jb Evain  <jbevain@gmail.com>
22494
22495         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22496         Fixes #75010.
22497
22498 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22499
22500         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22501         #75587.
22502
22503 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22504
22505         * image.h image.c: Add mono_image_get_guid () API function.
22506
22507 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22508
22509         There were issues when multiple threads tried to load
22510         assemblies. A deadlock was created between assemblies_mutex and
22511         mono_domain_assemblies_lock. This fixes the issue by making the
22512         assembly ref counting be lock free. See bug 75586.
22513         
22514         * image.c (mono_image_close): The add ref function here was using
22515         Interlocked operations while the unref was using a mutex and a
22516         --. I don't think this was ever a bug that would be exposed in a
22517         non-pendantic way (ie, by an embedder doing a ref on one thread
22518         and an unref on another), but for the sake of correctness, this is
22519         now Interlocked.
22520
22521         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22522         (mono_assembly_load_reference): Call mono_assembly_addref rather
22523         than touching the refcount ourselves.
22524         (mono_assembly_close): Use InterlockedDecrement to unref the
22525         assembly. Don't acquire the lock unless it is actually needed.
22526
22527 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22528
22529         * class.c (mono_class_layout_fields): Fix calculation of has_references
22530         for generic types.
22531
22532 2005-07-12  Martin Baulig  <martin@ximian.com>
22533
22534         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22535
22536         * metadata.c
22537         (mono_type_hash): Provide better hashing for generic instances.
22538         (mono_generic_inst_hash): Improve hashing.
22539         (mono_generic_class_hash): Likewise.
22540
22541         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22542         generic instances.
22543
22544 2005-07-12  Martin Baulig  <martin@ximian.com>
22545
22546         * reflection.c (mono_reflection_create_runtime_class): Remove the
22547         hack for generic type definitions and non-`Run' assemblies.
22548         (mono_reflection_bind_generic_parameters): Also use
22549         `klass->wastypebuilder' to check for TypeBuilders.
22550
22551 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22552
22553         * class.c (mono_class_layout_fields): Fix calculation of has_references
22554         for generic types.
22555
22556         * class.c (inflate_generic_class): Fix a leak.
22557         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22558         for generic types.
22559
22560 2005-07-11  Martin Baulig  <martin@ximian.com>
22561
22562         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22563         on error.
22564
22565 2005-07-11  Martin Baulig  <martin@ximian.com>
22566
22567         * loader.c (find_method): Also lookup in
22568         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22569
22570 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22571
22572         * appdomain.c (mono_domain_unload): Don't free the error message
22573         before passing it to mono_get_exception_...
22574
22575         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22576         
22577 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22578
22579         * threads.c: try to better guess an available RT signal (bug #75387).
22580
22581 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22582
22583         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22584         and CACHE_OBJECT.
22585
22586 2005-07-07  Martin Baulig  <martin@ximian.com>
22587
22588         * class.c (mono_type_get_name_full): Return NULL for
22589         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22590         fixes #75408.
22591
22592 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22593
22594         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22595         exit the appdomain as well being aborted.
22596
22597         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22598         change back to the root domain after calling managed code. This enables
22599         appdomains using threadpools to be unloaded.
22600
22601 2005-07-07  Martin Baulig  <martin@ximian.com>
22602
22603         * class-internals.h
22604         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22605         into `MonoDynamicGenericClass' since we only need it for dynamic
22606         types.
22607
22608         * reflection.c (mono_class_bind_generic_parameters): We don't need
22609         to compute the `parent' here.
22610
22611 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22612
22613         * culture-info-table.h : regenerated.
22614
22615 2005-07-06  Martin Baulig  <martin@ximian.com>
22616
22617         * icall.c
22618         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22619
22620         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22621
22622 2005-07-06  Martin Baulig  <martin@ximian.com>
22623
22624         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22625         we're doing a signature-only comparision; fixes #74945.
22626
22627 2005-07-06  Martin Baulig  <martin@ximian.com>
22628
22629         * class-internals.h (MonoGenericClass): Moved some things out into
22630         a new `MonoInflatedGenericClass' type.  
22631         (MonoInflatedGenericClass): New type; the `klass' of a
22632         `MonoGenericClass' is now computed lazyly in
22633         mono_get_inflated_generic_class().      
22634
22635         * class.c (mono_get_inflated_generic_class): New public function.
22636         (mono_class_inflate_generic_method): Removed the unused
22637         `MonoClass *' argument.
22638         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22639         all the methods.
22640         (mono_class_create_generic): Make this static and merge it with
22641         mono_class_create_generic_2(); we're now called automatically from
22642         mono_get_inflated_generic_class().
22643
22644         * loader.c (mono_method_signature): Call
22645         mono_get_inflated_method() here.
22646
22647 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22648
22649         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22650         type of fields with RVA.
22651
22652         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22653         for this pseudo class.
22654         (my_mono_class_from_generic_parameter): Likewise.
22655         (mono_class_init): Allow interfaces to have cctors.
22656
22657 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22658
22659         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22660         lazily for AOT methods.
22661
22662 2005-07-05  Martin Baulig  <martin@ximian.com>
22663
22664         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22665         returns FALSE for a successful match, not TRUE.
22666
22667 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22668
22669         * loader.c (mono_method_get_index): Optimize this a bit.
22670
22671 2005-07-04  Martin Baulig  <martin@ximian.com>
22672
22673         * class.c
22674         (class_compute_field_layout): Move the check for generic type
22675         definitions into mono_class_layout_fields().  Fixes #74684.
22676         (mono_class_from_generic_parameter): Correctly compute
22677         `klass->parent'; fixes #75457.
22678
22679         * reflection.c (register_assembly, register_module): Make sure
22680         `domain->rejobject_hash' is already created.
22681
22682 2005-07-02  Martin Baulig  <martin@ximian.com>
22683
22684         * class-internals.h
22685         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22686         `MonoDynamicGenericClass'.      
22687
22688 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22689
22690         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22691         returned by a field getter is null, since null is a valid value.
22692
22693 2005-07-01  Martin Baulig  <martin@ximian.com>
22694
22695         * reflection.c (mono_reflection_generic_class_initialize): Update
22696         the `dgclass->fields [i].parent' to the correct class.
22697         (mono_image_get_fieldref_token): Use the declaring type, not the
22698         reflected type.
22699
22700 2005-07-01  Martin Baulig  <martin@ximian.com>
22701
22702         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22703
22704 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22705
22706         * threads.c (thread_cleanup): assert that thread != NULL
22707         (wait_for_tids_or_state_change): We were using the wrong variable
22708         when accessing wait->threads. `i' was always out of the bounds of
22709         the array.
22710
22711 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22712
22713         * loader.c: map user32 and kernel32 to libMonoSupportW
22714
22715 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22716
22717         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22718
22719 2005-06-28  Martin Baulig  <martin@ximian.com>
22720
22721         * loader.c (method_from_methodspec): Fix #75334.
22722
22723 2005-06-28  Martin Baulig  <martin@ximian.com>
22724
22725         Fix #74953 - Arrays now implement the generic IList<T> interface
22726         on the 2.0 platform.
22727
22728         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22729
22730         * reflection.c (mono_class_bind_generic_parameters): New public
22731         function; similar to mono_reflection_bind_generic_parameters(),
22732         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22733
22734         * domain.c (mono_init_internal): Try to initialize.
22735         `mono_defaults.generic_array_class' here; this'll only succeed if
22736         we're using the 2.0 corlib.
22737
22738         * icall.c
22739         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22740         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22741         (mono_lookup_internal_call): Added support for nested classes.
22742
22743         * loader.c
22744         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22745         we're an interncall and have generic arguments.
22746
22747         * class.c
22748         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22749         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22750         instance of System.Array.InternalArray<T> for arrays, so they
22751         implement the generic IList<T> interface.
22752
22753 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22754
22755         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22756         (chastamar@yahoo.com). Fixes #75374.    
22757
22758 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22759
22760         * culture-info-table.h: regenerated.
22761
22762 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22763
22764         * icall.c: handle spaces correctly for base64 strings.
22765
22766 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22767
22768         * *.c: Kill some warnings.
22769
22770 2005-06-23  Duncan Mak  <duncan@novell.com>
22771
22772         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22773         that this builds on Solaris 10 (x86).
22774
22775 2005-06-23  Martin Baulig  <martin@ximian.com>
22776
22777         * class.c
22778         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22779         generic type definitions.
22780
22781 2005-06-23  Martin Baulig  <martin@ximian.com>
22782
22783         Fix #75331.
22784
22785         * metadata.c (mono_class_get_overrides): Renamed to
22786         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22787         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22788         pass it to mono_get_method_full().
22789
22790 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22791
22792         * reflection.c (mono_reflection_create_runtime_class): take the
22793         mono_domain_lock in this method. Prevents deadlocks
22794
22795 2005-06-22  Martin Baulig  <martin@ximian.com>
22796
22797         * loader.c (method_from_methodspec): Fix #75330.
22798
22799 2005-06-22  Martin Baulig  <martin@ximian.com>
22800
22801         * reflection.c (type_get_qualified_name): Use
22802         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22803         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22804         argument; use it if we don't have an assembly name.
22805
22806 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22807
22808         * object.c: In mono_message_init, set "copy out" flag for in
22809         parameters with the [Out] flag.
22810
22811 2005-06-21  Martin Baulig  <martin@ximian.com>
22812
22813         * class.c
22814         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22815         and MONO_TYPE_PTR.
22816
22817 2005-06-21  Martin Baulig  <martin@ximian.com>
22818
22819         * class.c (mono_class_init): Don't initialize `class->fields' for
22820         generic instances since they're initialized again in
22821         compute_field_layout(). 
22822         (compute_field_layout): Set the field's `generic_info' here; fix
22823         #75320. 
22824
22825 2005-06-21  Martin Baulig  <martin@ximian.com>
22826
22827         * class-internals.h
22828         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22829
22830         * metadata.c (mono_metadata_generic_method_equal): Also
22831         distinguish the `generic_class'; fixes #75334.
22832
22833 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22834
22835         * domain.c:
22836         * appdomain.c:
22837         * domain-internals.h:
22838         * reflection.c: 'domain_assemblies' field is now protected by its own
22839         lock. Don't call into managed code to run the AssemblyLoad event if we
22840         now there are no registered delegates for it.
22841
22842 2005-06-20  Martin Baulig  <martin@ximian.com>
22843
22844         * class.c (mono_class_is_assignable_from): Use a custom version of
22845         mono_class_has_parent() to make things work for generic instances;
22846         fix #75300.
22847
22848 2005-06-20  Martin Baulig  <martin@ximian.com>
22849
22850         * loader.c (method_from_methodspec): Apply a patch from
22851         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22852
22853 2005-06-20  Martin Baulig  <martin@ximian.com>
22854
22855         * class.c (mono_class_init): Reverted Zoltan's last change; it
22856         breaks generics.
22857
22858 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22859
22860         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22861
22862 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22863
22864         * socket-io.c: fix the index in the socket array for writable/error
22865         sockets. Fixes bug #75306.
22866
22867 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22868
22869         * class.c (mono_class_init): Allow interfaces to have static ctors.
22870
22871 2005-06-17  Martin Baulig  <martin@ximian.com>
22872
22873         * loader.c (method_from_methodspec): Use `context->container' when
22874         parsing the `gmethod->inst'.
22875
22876 2005-06-17  Martin Baulig  <martin@ximian.com>
22877
22878         * class.c (mono_type_get_name_recurse): Don't add the assembly
22879         name for type arguments.
22880
22881 2005-06-15  Martin Baulig  <martin@ximian.com>
22882
22883         * reflection.c (mono_image_get_inflated_method_token): Encode
22884         correct klass; fixes #75260.
22885
22886 2005-06-13 Michal Moskal <malekith@nemerle.org>
22887
22888         * icall.c: Make GetCorrespondingMethod/Constructor take
22889         MonoReflectionMethod method not MonoMethod. Removed
22890         MonoType.GetCorrespondingField, and make
22891         MonoGenericType.GetCorrespondingField take name not
22892         MonoClassField.
22893
22894 2005-06-13  Michal Moskal <malekith@nemerle.org>
22895
22896         * reflection.c (field_encode_signature, encode_locals):
22897          Make sizes of buffers for types larger (for big generic types).
22898          (create_generic_typespec,
22899          mono_reflection_sighelper_get_signature_local,
22900          mono_reflection_sighelper_get_signature_field):
22901          Add asserts for too small buffers.
22902
22903 2005-06-15  Martin Baulig  <martin@ximian.com>
22904
22905         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22906         if our parent is not a dynamic type.
22907
22908 2005-06-15  Martin Baulig  <martin@ximian.com>
22909
22910         * class-internals.h (MonoTypeNameFormat): New enum.
22911
22912         * class.c
22913         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22914         (mono_type_get_full_name): Removed.
22915         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22916         argument instead of the boolean's.
22917
22918         * icall.c (ves_icall_System_MonoType_getFullName):
22919         Added `gboolean assembly_qualified'.    
22920
22921         * reflection.h
22922         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22923
22924         * reflection.c (mono_reflection_parse_type): Parse the new type
22925         name format.
22926
22927 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22928
22929         * icall.c: no need to convert from utf16 to utf8 and then back again
22930         after the call to GetLogicalDrives.
22931
22932 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22933
22934         * icall.c: frombase64. Fix problems exposed by new tests.
22935
22936 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22937
22938         * icall.c: added internal calls for converting char [] and strings in
22939         base64 into byte [].
22940
22941 2005-06-10  Martin Baulig  <martin@ximian.com>
22942
22943         * class.c (mono_class_create_generic_2): Read the nested classes
22944         from the metadata rather than from `gklass->nested_classes' since
22945         `gklass' might not be initialized yet.
22946
22947 2005-06-09  Duncan Mak  <duncan@novell.com>
22948
22949         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22950         all public headers. Fixes #74919.
22951
22952 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22953
22954         * domain.c: The key for proxy_vtable_hash is now a pointer
22955         array. Added new GHashFunc and GCompareFunc functions for this.
22956
22957         * class.h: The list of interfaces in MonoRemoteClass is known in
22958         advance and can't grow (we create a new MonoRemoteClass if needed),
22959         so now the interface array can be allocated together with
22960         MonoRemoteClass.
22961         
22962         * object.c: Added a new method create_remote_class_key.
22963         Fixed mono_remote_class so it does not depend on
22964         mono_upgrade_remote_class.
22965         Removed extend_interface_array.
22966         Added new method clone_remote_class(), which makes a copy of a remote
22967         class and adds a new interface or class to it.
22968         mono_upgrade_remote_class() now creates a new remote class (or gets
22969         it from the cache) if an vtable upgrade is needed. In this way
22970         we make sure that other objects sharing the same remote class
22971         don't get the new vtable with unwanted interfaces.
22972         
22973         * object-internals.h:
22974         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22975         
22976         * marshal.c: Track changes in mono_upgrade_remote_class().
22977
22978 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22979         * icall.c: Add runtime methods for obtaining members of inflated
22980         class, which were created from supplied non-inflated members. It
22981         is used in internal Get{Method,Constructor,Field} methods in
22982         System.Type
22983
22984 2005-06-09  Martin Baulig  <martin@ximian.com>
22985
22986         * reflection.c
22987         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22988
22989 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22990         * reflection.c (mono_image_basic_init): Define
22991         Version in MonoDynamicAssembly. 
22992         
22993 2005-06-08  Martin Baulig  <martin@ximian.com>
22994
22995         Fix #75136.
22996
22997         * loader.c
22998         (mono_method_signature_full): New public method; takes a
22999         `MonoGenericContext *'.
23000         (find_method): Use mono_method_signature_full() and pass the
23001         klass'es context to it.
23002
23003         * class.c (mono_class_is_inflated_method): Use
23004         mono_method_signature_full() and pass the context to it.
23005
23006 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
23007
23008         * object.c: add proper locking in mono_remote_class_vtable(),
23009         fixes possible memory corruption.
23010
23011 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
23012
23013         * marshal.c (mono_remoting_marshal_init): set
23014         initialized after initialization.
23015
23016 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
23017
23018         * locales.c : hush.
23019
23020 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
23021
23022         * object.c (extend_interface_array): fix really silly
23023         memory corrupting / comparison bug.
23024
23025 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23026
23027         * reflection.c: Functions added to support the creation
23028         of CustomAttributeData, which includes Attribute data
23029         used by ReflectionOnly methods.
23030
23031         * reflection.h:  mono_reflection_get_custom_attrs_data and
23032          mono_custom_attrs_data_construct added (functions exposed).
23033
23034          * icall.c: Added mono_reflection_get_custom_attrs_data
23035          as icall.
23036         
23037 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
23038
23039         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
23040         lupus's request.
23041
23042 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
23043
23044         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
23045
23046         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
23047         dynamic DllImportAttribute.
23048
23049         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
23050         dynamic DllImportAttribute.
23051
23052         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
23053         Fixes #75162.
23054
23055 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23056
23057         * threads.c: avoid segfault when an unstarted thread is aborted.
23058
23059 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
23060
23061         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
23062         Returns the name and version of the runtime for reporting.
23063
23064 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23065
23066         * appdomain.c: bump corlib version.
23067         * object-internals.h: new field in MonoReflectionAssembly.
23068
23069 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23070
23071         * object-internals.h: Carlos forgot to add this field.
23072
23073 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23074
23075         * icall.c: Added create_version to create instances
23076         of Version of MonoReflectionAssemblyName. This change helps
23077         the AssemblyName tests to keep running fine.
23078         
23079 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
23080   
23081         * object.c (mono_method_return_message_restore): A somehow less
23082         intrusive fix for #75138.
23083
23084 2005-06-03  Raja R Harinath  <rharinath@novell.com>
23085
23086         * object.c (mono_method_return_message_restore): Fix computation
23087         of expected number of out args.
23088
23089 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
23090
23091         * reflection.c (mono_image_get_method_info): Fix the case when the
23092         charset is empty.
23093
23094 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
23095
23096         * object.c: Added missing null check in
23097           mono_method_return_message_restore.
23098
23099 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
23100
23101         * reflection.c (mono_image_get_method_info): Handle the case when
23102         dllentry is empty.
23103
23104 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
23105
23106         * object.c: When creating the vtable for a proxy, take into account
23107         all inherited interfaces, not only the ones registered in
23108         iclass->interfaces. This fixs bug #74996.
23109         Also, in mono_method_return_message_restore, verify that the array
23110         of out args has the expected lengh.
23111
23112 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23113
23114         * socket-io.c: update the timeout in Poll when the call is interrupte.
23115
23116 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23117
23118         * socket-io.c: support abort/suspend in Select_internal after last
23119         change.
23120
23121 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23122
23123         * threadpool.c: remove warning.
23124
23125 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23126
23127         * icall.c:
23128         * socket-io.[ch]: Select_internal uses poll() now when available, thus
23129         removing the 1024 limit from select(). Runtime part of the fix for
23130         bug #71203.
23131
23132 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23133
23134         * socket-io.c: when resolving the addresses for the same
23135         host returned by gethostname(), get the local IPs from the interface
23136         list. Loopback addresses are discarded if the are interfaces up with
23137         non-loopback ones. Fixes bug #63265.
23138
23139 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
23140
23141         * appdomain.c, verify.c, object-internals.h, reflection.c:
23142         bumped corlib number to 36, and added new extra_flags field
23143         to ReflectionMethodBuilder and friends.  Fixes #75060.
23144
23145 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
23146
23147         * gc.c: register a new weak link only if the object is non-null
23148         (fixes bug#75047).
23149
23150 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23151
23152         * culture-info.h : short time pattern too.
23153
23154 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23155
23156         * culture-info.h : expand long time pattern string length.
23157
23158 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23159
23160         * culture-info-table.h : update (more French date format; #72788).
23161
23162 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
23163
23164         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
23165         the method is static. Fixes #75029.
23166
23167 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
23168
23169         * reflection.c: Update the table_idx field of method builders after
23170         saving the module, since it can change. This is a workaround for
23171         bug #74914. 
23172
23173 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23174
23175         * culture-info-table.h : update (additional French date format).
23176
23177 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
23178
23179         * icall.c (ves_icall_type_Equals): Revert last change.
23180         
23181         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
23182
23183         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
23184
23185 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
23186
23187         * class-internals.h: Added executioncontext_class field to 
23188         MonoDefaults structure.
23189         * domain.c: Cache System.Threading.ExecutionContext class in 
23190         mono_defaults.
23191         * object.c: Capture the ExecutionContext for asynchroneous calls in
23192          mono_async_result_new.
23193         * object-internals.h: Added execution_context and original_context 
23194         fields to MonoAsyncResult. Added execution_context to MonoThread.
23195         * security-manager.c|.h: Added mono_get_context_capture_method to 
23196         return the capture method (if required by the security manager or by
23197         the framework version used).
23198         * threadpool.c: Apply capture (if present) ExecutionContext in 
23199         mono_async_invoke and revert to original context after it completes.
23200
23201 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
23202
23203         * culture-info-table.h : updated (real hacky solution for zh-CHT).
23204
23205 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
23206
23207         * culture-info-table.h : zh-CHT related workaround.
23208
23209 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23210
23211         * marshal.c (emit_marshal_custom): Add some error checking and call the
23212         methods in the ICustomMarshaler interface. Fixes #74875.
23213         
23214         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
23215         native->managed wrappers.
23216
23217 2005-05-12  Martin Baulig  <martin@ximian.com>
23218
23219         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
23220         here and use the loader lock.
23221
23222         * mono-debug.c: Properly lock when the debugger is not attached.
23223         (mono_debug_init): Release the initial lock if we're not running
23224         in the debugger.
23225
23226 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23227
23228         * marshal.c (emit_marshal_custom): Pass through NULL values without
23229         calling the custom marshalling routines.
23230
23231         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
23232         conversion in structures. Fixes #74882.
23233
23234 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
23235
23236         * culture-info-table.h : zh-* cultures were missing.
23237
23238 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
23239
23240         * threads.c: Added a new event background_change_event which is signaled
23241         when a thread changes its background mode.
23242         Moved here several checks previously done in managed code. The checks
23243         require the thread lock, and using the thread lock in managed code
23244         can result in deadlocks.
23245         Merged Start_internal and Thread_internal into a single method. Now 
23246         Thread_internal does all work of creating and starting a thread.
23247         Added icalls for setting and getting the state of the object. Moved from
23248         managed code to avoid locking there.
23249         Added wait_for_tids_or_state_change() which is called instad of
23250         wait_for_tids when waiting for non-backround threads to end. This method
23251         will return if one of the threads ends or the background_change_event
23252         is signaled.
23253         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
23254         the background mode. This method signals the background_change_event
23255         event.
23256         * icall.c:
23257         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
23258         removed Start_internal.
23259         
23260 2005-05-11  Martin Baulig  <martin@ximian.com>
23261
23262         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
23263         to order of some fields to get proper alignment on 64-bit machines.
23264
23265 2005-05-11  Martin Baulig  <martin@ximian.com>
23266
23267         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
23268         changes as they're broken and completely fuck up the debugger.
23269
23270         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23271
23272 2005-05-10  Martin Baulig  <martin@ximian.com>
23273
23274         * reflection.c (mono_reflection_generic_class_initialize): Don't
23275         call mono_class_setup_parent() here.
23276
23277 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23278
23279         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23280         send/receive timeout use an integer in milliseconds. We were using a
23281         struct timeval.
23282
23283 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23284
23285         * locales.c:
23286         (internal_get_cultures): reserve the first slot of the array for the
23287         InvariantCulture, which will be filled in managed code.
23288
23289 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23290
23291         * reflection.c (mono_image_fill_module_table): Initialize the
23292         GENERATION field as well.
23293
23294 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23295
23296         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23297         Monitor.Enter on the object.
23298
23299 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23300
23301         * threads.c: Enable the wait for running threads when exiting.
23302         * icall.c: Suspend all threads before exiting.
23303
23304 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23305
23306         * assembly.c (mono_assembly_load_reference): Fix warning.
23307
23308 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23309
23310         * threadpool.c: changed the default number of threads per cpu. From now
23311         on, the default will be 20 + (5 * number of cpus) instead of 50.
23312
23313 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23314
23315         * loader.c (mono_method_get_signature_full): Add locking here.
23316
23317 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23318
23319         * appdomain.c: Moved methods for parsing and freeing assembly
23320         names to assembly.c.
23321         * assembly.c, domain-internals.h: Created public methods for parsing
23322         assembly names. Fixed mono_assembly_load_with_partial_name:
23323         it now finds the best match, taking into account the version,
23324         token and culture specified in the partial name. Also return
23325         the latest version if no version information is specified.
23326
23327 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23328
23329         * threadpool.c: replace check for SocketAsyncCall class.
23330
23331 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23332
23333         * threadpool-internals.h:
23334         * Makefile.am: added threadpool-internals.h
23335
23336         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23337         that happen in threadpool threads (tested on MS).
23338         (mono_thread_pool_remove_socket): new function that dispatch any pending
23339         AIO call on a socket that is closing. By now only epoll really needs it,
23340         as select/poll wake up when the socket closes.
23341
23342
23343         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23344
23345 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23346
23347         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23348
23349 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23350
23351         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23352
23353 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23354
23355         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23356         has an abort request, convert it into a suspend request.
23357
23358 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23359
23360         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23361         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23362         is not supported yet.
23363
23364 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23365
23366         * image.c: register assemblies loaded from data (bundles) in the loaded
23367         assemblies hash. Fixes bug #74772.
23368
23369 2005-04-29  Martin Baulig  <martin@ximian.com>
23370
23371         * class.c (mono_type_get_name_recurse): Update to the new naming
23372         schema from the latest .NET 2.x beta2.
23373         (mono_class_setup_vtable_general): If we're a generic instance,
23374         copy the vtable from our generic type definition and inflate all
23375         the methods in it.
23376
23377         * loader.c (find_method): Update to the new naming schema from the
23378         latest .NET 2.x beta2.
23379
23380 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23381
23382         * class.c (mono_class_init): Add a mono_loader_unlock to the
23383         #74734 fix.
23384
23385 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23386
23387         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23388         suspend_all_other_threads () call for the time being, since it can hang.
23389
23390         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23391         the background threads to exit, since it can also hang.
23392
23393         * class.c (mono_class_init): Applied patch from Ankit Jain 
23394         (radical@gmail.com). Avoid pending init errors when a field refers
23395         to a nested class using a typeref. Fixes #74734.
23396
23397         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23398         this for dynamic modules.
23399
23400 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23401
23402         * threads.c: don't wait for threads that are in the process of aborting
23403         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23404         and waiting for background threads to finish. This makes xsp and
23405         mod-mono-server exit without random length delays and/or hangs.
23406
23407 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23408
23409         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23410
23411 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23412
23413         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23414         dynamic types to prevent infinite loops. Fixes #74727.
23415
23416         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23417         ..._is_assignable_to.
23418
23419 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23420
23421         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23422
23423 2005-04-25  Martin Baulig  <martin@ximian.com>
23424
23425         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23426
23427         * domain.c
23428         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23429
23430         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23431
23432         * reflection.c (build_compressed_metadata): Set metadata header
23433         version to 2.0.
23434
23435 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23436
23437         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23438         number into an integral and a decimal part. Fixes #70473.
23439
23440         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23441
23442 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23443
23444         * culture-info-table.h : reflected the latest locale-builder output.
23445
23446 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23447
23448         * threadpool.c: check for SuspendRequested too when deciding if
23449         mono_thread_interruption_checkpoint should be called.
23450
23451 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23452
23453         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23454         * threads.c: remove interruption_mutex and use Interlocked instead. When
23455         suspending all the threads, wait for all the suspended events at once.
23456         If we're shutting down and get an APC that is going to be queued,
23457         call mono_thread_execute_interruption immediately, as the thread might
23458         be sleeping on a pthread condition or mutex.
23459
23460         * icall.c: call mono_runtime_set_shutting_down before suspending the
23461         threads.
23462
23463         Fixes bug #74693. And now xsp is happier when exiting.
23464
23465 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23466
23467         * loader.c (mono_stack_walk): Fix #74690.
23468
23469 2005-04-22  Martin Baulig  <martin@ximian.com>
23470
23471         * mono-debug.h (MonoDebugMethodJitInfo): Added
23472         `MonoDebugMethodJitInfo *jit'.
23473
23474         * mono-debug.c (mono_debug_read_method): Cache the
23475         MonoDebugMethodJitInfo in `address->jit'.
23476         (mono_debug_free_method_jit_info): New public method.
23477
23478 2005-04-22  Martin Baulig  <martin@ximian.com>
23479
23480         * class.c (mono_class_is_assignable_from): Disallow
23481         type parameter -> interface.
23482
23483 2005-04-21  Dick Porter  <dick@ximian.com>
23484
23485         * threads.c (mono_thread_create): Turn an assertion into an error.
23486
23487 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23488
23489         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23490         
23491         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23492         Fix some gcc 4.0 warnings.
23493
23494 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23495
23496         * file-io.c: fix alt dir separator char on unix systems
23497         and cleanup (fixes bug #71214).
23498
23499 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23500
23501         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23502         a call to a remote domain, since the method may be an
23503         interface method in the client domain. This fixes bug #74192.
23504
23505 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23506
23507         * threadpool.c: recv/send are now performed before going back to managed
23508         code to save one transition.
23509
23510 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23511
23512         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23513
23514         * metadata/threadpool.c: removed hack to workaround the bug above.
23515
23516         Fixes bug #74618.
23517
23518 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23519
23520         * reflection.c reflection.h: Fix handling of parameter defaults in
23521         dynamic methods. Also fixes handling of parameter attributes.
23522         Fixes #74609.
23523
23524         * mono-debug.c (mono_debug_close_image): Fix warning.
23525
23526 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23527
23528         * socket-io.h: replaced old unused field with new 'blocking'.
23529         * threadpool.c: restore socket blocking state on windows(tm).
23530
23531 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23532
23533         * icall.c: don't return the codebase in the AssemblyName[] returned by
23534         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23535         * object-internals.h: Removed FIXME (fields were presents) and fixed
23536         versioncompat declaration.
23537
23538 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23539
23540         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23541         not closed, so don't cleanup when it happens.
23542
23543 2005-04-13  Chris Toshok  <toshok@ximian.com>
23544
23545         * mono-debug-debugger.h: change prototype for
23546         mono_debugger_lookup_type.
23547
23548         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23549         this function, although it should probably be named
23550         mono_debugger_init_type.
23551
23552 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23553
23554         * threadpool.c: fix non-AIO case.
23555
23556 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23557
23558         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23559         the built-in profiler to measure just JIT compilation times.
23560
23561 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23562
23563         * threadpool.c: the epollfd might be closed by another thread at
23564         any time, so ignore EBADF at treat it as a "we're closing" sign.
23565
23566 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23567
23568         * threadpool.c: release the semaphores with a count equals to the number
23569         of working threads in both IO and regular pools. Fixed typo that messed
23570         up the count of IO pool threads. Don't initialize the pipe handles if
23571         we're using epoll.
23572
23573 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23574
23575         * threadpool.c: some systems don't like a NULL when deleting the socket
23576         from epoll.
23577
23578 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23579
23580         * threadpool.c: fix semaphore allocation.
23581
23582 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23583
23584         * threadpool.c: added epoll() based implementation for asynchronous IO
23585         that is used instead of the default poll() when available.
23586         It can be disabled by setting MONO_DISABLE_AIO.
23587
23588 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23589
23590         * threadpool.c: windows needs 'closesocket' and instead of returning
23591         0 when the stream is closed while in select, it returns -1. Fixes bug
23592         #74573.
23593
23594 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23595
23596         * class.c (class_compute_field_layout): Fix the regression caused by
23597         the previous try.
23598
23599 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23600
23601         * threadpool.c: separate pool for socket async. IO.
23602         * threadpool.h: mono_max_worker_threads is not a global any more.
23603
23604 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23605
23606         * class.c (class_compute_field_layout): Fix #74549.
23607
23608 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23609
23610         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23611         use 2 connected sockets instead.
23612
23613 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23614
23615         * mono-config.c: Add new entry point for mkbundle
23616         mono_config_parse_memory. 
23617
23618 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23619
23620         * threadpool.c: removed another unused function.
23621
23622 2005-04-08  Ankit Jain  <radical@corewars.org>
23623
23624         * reflection.c (get_default_param_value_blobs): Add 'types'
23625         parameter to get the types encoded in the constant table.
23626         (mono_param_get_objects): Use the type from the constant table,
23627         not the type of the parameter, when creating default values.
23628         Handle null default values correctly.
23629
23630 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23631
23632         * file-io.c:
23633         * file-io.h:
23634         * threadpool.c:
23635         * threadpool.h:
23636         * icall.c:
23637         * socket-io.c: removed dead code for async IO.
23638
23639 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23640
23641         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23642
23643         * threadpool.c: intercept socket async. calls and pass them to a thread
23644         that is polling and dispatching the job items to the threadpool as
23645         socket become ready. Fixes bugs #71217, #71933.
23646
23647         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23648         between char and short/ushort arrays.
23649
23650         * socket-io.c: remove dead code.
23651
23652 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23653
23654         * locales.c,
23655           icall.c : removed InternalToUpper_Comp() and
23656           InternalToLower_Comp().
23657
23658 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23659
23660         * char-conversions.h : The tables were incorrectly generated. Should
23661           be generated against invariant culture.
23662
23663 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23664
23665         * object.c (mono_runtime_invoke_array): Fix return value when 
23666         passing pre-created valuetype objects to ctors.
23667
23668         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23669         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23670         Fixes #74338.
23671
23672 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23673
23674         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23675         only used with --security and hides the wrong corlib version error.
23676
23677 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23678
23679         * class.c: Changed mono_class_name_from_token so that types
23680         outside of a namespace don't have an initial period.  Improved
23681         the g_warning message used in _mono_class_get when loading
23682         fails.
23683         * assembly.c: In mono_assembly_load_reference, when an assembly
23684         can't be found, "No such file or directory" is misleading and
23685         unhelpful because a few paths were checked for the presence of
23686         the assembly.  When that happens (ENOENT), display a nicer
23687         message indicating the directories that were searched.  In all
23688         cases, the warning is made easier to read for non-hackers.
23689
23690 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23691
23692         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23693         project/solution.
23694         * appdomain.h|domain.c: Removed inline from functions.
23695         * appdomain.c: Reduced warnings when compiling on windows.
23696         * icall.c: Fixed output_debug declaration to gunichar2*.
23697         * mono-config.c: Reduced warnings when compiling on windows.
23698         * rand.c: Added missing "windows.h". Added missing return value.
23699         * rawbuffer.c: Added missing winsock2.h for windows.
23700         * sysmath.h: Added mono-compiler.h header to allow/ease 
23701         compilation with non-GCC compilers.
23702         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23703         Removed cast warnings.
23704
23705         Adapted from the work of J Lothian (for VC6).
23706
23707 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23708
23709         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23710         from default_path.
23711
23712 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23713
23714         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23715         the 2.0 profile.
23716
23717 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23718
23719         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23720         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23721         stuff, and it would probably use $(prefix)/share rather than
23722         $(prefix)/lib.
23723
23724 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23725
23726         * console-io.c: added 2 includes that might be missing.
23727
23728 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23729
23730         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23731         profile.
23732
23733         * reflection.c (create_custom_attr): Allocate the params array using
23734         alloca so it gets GC tracking.
23735
23736 2005-03-23  Chris Toshok  <toshok@ximian.com>
23737
23738         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23739         out some spew.
23740
23741 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23742
23743         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23744         changes to pick up any changes in prefix, etc.
23745
23746 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23747
23748         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23749         
23750         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23751         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23752
23753 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23754
23755         * class-internals.h object-internals.h class.c reflection.c: Extend the
23756         mono_lookup_dynamic_token () function to return the class of the
23757         token as well. 
23758
23759         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23760         well. Fixes #73848.
23761
23762 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23763
23764         * security-manager.c: Skip inheritance checks for intra-corlib
23765         class inheritance and method overrides. This skips a lot of checks
23766         and (anyway) permissions cannot work until corlib is loaded.
23767
23768 2005-03-23  Martin Baulig  <martin@ximian.com>
23769
23770         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23771         MONO_TYPE_GENERICINST.  
23772
23773 2005-03-23  Martin Baulig  <martin@ximian.com>
23774
23775         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23776
23777 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23778
23779         * class.c: added locking comments to some functions.
23780         Cache the interface offsets arrays (saves about 20 KB
23781         of runtime memory in a typical app).
23782         Reduce the time overhead in mono_class_setup_supertypes ().
23783
23784 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23785
23786         * icall.c: speedup and fix leaks in GetMethodsByName and
23787         GetPropertiesByName.
23788
23789 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23790
23791         * reflection.c: some locking fixes.
23792
23793 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23794
23795         * metadata.c: added missing break in case statement.
23796
23797 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23798
23799         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23800         typedbyref return values. Fixes #73941.
23801
23802 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23803
23804         * security-manager.c|h: Added demandunmanaged method and 
23805         suppressunmanagedcodesecurity class to MonoSecurityManager.
23806         Renamed aptc class to allowpartiallytrustedcallers.
23807
23808 2005-03-17  Martin Baulig  <martin@ximian.com>
23809
23810         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23811
23812 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23813
23814         * file-io.c: disabled file async. IO using aio_*. It uses the
23815         threadpool now. Workaround for bug #73718.
23816
23817 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23818
23819         * assembly.h, mono-config.c: added code to deal with bundled configs
23820         for bundled assemblies.
23821
23822 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23823
23824         * *.c, private.h: cleanup, removing old private.h header file.
23825
23826 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23827
23828         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23829         and throw_on_unmappable_char attributes.
23830
23831 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23832
23833         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23834         _ProcessName_internal.
23835
23836 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23837
23838         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23839         #73631.
23840
23841         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23842         are no longer used.
23843
23844 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23845
23846         * object.c (compute_class_bitmap): Add support for generics. Fixes
23847         #73527.
23848
23849 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23850
23851         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23852
23853 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23854
23855         * filewatcher.c: commented out the code for windows watcher, as we don't
23856         use it (we use the managed implementation instead).
23857
23858 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23859
23860         * object-internals.h (MonoThread): Remove 'unused1' field.
23861
23862         * appdomain.c: Bump corlib version.
23863
23864         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23865
23866         * reflection.c (mono_reflection_create_runtime_class): Remove the
23867         AssemblyBuilder.Save optimization since it causes too many problems.
23868
23869 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23870
23871         * exception.c|h: Added mono_get_exception_reflection_type_load to
23872         create a ReflectionTypeLoadException object.
23873         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23874         to return NULL is a InheritanceDemand fails during reflection. Updated
23875         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23876         ReflectionTypeLoadException if an InheritanceDemand fails during 
23877         reflection. Added icall mapping for GetLinkDemandSecurity.
23878         * security-manager.c|h: Added ves_icall_System_Security_
23879         SecurityManager_GetLinkDemandSecurity internal call to return the
23880         class and methods permissions set for a LinkDemand. Removed unused
23881         fields in MonoSecurityManager.
23882
23883 2005-03-10  Martin Baulig  <martin@ximian.com>
23884
23885         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23886         it's a generic instance.
23887
23888 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23889
23890         * reflection.c (mono_get_object_from_blob): Applied patch from
23891         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23892
23893         * class.c (mono_class_is_assignable_from): Another try at fixing 
23894         #73469 without breaking anything.
23895
23896 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23897
23898         * class.c: (mono_class_is_assignable_from): Revert the last changes
23899         since they don't work with generics.
23900         
23901         * class.c (mono_class_is_assignable_from): Fix build bustage.
23902
23903         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23904         the managed IsAssignableFrom method. Fixes #73469.
23905
23906         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23907         function.
23908
23909 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23910
23911         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23912         memory when the remoting callback does not sets the out arguments.
23913         Fixes #73007.
23914
23915         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23916         by mistake.
23917
23918         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23919
23920         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23921
23922         * appdomain.c: Bump corlib version.
23923
23924 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23925
23926         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23927         function.
23928
23929         * threads.c (mono_thread_attach): Detect threads which are not started
23930         by the GC pthread wrappers.
23931
23932 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23933
23934         * icall.c: Added new icall for RNG.
23935         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23936         single handle on Linux to access /dev/urandom and fix #73183.
23937
23938 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23939
23940         * object.c: setting the new vtable in a transparent proxy object must
23941         not change the GC descriptor.
23942
23943 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23944
23945         * object.c: fixed compilation without GCJ support.
23946         * reflection.c: for runtime-created types ensure klass->has_references
23947         is correct (bug #73215).
23948
23949 2005-03-02  Martin Baulig  <martin@ximian.com>
23950
23951         * class.c (mono_class_is_assignable_from): Make this work if
23952         `oklass' is a generic instance; fixes #72831.
23953
23954 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23955
23956         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23957         with hasthis set.
23958         
23959         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23960
23961         * marshal.c: Reorganize native->managed marshalling code to also use
23962         the emit_marshal_... functions.
23963
23964 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23965
23966         * object.c: typed allocs have issues with bitmap sizes > 30,
23967         so check for max_set >= 30.
23968
23969 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23970
23971         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23972         managed code. Fixes #73012.
23973
23974         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23975
23976         * metadata.c reflection.c: Load/Emit elem_mult as well.
23977         
23978         * metadata.h (MonoMarshalSpec): Add comment.
23979
23980         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23981
23982         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23983         num_elem to -1 if not given.
23984
23985         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23986
23987         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23988         given values.
23989
23990 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23991
23992         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23993
23994 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23995
23996         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23997
23998         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23999
24000 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
24001
24002         * object.c: generalized the reference bitmap creation
24003         and added hooks for the new GC.
24004         * class-internals.c: removed the gc_bitmap field from MonoClass.
24005
24006 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24007
24008         * domain.c: help the compiler to produce better code
24009         in mono_jit_info_table_find ().
24010
24011 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
24012
24013         * object.c: make all allocations look typed.
24014
24015 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24016
24017         * socket-io.c: load Mono.Posix if it's not loaded already
24018         (fixes bug#73033).
24019
24020 2005-02-24  Martin Baulig  <martin@ximian.com>
24021
24022         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
24023         * reflection.c (dup_type): Likewise.
24024
24025 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
24026
24027         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
24028         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
24029
24030 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24031
24032         * domain.c, threads.c, object-internals.h: make the critical thread
24033         local vars use the fast access mode (even when we're compiled in
24034         a lib). Provide accessors to be used by the jit during codegen.
24035
24036 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
24037
24038         * appdomain.c: Changed hook functios behavior to include
24039         support for the reflection only assemblies. Some icalls were changed
24040         to support the mentioned assemblies too. Signatures of static methods
24041         try_assembly_resolve and real_load now have an additional parameter:
24042         refonly.
24043
24044         * assembly.c: General changes to mono_assembly_ methods to support
24045         reflection only api. Functions mono_assembly_open, mono_assembly_load,
24046         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
24047         suffix, to support an additional gbool parameter to specify whether
24048         the assembli is reflection only or not. Created some new hook functions 
24049         to add support for reflection only assemblies. Signatures of static 
24050         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
24051         have now an additional parameter: refonly.
24052
24053         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
24054         indicating whether the assembly is reflection only or not.
24055
24056         * exception.c: Add mono_get_exception_invalid_operation.
24057
24058         * icall.c: Throw an InvalidOperationException when trying to invoke
24059         a property/method/event, or trying to set/get the value of a field.
24060         Also add an icall to retrieve the ref_only flag to the
24061         MonoReflectionAssembly.
24062
24063 2005-02-23  Chris Toshok  <toshok@ximian.com>
24064
24065         Part of fix for #72827.
24066         * mono-debug.c (mono_debug_add_method): add lexical block data to
24067         the info we write.  Kind of a hack at the moment - we copy the
24068         lexical block info from the MonoDebugMethodInfo to the
24069         MonoDebugMethodJitInfo here, before writing it.
24070         (mono_debug_read_method): read the lexical block info.
24071
24072         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
24073
24074         * debug-mono-symfile.h: add lexical block support.
24075
24076         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
24077         support.
24078
24079 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
24080
24081         * loader.c (mono_lookup_pinvoke_call): Fix warning.
24082
24083         * object.c (mono_runtime_free_method): Call mono_free_method () and
24084         put the TODOs there.
24085
24086         * loader.c (mono_free_method): Free up most memory allocated for 
24087         dynamic methods.
24088
24089 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24090
24091         * reflection.c: properly flag a Type argument to a
24092         named custom attr value (bug #72248).
24093
24094 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24095
24096         * reflection.c: reduce code duplication in named custom
24097         attribute encoding.
24098
24099 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
24100
24101         * reflection.c: properly encode custom attrs of type object
24102         (bug #72649).
24103
24104 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
24105
24106         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
24107
24108 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
24109
24110         * socket-io.c: load System.dll if it's not loaded already
24111         (bug #72850 and #70477).
24112
24113 2005-02-21  Martin Baulig  <martin@ximian.com>
24114
24115         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
24116         generic instances.
24117
24118 2005-02-21  Martin Baulig  <martin@ximian.com>
24119
24120         * reflection.c (mono_image_build_metadata): We also need to
24121         "fixup" the MethodImpl table after we computed the final method
24122         indices.  Call fixup_methodimpl() to do that.
24123         (fixup_methodimpl): New private method.
24124
24125 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
24126
24127         * assembly.c: special case mscorlib.dll (bug#72536),
24128         patch from Carlos Alberto Cortez.
24129
24130 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * threads-types.h threads.c: Fix build bustage.
24133
24134         * threads.c: Use a union for long<->double conversions.
24135
24136         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
24137         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
24138
24139         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
24140         containing the checkpoint call with NOT_TAKEN.
24141         
24142         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
24143         checkpoint before pushing the arguments, so they won't have to be
24144         spilled to stack.
24145
24146 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24147
24148         * domain.c, assembly.c, domain-internals.h: make some data
24149         const and relocation-free.
24150
24151 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
24152
24153         * object.c, appdomain.c, class-internals.h: introduce the
24154         MonoClassRuntimeInfo structure to hold the info needed to
24155         use a class at runtime. Made mono_class_vtable() lock-free
24156         for all the appdomains.
24157
24158 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
24159
24160         * metadata-internals.h, image.c: introduce a per-image mempool to
24161         be used for memory that has the same lifetime as the image.
24162
24163 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
24164
24165         * domain.c: In mono_init_internal(), instead of selecting the first
24166         runtime version supported by an executable, get a list of all
24167         supported versions and select the one for which an mscorlib exists
24168         (since even if the runtime supports a given version, it doesn't mean
24169         that the framework for that version is installed).
24170         Modified get_runtimes_from_exe to support this behavior.
24171         In supported_runtimes, added information about additional system
24172         assembly versions.
24173         
24174         * assembly.c: Added support for more than one system assembly version
24175         per runtime version. Updated the assembly list.
24176         In mono_assembly_remap_version, removed the initial version check,
24177         since we don't know to which version we need to compare until we
24178         get the version set on which the assembly is based.
24179         Moved the code for loading corlib into the new method
24180         mono_assembly_load_corlib(), so it can be used by the initialization
24181         code.
24182         
24183         * domain-internals.h: Updated data structures and added declaration
24184         for mono_assembly_load_corlib.
24185
24186 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24187
24188         * reflection.c (resolve_object): Fix the creation of the signature in 
24189         the SignatureHelper case.
24190
24191         * assembly.c (mono_assembly_remap_version): Fix binary search.
24192         
24193 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
24194  
24195         * class.c: Added inheritance check when a method is overloaded (from a
24196         virtual method or when implementing an interface) and when a class is
24197         inherited. Added functions to set a failure for a class and to 
24198         retreive the exception from a failure.
24199         * class-internals.h: Added fields to MonoClass to keep the exception
24200         information status for inheritance (or other exceptions) to be thrown
24201         later (i.e. not at load time).
24202         * object.c: Throw the inheritance SecurityException when a type is to 
24203         be created with either class or method inheritance violations.
24204         * reflection.c|h: Fix when getting declsec from a class. Removed 
24205         unrequired code for class. Improved sanity in parameter naming.
24206         * security-manager.c|h: Added functions to check for class and method
24207         inheritance.
24208
24209 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24210
24211         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
24212         and has_finalize in dynamic types as well.
24213
24214 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
24215
24216         * culture-info-table.h : fixed currency format for en-GB (and so on).
24217
24218 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
24219
24220         * gc.c: ensure the GC handles never have 0 as a value.
24221
24222 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24223
24224         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
24225         a pointer to a struct to unmanaged code. Fixes #72625.
24226
24227 2005-02-16  Martin Baulig  <martin@ximian.com>
24228
24229         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
24230
24231 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24232
24233         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
24234
24235 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24236
24237         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
24238
24239         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
24240         UnmanagedFunctionPointerAttribute, use it for determining calling convention
24241         etc. Fixes #71471.
24242
24243         * reflection.c (mono_custom_attrs_get_attr): New helper function.
24244
24245         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
24246
24247 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
24248
24249         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
24250         changes to make the current context a field in MonoThread.
24251
24252 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24253
24254         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
24255         the last change.
24256         
24257         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
24258         extracted from mono_marshal_get_native_wrapper.
24259
24260         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
24261         to create wrappers around native functions.
24262
24263         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
24264         delegates for arbitrary function pointers. Fixes #71472.
24265
24266 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24267
24268         * threads.c: cleaned up the code a little.
24269
24270 2005-02-15  Martin Baulig  <martin@ximian.com>
24271
24272         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24273         the data table.
24274
24275         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24276         allocate larger chunks if needed.
24277
24278 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24279
24280         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24281         in by mistake.
24282
24283 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24284
24285         * domain.c: keep the domains in an array and ensure the domain ids
24286         are kept small, so they can be used as indexes to domain-specific data
24287         with a small memory overhead.
24288
24289 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24290
24291         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24292
24293 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24294
24295         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24296
24297 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24298
24299         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24300
24301         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24302         values.
24303
24304         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24305         
24306 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24307
24308         * domain-internals.h: add the hashtable here.
24309
24310         * class-internals.h: Remove `info' from MonoMethod
24311
24312         * domain.c: Add a new hashtable, jit_trampoline_hash
24313
24314 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24315
24316         * object.c: don't set the value of static fields
24317         (fixes bug#72494).
24318
24319 2005-02-11  Martin Baulig  <martin@ximian.com>
24320
24321         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24322         (mono_debug_add_method): Silently ignore the method if it's too big.
24323         (mono_debug_add_type): Likewise.
24324
24325 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24326
24327         * threads.c, appdomain.c: remove #ifdefs from the code.
24328
24329 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24330
24331         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24332         common security informations. This allows us to stay in unmanaged code
24333         when doing LinkDemand and it's special cases (except for the first 
24334         time for initialization). The flags a very much used with --security.
24335         * reflection.c|h: Added code to get declarative security attributes 
24336         for LinkDemand and InheritanceDemand. This required to refactor the
24337         existing code for Demand.
24338         * security-manager.c|h: Added new method fields for the special cases
24339         of LinkDemand.
24340
24341 2005-02-10  Martin Baulig  <martin@ximian.com>
24342
24343         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24344         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24345
24346 2005-02-10  Martin Baulig  <martin@ximian.com>
24347
24348         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24349         debugging code; this is almost a complete rewrite.
24350
24351         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24352
24353 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24354
24355         * domain.c, object.h: expose mono_string_equal () and 
24356         mono_string_hash ().
24357         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24358         it's implemented in managed code.
24359
24360 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24361
24362         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24363         lo leak objects between appdomains.
24364
24365 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24366
24367         * assembly.c: old compilers compilation fix from 
24368         robertj@gmx.net (Robert Jordan).
24369
24370 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24371
24372         * class-internals.h: Little reminder for the future.
24373
24374         * debug-helpers.c: Fix up wrapper_type_names
24375
24376 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24377
24378         * image.c, metadata-internals.h: when loading an image from a file,
24379         mmap all of it and use the same codepaths as when using a
24380         in-memory image: the code is simpler and we use less memory
24381         (both writable and readonly).
24382
24383 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24384
24385         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24386         API to alloc runtime data structures that need to be tracked by the
24387         GC and contain pointers.
24388         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24389         make the code more readable and eventually use a different GC.
24390
24391 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24392
24393         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24394         for out arguments.
24395         
24396 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24397
24398         * object.c: In release_type_locks(), don't release the cctor lock
24399         if it has already been released. This fixes a crash in the
24400         thread5 test.
24401
24402 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24403
24404         * gc.c, marshal.c, icall.c: register a delegate for finalization
24405         only when the native function pointer has been allocated for it.
24406
24407 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24408
24409         * object.c: cleaned up some code, allocate objects that are
24410         pointer free with the atomic malloc variant. Allocate memory
24411         for static data from the mempool if it's pointer-free.
24412         Allocate the bounds array at the end of the array data, when needed.
24413         * object-internals.h, object.h: move a private function in a private
24414         header.
24415         * class.c: handle missing case in tracking references in fields.
24416
24417 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24418
24419         * class.c, class-internals.h: keep track if a type has
24420         reference fields in either the instance or static fields.
24421
24422 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24423
24424         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24425         and renamed to MonoRuntimeInfo. Added fields to store the expected
24426         framework assembly version. Changed mono_get_framework_version and
24427         mono_get_runtime_version for a single mono_get_runtime_info method.
24428         
24429         * assembly.c: Added method to remap system assembly versions to the
24430         current executing runtime version. Removed old mapping code.
24431         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24432         
24433         * icall.c, reflection.c: Track api changes.
24434
24435 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24436
24437         * loader.c (method_from_memberref): Improve error reporting,
24438         produce the class name instead of the typeref/typedef index. 
24439
24440 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24441
24442         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24443
24444 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24445
24446         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24447         stdcall and charset name mangling.  Reorganize the code and add
24448         some tracing stuff.
24449
24450 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24451
24452         * monodiet.c: More iters!
24453
24454         * marshal.c: Iter usage.
24455
24456         * icall.c: Iter usage.
24457
24458         * object.c: Use iters.
24459
24460         * debug-helpers.c: More iters
24461
24462 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24463
24464         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24465         under win32.
24466
24467 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24468
24469         * mono-debug-debugger.c: use iters
24470
24471         * class.c, class-internals.h: mono_class_setup_events is static
24472         now
24473
24474         * All callers: use iters
24475
24476 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24477
24478         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24479         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24480
24481 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24482
24483         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24484
24485         * marshal.h: Add prototypes for ldfld/stfld_remote.
24486
24487         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24488         this is called during startup.
24489         
24490 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24491
24492         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24493         MonoThreadsSync struct private in monitor.c. Changed the way
24494         MonoThreadsSync is allocated so it's faster and there is no
24495         need to keep track of it with a finalizer and it uses less memory.
24496         This also finally allows us to allocate mono objects as ptrfree when
24497         there are no reference fields.
24498
24499 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24500
24501         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24502         disappearing link to the GC interface and use them to simplify
24503         the gchandles code.
24504
24505 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24506
24507         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24508         stfld_remote which call mono_load/store_field_new. This allows methods
24509         calling ldfld/stfld wrappers to be AOTed.
24510
24511         * console-io.c: Include sys/filio.h under solaris.
24512         
24513         * console-io.c: Include curses.h if needed correctly.
24514
24515 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24516         
24517         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24518         method->klass as well.
24519
24520         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24521
24522         * class.c (mono_class_init): Switch on lazy initialization of 
24523         methods.
24524
24525         * class.c (mono_class_get_finalizer): Handle the case when the 
24526         finalizer is inherited.
24527
24528 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24529
24530         * console-io.c: <curses.h> is needed by term.h on solaris.
24531
24532 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24533
24534         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24535         mono_class_setup_properties where possible. Remove this ftn from
24536         the header file, and make it static.
24537
24538 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24539
24540         * loader.c: Add missing setup_... call.
24541
24542         * class.c: Add missing setup_... calls.
24543
24544         * class.c (mono_class_init): Switch on lazy initialization of 
24545         the generic vtable.
24546         
24547         * class.c (mono_class_init): Fix generics broken by the recent changes.
24548
24549         * monodiet.c (handle_type): Add missing setup_... calls.
24550
24551         * class.c: Back out garbage in previous patch.
24552         
24553         * class.c: Add missing setup_... calls.
24554
24555         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24556         mono_class_setup_methods () if possible.
24557
24558         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24559
24560         * class-internals.h (MonoCachedClassInfo): New structure.
24561
24562         * class.c: Initialize properties and events fields of MonoClass lazily.
24563
24564         * class.c: Add infrastructure for lazily initializing the methods and
24565         vtable fields of MonoClass. Not yet used.
24566
24567         * class.c (mono_class_get_finalizer): New helper function.
24568
24569         * class.c: Add infrastructure for loading some class related data from
24570         an AOT file.
24571
24572         * object.c: Add infrastructure for initializing the vtable from data
24573         in the AOT file.
24574
24575         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24576
24577         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24578         appropriate initialization function before accessing parts of the
24579         MonoClass structure.
24580
24581         * marshal.c: Fix warnings.
24582         
24583         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24584
24585         * mono-debug-debugger.c (get_exception_message): Use 
24586         mono_class_get_method_from_name_flags ().
24587
24588 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24589
24590         * reflection.c, appdomain.c: Replace a few manual searches that
24591         Zoltan missed. (Paolo approved this part of my initial patch).
24592
24593 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24594
24595         * profiler.c: disable recording statistical events at report time.
24596
24597 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24598
24599         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24600         to byteswap arrays of enum values, too (bug #72080).
24601
24602 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24603
24604         * appdomain.c (set_domain_search_path): Allow this to be called if
24605         domain->setup is not yet set.
24606
24607         * loader.c (mono_method_get_index): New helper function.
24608
24609         * loader.c reflection.c: Use mono_method_get_index ().
24610
24611         * class.c (mono_class_get_method_from_name_flags): New helper method.
24612
24613         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24614         this.
24615
24616         * class.c (mono_class_get_cctor): New helper method.
24617
24618         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24619         mono_class_get_method () to look up methods.
24620
24621 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24622
24623         * console-io.c: Fix the build, this should work on Windows.
24624
24625 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24626
24627         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24628         be set to null to keep things valid
24629
24630 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24631
24632         * icall.c: added Console 2.0 icalls.
24633         * Makefile.am: added console-io.[ch]
24634         * console-io.[ch]: internal calls for Console 2.0 API.
24635
24636 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24637
24638         * class.c: make sure we consider all the interfaces
24639         when calculating max_interface_id (bug found by
24640         Jeroen Frijters running ikvm).
24641
24642 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24643
24644         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24645         valuetype fields to null.
24646
24647         * object.c (set_value): Ditto. Fixes #71669.    
24648
24649 2005-01-31  Martin Baulig  <martin@ximian.com>
24650
24651         * metadata.c (mono_metadata_has_generic_params): New public
24652         function; checks whether something is a generic method.
24653
24654 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24655
24656         * appdomain.c: fix infinite recursion when adding assemblies.
24657
24658 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24659
24660         * object.c: Fix small typo to return all items for Environment.
24661         GetCommandLineArgs.
24662
24663 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24664
24665         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24666         reflection.c: more domain and assembly-unload related fixes
24667         and memory leaks plugs.
24668
24669 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * 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.
24672
24673 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24674
24675         * loader.c (mono_method_signature): Make this method lazy
24676         (mono_get_method_from_token): Don't computate the signature here.
24677
24678         Doing this saves quite a bit of memory. I got 90 kb on starting up
24679         monodoc. It should also save some disk reads on startup.
24680
24681         * *: MonoMethod->signature might be NULL now. You *MUST* use
24682         mono_method_signature.
24683
24684 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24685
24686         * object.c (mono_runtime_get_main_args): Return an array from the
24687         current domain here. Fixes #71938.
24688
24689 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24690
24691         * monitor.c: formatting changes to comply with the
24692         mono coding style and remove #ifdefs from the code.
24693
24694 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24695
24696         * metadata.c, private.h: remove some unneeded data
24697         and use a more compact representation for table schemas.
24698
24699 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24700
24701         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24702         to get a better distribution in hash tables.
24703         * *.c: use mono_aligned_addr_hash() where appropriate.
24704         * assembly.c: make var static.
24705
24706 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24707
24708         * domain-internals.h: Put MonoJitInfo on a diet.
24709
24710         * domain.c: Fix a warning.
24711
24712 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24713
24714         * gc.c: rework the gc handles code to reuse handles
24715         when freed.
24716
24717 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24718
24719         * domain.c: fixed long standing bug in mono_string_equal() which
24720         was brought to light with the ldstr changes.
24721
24722 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24723
24724         * reflection.c: Remove warning by adding missing include for marshal.h
24725
24726 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24727
24728         * domain.c, object.c: change the ldstr_table to hold
24729         MonoString* as keys: makes the runtime isinterned lookup
24730         faster and simplifies memory management.
24731
24732 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24733  
24734         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24735         possible to add imperative security checks before calling the icall.
24736         * reflection.c: Return security attributes on the original MonoMethod
24737         (and not the wrapped one). This fix permissions on icalls.
24738
24739 2005-01-25  Dick Porter  <dick@ximian.com>
24740
24741         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24742         the check for mktime() support actually test the mktime() return
24743         value.  "Fixes" bug 71682, though the output is still different to
24744         MS.
24745
24746 2005-01-25  Martin Baulig  <martin@ximian.com>
24747
24748         * class.c (mono_class_is_assignable_from): Make this work for
24749         generic instances.
24750
24751 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24752
24753         * marshal.c (mono_string_utf8_to_builder)
24754         (mono_string_builder_to_utf16): We might not have ownership of the
24755         string. In thise case, we need to create a new buffer.
24756
24757         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24758         be null, in which case, use the default capacity.
24759
24760 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24761
24762         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24763         GC events to the profiler.
24764
24765 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24766
24767         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24768         if you don't want the GC to run.
24769
24770 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24771
24772         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24773         start providing a GC API and keeping different implementations in
24774         their own file.
24775         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24776
24777 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24778
24779         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24780         mmap rather than allocating a huge buffer.
24781         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24782         above.
24783
24784 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24785
24786         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24787         and CheckExecutionRights.
24788         * reflection.c|h: Keep the index of the declarative security to be 
24789         used, instead of the pointer, when AOT compiler is used. Also add 
24790         class initialization when requesting demands.
24791         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24792         CheckExecutionRights. Both properties are now FALSE by default, and
24793         unmodifiable, unless the --security option is used.
24794
24795 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24796
24797         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24798         reflection.c: properly refcount images and assemblies, many leaks fixed.
24799
24800 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24801
24802         * threadpool.c: increase the timeout for threads in the thread pool to
24803         10s.  Fixes bug #67159.
24804
24805 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24806
24807         * class-internals.h: Sun's compiler insists on explicit
24808         signed on bit fields to handle then correctly.
24809
24810 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24811
24812         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24813         Make the size of the array fit only the number of invalid path
24814         chars that we have.
24815
24816         * class.c (_mono_class_get): Improve the error reporting when a
24817         class referenced is not found, to assist debugging. 
24818
24819 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24820
24821         * threads.c: fix off-by-one error.
24822         * domain.c: free data allocated in the domain.
24823
24824 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24825
24826         * reflection.c (mono_method_body_get_object): Fill out exception info
24827         as well.
24828
24829         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24830         structure.
24831         
24832 2005-01-19  Martin Baulig  <martin@ximian.com>
24833
24834         * loader.c (mono_get_method_constrained): Make this work again.
24835
24836 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24837
24838         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24839         guint16 to match the managed side.
24840
24841         * reflection.c (mono_reflection_body_get_object): Fill out local
24842         variables array.
24843
24844         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24845         as well.
24846
24847         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24848         'local_var_sig_token'.
24849
24850 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24851
24852         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24853         System.Drawing.
24854
24855         * reflection.c (mono_method_body_get_object): Handle abstract and
24856         runtime methods.
24857
24858 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24859
24860         * marshal.c, loader.c, class-internals.h, reflection.c:
24861         store the emthod data for a wrapper in an array instead of a list.
24862
24863 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24864
24865         * marshal.c: change the code to allocate memory more
24866         conservatively for method wrappers.
24867
24868 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24869
24870         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24871         fields from MonoClass to the marshal info structure where they belong.
24872
24873 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24874
24875         * class.c, object.c, class-internals.h, marshal.c: rearrange
24876         some fields and tweak some types to lower memory usage.
24877
24878 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24879
24880         * threads.c (signal_thread_state_change): Handle the case when the
24881         target thread is the current thread.
24882
24883         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24884
24885         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24886         emit_ptr_to_object_conv. 
24887
24888         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24889         marshalling. Fixes #71352.
24890
24891 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24892
24893         * metadata.h, blob.h: move table enum to blob.h so it can be included
24894         in any header.
24895         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24896         cut the size of MonoImage/MonoDynamicImage.
24897
24898 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24899
24900         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24901
24902 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24903
24904         * reflection.c, reflection.h, icall.c: add a function to check
24905         if an attribute type is defined for a metadata object.
24906
24907 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24908
24909         * object-internals.h: Added some needed fields from StringBuilder class.
24910         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24911
24912 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24913
24914         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24915         threads before shutting down the runtime.
24916
24917         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24918
24919 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24920
24921         * object-internal.h, threads.c: implement stacksize and 
24922         parameterized thread start functionality (requires
24923         matching corlib). Marked broken code for later removal.
24924
24925 2005-01-12  Martin Baulig  <martin@ximian.com>
24926
24927         * class-internals.h (MonoGenericClass): Moved the `initialized'
24928         flag to MonoDynamicGenericClass, removed `init_pending'.
24929         (MonoGenericInst): Added `is_reference' flag.
24930
24931 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24932
24933         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24934         inside the MSDOS header. Fixes #71201.
24935
24936         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24937         gc thread.
24938         (mono_domain_finalize): Ditto.
24939
24940 2005-01-12  Martin Baulig  <martin@ximian.com>
24941
24942         * class.c (mono_get_shared_generic_class): Use the cache for
24943         non-dynamic generic classes.
24944
24945         * class-internals.h (mono_class_create_generic_2): Removed
24946         function prototype, this function is now static inside class.c.
24947
24948         * class.c (mono_class_create_generic_2): Made this static, only
24949         call it from mono_class_init() and mono_class_setup_parent().
24950         (collect_implemented_interfaces_aux): Call mono_class_init() on
24951         the interfaces we collect.
24952         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24953
24954 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24955
24956         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24957         it a real thread handle.
24958
24959         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24960         MonoJitExceptionInfo, since each catch clause needs its own variable.
24961         
24962 2005-01-11  Dick Porter  <dick@ximian.com>
24963
24964         * image.c (mono_pe_file_open): New variant on mono_image_open()
24965         that does not set up the CLI metadata; used for FileVersionInfo so
24966         it can get the data for windows binaries too.
24967         
24968         * process.c (process_read_string_block): Don't read off the end of
24969         the StringTable block.
24970
24971         These both fix bug 70766.
24972
24973 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24974
24975         * gc.c: set some fields to NULL at GC cleanup time.
24976         * threads.c: if we quit the main thread, call exit ().
24977
24978 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24979
24980         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24981
24982 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24983
24984         * threads.h, threads.c, object.c: added accessor and settor for
24985         main_thread. Handle it specially when exiting from it: wait
24986         for other foreground threads to exit.
24987
24988 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24989
24990         * process.c, verify.c: remove some bloat.
24991
24992 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24993
24994         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24995         the calling convention to cdecl under win32.
24996
24997 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24998
24999         * object.c (mono_object_get_size): New function to get the size of
25000         an object instance.
25001
25002         * profiler.c (simple_allocation): Use above.
25003
25004 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
25005
25006         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
25007         ves_icall_System_AppDomain_getRootDomain (as it's not required to
25008         get an appdomain by it's id and we can't assume the root's id is 0).
25009         * domain-internals.h: Change the function prototype to match.
25010         * icall.c: Change the icall table for AppDomain.
25011
25012 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
25013
25014         * locales.c (string_invariant_compare_char): Only compute
25015         GUnicodeTypes in the case where we need them.  Test for ordinality
25016         first and return if so.
25017
25018         From the commit:
25019
25020                 /*
25021                  * FIXME: here we must use the information from c1type and c2type
25022                  * to find out the proper collation, even on the InvariantCulture, the
25023                  * sorting is not done by computing the unicode values, but their
25024                  * actual sort order.
25025                  */
25026
25027 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
25028
25029         * loader.c: for P/Invoke methods, allow the "Internal" shared
25030         library name to refer to the calling process symbol namespace.
25031
25032 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
25033
25034         * Makefile.am: Add the security manager to the build.
25035         * security-manager.c|h: New. Initialization of the security manager.
25036
25037 2005-01-07  Dick Porter  <dick@ximian.com>
25038
25039         * threads.c: 
25040         * monitor.c: Update thread state during Monitor and WaitHandle
25041         waits.  Fixes bug 71031.
25042
25043 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
25044
25045         * reflection.c (property_encode_signature): Correctly handle when the
25046         property has no methods.
25047
25048 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
25049
25050         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
25051         
25052         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
25053         fields from mb, not rmb. Fixes #71017.
25054
25055         * marshal.c (emit_ptr_to_str_conv): Add support for 
25056         ByValTStr -> string conversion. Fixes #71015.
25057
25058         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
25059
25060         * mempool.c (mono_mempool_contains_addr): New helper function.
25061
25062 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
25063
25064         * metadata.c (mono_metadata_compute_size): Fix size calculation of
25065         HasSematics encoded fields.
25066         
25067         * metadata.c (mono_type_to_unmanaged): Improve error message for 
25068         invalid string marshalling.
25069
25070         * metadata.c: Fix warnings.
25071         
25072 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
25073
25074         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
25075         profiler support.
25076
25077 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
25078
25079         * domain.c object.c domain-internals.h: Revert part of r38077 since the
25080         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
25081         tests.
25082
25083 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
25084
25085         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
25086         so methods containing these can be AOTed.
25087
25088 2005-01-03  Martin Baulig  <martin@ximian.com>
25089
25090         * loader.c (find_method): Removed the hack for generic instances.
25091         (method_from_memberref): If our parent is a generic instance, pass
25092         its generic type definition to find_method() and then inflate the
25093         method.
25094         (mono_get_method_constrained): Pass the generic type definition to
25095         find_method() and inflate the method later.
25096
25097         * class-internals.h (MonoStats): Added `generic_class_count'.
25098
25099         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
25100         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
25101
25102         * reflection.c (mono_custom_attrs_from_params): Don't ignore
25103         generic type definitions.
25104
25105 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
25106
25107         * loader.c icall.c: Fix warnings.
25108
25109 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
25110
25111         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
25112         blittable types. Fixes #70864.
25113
25114 2004-12-29  Martin Baulig  <martin@ximian.com>
25115
25116         * icall.c
25117         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
25118
25119         * reflection.c (mono_method_get_object): Create a
25120         "System.Reflection.MonoGenericMethod" for inflated methods; don't
25121         call mono_get_inflated_method().
25122
25123         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
25124
25125 2004-12-27  Martin Baulig  <martin@ximian.com>
25126
25127         * class-internals.h (MonoMethod): Added `is_inflated' flag.
25128         (MonoMethodInflated): Added `inflated' field.
25129
25130         * class.c (mono_class_inflate_generic_method): Don't really
25131         inflate the method here; just set the `is_inflated' flag in the
25132         MonoMethod.
25133         (mono_class_get_inflated_method): Actually inflate the method here
25134         if it's not already inflated; we use the MonoMethodInflated's new
25135         `inflated' field as a cache.
25136
25137 2004-12-26  Martin Baulig  <martin@ximian.com>
25138
25139         * class.c
25140         (inflate_generic_class): Moved some code out of inflate_generic_type().
25141         (mono_class_inflate_generic_method): If we're already inflated,
25142         inflate the context and use the declaring method; ie. make sure
25143         the declaring method of an inflated method is always the generic
25144         method definition.
25145         (mono_class_create_from_typedef): Create
25146         `class->generic_container->context->gclass'.
25147
25148 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
25149
25150         * metadata-internals.h, marshal.c, reflection.c: More
25151         MonoGHashTable->GHashTable.
25152
25153         * domain-internals.h, class.c: Change MonoGHashTable's into
25154         GHashTables for some cases where no gc stuff is used
25155
25156         All users: update apis
25157
25158 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
25159
25160         * metadata.c (builtin_types): Make this `const'. Makes this get
25161         put into the shareable section.
25162         (mono_metadata_init): Casts to make gcc happy.
25163
25164 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
25165
25166         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
25167
25168 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
25169
25170         * icall.c: Added an internal call to retrieve the position and length
25171         of assembly-level declarative security attributes (RequestMinimum, 
25172         RequestOptional and RequestRefuse). This is used by the Assembly class
25173         to re-create the corresponding permission sets.
25174
25175 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
25176
25177         * marshal.c: fix the stelemref wrapper to be type correct
25178         (and faster).
25179
25180 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
25181
25182         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
25183         to do key & 0x7fffffff. Hashtable already does this. It just
25184         results in longer code.
25185
25186 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
25187
25188         * appdomain.c: Bump corlib version.
25189         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
25190         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
25191         * reflection.c|h: Add functions to get declarative security infos
25192         (blob position and length) for assemblies, classes and methods.
25193
25194 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
25195
25196         * reflection.c: sort the constant table (bug #70693).
25197
25198 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
25199
25200         * object-internals.h, threads.c, domain.c: add accessors for
25201         the MonoThread and MonoDomain tls keys.
25202
25203 2004-12-18  Martin Baulig  <martin@ximian.com>
25204
25205         * class.c (inflate_generic_type): If we're inflating a generic
25206         instance, set `ngclass->context->container = context->container';
25207         ie. the container we inflated into.
25208
25209         * metadata.c (mono_metadata_parse_generic_param): Reflect above
25210         inflate_generic_type() changes.
25211
25212 2004-12-17  Martin Baulig  <martin@ximian.com>
25213
25214         * class-internals.h
25215         (MonoGenericClass): Replaced `MonoType *generic_type' with
25216         `MonoClass *generic_class'.  Removed `dynamic_info'; if
25217         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
25218         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
25219
25220 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
25221
25222         * exception.c (mono_exception_from_token): New helper function.
25223
25224 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
25225
25226         * assembly.c (mono_assembly_load_with_partial_name): Call 
25227         mono_assembly_loaded before invoking the preload hooks. Fixes
25228         #70564.
25229
25230         * object-internals.h (MonoThread): Change culture_info and 
25231         ui_culture_info into an array.
25232
25233         * threads.c: Cache culture info objects from more than one appdomain.
25234
25235         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
25236         current UI culture.
25237
25238 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
25239
25240         * threads.h threads.c appdomain.c: Clear the culture_info field of
25241         all threads during unloading if they point to an object in the dying
25242         appdomain.
25243
25244 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
25245
25246         * culture-info.h (TextInfoEntry): New struct
25247         * object-internals.h: sync with managed
25248         * locales.c: fill the `text_info_data' field
25249         * culture-info-tables.h: update
25250
25251 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
25252
25253         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
25254         collector.
25255
25256 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
25257
25258         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
25259         (ves_icall_ModuleBuilder_getMethodToken): Ditto
25260
25261 2004-12-12  Martin Baulig  <martin@ximian.com>
25262
25263         * mono-debug-debugger.c (write_type): If we're an enum and the
25264         builtin types have already been initialized, call mono_class_init().
25265
25266 2004-12-11  Martin Baulig  <martin@ximian.com>
25267
25268         * metadata.c (mono_metadata_load_generic_params): Added
25269         `MonoGenericContainer *parent_container' argument; automatically
25270         compute `container->is_method'; pass the correct owner to
25271         get_constraints().      
25272
25273         * reflection.c (compare_genericparam): Sort the GenericParam table
25274         according to increasing owners. 
25275
25276 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25277
25278         * profiler.c: allow disabling the default profiler.
25279
25280 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25281
25282         * decimal.c, icall.c: allow disabling System.Decimal support.
25283
25284 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25285
25286         * reflection.c: Add support for null attribute arguments.
25287
25288 2004-12-09  Martin Baulig  <martin@ximian.com>
25289
25290         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25291         names to get rid of compiler warnings.
25292
25293 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25294
25295         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25296         mono_marshal_load_type_info (). Fixes #69625.
25297         (mono_marshal_get_ptr_to_struct): Likewise.
25298
25299 2004-12-08  Martin Baulig  <martin@ximian.com>
25300
25301         * mono-debug.h: Bumped version number to 47.
25302
25303         * mono-debug-debugger.c
25304         (mono_debugger_event_handler, mono_debugger_event): Take two
25305         guint64 arguments insteed of a gpointer and a guint32.  
25306
25307 2004-12-08  Martin Baulig  <martin@ximian.com>
25308
25309         * debug-mono-symfile.h
25310         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25311         `address' to `native_offset'.
25312
25313 2004-12-08  Martin Baulig  <martin@ximian.com>
25314
25315         * class.c (mono_class_create_from_typespec): Only inflate if we
25316         either have `context->gclass' or `context->gmethod'.
25317
25318 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25319
25320         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25321
25322         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25323
25324         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25325
25326         * reflection.c (mono_assembly_get_object): Remove the workaround put
25327         in for the release.
25328         
25329         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25330
25331         * appdomain.c: Bump corlib version.
25332
25333         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25334         be visible in other appdomains.
25335
25336 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25337
25338         * threads.c: Interlocked inc and dec for longs were messed up,
25339         use a KISS based impl for this. Fixes 70234
25340
25341 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25342
25343         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25344
25345 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25346
25347         * icall.c: fix to follow policy not to allow struct
25348         arguments in icalls.
25349
25350 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25351
25352         * process.c: make the patch that handles spaces in file paths work
25353         on mono/windows too.
25354
25355 2004-12-06  Martin Baulig  <martin@ximian.com>
25356
25357         * class.c (mono_class_create_generic): Call
25358         mono_class_setup_supertypes() if we're dynamic.
25359         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25360
25361 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25362
25363         * object-internals.h: Add new fields to MonoThread.
25364
25365         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25366
25367         * icall.c threads-types.h threads.c: Add new icalls.
25368
25369         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25370
25371         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25372         managed side.
25373
25374         * appdomain.c: Bump corlib version.
25375
25376         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25377         internal assemblies. Fixes #69181.
25378
25379 2004-12-05  Martin Baulig  <martin@ximian.com>
25380
25381         * class.c (mono_class_inflate_generic_signature): Make this a
25382         no-op if `context' is NULL or we don't have any type parameters;
25383         also copy `sentinelpos'.        
25384
25385 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25386
25387         * image.c: Add unbox_wrapper_cache.
25388
25389         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25390
25391         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25392         function generator.
25393         
25394         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25395         Fixes #70173.
25396
25397         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25398         
25399 2004-12-04  Martin Baulig  <martin@ximian.com>
25400
25401         * loader.c (mono_method_get_signature_full): New public function;
25402         like mono_method_get_signature(), but with an additional
25403         `MonoGenericContext *' argument.
25404
25405         * class.c (mono_class_inflate_generic_signature): Formerly known
25406         as inflate_generic_signature(); make this public.
25407
25408 2004-12-04  Martin Baulig  <martin@ximian.com>
25409
25410         * metadata.c
25411         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25412         instead of a `MonoGenericContainer *'.  
25413         (mono_metadata_parse_array_full): Likewise.
25414         (mono_metadata_parse_signature_full): Likewise.
25415         (mono_metadata_parse_method_signature_full): Likewise.
25416         (mono_metadata_parse_generic_inst): Likewise.
25417         (mono_metadata_parse_generic_param): Likewise.
25418         (mono_metadata_parse_mh_full): Likewise.
25419         (mono_type_create_from_typespec_full): Likewise.
25420
25421 2004-12-03  Martin Baulig  <martin@ximian.com>
25422
25423         * class-internals.h (MonoGenericContainer): Replaced the
25424         `MonoGenericContext * pointer with a `MonoGenericContext'
25425         structure and made it the first element.
25426
25427 2004-12-03  Martin Baulig  <martin@ximian.com>
25428
25429         * class.c
25430         (inflate_generic_type): Set the `context->container' when creating
25431         a new MonoGenericContext.
25432         (mono_class_inflate_generic_method): Likewise.
25433         (mono_class_create_from_typespec): Just use `context->container'
25434         to get the container.
25435
25436         * loader.c (method_from_methodspec): Set `context->parent' from
25437         `context->container' - and if that's a method container, use its
25438         parent.  Also set the `context->container' when creating a new
25439         MonoGenericContext.
25440         (mono_get_method_from_token): Use just `context->container' to get
25441         the container.
25442
25443         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25444         `gclass->context->container'.
25445
25446         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25447         the `context->container' when creating a new MonoGenericContext.
25448
25449 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25450
25451         * reflection.c (compare_genericparam): Sort params with identical
25452         owner by their number. Fixes gen-111 on sparc.
25453
25454 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25455
25456         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25457         around the domain changes.
25458
25459         * appdomain.c (mono_domain_unload): Handle the case when the thread
25460         calling Unload is itself being aborted during unloading. Fixes #70022.
25461
25462         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25463
25464         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25465         checkpoint_func as an icall so it gets a wrapper.
25466         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25467         in the cross-appdomain wrappers too.
25468
25469         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25470
25471         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25472
25473         * reflection.c: Fix some memory leaks.
25474         
25475 2004-12-02  Martin Baulig  <martin@ximian.com>
25476
25477         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25478
25479         * metadata.c (generic_class_cache): New static hashtable.
25480         (mono_metadata_lookup_generic_class): New public method.
25481
25482 2004-12-02  Martin Baulig  <martin@ximian.com>
25483
25484         * class.c (mono_class_create_from_typedef): Call
25485         mono_class_setup_parent() and mono_class_create_mono_type() before
25486         parsing the interfaces.
25487
25488 2004-12-02  Martin Baulig  <martin@ximian.com>
25489
25490         * metadata.c (generic_inst_cache): New static hashtable.
25491         (mono_metadata_lookup_generic_inst): New public function.
25492         (mono_metadata_inflate_generic_inst): New public function.
25493         (mono_metadata_parse_generic_inst): New public function.
25494         (do_mono_metadata_parse_generic_class): Use the new
25495         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25496         since this'll also use the cache.
25497
25498         * reflection.c (mono_reflection_bind_generic_method_parameters):
25499         Use mono_metadata_lookup_generic_inst() to use the new cache.
25500
25501         * class.c (inflate_mono_type): Use
25502         mono_metadata_inflate_generic_inst() to inflate a generic
25503         instance; this'll also use the new cache.
25504
25505         * loader.c (method_from_methodspec): Use
25506         mono_metadata_parse_generic_inst() and
25507         mono_metadata_inflate_generic_inst() rather than parsing it
25508         manually, so we can use the new cache.
25509
25510 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25511
25512         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25513         the wait times out.
25514
25515 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25516
25517         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25518         iter->args based on whether parameters are passed in registers (i.e.
25519         MONO_ARCH_REGPARMS is defined)
25520
25521 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25522
25523         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25524         the exception message. Fixes #70070.
25525         (method_from_methodspec): Fix warnings.
25526
25527 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25528
25529         * process.c: (complete_path) return the path quoted
25530
25531 2004-12-01  Martin Baulig  <martin@ximian.com>
25532
25533         * class-internals.h (MonoGenericInst): New structure.
25534         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25535         `is_open' with `MonoGenericInst *inst'.
25536         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25537         `is_open' with `MonoGenericInst *inst'.
25538
25539 2004-11-30  Martin Baulig  <martin@ximian.com>
25540
25541         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25542
25543         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25544         to `generic_class_cache'.
25545
25546         * metadata.c
25547         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25548         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25549         (mono_generic_inst_is_valuetype): Renamed to
25550         mono_generic_class_is_valuetype().
25551
25552         * class-internals.h
25553         (MonoGenericInst): Renamed to MonoGenericClass.
25554         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25555         (MonoClass): Renamed `generic_inst' to `generic_class'.
25556         (MonoGenericContext): Renamed `ginst' to `gclass'.
25557
25558         * object-internals.h
25559         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25560
25561         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25562         mono_reflection_generic_class_initialize().
25563
25564         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25565         now known as "System.Reflection.MonoGenericClass".
25566         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25567
25568 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25569
25570         * class-internals.h: Added a flag field to MonoClass to cache the
25571         declarative security attributes actions associated with the class.
25572         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25573         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25574         applicable to the JITted method.
25575         * reflection.c|h: Added functions to extract (as flags) which security
25576         actions are available (declaratively) for a method, class or assembly.
25577         * metadata.c|h: Added functions to search the declarative security
25578         table in the metadata.
25579         
25580 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25581
25582         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25583         EXPORTEDTYPES are already in the class name cache, so there is no
25584         need to add extra code here to look at them. Just removes a bit of
25585         cruft.
25586
25587         (ves_icall_System_Environment_get_TickCount): No need for #if
25588         WINDOWS. We already have the code in io-layer.
25589
25590 2004-11-28  Martin Baulig  <martin@ximian.com>
25591
25592         * loader.c
25593         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25594         Fixes gen-112.cs.
25595
25596 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25597
25598         * assembly.c (do_mono_assembly_open): Instead of having a
25599         conditional WITH_BUNDLE, incorporate support for bundles here, by
25600         having a global `bundles' variable holding a pointer to the actual
25601         bundles. 
25602
25603         (mono_register_bundled_assemblies): New API call used by the
25604         bundle code. 
25605
25606         See mkbundle.1 for details.
25607         
25608 2004-11-27  Martin Baulig  <martin@ximian.com>
25609
25610         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25611         the vtable for generic methods.
25612
25613 2004-11-26  Martin Baulig  <martin@ximian.com>
25614
25615         * metadata.c
25616         (mono_metadata_generic_method_hash): New public function.
25617         (mono_metadata_generic_method_equal): Likewise.
25618
25619         * class-internals.h
25620         (MonoGenericContainer): Added `GHashTable *method_hash'.
25621
25622         * reflection.c (ReflectionMethodBuilder): Added
25623         `MonoGenericContainer *generic_container'.
25624         (reflection_methodbuilder_to_mono_method): Don't create a new
25625         MonoGenericContainer each time we're called.
25626         (mono_reflection_bind_generic_method_parameters): Use
25627         `container->method_hash' to cache the results so we don't create a
25628         different method if we're called several times with the same
25629         arguments.
25630
25631         * loader.c (method_from_methodspec): Use the new
25632         `container->method_hash' here, too.
25633
25634 2004-11-26  Martin Baulig  <martin@ximian.com>
25635
25636         * class.c (inflate_generic_signature): Correctly compute
25637         `res->has_type_parameters'.
25638         (mono_class_vtable): Use the `has_type_parameters' flag to
25639         determine whether we're a generic method.
25640
25641         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25642
25643 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25644
25645         * object.c (mono_runtime_run_main): Fix a small memory leak.
25646
25647 2004-11-25  Martin Baulig  <martin@ximian.com>
25648
25649         * class.c (set_generic_param_owner): Fixed the loop.
25650
25651 2004-11-25  Martin Baulig  <martin@ximian.com>
25652
25653         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25654         generic methods.
25655
25656 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25657
25658         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25659         names. Fixes #69787.
25660
25661 2004-11-24  Martin Baulig  <martin@ximian.com>
25662
25663         * class.c (mono_class_create_generic_2): If we don't have a
25664         `ginst->parent', inflate `gklass->parent' to get our parent.
25665
25666 2004-11-24  Martin Baulig  <martin@ximian.com>
25667
25668         * reflection.c (compare_genericparam): Correctly sort the
25669         GenericParam table; fixes #69779.
25670
25671 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25672
25673         * reflection.c: When writing a PE file, don't create a huge
25674         buffer in memory. Just write the arrays we have to the file.
25675         This reduces memory usage.
25676
25677         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25678         globally.
25679
25680 2004-11-17  Martin Baulig  <martin@ximian.com>
25681
25682         * class.c (mono_class_init): Don't setup `class->parent' for
25683         dynamic instances; moved this to mono_class_generic_2().
25684         (mono_class_create_generic): Also set `klass->inited' for dynamic
25685         generic instances.
25686         (mono_class_create_generic_2): Don't do anything for dynamic
25687         generic instances.  Set `klass->parent' here and also call
25688         mono_class_setup_parent() here. 
25689
25690         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25691         `MonoType *parent' argument; set `ginst->parent' before calling
25692         mono_class_create_generic_2(), so we set the correct parent.
25693
25694 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25695
25696         * reflection.c: allow getting attributes from ModuleBuilder
25697         (used by ikvm).
25698
25699 2004-11-17  Martin Baulig  <martin@ximian.com>
25700
25701         * class.c (mono_class_create_from_typedef): If a type parameter is
25702         inherited from an outer class, set its owner to that class.
25703
25704 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25705
25706         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25707           for (int*) written size. This fixes bug #69592.
25708
25709 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25710
25711         * icall.c: Added IsAuthenticodePresnet internal call.
25712         * image.c|h: New function that check a MonoImage for an Authenticode
25713         signature in the certificate PE data directory.
25714         * security.c|h: New internal call to ask the runtime if an 
25715         Authenticode signature seems referenced in the PE header.
25716
25717 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25718
25719         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25720
25721         * reflection.c (mono_image_create_pefile): Free the assembly streams
25722         after writing out the assembly file.
25723
25724         * object.c (mono_runtime_run_main): Fix small memory leak.
25725
25726         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25727         property access modifiers. Fixes #69389.
25728
25729 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25730
25731         * domain.c, object.c, object-internals.h, domain-internals.h,
25732         object.h, marshal.c: keep dynamic code info per domain.
25733
25734 2004-11-15  Martin Baulig  <martin@ximian.com>
25735
25736         * class.c (mono_type_get_name_recurse): Put type arguments in
25737         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25738         see bug #68387.
25739
25740 2004-11-15  Martin Baulig  <martin@ximian.com>
25741
25742         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25743         (mono_class_setup_vtable): When computing `the_cname' for a
25744         generic instance, don't include the namespace since we'd otherwise
25745         add it twice.
25746
25747 2004-11-15  Martin Baulig  <martin@ximian.com>
25748
25749         * class.c (mono_class_create_generic): Changed return type to void.
25750         (mono_class_create_generic_2): New public function; setup
25751         `class->method', `class->field' and `class->interfaces' here
25752         instead of in mono_class_init().
25753
25754         * class.h (mono_class_create_generic): Moved to class-internals.h.
25755
25756 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25757
25758         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25759         rather than writing to memory, write to this file. Right now,
25760         we are just writting into a buffer, and copying that. However
25761         we can avoid the buffer later.
25762
25763         (mono_dynamic_stream_reset): new function
25764
25765         * icall.c, object-internals.h: update for the above.
25766
25767 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25768
25769         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25770         have been using gc'd memory. First it is slower, unlikely
25771         the comment in the source code said, secondly, it increases
25772         our footprint to do it in the gc.
25773
25774         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25775         the method so that it does not have to copy to managed code.
25776
25777 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25778
25779         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25780
25781 2004-11-12  Martin Baulig  <martin@localhost>
25782
25783         * reflection.c (mono_image_create_token): Allow generic method
25784         definitions here, since they may appear in an `.override'; see
25785         gen-98/gen-99 for an example.
25786
25787 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25788
25789         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25790         #69365.
25791
25792         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25793         descriptive.
25794
25795 2004-11-11  Martin Baulig  <martin@ximian.com>
25796
25797         * class.c (mono_class_setup_vtable): In an explicit interface
25798         implementation, the method name now includes the arity.
25799
25800 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25801
25802         * object.c (mono_array_full_copy): Fix warning.
25803
25804 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25805
25806         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25807         mono_class_get_method_from_name() instead.
25808         
25809         * class-internals.h: Added two new types of wrappers. 
25810         Added MonoRemotingTarget enum. Added new trampoline function type, which
25811         takes an additional MonoRemotingTarget value as parameter, so it is
25812         possible to request a trampoline for a specific target.
25813         
25814         * class.c: Added new mono_class_get_method_from_name() method.
25815         
25816         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25817         general remoting sinks and one specific for cross domain calls.
25818         
25819         * debug-helpers.c: Added new wrapper names.
25820         
25821         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25822         of a remote class.
25823         
25824         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25825         
25826         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25827         with several other methods (mono_marshal_get_xappdomain_dispatch,
25828         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25829         and others) can generate a fast remoting wrapper for cross domain calls.
25830         More information can be found in docs/remoting.
25831         Other changes: Removed mono_find_method_by_name, and used
25832         mono_class_get_method_from_name instead.
25833         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25834         is stored in the remoting invoke hashtable.
25835         
25836         * marshal.h: published the new method for getting the xdomain wrapper,
25837         and also added a method for getting the adequate wrapper for a given
25838         method and target.
25839         
25840         * object-internals.h, object.c: Added a couple of methods for capying and
25841         cloning arrays.
25842         Modified mono_install_remoting_trampoline, which takes the new remoting
25843         trampoline that has a remoting target as parameter.
25844         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25845         will return the most suitable vtable for the target.
25846         Added mono_remote_class_vtable, which returns the vtable of a remote class
25847         (which can be the normal remoting vtable or the xdomain vtable).
25848         
25849         * threads.c: the xdomain invoke and dispatch wrappers must also be
25850         protected against interruptions.
25851
25852 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25853
25854         * icall.c: use memmove in BlockCopyInternal when the source and
25855         destination arrays are the same.
25856
25857 2004-11-09  Martin Baulig  <martin@ximian.com>
25858
25859         * class-internals.h (MonoGenericContainer): Removed `method' and
25860         `signature', replaced them with `is_method' and `is_signature'
25861         flags.  Added `context'.
25862
25863         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25864         instead of a `MonoGenericContainer *'.
25865
25866         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25867         for dynamic type parameters.
25868         (mono_metadata_load_generic_params): Setup `container->context'.
25869
25870         * reflection.c (mono_reflection_setup_generic_class): Setup
25871         `tb->generic_container->context'.
25872         (do_mono_reflection_bind_generic_parameters): Use
25873         mono_class_inflate_generic_type() to correctly inflate types,
25874         rather than using our own hack just for MONO_TYPE_VAR.
25875
25876 2004-11-09  Martin Baulig  <martin@ximian.com>
25877
25878         * class.c (mono_class_inflate_generic_method): Small fix; don't
25879         crash here.
25880
25881         * icall.c
25882         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25883         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25884         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25885         (ves_icall_Type_BindGenericParameters): Likewise.
25886         (ves_icall_Type_get_IsGenericInstance): Likewise.
25887         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25888         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25889         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25890         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25891
25892 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25893
25894         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25895         assembly versions and public key tokens. Fixes #69113.
25896
25897 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25898
25899         * metadata.c: fix bug introduced with the type cache changes
25900         on 2004-11-06.
25901
25902 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25903
25904         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25905         the MonoClass pointer instead of the token in exception clauses.
25906         * reflection.c: updates for the above and make the code not depend
25907         on the structure of MonoExceptionClause.
25908
25909 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25910
25911         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25912         Add support for dynamic assemblies. Fixes #69114.
25913
25914         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25915
25916 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25917
25918         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25919         since most only those methods use it. the code member of
25920         MonoMethodPInvoke was dead, so that can be removed too. Also,
25921         remove inline_count (again, not used), and move slot so that it
25922         can share bits with some other flags. This saves 8 bytes in the
25923         structure and gives us about 50 kb back for mcs helloworld.cs
25924
25925         * *.[ch]: Do naming changes for the above.
25926
25927         * loader.c (mono_method_get_header): Lazily init the header
25928         on first access.
25929         (mono_get_method_from_token): don't init the header here
25930         (mono_free_method): the header may never be allocated
25931
25932         Overall, this saves 150 kb of unmanaged allocations
25933         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25934         memory at runtime.
25935         
25936         * loader.c, loader.h (mono_method_get_header): new accessor.
25937
25938         * *.[ch]: use the above method. Prepares us to lazily load
25939         the header.
25940
25941         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25942         three warnings, which are actual bugs (see 69206).
25943
25944         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25945         unused. Saves a cool 4 bytes / method.
25946
25947 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25948
25949         * metadata.c (builtin_types): Add types for System.Object here.
25950         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25951         for a class or valuetype from klass->this_arg or klass->byval_arg.
25952
25953         On mcs for a hello world, this gets us down from 21836 MonoType's
25954         to 14560.
25955
25956         (mono_metadata_free_type): Account for the above change.
25957
25958 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25959
25960         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25961         exception instead of asserting if name is null.
25962         (ves_icall_System_AppDomain_GetData): Ditto.
25963
25964 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25965
25966         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25967         EnumBuilder.
25968
25969         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25970         Return NULL when the domain does not have entry_assembly set.
25971
25972         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25973         Add a 'resource_modules' argument.
25974         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25975
25976         * reflection.c (mono_reflection_create_runtime_class): Move setting
25977         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25978         for enums too.
25979
25980         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25981         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25982         Throw an ArgumentNullException if 'ptr' is null.
25983
25984         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25985         assemblies here. Fixes #69020.
25986
25987 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25988
25989         * reflection.c (build_compressed_metadata): Fix the previous patch for
25990         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25991         the stack.
25992
25993 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25994
25995         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25996         the cultures is false. Fixes #69090.
25997
25998         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25999         detected by valgrind.
26000         
26001         * reflection.c (mono_reflection_get_type): Avoid triggering a 
26002         TypeResolve multiple times for the same type. Fixes #65577.
26003
26004 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
26005
26006         * marshal.c: Avoid using ldftn to call managed functions. It is
26007         much slower than just a call.
26008
26009         * reflection.c (mono_module_get_object): free the basename we
26010         allocate here from glib.
26011         
26012         * reflection.c (ensure_runtime_vtable): make sure to free
26013         overrides.  Also, we were allocating an array of MonoMethod not an
26014         array of MonoMethod*.
26015
26016         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
26017
26018         * image.c (mono_image_close): free image->guid here.
26019
26020 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
26021
26022         * reflection.c: Fix some spec conformance issues with the PE file
26023         structures so mcs compiled apps run on the Net 2.0 beta.
26024
26025 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
26026
26027         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
26028         Implement this. Fixes #67264.
26029
26030         * debug-helpers.h debug-helpers.c marshal.c: Move 
26031         mono_find_method_by_name to debug-helpers.c.
26032
26033 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
26034
26035         * object.c (mono_release_type_locks): type_initialization_hash is
26036         a GHashTable.
26037
26038         * reflection.c object.c object-internals.h: Fix warnings.
26039
26040         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
26041         without accessors. Fixes #61561.
26042
26043         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
26044         application base from the root domain if not set. Fixes #65641.
26045         (mono_runtime_init): Fix warning.
26046
26047 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26048
26049         * appdomain.c: call mono_thread_pool_init.
26050         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
26051         of worker threads based on the number of CPUs and the environment
26052         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
26053         for non-windows (windows) systems.
26054
26055 2004-10-27  Chris Toshok  <toshok@ximian.com>
26056
26057         * mono-debug-debugger.c (write_class): don't call mono_class_init
26058         here, as even with the check for (!klass->init_pending), we get
26059         into a situation where we're hitting cycles in class
26060         initialization.  Fixes #68816.
26061
26062 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
26063
26064         * image.c: Avoid overwriting values in the loaded_images_hash when an
26065         assembly is loaded multiple times. Fixes #61152.
26066
26067         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
26068         so multiple satellite assemblies for the same name can be loaded.
26069         Fixes #68259.
26070
26071         * mono_domain_assembly_preload: Actually return the loaded assembly, 
26072         not NULL.
26073
26074         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
26075         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
26076
26077         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
26078         pending finalizers are not invoked after the appdomain has been 
26079         unloaded. Fixes #67862.
26080
26081 2004-10-22  Martin Baulig  <martin@ximian.com>
26082
26083         * mono-debug-debugger.c
26084         (mono_debugger_runtime_invoke): Don't box valuetypes.
26085
26086 2004-10-22  Chris Toshok  <toshok@ximian.com>
26087
26088         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
26089         don't hide private methods.
26090
26091 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
26092
26093         * icall.c: Allows the runtime to "share" (when known) the public key
26094         token of an assembly. This avoid the need to recalculate the token 
26095         (from the public key) in managed code.
26096
26097 2004-10-21  Chris Toshok  <toshok@ximian.com>
26098
26099         * debug-helpers.c (append_class_name): argh, revert last patch.
26100         
26101 2004-10-21  Chris Toshok  <toshok@ximian.com>
26102
26103         * debug-helpers.c (append_class_name): use '+' as the delimiter,
26104         not '/', so that it matches what the debugger uses to look up
26105         methods.
26106
26107 2004-10-21  Martin Baulig  <martin@ximian.com>
26108
26109         * mono-debug-debugger.c (mono_debugger_throw_exception): New
26110         public method; this is called each time an exception is thrown and
26111         allows the debugger to use exception catch points.
26112
26113 2004-10-21  Martin Baulig  <martin@ximian.com>
26114
26115         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
26116         the stack pointer and the exception object in some struct and pass
26117         that to the debugger.
26118
26119 2004-10-21  Chris Toshok  <toshok@ximian.com>
26120
26121         * mono-debug-debugger.c (do_write_class): add instance/static
26122         event support.  We don't expose "raise" or "other" yet.
26123         (event_is_static): new method.
26124
26125 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
26126
26127         * mono-debug-debugger.c
26128         (mono_debugger_handle_exception): Remove
26129         bogus return value for fussy compilers.
26130
26131 2004-10-20  Martin Baulig  <martin@ximian.com>
26132
26133         * mono-debug-debugger.c
26134         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
26135         (mono_debugger_handled_exception): Likewise.
26136
26137 2004-10-20  Martin Baulig  <martin@ximian.com>
26138
26139         * mono-debug-debugger.h (MonoDebuggerEvent): Added
26140         MONO_DEBUGGER_EVENT_EXCEPTION.
26141
26142         * mono-debug-debugger.c (mono_debugger_handle_exception): New
26143         public function to send the debugger a notification for an
26144         exception and inform it about a catch/finally clause.
26145
26146 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
26147
26148         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
26149         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
26150         fix 2.95 build. 
26151
26152         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
26153
26154 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
26155
26156         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
26157         marshalled as [In,Out]. Fixes #58325.
26158
26159 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
26160
26161         * reflection.c (mono_method_body_get_object): Implement some fields.
26162
26163 2004-10-12  Martin Baulig  <martin@ximian.com>
26164
26165         * reflection.c (mono_reflection_bind_generic_parameters): Small
26166         fix, correctly retrieve our parent from a generic instance.
26167
26168 2004-10-12  Martin Baulig  <martin@ximian.com>
26169
26170         * metadata.c (mono_metadata_generic_param_equal): We always have
26171         an owner.
26172
26173         * class.c
26174         (mono_class_from_generic_parameter): We need to have an owner.
26175         (my_mono_class_from_generic_parameter): Likewise.
26176
26177         * reflection.c (mono_reflection_setup_generic_class): Renamed to
26178         mono_reflection_create_generic_class() and added a new
26179         mono_reflection_setup_generic_class().  
26180         (mono_reflection_initialize_generic_param): If we're a nested
26181         generic type and inherited from the containing class, set our
26182         owner to the outer class.
26183
26184 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
26185
26186         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
26187
26188         * reflection.c (mono_method_body_get_object): New function to create
26189         a MethodBody object.
26190
26191         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
26192
26193 2004-10-11  Martin Baulig  <martin@ximian.com>
26194
26195         * metadata.c (_mono_metadata_type_equal): Renamed to
26196         do_mono_metadata_type_equal() and made static.
26197
26198 2004-10-11  Martin Baulig  <martin@ximian.com>
26199
26200         * appdomain.c: Bump corlib version number to 28.
26201
26202 2004-10-10  Martin Baulig  <martin@ximian.com>
26203
26204         * class-internals.h
26205         (MonoGenericInst): Added `MonoGenericContainer *container'.
26206         (MonoGenericMethod): Likewise.
26207         (MonoGenericContext): Likewise.
26208         (MonoGenericParam): Added `MonoGenericContainer *owner'.
26209
26210         * metadata.c
26211         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
26212         (do_mono_metadata_parse_generic_inst): Likewise.
26213         (mono_metadata_parse_type_full): New public method.  This is the actual
26214         mono_metadata_parse_type() implementation - with an additional
26215         `MonoGenericContainer *' argument.
26216         (mono_metadata_parse_array_full): Likewise.
26217         (mono_metadata_parse_signature_full): Likewise.
26218         (mono_metadata_parse_method_signature_full): Likewise.
26219         (mono_metadata_parse_mh_full): Likewise.
26220         (mono_type_create_from_typespec): Likewise.
26221         (mono_metadata_interfaces_from_typedef_full): New public method;
26222         this is similar to the other _full() methods, but we take a
26223         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
26224         (mono_metadata_parse_generic_param): Take an additional
26225         `MonoGenericContainer *' argument and lookup the MonoGenericParam
26226         from that container.
26227         (mono_metadata_generic_param_equal): New static method to compare
26228         two type parameters.
26229         (_mono_metadata_type_equal): New static method; takes an
26230         additional `gboolean signature_only' argument - if true, we don't
26231         compare the owners of generic parameters.
26232         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
26233         with a TRUE argument - do a signature-only comparision.
26234
26235         * loader.c: Use the new _full() methods and pass the
26236         MonoGenericContainer to them.
26237
26238         * object-internals.h (MonoReflectionTypeBuilder): Added
26239         `MonoGenericContainer *generic_container' field.
26240         (MonoReflectionMethodBuilder): Likewise.
26241
26242 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
26243
26244         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
26245         case initial images of dynamic assemblies.
26246
26247         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
26248
26249         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
26250
26251         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
26252         length of event->other array.
26253         (typebuilder_setup_events): Ditto.
26254
26255         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
26256         'assembly_by_name' and add an 'assemblies' list.
26257
26258         * assembly.h assembly.c: Add a new search hook for determining whenever
26259         an assembly is already loaded. Use this instead of searching in the
26260         loaded_assemblies list.
26261
26262         * domain.c appdomain.c: Implement the new search hook so loaded 
26263         assemblies are now scoped by appdomain. Fixes #67727.
26264
26265 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
26266
26267         * threads.c (mono_thread_attach): Initialize synch_lock field so
26268         mono_thread_detach works again.
26269
26270         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26271         'lib' too. Fixes #63130.
26272
26273 2004-10-06  Jackson Harper  <jackson@ximian.com>
26274
26275         * culture-info-tables.h: regenerated.
26276
26277 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26278
26279         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26280         implemented by other interfaces in the result. Fixes #65764.
26281         
26282         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26283         Handle unloadable modules without crashing.
26284
26285         * image.c (load_modules): Revert the previous patch since modules must
26286         have a fixed index inside the array.
26287         
26288         * image.c (load_modules): Don't include native modules in the modules
26289         array.
26290
26291 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26292
26293         * reflection.h: Add param_defaults field.
26294
26295         * reflection.c: Add support for parameter defaults in dynamic methods.
26296         Fixes #64595.
26297
26298         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26299         an empty string when a type has no namespace. Fixes #64230.
26300
26301 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26302
26303         * tabledefs.h: Added "internal" security actions to support non-CAS
26304         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26305         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26306
26307 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26308
26309         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26310         constructor of abstract class. Fixes #61689.
26311
26312 2004-10-04  Martin Baulig  <martin@ximian.com>
26313
26314         * class-internals.h (MonoGenericContainer): New type.
26315         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26316         `MonoGenericContainer *generic_container'.
26317         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26318         `MonoGenericContainer *generic_container'.
26319
26320         * metadata.c (mono_metadata_load_generic_params): Return a
26321         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26322         removed the `num' argument.
26323
26324 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26325
26326         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26327         for dynamic images.
26328
26329         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26330         machine fields.
26331
26332         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26333
26334         * reflection.c: Save pe_kind and machine values into the generated
26335         image file.
26336
26337         * appdomain.c: Bump corlib version number.
26338
26339         * object-internals.h: Reorganize layout of LocalBuilder.
26340
26341         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26342         New helper function.
26343
26344         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26345         created MonoType for dynamic types. Fixes #66180.
26346
26347 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26348
26349         * threadpool.c: the ares hashtable needs a critical section around it.
26350         this prevents some nasty segfaults
26351
26352 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26353
26354         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26355         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26356         bug 67324).
26357         
26358 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26359
26360         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26361         
26362 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26363
26364         * image.c: Always canonicalize image file names, to avoid loading
26365         the same assembly twice when referenced using a relative path.
26366
26367 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26368
26369         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26370
26371         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26372
26373         * marshal.c: Fix warnings.
26374
26375 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26376
26377         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26378         attempting to marshal the delegate_trampoline as the method_addr.
26379         This patch has a static hashtable of marshalled delegates so that 
26380         we can map delegate_trampoline addresses back to delegates.  This
26381         allows a delegate passed to managed code to be passed back into native
26382         code.  Fixes #67039
26383
26384 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26385
26386         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26387
26388         * reflection.c (method_encode_code): Align method headers properly.
26389         Fixes #66025.
26390
26391 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26392
26393         * marshal.c: In the runtime invoke wrapper, reset the abort
26394         exception if it is cached. This avoids the automatic rethrowal of 
26395         the exception after the catch of the wrapper. Also check for pending
26396         interruptions before calling the managed method. This is done using
26397         the new method emit_thread_force_interrupt_checkpoint, since the
26398         normal checkpoint method is ignored when running the invoke wrapper.
26399         * object.c: If the abort exception is rethrown, set the abort_exc
26400         field of the thread, so it will be rethrown aftere every catch.
26401         * threadpool.c: Only run an interruption checkpoint if what has been
26402         requested is a stop of the thread (aborts will be ignored).
26403         * threads.c: By default, a thread will now never be interrumped while
26404         running the runtime invoke wrapper (this ensures that runtime_invoke
26405         will always return to the caller if an exception pointer is provided).
26406         There is a new special method mono_thread_force_interruption_checkpoint()
26407         to force an interruption checkpoint even if running a protected
26408         wrapper, which is used by the same runtime invoke wrapper to do a check
26409         at a safe point.
26410
26411 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26412
26413         * object.c, object-internals.h: Implemented mono_release_type_locks,
26414         which releases the cctor locks held by a thread.
26415         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26416         by a thread. Added mono_thread_exit() method to be used to safely stop
26417         a thread.
26418
26419 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26420
26421         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26422         Move null check before dereference.  Avoid indexing beyond the end
26423         of the 'modules' array.
26424
26425 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26426
26427         * metadata-internals.h (MonoImage): Add module_count field.
26428         * image.c (load_modules): Set image->module_count.
26429         (mono_image_load_file_for_image): Use image->module_count.
26430         * reflection.c (mono_image_load_module): Append to image->modules array 
26431         of dynamic assembly.
26432         (mono_module_get_object): Fix loop to actually increment index.
26433         Use image->module_count.
26434         * assembly.c (mono_assembly_load_references): Use image->module_count.
26435         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26436         Likewise.
26437
26438 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26439
26440         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26441         Avoid assert on generic types.
26442
26443 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26444
26445         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26446
26447         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26448
26449         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26450         function to convert a MarshalSpec structure to its managed counterpart.
26451
26452         * reflection.c: Fix warnings.
26453         
26454         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26455         field.
26456
26457         * icall.c (mono_create_icall_signature): Fix build.
26458
26459 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26460
26461         * icall.c: Add MakePointType icall.
26462
26463         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26464         warnings.
26465
26466 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26467
26468         * threadpool.c: reuse allocated slots in the queue.
26469
26470 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26471
26472         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26473
26474         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26475
26476         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26477         previous change.
26478
26479         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26480         ThrowOnUnmappableChar.
26481
26482         * icall.c (ves_icall_Type_GetPacking): New icall.
26483
26484 2004-09-24  Martin Baulig  <martin@ximian.com>
26485
26486         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26487
26488 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26489
26490         * appdomain.c:
26491         (mono_domain_set): allow setting a domain that is being unloaded.
26492         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26493         being unloaded.
26494
26495 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26496
26497         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26498         the GetCustomAttributes icall.
26499
26500 2004-09-23  Martin Baulig  <martin@ximian.com>
26501
26502         * object-internals.h (MonoReflectionGenericParam): Replaced
26503         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26504         with `guint32 attrs'.
26505
26506 2004-09-23  Martin Baulig  <martin@ximian.com>
26507
26508         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26509
26510 2004-09-23  Martin Baulig  <martin@ximian.com>
26511
26512         * object-internals.h (GenericParameterAttributes): New enum.
26513
26514 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26515
26516         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26517         
26518         * class.c (init_events): Fill out event->other field.
26519
26520         * class.c: Fix warnings.
26521
26522         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26523
26524 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26525
26526         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26527         walk which doesn't supply the IL offset.
26528
26529 2004-09-22  Martin Baulig  <martin@ximian.com>
26530
26531         * reflection.c (mono_reflection_setup_internal_class): If we're
26532         System.ValueType, System.Object or System.Enum, set
26533         `klass->instance_size' and create the vtable.
26534         (mono_reflection_create_internal_class): If we're an enum type,
26535         get the base class from our current corlib.
26536
26537 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26538
26539         * reflection.h (MonoResolveTokenError): New type.
26540
26541         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26542         icall.
26543
26544         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26545
26546 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26547
26548         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26549         Support also calling constructors, but only for already allocated objects.
26550
26551 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26552
26553         * reflection.c (type_get_qualified_name): If the klass is null
26554         return the typename to avoid a NullRefEx.
26555         (encode_cattr_value): Get the qualified name of the boxed type,
26556         not the underlying enumtype.  Fixes #62984.
26557
26558 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26559
26560         * marshal.c: Fix problems with previous checkin.
26561
26562 2004-09-21    <vargaz@freemail.hu>
26563
26564         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26565         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26566
26567         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26568
26569 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26570
26571         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26572         should only return a type for pointers, arrays, and passbyref types.
26573         Fixes bug #63841.
26574
26575 2004-09-21  Martin Baulig  <martin@ximian.com>
26576
26577         * domain.c (mono_debugger_check_runtime_version): New public
26578         function.
26579
26580         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26581
26582 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26583
26584         * reflection.c: Added missing sort to the declarative security 
26585         attributes table. MS implementation stops seeing the attributes if the
26586         token number regress in the table (as shown by ildasm and permview).
26587
26588 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26589
26590         * object-internals.h (MonoReflectionModule): Add 'token' field.
26591         
26592         * reflection.c (mono_reflection_get_token): Add support for Module
26593         and Assembly.
26594         (mono_module_get_object): Set 'token' field.
26595         (mono_module_file_get_object): Set 'token' field.
26596
26597         * icall.c: Add new Assembly and Module icalls.
26598
26599         * appdomain.c: Bump corlib version.
26600
26601 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26602
26603         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26604         tokens of metadata objects.
26605
26606         * reflection.h reflection.c (mono_reflection_get_token): New function
26607         to obtain the token of a metadata object.
26608
26609         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26610
26611 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26612
26613         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26614         
26615         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26616
26617 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26618
26619         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26620         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26621         AssemblyBuilder to access the permissions set in the class lib.
26622         * reflection.c: Added security attributes encoding step in 
26623         mono_image_build_metadata.
26624         * tabledefs.h: Added new security actions defined in 2.0:
26625         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26626
26627 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26628
26629         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26630         macro parameter.
26631
26632 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26633  
26634         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26635           finalized. There where random SIGSEVs at program termination, when
26636           an object being finalized was trying to do a string comparison and
26637           the current culture was already finalized.
26638  
26639 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26640
26641         * threads.c: call thread_cleanup before finishing the thread if we get
26642         there.
26643
26644 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26645
26646         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26647         assemblies from the parent. Fixes #65665.
26648
26649 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26650
26651         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26652         modifiers.
26653
26654 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26655
26656         * reflection.h: add prototype for mono_get_dbnull_object
26657         * reflection.c: add prototypes for get_default_param_value_blobs 
26658         and mono_get_object_from_blob for fussier compilers
26659
26660 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26661  
26662         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26663         false deadlock checks in class initialization.
26664  
26665 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26666
26667         * image.c (mono_image_addref): Fix comment.
26668
26669         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26670         possible.
26671
26672 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26673
26674         * reflection.c (mono_param_get_objects): Modified to return
26675         ParameterInfo.DefaultValue object.
26676
26677         (get_default_param_value_blobs):
26678         (mono_get_object_from_blob):
26679         (mono_get_dbnull_object): New helper routines. 
26680
26681         * object.c (mono_get_constant_value_from_blob): New helper routine
26682         carved out from get_default_field_value ()
26683
26684         * object-internals.h (mono_get_constant_value_from_blob): Added
26685         function declaration.
26686
26687 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26688
26689         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26690         referenced assemblies. Fixes #62135.
26691
26692         * exception.h exception.c (mono_get_exception_file_not_found2): New
26693         helper function.
26694
26695 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26696
26697         * class.h class.c: Add mono_type_get_underlying_type ().
26698
26699 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26700
26701         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26702         Fix GetTypes() to support dynamically created assemblies.
26703
26704 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26705
26706         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26707         
26708         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26709         previous patch.
26710
26711         * reflection.h reflection.c loader.c: Allow dynamic construction of
26712         pinvoke methods. Fixes #65571.
26713         
26714         * reflection.c (mono_reflection_get_type): Revert previous change since
26715         it causes regressions.
26716
26717 2004-09-08  Martin Baulig  <martin@ximian.com>
26718
26719         * class.c (class_compute_field_layout): Don't call
26720         mono_class_layout_fields() for open generic instances.
26721
26722 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26723         * threads.c appdomain.c: fix typo in GC macro
26724
26725 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26726
26727         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26728         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26729
26730 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26731
26732         * image.c (mono_image_close): Applied patch from 
26733         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26734         assembly is loaded multiple times from data.
26735         
26736         * image.c (mono_image_open): Fix warning.
26737
26738 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26739
26740         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26741         once. Fixes #58334.
26742         
26743         * reflection.c (mono_reflection_create_runtime_class): Initialize
26744         klass->nested_classes. Fixes #61224.
26745
26746 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26747
26748         * threads.c: sched_yield() on exit, to allow threads to quit.
26749
26750 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26751
26752         * object.c (mono_unhandled_exception): Remove leftover debug code.
26753
26754 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26755
26756         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26757
26758 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26759
26760         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26761         
26762         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26763
26764 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26765
26766         * marshal.c (emit_marshal_array): Null terminate string arrays.
26767         
26768         * marshal.c (raise_auto_layout_exception): Fix warning.
26769
26770         * reflection.c (mono_param_get_objects): Initialize the default value
26771         with DBNull.Value, not null. Fixes #62123.
26772
26773 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26774
26775         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26776         throw an exception with a cute explanation.
26777
26778 2004-09-06  Dick Porter  <dick@ximian.com>
26779
26780         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26781         Close the new process's thread handle, as we don't use it.  The
26782         handle stays around forever otherwise.
26783
26784 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26785
26786         * object.c (arith_overflow): Fix warning.
26787
26788         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26789         calling conventions in method refs. Fixes #65352.
26790
26791         * reflection.c: Fix warnings.
26792
26793 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26794
26795         * icall.c: Add a new icall for Array.Clear
26796
26797 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26798
26799         * object.c: When allocating an array, we have to throw
26800         an overflow exception if any of the lengths are < 0.
26801
26802 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26803
26804         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26805         properly. Also move implementation of string array marshalling to 
26806         managed code. Fixes #42316.
26807
26808 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26809
26810         * assembly.c: provide more information when loading an assembly fails.
26811
26812 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26813
26814         * filewatcher.c: don't expect the development fam package to be
26815         installed.
26816
26817 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26818
26819         * marshal.c: Make a copy of the signature cookie since it will be
26820         freed by the caller.
26821         
26822         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26823
26824         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26825
26826         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26827         marshal specs.
26828
26829         * marshal.c: More refactoring.
26830         
26831         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26832         smaller functions.
26833
26834 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26835
26836         * object.c: In mono_message_invoke, fill the output parameter array after
26837           calling the managed method (it was done before the call). This fixes
26838           bug #59299.
26839
26840 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26841
26842         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26843         as well.
26844
26845 2004-09-02  Martin Baulig  <martin@ximian.com>
26846
26847         * class.c (mono_class_instance_size): Don't allow generic type
26848         definitions or open generic instances.
26849         (mono_class_array_element_size): If we're a value type, call
26850         mono_class_instance_size() on the original class.
26851
26852         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26853         handle generic instances.
26854
26855         * mono-debug-debugger.c (write_type): Handle generic instances
26856         like classes.
26857
26858 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26859
26860         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26861         the allocation request fails. Fixes #65089.
26862
26863         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26864         
26865         * object.c (mono_runtime_free_method): New function to free a dynamic
26866         method.
26867
26868         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26869         delegate trampoline.
26870
26871         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26872         with hasthis as dynamic,
26873
26874         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26875
26876         * domain.c (mono_jit_info_table_remove): New function to remove an
26877         entry from the jit info table.
26878
26879         * class-internals.h (MonoMethod): Add 'dynamic' field.
26880
26881         * loader.c: Fix warnings.
26882
26883 2004-09-01  Martin Baulig  <martin@ximian.com>
26884
26885         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26886         instead of mono_debugger_lock() because the latter one is a no-op
26887         unless running in the debugger.
26888
26889 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26890
26891         * class.c (class_compute_field_layout): Classes with auto-layout or
26892         reference fields are not blittable.
26893         
26894 2004-09-01  Dick Porter  <dick@ximian.com>
26895
26896         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26897         mono_image_get_filename() to get the assembly location.
26898
26899         * icall.c:
26900         * metadata.h: Fix compile warnings
26901
26902 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26903
26904         * class.c (class_compute_field_layout): System.Object is blittable.
26905
26906         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26907         as in/out. Fixes #59909.
26908
26909 2004-09-01  Martin Baulig  <martin@ximian.com>
26910
26911         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26912         mono_metadata_generic_inst_is_valuetype() if we're a generic
26913         instance to check whether our underlying type is a reference type.
26914
26915 2004-09-01  Martin Baulig  <martin@ximian.com>
26916
26917         * metadata.c (mono_type_size): If we're a generic instance, call
26918         mono_class_value_size() for value types.
26919
26920 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26921
26922         * marshal.c: Implement more custom marshalling functionality. Fixes
26923         #64915.
26924
26925 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26926
26927         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26928
26929 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26930
26931         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26932
26933         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26934
26935         * icall.c: Fix some warnings.
26936
26937         * threads.c (abort_appdomain_thread): Fix unref errors.
26938         (mono_thread_current): Fix THREAD_DEBUG define.
26939
26940 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26941
26942         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26943
26944         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26945
26946 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26947
26948         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26949         string arrays.
26950
26951 2004-08-28  Martin Baulig  <martin@ximian.com>
26952
26953         * metadata.c
26954         (mono_metadata_generic_inst_is_valuetype): New public function.
26955
26956         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26957         mono_metadata_generic_inst_is_valuetype() if we're a generic
26958         instance to check whether our underlying type is a valuetype.
26959
26960 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26961
26962         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26963         #63768.
26964
26965 2004-08-25  Martin Baulig  <martin@ximian.com>
26966
26967         * loader.c (mono_get_method_from_token): Abstract methods can also
26968         be generic and thus have type parameters.
26969
26970         * metadata-internals.h
26971         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26972
26973         * reflection.c (mono_image_get_generic_param_info): Don't create a
26974         metadata row, just add an entry to the `gen_params' array.
26975         (build_compressed_metadata): Sort the `gen_params' array and then
26976         actually create the metadata.
26977
26978 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26979
26980         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26981
26982 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26983
26984         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26985
26986 2004-08-24  Martin Baulig  <martin@ximian.com>
26987
26988         * class.cs (mono_class_is_subclass_of): Like an interface, a
26989         generic instance also derives from System.Object.
26990
26991 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26992
26993         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26994         custom modifiers to be in any order. Fixes #61990.
26995
26996 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26997
26998         * object.c: Register mono_object_new_fast icall.
26999         
27000         * object.c (mono_class_get_allocation_ftn): Return to calling
27001         mono_object_new_fast, since it seems faster to compute the object 
27002         size in unmanaged code than passing it as a parameter.
27003
27004         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
27005
27006         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
27007         this function with Boehm as the oom handler, so we don't have to check
27008         the result of GC_malloc.
27009
27010         * object.c: Remove checks for oom.
27011
27012         * object.h object.c (mono_class_get_allocation_ftn): New function to
27013         return the icall which can be used to allocate an instance of a given
27014         class. 
27015
27016         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
27017
27018         * class-internals.h: Add 'enabled' field.
27019
27020 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
27021
27022         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
27023
27024 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
27025         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
27026         value 0x0010.
27027
27028 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
27029
27030         * appdomain.c: use the Tls function for appdomain too,
27031         at Zoltan's request. Actually return in mono_context_get
27032
27033         * appdomain.c, profiler.c, threads.c: use __thread
27034
27035 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
27036
27037         * appdomain.c threads.c: Call GC_CreateThread on windows.
27038
27039         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
27040         multiple libraries since this don't work on windows.
27041
27042 2004-08-18  Martin Baulig  <martin@ximian.com>
27043
27044         * class-internals.h
27045         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
27046         MonoMethodHeader.
27047
27048         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
27049         MonoMethodNormal since we also need it for abstract and interface
27050         methods.
27051
27052         * reflection.c
27053         (build_compressed_metadata): Sort the GenericParam table.
27054         (mono_image_create_token): Added `gboolean create_methodspec'
27055         argument; this is false when generating a MethodImpl token.
27056         (reflection_methodbuilder_to_mono_method): Abstract and interface
27057         methods may also have generic parameters.
27058
27059 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
27060
27061         * appdomain.c: thread local alloc
27062
27063 2004-08-17  Martin Baulig  <martin@ximian.com>
27064
27065         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
27066
27067         * icall.c
27068         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
27069         argument.
27070
27071         * class.c (mono_type_get_full_name): New public function.
27072         (mono_type_get_name): Don't include the type arguments.
27073
27074 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
27075
27076         * Makefile.am: Build static versions of libmetadata and libmonoruntime
27077         for inclusion into the mono executable.
27078
27079 2004-08-16  Martin Baulig  <martin@ximian.com>
27080
27081         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
27082         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
27083
27084 2004-08-14  Martin Baulig  <martin@ximian.com>
27085
27086         * class.c (dup_type): Also copy the `byref' field.
27087
27088 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
27089
27090         * reflection.c (create_dynamic_mono_image): Revert the last change 
27091         since it breaks bootstrap.
27092
27093 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
27094
27095         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
27096
27097         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
27098         not free them with g_free.
27099
27100 2004-08-11  Martin Baulig  <martin@ximian.com>
27101
27102         * reflection.c (mono_reflection_setup_internal_class): Also call
27103         mono_class_setup_mono_type() if we already have a `tb->type.type'.
27104
27105 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
27106
27107         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
27108         called during default (first) AppDomain creation. Keep track of
27109         Evidence when loading assemblies.
27110
27111 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27112
27113         * opcodes.c, opcodes.h: reduce runtime relocations.
27114
27115 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
27116
27117         * culture-info.h, locales.c: fixes and chages to sue the new
27118         optimized format of the locale data.
27119         * culture-info-tables.h: regenerated.
27120
27121 2004-08-06  Geoff Norton <gnorton@customerdna.com>
27122         
27123         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
27124
27125 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
27126
27127         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
27128         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
27129         * domain-internals.h: icall declaration.
27130         * icall.c: icall registration.
27131         * object-internals.h: New fields in MonoAssembly for CAS.
27132
27133 2004-08-05  Duncan Mak  <duncan@ximian.com>
27134
27135         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
27136         CEE_LDELEM_ANY.
27137
27138 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27139
27140         * reflection.c: fix to deal with object[] arrays in custom ctors
27141         (bug #62550).
27142
27143 2004-08-05  Martin Baulig  <martin@ximian.com>
27144
27145         * class.c (mono_class_array_element_size): Added support for
27146         generic instances and correctly handle "recursive" types.
27147
27148 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
27149
27150         * assembly.c: Fix warnings.
27151
27152 2004-08-04  Martin Baulig  <martin@ximian.com>
27153
27154         * class.c
27155         (mono_type_get_name_recurse): Added `gboolean include_arity'
27156         argument specifying whether or not we should include the generic
27157         arity in the type name.
27158         (_mono_type_get_name): New static function.
27159         (mono_class_setup_vtable): If we're a generic instance, don't
27160         include the generic arity in the names of explicit method
27161         implementations.        
27162
27163 2004-08-03  Martin Baulig  <martin@ximian.com>
27164
27165         * class.c (mono_type_get_name_recurse): Enclose the generic type
27166         arguments in `<', '>'.
27167
27168 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27169
27170         * gc.c: make GC warning messages use the trace API, they are just
27171         noise to most of the users.
27172
27173 2004-08-03  Martin Baulig  <martin@ximian.com>
27174
27175         * debug-mono-symfile.c (read_string): Correctly read the string.
27176
27177 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
27178
27179         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
27180         
27181         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
27182         icalls.
27183         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
27184
27185 2004-07-30  Martin Baulig  <martin@ximian.com>
27186
27187         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
27188         Reflect latest symbol writer changes.   
27189
27190 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27191
27192         * object.c: always create an object if null is passed
27193         to Invoke() where a valuetype is expected.
27194
27195 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
27196
27197         * marshal.c (mono_marshal_init): make managed
27198         signatures match native ones better for 64bits.
27199
27200 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27201
27202         * appdomain.c: hack to build correctly the private bin path on windows.
27203         Fixes bug #61991.
27204
27205 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
27206
27207         * assembly.c: Load mscorlib from the correct framework directory
27208           (mono/<version>/mscorlib.dll).
27209         * appdomain.h: Added prototypes for new functions.
27210         * internals.h: Added some prototypes.
27211         * domain.c: When initializing the runtime, get from the executable and
27212           the configuration files the runtime version that the app supports.
27213           Added support methods for reading app.exe.config. Added list of versions
27214           supported by the JIT. Added two new methods: mono_init_from_assembly,
27215           which initializes the runtime and determines the required version from
27216           the provided exe file, and mono_init_version, which initializes
27217           the runtime using the provided version.
27218         * icall.c: Get machine.config from version-specific directory.
27219         * reflection.c: When generating an image, embed the version number
27220           of the current runtime.
27221
27222 2004-07-28  Dick Porter  <dick@ximian.com>
27223
27224         * socket-io.c
27225         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
27226         returned sockaddr size before creating the remote address object.
27227         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
27228         61608.
27229
27230 2004-07-28  Dick Porter  <dick@ximian.com>
27231
27232         * locales.c (string_invariant_compare_char): Fix invariant char
27233         compares between upper and lower cases.  Fixes bug 61458.
27234
27235 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
27236         
27237         * marshal.c: actually cache stelem.ref wrappers.
27238         
27239 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
27240
27241         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
27242         sections and remove the mono_cli_rva_map () function.
27243
27244 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27245
27246         * debug-mono-symfile.c: fix one more endianess issue, from a patch
27247         by Geoff Norton (<gnorton@customerdna.com>).
27248
27249 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27250
27251         * class.c: fix class loads for pointer types (typeof(int) !=
27252         typeof(int*)).
27253
27254 2004-07-27  Martin Baulig  <martin@ximian.com>
27255
27256         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
27257         reading the debugging information from an external ".mdb" file.
27258
27259 2004-07-24  Martin Baulig  <martin@ximian.com>
27260
27261         * reflection.c (mono_image_get_type_info): Only write a class
27262         layout entry if we actually have a size or a packing size.
27263
27264 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27265
27266         * reflection.c (type_get_fully_qualified_name): 
27267         insert cast to get type checking of ?: with non-gcc compilers
27268
27269 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27270
27271         * rand.c: use g_getenv for both lookups of
27272         MONO_EGD_SOCKET
27273
27274 2004-07-17  Martin Baulig  <martin@ximian.com>
27275
27276         * reflection.c (mono_reflection_bind_generic_method_parameters):
27277         Set `gmethod->reflection_info'.
27278
27279 2004-07-17  Martin Baulig  <martin@ximian.com>
27280
27281         * class.c (mono_class_create_from_typedef): Insert the newly
27282         created class into the hash table before computing the interfaces
27283         since we could be called recursively.
27284
27285 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27286
27287         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27288         function to implement stelem.ref in managed code
27289         * class-internals.h, debug-helpers.c: a new wrapper type
27290         for the above.
27291
27292 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27293
27294         * gc.c: allow GC handles to work even when no GC is compiled in.
27295         Fix part of bug #61134 (GetAddrOfPinnedObject).
27296
27297 2004-07-13  Peter Williams  <peter@newton.cx>
27298  
27299         * process.c (complete_path): Make sure we don't attempt to execute
27300         directories.
27301  
27302 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27303
27304         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27305           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27306           and will add/subtract the hour if needed
27307
27308 2004-07-12  Martin Baulig  <martin@ximian.com>
27309
27310         * reflection.c (mono_field_get_object): If we have
27311         `field->generic_info', take the attributes from
27312         `field->generic_info->generic_type'.    
27313
27314 2004-07-12  Martin Baulig  <martin@ximian.com>
27315
27316         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27317         This function must be called before initializing the runtime.
27318         (mono_debug_init_1): New function; call this after initializing
27319         the runtime, but before loading the assembly.  It tells the
27320         debugger to load corlib and the builtin types.
27321
27322         * mono-debug-debugger.c: Did some larger changes in the debugging
27323         code; support recursive class declarations, make sure we actually
27324         add all classes.
27325
27326 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27327
27328         * debug-helpers.c: undo my previous patch and fixed the real issue in
27329         ../mini/exceptions-x86.c
27330
27331 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27332
27333         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27334         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27335         called from other .cctors.
27336
27337 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27338
27339         * loader.c: Removed the mono_loader_wine_init hack now that we are
27340         doing a managed version of Windows.Forms.
27341
27342 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27343
27344         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27345         threadpool.c, threads.c: remove static data from rootset.
27346
27347 2004-07-09  Dick Porter  <dick@ximian.com>
27348
27349         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27350         Don't do any more processing if the matched length was 0.  It was
27351         increasing the size of the string before.  Fixes bug 61167.
27352
27353 2004-07-09  Dick Porter  <dick@ximian.com>
27354
27355         * socket-io.h:
27356         * socket-io.c
27357         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27358         Add support for SO_PEERCRED if its available.
27359
27360 2004-07-09  Peter Bartok <pbartok@novell.com>
27361         * loader.c: winelib.exe.so error message is now only displayed if
27362         MONO_DEBUG is set. To help us avoid questions when people are trying
27363         out the new Managed.Windows.Forms.
27364
27365 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27366
27367         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27368         for isinst and castclass wrappers.
27369
27370         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27371         to libmetadata from the JIT, so they could be used by the marshalling
27372         code and the interpreter.
27373
27374         * marshal.c: Register marshalling related JIT icalls here instead of
27375         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27376         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27377
27378         * metadata.h: Remove unneeded marshalling conversions.
27379
27380         * opcodes.c: Update for new opcodes.
27381         
27382 2004-07-08  Martin Baulig  <martin@ximian.com>
27383
27384         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27385         (mono_debug_get_domain_data): Make this function static.
27386
27387 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27388
27389         * gc.c, object.h: add nice GC handle API for embedders.
27390
27391 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27392
27393         * reflection.c: more changes for the new api
27394
27395         * object.c: When we reflect on a field w/ a constant value, it
27396         will not have a memory location, so we must access metadata. Also,
27397         allow easier reading of strings so that we can read them from
27398         the constant data.
27399
27400         * class.c (mono_class_layout_fields): no need for literal fields here.
27401
27402         * class-internals.h: api changes for const fields
27403
27404         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27405
27406 2004-07-06  Martin Baulig  <martin@ximian.com>
27407
27408         * mono-debug.h: Increment version number to 44.
27409
27410         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27411         now a gpointer, rewrote this whole method.
27412
27413         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27414         function.  Add information about the wrapper in a new "misc table".
27415
27416         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27417         for the new misc table.
27418
27419 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27420
27421         * metadata-internals.h image.c: Add a cache for helper signatures.
27422
27423         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27424
27425 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27426
27427         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27428         delegates from a delegate. Fixes #61033.
27429         
27430         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27431         marshalling of stringbuilder arrays. Fixes #59900.
27432
27433 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27434
27435         * icall.c: Add EnumBuilder:setup_enum_type icall.
27436
27437 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27438
27439         * icall.c: Added a new icall for the property version of
27440         OffsetOfStringData.
27441
27442 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27443
27444         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27445         it has a constant size across platforms.
27446
27447         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27448         stack trace.
27449
27450 2004-06-29  Martin Baulig  <martin@ximian.com>
27451
27452         * mono-debug.c (mono_debug_add_method): Protect the whole function
27453         in mono_debugger_lock(), not just parts of it.
27454
27455 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27456
27457         * reflection.c: make sure padding bytes in heaps are zeroed.
27458
27459 2004-06-24  David Waite  <mass@akuma.org>
27460
27461         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27462         image.c, loader.c, locales.c, marshal.c, metadata.c,
27463         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27464         string-icalls.c, threads.c: change to C90-style comments from C99 /
27465         C++ -style
27466
27467 2004-06-24  Dick Porter  <dick@ximian.com>
27468
27469         * threads.c
27470         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27471         return createdNew.  Fixes bug 60412.
27472
27473         * threads-types.h: 
27474         * icall.c: Add createdNew parameter to CreateMutex icall
27475
27476 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27477
27478         * reflection.c, object-internals.h: save default value in params.
27479
27480 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27481
27482         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27483         no need to build a new path combining that with the application base.
27484         Fixes bug #60442.
27485
27486 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27487
27488         * reflection.c: fixed minor standard compliance issues.
27489
27490 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27491
27492         * reflection.c: fixed issue with encoding some custom attributes
27493         (arrays in properties and fields, bug #60411).
27494
27495 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27496
27497         * reflection.c: fix start address when copying the public key token.
27498
27499 2004-06-23  Martin Baulig  <martin@ximian.com>
27500
27501         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27502         the `exc' object in a static object to put it into the GC's root set.
27503
27504 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27505
27506         * reflection.c: make mono_reflection_setup_internal_class ()
27507         callable a second time to setup a new parent class.
27508
27509 2004-06-23  Dick Porter  <dick@ximian.com>
27510
27511         * threads.c: Check for WAIT_IO_COMPLETION return values.
27512
27513 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27514
27515         * appdomain.c: Removed the g_free on the public key token. Now copy 
27516         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27517         * assembly.c: Added public key token string value when loading 
27518         assemblies. Fix bug #60439.
27519         * icall.c: Added missing informations (like public key) in 
27520         GetReferencedAssemblies. Fix #60519.
27521         * image.h: Changed definition for public key token from const char*
27522         public_tok_value to guchar public_key_token [17];
27523         * reflection.c: Updated for changes to public key token.
27524
27525 2004-06-22  Lluis Sanchez Gual
27526
27527         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27528         for the field in base classes.
27529
27530 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27531
27532         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27533         mark headers as not supported, they are installed only for use by the
27534         debugger.
27535
27536 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27537
27538         * *.c, *.h: avoid namespace pollution in public headers.
27539
27540 2004-06-21  Martin Baulig  <martin@ximian.com>
27541
27542         * exception.c (mono_get_exception_security): It's in
27543         "System.Security", not in "System".
27544
27545         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27546         the exception classes.
27547
27548 2004-06-21  Martin Baulig  <martin@ximian.com>
27549
27550         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27551         Protect the exception object from being finalized.
27552
27553 2004-06-21  Martin Baulig  <martin@ximian.com>
27554
27555         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27556         public function.
27557
27558 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27559
27560         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27561         if it was not loaded before. Fix parts of #60439.
27562
27563 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27564
27565         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27566         code that was broken since Ben's change: wrappers are now
27567         dependent on the method signature only again.
27568
27569 2004-06-21  Martin Baulig  <martin@ximian.com>
27570
27571         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27572         added interface support.
27573
27574 2004-06-21  Martin Baulig  <martin@ximian.com>
27575
27576         * class.c (mono_vtable_get_static_field_data): New public method.
27577
27578 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27579
27580         * filewatcher.c : Windows build fix to be compliant with API changes.
27581
27582 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27583
27584         * class.h, class.c: more accessors.
27585         * metadata.h, metadata.c: prepare for hiding MonoType and
27586         MonoMethodSignature: people should use the accessors from now on
27587         outside of the tree.
27588
27589 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27590
27591         * *.c, *.h: more API cleanups.
27592
27593 2004-06-18  Jackson Harper  <jackson@ximian.com>
27594
27595         * assembly.c: Trace loading assemblies.
27596         * loader.c: Trace loading native libraries.
27597         * mono-config.c: Trace loading config files.
27598         
27599 2004-06-18  Dick Porter  <dick@ximian.com>
27600
27601         * locales.c: Tell ICU the lengths of strings, it can cope with
27602         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27603
27604 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27605
27606         * image.c: swapped name/filename;
27607
27608 2004-06-18  Martin Baulig  <martin@ximian.com>
27609
27610         * mono-debug-debugger.c (write_class): Write the parent class at
27611         the end of the header.
27612
27613 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27614
27615         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27616
27617 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27618
27619         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27620         (bundle_obj): New conditional define.
27621         (BUILT_SOURCES): Remove.
27622         ($(bundle_srcs)): Make parallel-make safe.
27623         (libmonoruntime_la_LIBADD): Make unconditional.
27624         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27625         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27626
27627 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27628
27629         * culture-info-tables.h: It was inconsistent with the latest
27630           supp info files.
27631
27632 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27633
27634         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27635         be loaded.
27636
27637         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27638         with gcc 2.95.
27639
27640 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27641
27642         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27643         cleaned up public header threads.h.
27644
27645 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27646
27647         * Makefile.am, *.c, *.h: more API cleanups.
27648
27649 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27650
27651         * Makefile.am: removed monosn from compilation.
27652         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27653         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27654         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27655         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27656         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27657         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27658
27659 2004-06-15  Jackson Harper  <jackson@ximian.com>
27660
27661         * assembly.c: Make locales lower case when searching the GAC for
27662         assemblies. gacutil will always make locales lowercase when
27663         installing so this effectively makes them case insensitive.
27664         
27665 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27666
27667         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27668         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27669           parameter which allows to choose whether the wait can be interrupted or 
27670           not. Also added the method mono_monitor_enter(), which locks the monitor
27671           using an infinite wait and without allowing interruption.
27672           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27673           interrupted.
27674         * object.h: Added new fields in MonoThread. suspend_event holds the event
27675           used to susped/resume the thread. synch_lock is the lock object to use for
27676           modifying the thread state.
27677         * threads.c: Use the new synch_lock object for locking, instead of "this",
27678           which can generate deadlocks.
27679           Moved thread state change in Thread.Sleep and Thread.Join from managed
27680           to unmanaged code. This avoids a deadlock when the thread was suspended
27681           just after acquiring the thread lock.
27682           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27683           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27684           which is not fully implemented in the io-layer.
27685         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27686
27687 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27688
27689         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27690         threads-types.h: more API cleanups.
27691
27692 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27693
27694         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27695         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27696         threadpool.c, threads.c: first pass at the exported API cleanup.
27697
27698 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27699
27700         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27701
27702 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27703
27704         * icall.c: added internalGetHome.
27705
27706 2004-06-14  Dick Porter  <dick@ximian.com>
27707
27708         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27709         possible to return successfully when '.' or '..' were the only
27710         entries in a directory, but were skipped.  The MonoIOStat was not
27711         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27712         Fixes bug 59574.
27713
27714 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27715
27716         * reflection.c: make binaries run on .Net 1.1 by default.
27717
27718 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27719
27720         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27721
27722 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27723
27724         * marshal.c: keep track of struct size with explicit layout
27725         (bug #59979).
27726
27727 2004-06-12  Martin Baulig  <martin@ximian.com>
27728
27729         * mono-debug-debugger.c: Comment out a debugging g_message().
27730
27731 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27732
27733         * reflection.c, reflection.h: do not free custom attrs that are cached.
27734         * icall.c: use braces to make code clearer.
27735
27736 2004-06-11  Martin Baulig  <martin@ximian.com>
27737
27738         * class.h (MonoInflatedField): New type.
27739         (MonoClassField): Replaced `MonoType *generic_type' with
27740         `MonoInflatedField *generic_info'.
27741
27742         * icall.c
27743         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27744
27745 2004-06-11  Martin Baulig  <martin@ximian.com>
27746
27747         * reflection.c (mono_image_create_method_token): Correctly encode
27748         varargs methods.
27749
27750 2004-06-11  Martin Baulig  <martin@ximian.com>
27751
27752         * metadata.c (mono_metadata_parse_method_signature): When parsing
27753         a MethodDef which has VarArgs, also set sentinelpos if we don't
27754         have any parameters.
27755
27756 2004-06-11  Martin Baulig  <martin@ximian.com>
27757
27758         * verify.c (mono_method_verify): In CEE_CALL, use
27759         mono_method_get_signature() to get the method's signature, unless
27760         we're a PInvoke method.
27761
27762 2004-06-10  Jackson Harper  <jackson@ximian.com>
27763
27764         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27765         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27766         logical name as the supplied path is just a prefix to the gac not
27767         the direct path to it.
27768         
27769 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27770
27771         * reflection.c: make the token for a created method match
27772         the token of the MethodBuilder it was created from
27773         (IKVM requires this behaviour now).
27774
27775 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27776
27777         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27778         reflection.c, socket-io.c: leak fixes.
27779
27780 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27781
27782         * icall.c: handle sentinel pos in vararg methods in position different
27783         from 0.
27784
27785 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27786
27787         * culture-info-tables.h: freshly generated.
27788
27789 2004-06-09  Martin Baulig  <martin@ximian.com>
27790
27791         * loader.c (mono_get_method_constrained): Call `mono_class_init
27792         (constrained_class)'.   
27793
27794 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27795
27796         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27797         any methods. Fixes #59629.
27798
27799 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27800
27801         * culture-info-tables.h: reflecting locale-builder updates.
27802
27803 2004-06-08  Dick Porter  <dick@ximian.com>
27804
27805         * object.h:
27806         * locales.c: Fixed compile warnings, including a real bug in
27807         CompareInfo_internal_compare.
27808         
27809 2004-06-08  Dick Porter  <dick@ximian.com>
27810
27811         * locales.c
27812         (ves_icall_System_Globalization_CompareInfo_internal_index):
27813         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27814         Double-check the resuls of usearches, because ICU currently
27815         ignores most of the collator settings here.  Fixes bug 59720.
27816         
27817 2004-06-08  Dick Porter  <dick@ximian.com>
27818
27819         * locales.c
27820         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27821         Fix memory leak and segfault-causing typo.  No idea how this one
27822         lasted so long without being noticed.
27823
27824 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27825
27826         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27827         any methods. Fixes #59629.
27828
27829 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27830
27831         * assembly.c:
27832         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27833         own the critical section before). Removed dead code (that's done
27834         in the preload hook).
27835
27836         (mono_assembly_load_with_partial_name): call the preload hook.
27837
27838 2004-06-08  Martin Baulig  <martin@ximian.com>
27839
27840         * metadata.c (mono_metadata_signature_alloc): Default
27841         `sentinelpos' to -1.
27842
27843         * reflection.c (mono_image_get_array_token): Likewise.
27844
27845 2004-06-08  Martin Baulig  <martin@ximian.com>
27846
27847         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27848
27849         * metadata.c (mono_metadata_parse_method_signature): When parsing
27850         a MethodDef which has VarArgs, set sentinelpos.
27851
27852         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27853         `gint16' since we're using -1 for non-varargs methods.
27854
27855         * reflection.c
27856         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27857         (method_encode_signature): Added varargs support.
27858         (method_builder_encode_signature): Likewise.
27859         (mono_image_get_varargs_method_token): New static method.
27860         (mono_image_create_method_token): New public method; this is
27861         called via an icall instead of mono_image_create_token() when
27862         calling a varargs method.       
27863
27864 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27865
27866         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27867
27868 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27869
27870         * culture-info-tables.h : Reflecting the latest locale-builder that
27871           fixed empty array representation ({} to {0}).
27872
27873 2004-06-07  Jackson Harper  <jackson@ximian.com>
27874
27875         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27876         looking up extra gac paths. This allows MONO_GAC_PATH to act
27877         exactly like a prefix.
27878         
27879 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27880
27881         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27882         type name before modifying it. Fixes #59405.
27883
27884 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27885
27886         * culture-info.h: added fields for "all datetime patterns".
27887         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27888           _construct_datetime_format ()): fill xxx_patterns fields.
27889         * object.h: added fields for "all datetime patterns" to
27890           MonoDateTimeFormatInfo.
27891         * culture-info-tables.h: reflecting locale-builder updates.
27892
27893 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27894
27895         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27896         the event has no add and remove methods. Fixes #59629.
27897
27898 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27899
27900         * object.c: Fixed possible integer overflow when allocating large
27901         strings.
27902
27903 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27904
27905         * culture-info-tables.h: reflecting locale-builder updates.
27906
27907 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27908
27909         * culture-info-tables.h: reflecting locale-builder updates.
27910
27911 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27912
27913         * culture-info-tables.h: reflecting locale-builder updates.
27914
27915 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27916
27917         * threads.c: Made Thread.Sleep abortable.
27918
27919 2004-06-02  Martin Baulig  <martin@ximian.com>
27920
27921         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27922
27923         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27924
27925 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27926
27927         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27928
27929 2004-05-30  Jackson Harper  <jackson@ximian.com>
27930
27931         * reflection.c: Do not hardcode assembly versions or public key
27932         tokens anymore. All of this except the corlib section was dead
27933         code anyways.
27934         
27935 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27936
27937         * object.c (mono_runtime_invoke_array): Automatically create boxed
27938         objects for byref valuetypes if needed. Fixes #59300.
27939         
27940         * object.c (mono_method_return_message_restore): Handle 
27941         MONO_TYPE_OBJECT as well.
27942
27943 2004-05-28  Jackson Harper  <jackson@ximian.com>
27944
27945         * reflection.c: The modified type encoding was causing build
27946         problems. Reverted for now.
27947         
27948 2004-05-28  Jackson Harper  <jackson@ximian.com>
27949
27950         * reflection.c/h: Take an assembly ref so that we dont create
27951         fully qualified names when encoding types in the same assembly as
27952         the custom attribute being emitted.
27953         * appdomain.c: Increment version number.
27954         
27955 2004-05-26  Duncan Mak  <duncan@ximian.com>
27956
27957         * icall.c
27958         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27959         Set the full version number (major, minor, build, revision).
27960
27961 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27962
27963         * marshal.c (emit_struct_conv): increment src/dst after blit
27964         (mono_marshal_get_managed_wrapper,
27965         mono_marshal_get_native_wrapper): make sure we have marshalling
27966         info before marshalling params (info computation affects
27967         blittable)
27968
27969         * class.c (class_compute_field_layout): correctly deal with
27970         blittable
27971         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27972         value types (as per what windows dows by default)
27973         (mono_class_setup_mono_type): System.ValueType is blittable
27974         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27975         blittable
27976
27977         * marshal.c (mono_marshal_load_type_info): flag types  as
27978         non-blittable if the native layout doesn't match the managed
27979         layout
27980
27981 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27982
27983         * appdomain.c: don't add stuff in the private search path that is
27984         above the application base. If application base is not set, there's
27985         no private search path.
27986
27987 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27988
27989         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27990         byref struct arguments in native->managed marshalling.
27991
27992 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27993
27994         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27995         cache methods using signature (special case for methods
27996         that are value type or string class)
27997         
27998         * image.c (mono_image_close): clean up allocated GSList's
27999         in runtime_invoke_cache.
28000
28001 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28002
28003         * mono-config.c: set the correct path for mono_cfg_dir on windows when
28004         there's no MONO_CFG_DIR environment variable defined.
28005
28006 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28007
28008         * threads.c: windows version must be >= 0x0500 to include OpenThread.
28009
28010 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
28011
28012         * threadpool.c: Really wait for 500ms after the async call, even if the wait
28013           is interrumped.
28014         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
28015           before waiting for it, and call CloseHandle after the wait to unref it.
28016           This will make sure that handles are not disposed too early.
28017
28018 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28019
28020         * appdomain.c:
28021         * appdomain.h:
28022         * icall.c: removed
28023         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
28024         needed now.
28025
28026         * object.c: se the application_base only for the domain that runs
28027         Main. Fixes bug #59216,
28028
28029 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28030
28031         * appdomain.c:
28032         * object.c: only the domain in which Main is run have
28033         SetupInformation.ConfigurationFile set, so moved a few lines from
28034         appdomain.c to object.c.
28035
28036 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28037
28038         * appdomain.c: we tried to load [name].(dll|exe), but according
28039         to bug #57710, we must also try [culture]/[name].(dll|exe) and
28040         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
28041         There's a test case attached to bug #58922.
28042
28043 2004-05-27  Dick Porter  <dick@ximian.com>
28044
28045         * icall.c:
28046         * file-io.c: Implemented icalls for locking and unlocking regions
28047         in a file.
28048         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
28049         FALSE on error (fixes both compiler warning and real bug.)
28050
28051 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
28052
28053         * culture-info-tables.h: reflecting locale-builder updates.
28054
28055           (Added missing ChangeLog entry for 05/26)
28056
28057 2004-05-27  Jackson Harper  <jackson@ximian.com>
28058
28059         * locales.c: Fix some cut and paste errors.
28060         
28061 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28062
28063         * mono-config.c: set the correct path for config. directory on windows.
28064
28065 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
28066
28067         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
28068           on win32.
28069
28070 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
28071
28072         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
28073         from pinvoke functions.
28074         
28075         * marshal.c (mono_ftnptr_to_delegate): Implement this.
28076
28077 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
28078
28079         * culture-info-tables.h: reflecting locale-builder updates.
28080
28081 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
28082
28083         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
28084         #59086.
28085
28086 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
28087
28088         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
28089         * icall.c: Modified icalls for RNG.
28090         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
28091         Windows (CryptoAPI).
28092
28093 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
28094
28095         * locales.c: Fix build.
28096
28097 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
28098
28099         * culture-info-tables.h: reflecting locale-builder updates.
28100
28101 2004-05-25  Jackson Harper  <jackson@ximian.com>
28102
28103         * locales.c: When creating the current culture use the $LANGs
28104         specific culture. So DateTimeFormat and NumberFormat entries are created.
28105         
28106 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
28107
28108         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
28109         a char array as parameter.
28110
28111 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
28112
28113         * image.c: In mono_image_open(), always use an absolute path name to
28114           look for already loaded images.
28115
28116 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
28117
28118         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
28119         missing in the windows build (like older cygwin include files).
28120
28121 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
28122
28123         * icall.c: Fixed check for possible integer overflow in Buffer_
28124         BlockCopy icall. Replaced comments style // by /* */.
28125
28126 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
28127
28128         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
28129         
28130         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
28131         check after MONO_VTADDR. Fixes pinvoke2.exe.
28132
28133         * marshal.h marshal.c metadata.h: Add beginnings of support for
28134         ftnptr -> delegate marshalling.
28135
28136 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
28137
28138         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
28139         * threads.c: Fix warnings.
28140
28141 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
28142
28143         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
28144         * icall.c: Registered icalls for Suspend and Resume.
28145         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
28146           Thread.Abort.
28147         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
28148         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
28149         * process.c: Use WaitForSingleObjectEx.
28150         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
28151           checkpoints.
28152         * threads.c, threads.h: Make use of new Ex wait methods. Improved
28153           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
28154           for Suspend and Resume. Added new mono_thread_stop, used for stoping
28155           background threads. Added basic support for Abort in Windows.
28156           Start new threads using a managed delegate invoke wrapper. This wrapper
28157           has an interruption checkpoint that is needed since an interruption
28158           can be requested before the thread leaves the unmanaged code that starts 
28159           the thread.
28160         * marshal.c: Added interruption checkpoint after every native call, and
28161           also before managed calls for wrappers called from unmanaged code to
28162           go into managed code.
28163         * object.h: Added new field in MonoThread to keep track of interruption
28164           requests.
28165
28166 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
28167
28168         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
28169         calls.
28170
28171 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28172
28173         * appdomain.c:
28174         * assembly.c:
28175         * gc.c:
28176         * locales.c:
28177         * mono-config.c:
28178         * rand.c: getenv -> g_getenv (windows!)
28179
28180         * process.c: complete_path is also used on non-windows platforms.
28181
28182 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28183
28184         * icall.c: new signature for Process_Start.
28185
28186         * process.[ch]: new signature for Process_Start. If we're on windows
28187         and UseShellExecute is false, we have to search for the program by
28188         ourselves if we don't get a full path.
28189
28190 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
28191
28192         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
28193         marshalling and call CleanUpNativeData if needed. Fixes #58646.
28194
28195 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28196
28197         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
28198         Fixes bug #58373.
28199
28200 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28201
28202         * process.c: use double quotes to quote program name and arguments on
28203         windows. Fixes bug #58575.
28204
28205 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28206
28207         * file-io.c: don't return "." and ".." when using windows Find*File.
28208
28209 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
28210
28211         * marshal.c: Don't pass wrappers to message init because method 
28212         addressed used to lookup metadata. part of remoting[2|3] fix.
28213
28214 2004-05-15  Jackson Harper  <jackson@ximian.com>
28215
28216         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
28217         path is essentially the same as MONO_PATH except that it points to
28218         GACs instead of lib directories.
28219         * loader.h: The user gac is gone so we dont need function to
28220         enable/disable it.
28221         * mono-config.c: user gac option is now gone.
28222         
28223 2004-05-15  Jackson Harper  <jackson@ximian.com>
28224
28225         * culture-info.h: Make defines more consistent, add calendar data
28226         to the culture info table.
28227         * culture-info-tables.h: Add basic calendar data. Basically
28228         everyone gets default gregorian until all the data is
28229         updated.
28230         * locales.c: Use the new consistent defines. Set calendar data for
28231         culture info objects.
28232         * object.h: add a field for calendar data to CultureInfo
28233         
28234 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
28235
28236         * image.c: image->runtime_invoke_cache is keyed on signatures now.
28237         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
28238         a signature.
28239         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
28240         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
28241         an extra param that is the pointer of the method to invoke. The IL for
28242         the invoke method is no longer specific to the method, but to the
28243         signature of the method. Thus, we can share the same code for multiple
28244         methods. This reduces the number of methods that have to be compiled.
28245
28246 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
28247
28248         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
28249
28250         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
28251
28252         * icall.c: Optimize Buffer.BlockCopy.
28253
28254 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28255
28256         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
28257         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
28258         quote). Changed them to "MMMM yyyy".
28259
28260 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
28261
28262         * rand.c
28263         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
28264
28265 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
28266
28267         * reflection.h: Updated after changes to managed structures.
28268
28269         * appdomain.c: Bump corlib version.
28270
28271 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28272
28273         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28274         windows.
28275
28276 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28277
28278         * Makefile.am: link to ../os/libmonoos.la on windows.
28279
28280         * assembly.c:
28281                 -If MONO_DEBUG, warn about non-existing directories in
28282                 MONO_PATH.
28283                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28284                 compile time variable.
28285                 -Removed init_default_path and call mono_set_rootdir from
28286                 libmonoos.a instead (windows only).
28287
28288         * assembly.h: declare mono_assembly_getrootdir().
28289
28290         * domain.c:
28291         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28292
28293         * loader.c: s/getenv/g_getenv/
28294
28295 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28296
28297         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28298
28299         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28300
28301         * metadata.h: Add new marshalling conversions.
28302
28303         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28304         function.
28305
28306         * reflection.c (mono_reflection_get_type): Lookup the type in all
28307         modules of a multi-module assembly. Fixes #58291.
28308
28309 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28310
28311         * threads.c: Before aborting a background, set the StopRequested
28312         state.  This avoids throwing the Abort exception.
28313         In mono_thread_manage, don't continue with the shutdown until all
28314         aborted threads have actually stopped.
28315
28316 2004-05-10  Jackson Harper  <jackson@ximian.com>
28317
28318         * locales.c: Remove the modifier from culture names.
28319         
28320 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28321
28322         * Makefile.am: monosn is not installed any more. It has been deprecated
28323         in favor of sn.
28324
28325 2004-05-07  Jackson Harper  <jackson@ximian.com>
28326
28327         * locales.c
28328         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28329         Fix array construction, add bailout if the length is 0.
28330
28331 2004-05-07  Dick Porter  <dick@ximian.com>
28332
28333         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28334         machine doesn't have a DNS entry.  Patch by Urs Muff
28335         (umuff@quark.com), fixes bug 57928.
28336
28337 2004-05-06  Jackson Harper  <jackson@ximian.com>
28338
28339         * reflection.c: Handle null PublicTokens properly. alloc mem for
28340         assembly names culture so we dont crash when freeing it.
28341         
28342 2004-05-06  Jackson Harper  <jackson@ximian.com>
28343
28344         * assembly.c: Check the usergac when loading with partial names.
28345         
28346 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28347
28348         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28349         does nothing for now (not required for Linux/Windows) but the class
28350         library can call it (and a newer or modified runtime could need it).
28351         * icall.c: Registred icall.
28352
28353 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28354
28355         * loader.c: prints a message on module loading error we set MONO_DEBUG
28356         environment variable.
28357
28358 2004-05-05  Jackson Harper  <jackson@ximian.com>
28359
28360         * appdomain.c: Handle PublicKeyToken=null properly.
28361         
28362 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28363
28364         * environment.c|h: Added icall ves_icall_System_Environment_
28365         GetOSVersionString to get the current OS version as a string.
28366         * icall.c: Registred icall.
28367
28368 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28369
28370         * object.c: in mono_object_get_virtual_method(), take into account that
28371         non-virtual methods don't have a slot in the vtable. Check needed when
28372         the object is a proxy.
28373
28374 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28375
28376         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28377         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28378
28379         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28380
28381         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28382         passed when a valuetype is expected.
28383
28384         * object.c (mono_unhandled_exception): Only set the exit code if the
28385         exception happens in the main thread. Fixes thread5.exe.
28386
28387         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28388         invalid names. Fixes #58047.
28389
28390 2004-05-03  Jackson Harper  <jackson@ximian.com>
28391
28392         * assembly.c: This line was committed accidently and is unneeded.
28393         
28394 2004-05-03  Jackson Harper  <jackson@ximian.com>
28395
28396         * icall.c: Add new icall for Assembly::LoadWithPartialName
28397         * assembly.c/.h: new function that probes the GAC to load partial
28398         assembly names by Paolo Molaro.
28399         
28400 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28401
28402         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28403         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28404         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28405         full type name.
28406
28407 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28408
28409         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28410         * reflection.c: fix bug when parsing a full type name and Version is not
28411         the last thing in the string.
28412
28413 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28414
28415         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28416         crashes when it is freed.
28417
28418 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28419
28420         * assembly.c: print the compat warning to stderr.
28421
28422 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28423
28424         * assembly.c (mono_assembly_load_references): Add a compatibility
28425         hack to run old applications that might be still referencing the
28426         3300-based assemblies, only do this for System.xxx.
28427
28428 2004-05-01  Jackson Harper  <jackson@ximian.com>
28429
28430         * appdomain.c: If the culture is neutral we set it to "".
28431         
28432 2004-04-29  Jackson Harper  <jackson@ximian.com>
28433
28434         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28435
28436 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28437  
28438         * string-icalls.c: added low overhead function for copying chars
28439         * icall.c: added needed icall for the above function
28440  
28441 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28442
28443         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28444         Environment.GetLogicalDrives.
28445
28446 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28447
28448         * rand.c: try and talk to egd or prngd
28449         for random bytes if opening devices fail.
28450
28451 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28452
28453         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28454         alignment for the type using the native alignment of its members 
28455         instead of using klass->min_align.
28456
28457         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28458
28459 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28460
28461         * file-io.c:
28462         * socket-io.c: added check for sys/aio.h.
28463
28464 2004-04-28  Dick Porter  <dick@ximian.com>
28465
28466         * threads.c: Don't abort a thread thats already aborting, when
28467         terminating everything.
28468
28469 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28470
28471         * icall.c: added 2 new async calls for Socket.
28472
28473         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28474         IO on *nix systems.
28475
28476         * threadpool.c: removed unused variable.
28477
28478 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28479
28480         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28481
28482 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28483
28484         * locales.c: put back string_invariant_tolower () and
28485         string_invariant_toupper ().
28486
28487 2004-04-26 David Waite <mass@akuma.org>
28488
28489         * file-io.h:
28490         * socket-io.h:
28491         * threads.h:
28492         * unicode.h: remove comma from end of enumeration declarations
28493
28494 2004-04-26 David Waite <mass@akuma.org>
28495
28496         * debug-mono-symfile.h:
28497         * decimal.c:
28498         * mono_debug.h:
28499         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28500
28501
28502 2004-04-26  Jackson Harper  <jackson@ximian.com>
28503
28504         * appdomain.c: Increment version number.
28505         
28506 2004-04-26  Jackson Harper  <jackson@ximian.com>
28507
28508         * appdomain.c: Set assembly references public token value when
28509         PublicKeyToken is specified, not the hash_value. Free public token
28510         values when free assembly name data. Previously the public key
28511         token was hex decoded, however we are using hex encoded public key
28512         tokens, so this is not neccasary.
28513         * assembly.c: Lookup assemblies in the gac if their public token
28514         value is set. Add function to allow enabling user gac
28515         lookups. Specify whether or not the assembly was loaded from the
28516         GAC. Compare full assembly names when checking the cache for
28517         assemblies (Temporarily disabled see comment in code). Remove
28518         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28519         specifies trace-loader they get extra info to stdout on the
28520         loading of assemblies.
28521         * image.h: Add a field for an assembly references public token
28522         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28523         whether an assembly has been loaded from the GAC.
28524         * image.c: Remove a corlib -> mscorlib name mapping.
28525         * loader.h: Add function to enable/disable the user gac.
28526         * mono-config.c: Check if the usergac is enabled in the config
28527         file.
28528         * icall.c: New icall to determine whether or not an assembly has
28529         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28530         * tabldefs.h: Add constant for assemblyref flag that specifies a
28531         full public key is used instead of a public token.
28532         * reflection.c: Remove mscorlib -> corlib mappings. Set
28533         PublicTokenValue instead of hash value. This value is a hex
28534         string so it does not need to be expanded.
28535
28536 2004-04-26  Martin Baulig  <martin@ximian.com>
28537
28538         * mono-debug-debugger.c (mono_debugger_initialize): Set
28539         `mono_debugger_initialized' before calling mono_debug_lock().
28540
28541 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28542
28543         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28544           InternalToUpper/InternalToLower.
28545         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28546           removed invariant culture shortcut.  This is now done in managed code.
28547         * locales.c: (string_invariant_toupper/tolower) removed.
28548
28549 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28550
28551         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28552         Added Poll internal call.
28553
28554         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28555         call for Poll. Select was too heavy for polling a single socket.
28556
28557         * threadpool.[ch]: added mono_threadpool_cleanup.
28558         * threads.c: use it. Don't use Thread_Abort on windows.
28559
28560 2004-04-23  Martin Baulig  <martin@ximian.com>
28561
28562         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28563
28564 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28565
28566         * icall.c: Registred new icalls for key pair protection and added an
28567         icall for Environment.GetFolderPath on Windows.
28568         * security.c|h: Added new icalls for key pair protection.
28569
28570 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28571
28572         * socket-io.c: don't display the non-supported family warning for known
28573         families. Now this is not displayed on windows when checking support
28574         for IPv4/IPv6.
28575
28576 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28577
28578         * class.c: don't display the layout warning for static fields.
28579
28580 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28581
28582         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28583         * locales.c, locales.h: Added new icalls for culture-specific
28584         Char.ToLower and Char.ToUpper.
28585
28586 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28587
28588         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28589         by David Waite.
28590
28591 2004-04-20  Martin Baulig  <martin@ximian.com>
28592
28593         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28594         of the type name before passing it to mono_reflection_type_from_name().
28595
28596 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28597
28598         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28599         encodings here. Fixes #56965.
28600
28601 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28602
28603         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28604         fix test on strstr result not that I can see anything that
28605         relies on the result.
28606
28607 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28608
28609         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28610         Fixes #57081.
28611
28612         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28613
28614         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28615         function to determine which marshalling to use for strings. Fixes
28616         #56965.
28617
28618         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28619
28620         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28621
28622 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28623
28624         * icall.c: #include mono-config.h
28625
28626 2004-04-15  Jackson Harper  <jackson@ximian.com>
28627
28628         * culture-info-tables.h: Fix date formats for en-US culture.
28629         
28630 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28631
28632         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28633         ThreadPool.SetMinThreads.
28634         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28635         ThreadPool.SetMinThreads.
28636
28637 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28638
28639         * mono-config.c: also load the .config file in the directory
28640         where the assembly was found.
28641
28642 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28643
28644         * assembly.c: load per-assembly config files.
28645         * icall.c: decrapified code to get the config dir and moved to
28646         mono-config.c.
28647         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28648         per-assembly config files. When doing a dll map lookup give precedence
28649         to the per-assembly data.
28650
28651 2004-04-14  Martin Baulig  <martin@ximian.com>
28652
28653         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28654         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28655         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28656
28657         * mono-debugger-debugger.c: While the debugger is locked, remember
28658         whether the symbol tables have changes and send one single
28659         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28660
28661 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28662
28663         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28664
28665         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28666         function.
28667
28668         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28669         account when marshalling string arrays. Fixes #56965.
28670
28671 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28672
28673         * icall.c: Add new icalls mapping for security.
28674         * security.c|h: Add internal calls for WindowsIdentity,
28675         WindowsImpersonationContext and WindowsPrincipal.
28676
28677 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28678
28679         * class.c: Added comment to ensure the System.MonoDummy class
28680         is removed when no longer necessary
28681
28682 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28683
28684         * appdomain.c: Pass arguments to the bootstraping exceptions to
28685         minimize JITed methods at boot
28686
28687         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28688         second string to be null.
28689
28690         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28691         Change the protocol to minimize the JIT methods at startup.  Now
28692         it Returns the internal codepage, if the value of "int_code_page"
28693         is 1 at entry, and we can not compute a suitable code page
28694         number, returns the code page as a string.
28695
28696 2004-04-13  Jackson Harper  <jackson@ximian.com>
28697
28698         * culture-info-tables.h: Fix number of decimal digits for all
28699         english locales.
28700
28701 2004-04-13  Jackson Harper  <jackson@ximian.com>
28702
28703         * icall.c: Clairfy out of sync error message. It is not always
28704         your corlib that is out of sync.
28705
28706 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28707
28708         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28709         properties when only the set accessor is overriden. Fixes #55874.
28710
28711 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28712
28713         * assembly.c (mono_assembly_load_references): Make this thread safe.
28714         Fixes #56327.
28715
28716 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28717
28718         * monosn.c: Add missing initialization calls.
28719
28720 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28721
28722         * locales.c:
28723         ves_icall_System_Globalization_CultureInfo_construct_number_format
28724         Fix g_assert so it compiles on fussier compilers re int/ptr
28725         mismatch
28726
28727 2004-04-08  Dick Porter  <dick@ximian.com>
28728
28729         * socket-io.h:
28730         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28731         53992.  Also rearrange the code so that the internal calls return
28732         an error value and exceptions are thrown from managed code.
28733
28734         * icall.c: Add type info to the socket icalls.
28735
28736 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28737
28738         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28739         owes me a beer.
28740
28741 2004-04-07  Martin Baulig  <martin@ximian.com>
28742
28743         * class.c (mono_class_from_generic_parameter): Don't default
28744         `klass->parent' to `mono_defaults.object_type'.
28745
28746 2004-04-07  Martin Baulig  <martin@ximian.com>
28747
28748         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28749         `param->pklass->reflection_info'.       
28750
28751 2004-04-07  Jackson Harper  <jackson@ximian.com>
28752
28753         * culture-info-tables.h: Fix date separator symbol.
28754         
28755 2004-04-07  Martin Baulig  <martin@ximian.com>
28756
28757         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28758         from System.Type to System.MonoType.
28759
28760 2004-04-07  Martin Baulig  <martin@ximian.com>
28761
28762         * reflection.h
28763         (MonoReflectionGenericParam): Added `has_reference_type' and
28764         `has_value_type' fields.
28765
28766         * reflection.c (mono_image_get_generic_param_info): Encode the
28767         correct flags if we have the `class' or `struct' constraint.
28768
28769 2004-04-07  Martin Baulig  <martin@ximian.com>
28770
28771         * reflection.h
28772         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28773
28774 2004-04-07  Jackson Harper  <jackson@ximian.com>
28775
28776         * appdomain.c: Revert extra patches, just wanted to bump the
28777         version number.
28778         
28779 2004-04-07  Jackson Harper  <jackson@ximian.com>
28780
28781         * Makefile.am: Add culture-info private headers.
28782         * icall.c: Add new icalls for contructing locales.
28783         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28784         * locales.h: Declare new culture info construction methods.
28785         * object.h: Add new fields used to avoid the CultureMap to
28786         MonoCultureInfo.
28787         * culture-info.h: Definition of structs used in the culture info
28788         tables.
28789         * culture-info-tables.h: Autogenerated tables that contain culture
28790         info data. This file was generated with the locale-builder tool.
28791         * appdomain.c: Incement corlib version number.
28792         
28793 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28794
28795         * appdomain.c: (mono_runtime_init) move mono_thread_init
28796         to before mono_object_new calls so critical sections
28797         are initialized before use.
28798
28799 2004-04-07  Martin Baulig  <martin@ximian.com>
28800
28801         * icall.c
28802         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28803         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28804         (ves_icall_MonoGenericParam_initialize): Removed.
28805         (monogenericparam_icalls): Removed.
28806         (generictypeparambuilder_icalls): Added new table for
28807         System.Reflection.Emit.GenericTypeParameterBuilder.
28808
28809         * reflection.c
28810         (mono_reflection_define_generic_parameter): Removed.
28811         (mono_reflection_initialize_generic_parameter): This is now called
28812         from GenericTypeParameterBuilder's .ctor.
28813
28814 2004-04-06  Martin Baulig  <martin@ximian.com>
28815
28816         * class.c (mono_class_init): Don't inflate nested classes in a
28817         generic instance.
28818         (mono_type_get_name_recurse): Include the generic arguments for
28819         generic instances and generic type declarations.
28820         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28821         (_mono_class_get_instantiation_name): Removed.
28822         (mono_class_create_generic): Always use `gklass->name' as our name.
28823
28824         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28825
28826         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28827         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28828         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28829         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28830         closed generic methods here.
28831
28832         * reflection.c
28833         (mono_reflection_generic_inst_get_nested_types): Removed.
28834         (inflate_mono_method): Copy the generic parameters from the
28835         MonoMethodHeader into out MonoGenericMethod.
28836
28837 2004-04-06  Martin Baulig  <martin@ximian.com>
28838
28839         * row-indexes.h
28840         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28841
28842         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28843
28844         * reflection.c (build_compressed_metadata): If we have any entries
28845         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28846         set the header version to 1.1.
28847
28848 2004-04-06  Martin Baulig  <martin@ximian.com>
28849
28850         * class.c (mono_class_init): If we're a generic instance,
28851         initialize our nested classes, too.
28852         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28853         suffix. 
28854
28855 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28856
28857         * process.c: quote the argument passed to the shell on windows.
28858
28859 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28860
28861         * threads.c (mono_alloc_special_static_data): Allow this to be
28862         called during startup.
28863
28864 2004-04-02  Martin Baulig  <martin@ximian.com>
28865
28866         * icall.c
28867         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28868
28869 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28870
28871         * icall.c: Fix build.
28872
28873 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28874
28875         * Makefile.am: Added security.c|h.
28876         * icall.c: Added icall for get_UserName;
28877         * security.c: New file for security related icalls. Added function
28878         get_UserName for System.Environment (fix #56144).
28879         * security.h: New. Header file for security.c
28880
28881 2004-04-02  Dick Porter  <dick@ximian.com>
28882
28883         * icall.c: Deleted the icalls that were obsoleted some time ago
28884         by the ICU string code, and which were mixed into the icall
28885         rearranging.  Fixes bug 55969.
28886
28887         * string-icalls.h: 
28888         * string-icalls.c: Deleted the code that those icalls reference.
28889
28890 2004-04-01  Martin Baulig  <martin@ximian.com>
28891
28892         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28893
28894         * class.c (mono_class_from_generic_parameter): Don't set 
28895         TYPE_ATTRIBUTE_INTERFACE.
28896         (my_mono_class_from_generic_parameter): Likewise.
28897
28898 2004-04-01  Martin Baulig  <martin@ximian.com>
28899
28900         * loader.c (find_method): Added an optional `MonoClass *ic'
28901         argument to search in a specific interface.
28902         (mono_get_method_constrained): New public function.
28903
28904 2004-04-01  Martin Baulig  <martin@ximian.com>
28905
28906         * reflection.c (mono_image_get_generic_field_token): Use the
28907         `handleref' cache here.
28908
28909 2004-04-01  Martin Baulig  <martin@ximian.com>
28910
28911         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28912
28913         * reflection.c (create_generic_typespec): Use the `typespec' hash
28914         here, not the `typeref' one.    
28915
28916 2004-04-01  Martin Baulig  <martin@ximian.com>
28917
28918         * class.c (mono_class_inflate_generic_type): Moved the
28919         functionality into a new static inflate_generic_type() which
28920         returns NULL if it didn't do anything.  Only increment the
28921         `mono_stats.inflated_type_count' if we actually inflated
28922         something.
28923         (mono_class_get_full): Check the classes type to see whether we
28924         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28925
28926 2004-04-01  Jackson Harper  <jackson@ximian.com>
28927
28928         * reflection.c: Set culture for assembly references.
28929         
28930 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28931
28932         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28933
28934 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28935
28936         * assembly.c:
28937         (do_mono_assembly_open): the critical section also covers
28938         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28939
28940 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28941
28942         * threads.c:
28943         (mono_manage_threads): abort the background threads when finishing.
28944         Fixes bug #47232.
28945
28946 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28947
28948         * gc.c: only close the done_event handle if there was no timeout.
28949         C-ified comments.
28950
28951 2004-03-30  Martin Baulig  <martin@ximian.com>
28952
28953         * icall.c (icall_entries): It's called "System.Activator", not
28954         "System.Activation".    
28955
28956 2004-03-30  Martin Baulig  <martin@ximian.com>
28957
28958         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28959         (mono_class_create_from_typespec): Likewise.
28960
28961 2004-03-30  Martin Baulig  <martin@ximian.com>
28962
28963         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28964         `has_ctor_constraint' and `initialized'.
28965
28966 2004-03-30  Martin Baulig  <martin@ximian.com>
28967
28968         * reflection.c (encode_new_constraint): New static function to add
28969         the constructor constraint attribute to a type parameter.
28970         (encode_constraints): Call encode_new_constraint() if necessary.
28971
28972         * reflection.h
28973         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28974
28975         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28976         
28977 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28978
28979         * reflection.c, icall.c: add support for pinning variables. 
28980
28981 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28982
28983         * marshal.c (mono_marshal_get_managed_wrapper):
28984         init bool local with zero rather than null.
28985
28986 2004-03-29  Martin Baulig  <martin@ximian.com>
28987
28988         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28989         the "official" behavior here.
28990         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28991
28992 2004-03-29  Martin Baulig  <martin@ximian.com>
28993
28994         * icall.c: Reflect latest API changes.
28995
28996 2004-03-29  Martin Baulig  <martin@ximian.com>
28997
28998         * loader.c (mono_get_method_from_token): Also call
28999         mono_metadata_load_generic_params () for abstract and interface
29000         methods; replace the type arguments in the method signature with
29001         the ones which are loaded from the metadata.
29002
29003 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
29004
29005         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
29006         of the lock is not the current thread. MS.NET don't do it, in spite of
29007         what the documentation says. See bug #56157.
29008
29009 2004-03-28  Martin Baulig  <martin@ximian.com>
29010
29011         * class.c (mono_class_init): Don't call init_properties() and
29012         init_events() for generic instances; set `prop->parent' when
29013         inflating properties.
29014
29015         * reflection.c (mono_generic_inst_get_object): Call
29016         `mono_class_init (ginst->klass)'.
29017         (mono_type_get_object): Only create a MonoGenericInst if your
29018         generic type is a TypeBuilder.
29019         (do_mono_reflection_bind_generic_parameters): Only set
29020         `ginst->is_dynamic' if our generic type is a TypeBuilder.
29021
29022 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
29023
29024         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
29025         Fixes #56091.
29026
29027 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29028
29029         * icall.c: added Kill_internal icall.
29030         * process.[ch]: added Kill_internal icall.
29031
29032 2004-03-25  Martin Baulig  <martin@ximian.com>
29033
29034         * class.h (MonoStats): Added `generic_instance_count',
29035         `inflated_method_count', `inflated_type_count' and
29036         `generics_metadata_size'.       
29037
29038 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29039
29040         * reflection.c: no warnings now.
29041
29042 2004-03-25  Martin Baulig  <martin@ximian.com>
29043
29044         * class.c (mono_class_get_full): New public function; does a
29045         mono_class_get(), but also takes a `MonoGenericContext *'.
29046
29047         * loader.c (mono_field_from_memberref): Renamed to
29048         `field_from_memberref', made static and added `MonoGenericContext *'
29049         argument.
29050         (mono_field_from_token): Added `MonoGenericInst *' argument.
29051         (method_from_memberef): Likewise.
29052         (mono_get_method_from_token): Likewise.
29053         (mono_get_method_full): New public function; does a
29054         mono_get_method(), but also takes a `MonoGenericContext *'.
29055
29056         * verify.c (mono_method_verify): Get the method's generic context
29057         and pass it to mono_field_from_token(), mono_get_method_full() and
29058         mono_class_get_full().
29059
29060 2004-03-25  Martin Baulig  <martin@ximian.com>
29061
29062         * class.c (mono_class_inflate_generic_type): Take a
29063         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
29064         `MonoGenericMethod *'.
29065
29066 2004-03-25  Martin Baulig  <martin@ximian.com>
29067
29068         * loader.h (MonoMethodInflated): Store the MonoGenericContext
29069         instead of the MonoGenericMethod here.
29070
29071 2004-03-25  Martin Baulig  <martin@ximian.com>
29072
29073         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
29074         each time we create a new MonoGenericInst, we also create a new
29075         context which points back to us.
29076
29077         * class.c (inflate_method): Use `ginst->context' instead of
29078         creating a new context.
29079
29080         * loader.c (method_from_memberref): Use
29081         `klass->generic_inst->context' instead of creating a new context.
29082
29083 2004-03-25  Martin Baulig  <martin@ximian.com>
29084
29085         * class.h (MonoGenericContext): New struct.
29086         (MonoGenericMethod): Removed `generic_inst'.
29087
29088         * class.c (mono_class_inflate_generic_method): Take a
29089         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
29090
29091 2004-03-25  Martin Baulig  <martin@ximian.com>
29092
29093         * loader.h (MonoMethodInflated): New typedef.
29094
29095         * metadata.h (MonoMethodSignature): Removed `gen_method', make
29096         `generic_param_count' consume just 30 bits, added `is_inflated'
29097         and `has_type_parameters' flags (one bit each).
29098
29099         * class.c (mono_class_inflate_generic_method): Create a
29100         MonoMethodInflated instead of a MonoMethodNormal and set
29101         `is_inflated' in the method signature.
29102
29103         * class.h (MonoGenericMethod): Removed `generic_method'.
29104
29105 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
29106
29107         * image.c: Make sure the name of a MonoImage is always an absolute path.
29108           This fixes bug #54415.
29109
29110 2004-03-24  Martin Baulig  <martin@ximian.com>
29111
29112         * class.c (mono_class_setup_vtable): If we're a generic instance,
29113         use our generic type's vtable size.
29114
29115 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
29116
29117         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
29118         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
29119         problems.
29120
29121 2004-03-23  Martin Baulig  <martin@ximian.com>
29122
29123         * class.h (MonoDynamicGenericInst): Added `int count_events' and
29124         `MonoEvent *events'.
29125
29126         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
29127         (typebuilder_icalls): Added "get_event_info"; calls
29128         mono_reflection_event_builder_get_event_info(). 
29129
29130         * reflection.c (mono_reflection_generic_inst_initialize): Added
29131         `MonoArray *events'.
29132         (mono_reflection_event_builder_get_event_info): New function.
29133
29134 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
29135
29136         * object.h: add mono_type_initialization_init
29137
29138         * object.c (mono_runtime_class_init): 
29139         implement class constructor synchronization rules
29140         to cope with threading issues.  
29141         add mono_type_initialization_init
29142
29143         * appdomain.c (mono_runtime_init): call 
29144         mono_type_initialization_init
29145
29146         * class.h: removing initializing field from MonoVTable
29147
29148 2004-03-23  Martin Baulig  <martin@ximian.com>
29149
29150         * class.c (my_mono_class_from_generic_parameter): Use
29151         `param->name' if it's not NULL. 
29152
29153 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
29154
29155         * class.c: do not insert non-virtual methods in the vtable.
29156         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
29157         that means the method is non-virtual. This never would have
29158         happened before.
29159
29160 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
29161
29162         * profiler.c: Added lock for accessing coverage_hash.
29163
29164 2004-03-22  Martin Baulig  <martin@ximian.com>
29165
29166         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
29167         `method->method->signature->generic_param_count != 0' to make it
29168         work for interface methods.
29169
29170 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29171
29172         * process.c: quote the string passed to the shell using g_shell_quote.
29173
29174 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29175
29176         * threads.c:
29177         (mono_threads_manage): don't remove the finalizer thread and self
29178         from the threads hash table so that mono_thread_manage can be called
29179         more than once.
29180
29181 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29182
29183         * process.c: quote the arguments when UseShellExecute is true. Fixes
29184         bug #55790.
29185
29186 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29187
29188         * threads.c: set mono_thread_detach as a cleanup routine for every
29189         thread. This way it's always executed upon thread termination, either
29190         aborted or finished normally. No more xsp hangs!
29191
29192 2004-03-17  Martin Baulig  <martin@ximian.com>
29193
29194         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
29195         `int count_nested' and a `MonoType **nested'.
29196
29197         * reflection.c (mono_reflection_bind_generic_parameters): Moved
29198         most of the functionality into a new static
29199         do_mono_reflection_bind_generic_parameters() and don't take a
29200         `MonoType *nested_in' argument any more.  Don't compute nested
29201         types here.
29202         (mono_reflection_generic_inst_get_nested_types): New public method
29203         to get nested types.
29204
29205         * class.c (mono_class_create_generic): Set `klass->nested_in' if
29206         we're a nested class.
29207
29208         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
29209         mono_reflection_generic_inst_get_nested_types() to compute the
29210         nested types.
29211
29212 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29213
29214         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
29215         descriptive error message under windows.
29216         
29217 2004-03-17  Martin Baulig  <martin@ximian.com>
29218
29219         * class.c (dup_type): Added `const MonoType *original' argument;
29220         copy the attrs from the original type.
29221
29222 2004-03-17  Martin Baulig  <martin@ximian.com>
29223
29224         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
29225         `m->generic_inst_cache' here.
29226
29227 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29228
29229         * exception.h exception.c: Add stack_overflow_exception.
29230
29231 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29232
29233         * threadpool.c:
29234         (overlapped_callback): call SetEvent *after* invoking the callback.
29235         No need to call CloseHandle.
29236
29237 2004-03-16  Martin Baulig  <martin@ximian.com>
29238
29239         * reflection.c (mono_image_get_fieldref_token): Take a
29240         `MonoReflectionField *' instead of a `MonoClassField *' and a
29241         `MonoClass *'; store the `MonoReflectionField *' in the hash.
29242
29243 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29244
29245         * appdomain.c: don't add the culture to the filename we're looking for
29246         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
29247
29248 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29249
29250         * locales.c: don't ignore symbols when doing case insensitive compares.
29251         Thanks Dick! Fixes bug #54046.
29252
29253         * threads.c: surround 'threads' usage with enter/leave in
29254         mono_thread_manage.
29255
29256 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
29257
29258         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
29259         implicitly marshalled as [Out]. Fixes #55450.
29260
29261         (mono_marshal_get_runtime_invoke): Zero out the result if there is
29262         an exception.
29263
29264 2004-03-16  Martin Baulig  <martin@ximian.com>
29265
29266         * class.c (mono_class_from_generic_parameter): Use the actual
29267         parameter name. 
29268
29269 2004-03-16  Martin Baulig  <martin@ximian.com>
29270
29271         * reflection.c (type_get_signature_size): New static function.
29272         Compues the size of the type in a method signature.
29273         (method_get_signature_size): New static function; calls
29274         type_get_signature_size() to compute the actual size of the
29275         method's signature.
29276         (method_encode_signature): Use method_get_signature_size() to get
29277         the signature's size rather than using `nparams * 10'.
29278
29279 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29280
29281         * file-io.h: define here WapiOverlapped on windows. I don't want the
29282         regular OVERLAPPED one.
29283
29284         * file-io.c:
29285         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29286         Disabling AIO on windows.
29287
29288 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29289
29290         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29291         bug #55385.
29292
29293 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29294
29295         * appdomain.c: upgraded corlib version.
29296
29297         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29298         and BeginWrite. Allow opening files for asynchrnous operations.
29299
29300         * file-io.h: new struct that maps FileStreamAsyncResult.
29301         * icall.c: added new icalls.
29302         * process.[ch]: support setting child process environment variables
29303         and use the SHELL or COMSPEC when UseShellExecute is true.
29304
29305         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29306         callback for async. IO is here and also BindHandle.
29307
29308         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29309         from here.
29310
29311 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29312
29313         * reflection.c (create_custom_attr): Allow len == 0.
29314
29315         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29316         computation on big-endian machines.
29317
29318 2004-03-13  Martin Baulig  <martin@ximian.com>
29319
29320         * class.h (MonoGenericInst): Added `int count_ifaces'.
29321
29322         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29323         `ginst->count_ifaces' instead `klass->interface_count' since we
29324         may get called before the vtable is created.
29325
29326         * loader.c (mono_method_get_param_names): If we're a generic
29327         instance, return and don't initialize the class.
29328
29329         * reflection.c (mono_reflection_setup_generic_class): Don't call
29330         ensure_runtime_vtable().
29331         (mono_reflection_bind_generic_parameters): Set
29332         `ginst->count_ifaces'.
29333
29334 2004-03-11  Jackson Harper <jackson@ximian.com>
29335
29336         * icall.c:
29337         * unicode.c:
29338         * unicode.h: Remove unused System.Char icalls.
29339         
29340 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29341
29342         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29343         code when we P/Invoke the first library in Windows.Forms, instead
29344         of when we first open the assembly.
29345
29346         * assembly.c: Drop the lookup from here.
29347
29348 2004-03-10  Martin Baulig  <martin@ximian.com>
29349
29350         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29351         class for properties, fields and events.  Finally fixes #54945.
29352
29353 2004-03-10  Martin Baulig  <martin@ximian.com>
29354
29355         * metadata.c (mono_metadata_class_equal): New static function;
29356         checks whether two generic instances or two generic parameters are
29357         equal.
29358         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29359         compare classes.        
29360
29361 2004-03-10  Martin Baulig  <martin@ximian.com>
29362
29363         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29364
29365         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29366         argument and write it into the `reflection_info' field.
29367
29368         * icall.c
29369         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29370         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29371
29372 2004-03-09  Jackson Harper  <jackson@ximian.com>
29373
29374         * char-conversions.h: use 8 bits for numeric data its all we need
29375         * icall.c: numeric data is only 8 bits now.
29376
29377 2004-03-09  Martin Baulig  <martin@ximian.com>
29378
29379         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29380
29381         * class.c (init_properties, init_events): Initialize the new
29382         `parent' field.
29383
29384         * reflection.c (typebuilder_setup_properties): Likewise.
29385         (typebuilder_setup_events): Likewise.
29386
29387         * reflection.h (MonoEventInfo): Replaced `parent with
29388         `declaring_type' and `reflected_type'.
29389
29390         * icall.c (ves_icall_get_property_info): Distinguish between
29391         declaring and reflected type.
29392         (ves_icall_get_event_info): Likewise.
29393
29394 2004-03-09  Martin Baulig  <martin@ximian.com>
29395
29396         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29397         (ves_icall_Type_GetField): Correctly set field->klass.
29398
29399 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29400
29401         * loader.h: Fix warning.
29402
29403 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29404
29405         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29406         library routine if present.  Notice that it will still continue
29407         executing even if its missing, for those working on the Gtk#
29408         edition of Windows.Forms.
29409
29410         * assembly.c (do_mono_assembly_open): If loading the
29411         System.Windows.Forms call mono_loader_wini_init.
29412
29413 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29414
29415         * class.h: Added MonoRemoteClass struct.
29416         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29417         function for MonoStrings.
29418         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29419         Added internal call for getting the proxy type.
29420         * marshal.c: Get the type of transparent proxies from its remote_class.
29421         Added methods that generate the IL for type checks and casts:
29422         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29423         mono_marshal_get_proxy_cancast.
29424         * marshal.h: Declaration of the previous new methods.
29425         * object.c: Added new moethods for creating and updating MonoRemoteClass
29426         instances: mono_remote_class, mono_upgrade_remote_class, 
29427         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29428         * verify.c: FIx transparent_proxy_fields layout.
29429         * appdomain.c: Bump corlib version.
29430
29431 2004-03-04  Jackson Harper  <jackson@ximian.com>
29432
29433         * icall.c: Add icall to access char conversion tables.
29434         * char-conversions.h: Character conversion tables.
29435         * Makefile.am: Add char-conversions.h private header file.
29436         
29437 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29438
29439         * appdomain.c (unload_thread_main): Increase unloading timeout to
29440         10 sec as a temporary workaround for Nant problems.
29441
29442 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29443
29444         * gc.c: Add checks for GC_enable and GC_disable.
29445
29446         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29447         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29448         (bug #54988).
29449         
29450 2004-02-27  Martin Baulig  <martin@ximian.com>
29451
29452         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29453         `MonoReflectionType *' instead of a `MonoType *'.
29454
29455 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29456
29457         * gc.c (run_finalize): Avoid finalizing the object representing the
29458         finalizer thread.
29459         (finalizer_thread): Fix warning.
29460
29461 2004-02-25  Martin Baulig  <martin@ximian.com>
29462
29463         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29464         argument for nested types.
29465         (mono_class_create_generic): Added support for nested generictypes.
29466
29467         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29468         `GList *nested'.
29469
29470         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29471
29472         * reflection.c (method_encode_signature): Increase the minimum
29473         value of `size' from 10 to 11.
29474         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29475         and `MonoType **types' arguments instead of the `MonoArray
29476         *types'; added `MonoType *nested_in'.  Recursively instantiate
29477         nested classes. 
29478
29479 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29480
29481         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29482         stack_overflow_ex members which are used by exception handling.
29483
29484         * appdomain.c (mono_runtime_init): Initialize the new members.
29485
29486         * gc.c (mono_gc_enable): New helper function.
29487         * gc.c (mono_gc_disable): New helper function.
29488
29489 2004-02-23  Martin Baulig  <martin@ximian.com>
29490
29491         * icall.c: I must have been really stupid - make it actually work
29492         this time ;-)
29493
29494 2004-02-23  Martin Baulig  <martin@ximian.com>
29495
29496         * loader.c (method_from_memberref): Only inflate the method if
29497         it's in another klass.
29498
29499 2004-02-23  Martin Baulig  <martin@ximian.com>
29500
29501         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29502         (mono_class_init): If we're a generic instance and an interface,
29503         compute `class->interface_id'; also create `class->interfaces'
29504         here and inflate them.
29505
29506         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29507         `ginst->is_open'.
29508         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29509
29510         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29511
29512 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29513
29514         * reflection.c (method_encode_code): Improved the error message
29515         generated by the exception.
29516
29517 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29518
29519         * icall.c: Martin did not do what he said in the ChangeLog for
29520         2004-02-18, but put back the changes for properties and events.
29521         Commenting those changes out again and adding comment to bug #54518.
29522         
29523         * process.c: removed warning.
29524
29525 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29526
29527         * marshal.c (emit_struct_conv): Print an error message instead of
29528         asserting when a type does not have the StructLayout attribute.
29529
29530 2004-02-20  Martin Baulig  <martin@ximian.com>
29531
29532         * reflection.c (mono_type_get_object): Also use the cache for
29533         generic instances.
29534         (mono_reflection_bind_generic_parameters): Always compute
29535         `ginst->ifaces'.        
29536
29537 2004-02-20  Martin Baulig  <martin@ximian.com>
29538
29539         * class.h (MonoGenericMethod): Removed `klass'.
29540
29541         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29542         *klass' argument.
29543
29544 2004-02-20  Martin Baulig  <martin@ximian.com>
29545
29546         * reflection.c (method_encode_methodspec): Actually use the
29547         uninflated signature for the memberref.
29548
29549 2004-02-20  Martin Baulig  <martin@ximian.com>
29550
29551         * class.h (MonoGenericMethod): Removed `declaring'.
29552
29553         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29554         is NULL, compute it here.
29555
29556 2004-02-20  Martin Baulig  <martin@ximian.com>
29557
29558         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29559
29560         * metadata.c (mono_metadata_generic_inst_hash): New method.
29561         (mono_metadata_generic_inst_equal): New method.
29562
29563         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29564         `klass->image->generic_inst_cache' cache to avoid creating
29565         duplicate MonoGenericInst's.
29566
29567         * class.c (mono_class_inflate_generic_type): Use the cache.
29568
29569 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29570
29571         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29572
29573 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29574
29575         * icall.c: added Socket.WSAIoctl icall.
29576
29577         * socket-io.[ch]: implemented
29578         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29579
29580 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29581
29582         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29583
29584 2004-02-18  Urs C Muff  <umuff@quark.com>
29585
29586         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29587         this work on PPC and other big-endian architectures.
29588
29589         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29590         fields with an underscore to make sure they're only accessed by
29591         the read32() macro.
29592
29593 2004-02-18  Martin Baulig  <martin@ximian.com>
29594
29595         * icall.c: Put the klass->refclass changes back for methods and
29596         fields, but not for properties and events.  We're currently not
29597         distinguishing between DeclaringType and ReflectedType for
29598         properties and events, that's what caused the regressions.
29599
29600 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29601
29602         * object.c:
29603         (mono_async_result_new): the handle can be NULL.
29604
29605         * threadpool.c: Use an event instead of a semaphore, don't initialize
29606         it until needed. This saves quite a few semaphores from being created
29607         when using the threadpool.
29608
29609 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29610
29611         * object.c (mono_string_is_interned_lookup): Fix interning of long
29612         strings. Fixes #54473.
29613
29614         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29615
29616         * icall.c: Revert the klass->refclass changes since they introduce
29617         regressions (bug #54518).
29618
29619 2004-02-18  Martin Baulig  <martin@ximian.com>
29620
29621         * class.c (mono_class_init): If we're a generic instance and don't
29622         come from a TypeBuilder, inflate our members here.
29623         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29624         (mono_class_create_generic): New public method.
29625         (mono_class_initialize_generic): Removed.
29626         (get_instantiation_name): Renamed to
29627         _mono_class_get_instantiation_name() and made it public.
29628
29629 2004-02-18  Martin Baulig  <martin@ximian.com>
29630
29631         * class.c (mono_class_inflate_generic_type): Clear the new
29632         instance's `nginst->klass' when inflating a generic instance.
29633         (mono_class_is_subclass_of): Added (basic) support for generic
29634         instances.
29635
29636 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29637
29638         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29639         MonoMempool to hold compiled native code.
29640
29641 2004-02-17  Martin Baulig  <martin@ximian.com>
29642
29643         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29644         `properties'.
29645
29646         * reflection.c (mono_reflection_generic_inst_initialize): Added
29647         `MonoArray *properties' argument.
29648
29649         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29650
29651 2004-02-17  Martin Baulig  <martin@ximian.com>
29652
29653         * icall.c (ves_icall_Type_GetFields): Renamed to
29654         ves_icall_Type_GetFields_internal() and added a
29655         `MonoReflectionType *rtype' argument; pass it to
29656         mono_field_get_object() to set the field's "reflected" type.
29657         (ves_icall_Type_GetConstructors): Likewise.
29658         (ves_icall_Type_GetEvents): Likewise.
29659         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29660         argument; pass it to mono_method_get_object() to set the method's
29661         "reflected" type.       
29662
29663 2004-02-17  Martin Baulig  <martin@ximian.com>
29664
29665         * class.h (MonoDynamicGenericInst): New type.
29666         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29667
29668         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29669         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29670         (ves_icall_MonoGenericInst_GetFields): New interncall.
29671
29672         * class.c (mono_class_from_generic): Don't call
29673         mono_class_initialize_generic() if this is a dynamic instance;
29674         ie. it's being created from a TypeBuilder.
29675         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29676         `class->byval_arg.type'.
29677
29678         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29679         to `inflate_method' and made static.
29680         (mono_reflection_inflate_field): Removed.
29681         (mono_reflection_generic_inst_initialize): New public method.
29682
29683         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29684         `ctors' and `fields'; added `initialized'.
29685
29686 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29687
29688         * debug-helpers.c (mono_method_full_name): Fix output for empty
29689         namespaces.
29690
29691 2004-02-12  Martin Baulig  <martin@ximian.com>
29692
29693         * class.h (MonoClassField): Added `MonoType *generic_type'.
29694
29695         * reflection.c (mono_image_get_fieldref_token): Added support for
29696         instantiated generic types.
29697         (field_encode_inflated_field): Removed.
29698         (mono_image_get_inflated_field_token): Removed.
29699         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29700
29701         * reflection.h (MonoReflectionInflatedField): Removed.
29702
29703 2004-02-12  Martin Baulig  <martin@ximian.com>
29704
29705         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29706         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29707
29708         * reflection.c (mono_image_get_methodspec_token): Take a
29709         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29710         (mono_image_create_token): Check whether we have a
29711         `method->signature->gen_method' and call
29712         mono_image_get_methodspec_token() if appropriate.
29713         (inflated_method_get_object): Removed.
29714         (mono_reflection_bind_generic_method_parameters): Return a
29715         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29716         (mono_reflection_inflate_method_or_ctor): Likewise.
29717
29718         * reflection.h (MonoReflectionInflatedMethod): Removed.
29719
29720 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29721
29722         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29723         for custom valuetype marshalling.
29724
29725         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29726
29727 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29728
29729         * icall.c: fixed WSAGetLastError_internal name.
29730
29731 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29732
29733         * threads.c (mono_thread_attach): Allow this to be called multiple
29734         times for a thread.
29735         
29736         * threads.c (build_wait_tids): Do not wait for ourselves.
29737
29738         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29739         appdomain list is empty.
29740
29741         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29742         memory returned by mono_string_builder_to_utf16, since it points into
29743         managed memory. Thanks to Bernie Solomon for noticing this.
29744
29745         * icall.c: Add AppDomainSetup icalls.
29746
29747         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29748
29749         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29750         types.
29751
29752         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29753         custom attributes to the method_aux struct. Also fix array indexes etc.
29754
29755         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29756         
29757 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29758
29759         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29760         (both static and runtime) and reduce startup time.
29761
29762 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29763
29764         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29765         AsAny marshalling conversion instead of crashing.
29766
29767         * marshal.c: Fix warnings.
29768
29769 2004-02-09  Martin Baulig  <martin@ximian.com>
29770
29771         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29772
29773         * reflection.h (MonoReflectionInflatedMethod): Removed the
29774         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29775
29776         * reflection.c (method_encode_methodspec): Removed the `method'
29777         argument; we get it from `gmethod->declaring'.
29778         (inflated_method_get_object): Removed the `declaring' argument.
29779
29780 2004-02-09  Martin Baulig  <martin@ximian.com>
29781
29782         * class.h (MonoGenericMethod): New type.
29783         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29784         `generic_method'.
29785
29786         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29787         a `MonoGenericMethod *gen_method' one.
29788
29789         * class.c (mono_class_inflate_generic_type): Take an additional
29790         `MonoGenericMethod * argument.  This is only non-NULL if we're
29791         inflating types for a generic method.   
29792         (mono_class_inflate_generic_signature): Renamed to
29793         inflate_generic_signature() and made static; take a
29794         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29795         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29796         instead of a `MonoGenericInst *' one.
29797         (mono_class_inflate_generic_method): Likewise.
29798
29799         * reflection.c (encode_generic_method_sig): Take a
29800         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29801         (method_encode_methodspec): Likewise.
29802         (inflated_method_get_object): Likewise. 
29803
29804         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29805         field with a `MonoGenericMethod *gmethod' one.  
29806
29807 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29808
29809         * class.h (mono_class_has_parent): add parens to expansion
29810         so you can ! this.
29811
29812 2004-02-08  Martin Baulig  <martin@ximian.com>
29813
29814         * image.h (MonoImage): Removed `generics_cache'.
29815
29816         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29817         instead of a `MonoType *' argument; removed the `inflate_methods'
29818         argument.  Don't inflate methods here.
29819
29820         * loader.c (find_method): If it's a generic instance, call
29821         mono_class_init() on the `sclass->generic_inst->generic_type'.
29822
29823         * metadata.c (mono_type_size): Make this work on uninitialized
29824         generic instances; call it on the `ginst->generic_type's class.
29825
29826         * reflection.c (mono_reflection_bind_generic_parameters): Call
29827         mono_class_from_generic() to create the `ginst->klass'.
29828
29829 2004-02-08  Martin Baulig  <martin@ximian.com>
29830
29831         * class.h (MonoClass): Changed type of `generic_inst' from
29832         `MonoType *' to `MonoGenericInst *'.
29833
29834 2004-02-08  Martin Baulig  <martin@ximian.com>
29835
29836         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29837         mono_type_get_object(), this is now creating a `MonoGenericInst'
29838         for MONO_TYPE_GENERICINST.
29839         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29840         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29841
29842         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29843         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29844         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29845         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29846         and reflected type.
29847
29848         * reflection.h (MonoReflectionInflatedMethod): Removed
29849         `declaring_type' and `reflected_type'.
29850
29851 2004-02-08  Martin Baulig  <martin@ximian.com>
29852
29853         * class.h (MonoGenericInst): Added `MonoType *parent' and
29854         `MonoType **ifaces'.
29855
29856         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29857         `parent' and `interfaces'.
29858
29859         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29860         `MonoType *' argument and return a `MonoType *'.
29861
29862         * icall.c
29863         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29864         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29865
29866 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29867
29868         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29869         valuetype marshalling.
29870
29871 2004-02-06  Martin Baulig  <martin@ximian.com>
29872
29873         * class.c
29874         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29875         (my_mono_class_from_generic_parameter): Likewise.
29876
29877 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29878
29879         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29880         contents of the symbol files lazily.
29881
29882         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29883
29884         * threads.h threads.c icall.c: New icalls for getting and setting the
29885         threads name.
29886
29887 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29888
29889         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29890         Raise an exception when the domain is not found.
29891
29892 2004-02-03  Martin Baulig  <martin@ximian.com>
29893
29894         * reflection.c (mono_image_get_methodspec_token): Use the
29895         uninflated signature; fixes gen-33.
29896
29897 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29898
29899         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29900         the finalizer code can use thread functionality.
29901
29902         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29903         the finalizer thread.
29904
29905         * threads.c: Make some functions more robust.
29906
29907         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29908
29909         * metadata.h: Add new marshalling conventions.
29910
29911         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29912         stringbuilder marshalling. Fixes #53700.
29913
29914         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29915
29916         * reflection.c (mono_image_get_type_info): Save declarative security
29917         info.
29918
29919         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29920         unmanaged fields as well.
29921
29922         * appdomain.c: Bump corlib version.
29923
29924 2004-02-01  Martin Baulig  <martin@ximian.com>
29925
29926         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29927         method type arguments.  
29928
29929 2004-01-30  Duncan Mak  <duncan@ximian.com>
29930
29931         * marshal.h: Add prototype for
29932         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29933         and
29934         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29935         fix the build.
29936
29937 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29938
29939         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29940         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29941
29942 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29943
29944         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29945         custom marshalling of valuetypes.
29946
29947         * marshal.c: Fix some warnings.
29948
29949 2004-01-29  Martin Baulig  <martin@ximian.com>
29950
29951         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29952         for generic method parameters.
29953
29954         * reflection.c (method_encode_methodspec): Write the uninflated
29955         signature into the methodspec table.
29956         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29957         is always the uninflated method.
29958         (reflection_methodbuilder_to_mono_method): Copy the generic
29959         parameters from the MethodBuilder into `header->gen_params'.
29960
29961 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29962
29963         * class.c (mono_class_from_generic_parameter): Fix warning.
29964
29965 2004-01-27  Martin Baulig  <martin@ximian.com>
29966
29967         * class.c (mono_class_from_generic_parameter): Don't create
29968         `klass->methods' here.  
29969
29970 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29971
29972         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29973         extension since it does not work with libraries named lib<FOO>.dll.so.
29974
29975 2004-01-25  Martin Baulig  <martin@ximian.com>
29976
29977         * class.c (mono_class_inflate_generic_type): Added support for
29978         MONO_TYPE_GENERICINST.
29979
29980         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29981         inflate methods on open constructed types.      
29982
29983 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29984
29985         * object.c: fire ProcessExit event in the root AppDomain after running
29986         Main. Fixes bug #53299.
29987
29988 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29989
29990         * socket-io.c: include the new socket-wrappers.h header.
29991         Use the wrappers instead of the unix socket functions to make the code
29992         more clear.
29993
29994 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29995
29996         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29997
29998         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29999         Fixes #22532.
30000
30001 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
30002
30003         * reflection.c (mono_image_create_pefile): Handle the case when the
30004         entry point is not a MethodBuilder.
30005
30006         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
30007         field to ReflectionMethod since it is not allways a builder.
30008
30009         * reflection.c (type_get_fully_qualified_name): New helper function to
30010         return the fully qualified name of a type.
30011
30012         * reflection.c (encode_marshal_blob): Always emit the fully qualified
30013         type name for custom marshallers.
30014
30015         * reflection.c (mono_marshal_spec_from_builder): Ditto.
30016
30017         * class.c (mono_class_setup_vtable): If a parent class already 
30018         implements an interface, use the implementing methods from that class.
30019         Fixes #53148.
30020
30021 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30022
30023         * threadpool.c: just return instead of ExitThread to allow for thread
30024         clean up earlier.
30025
30026 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
30027
30028         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
30029         when closing resource modules.
30030
30031         * reflection.c (mono_image_create_pefile): Handle the case when the
30032         entry point is not a MethodBuilder.
30033
30034         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
30035         field to ReflectionMethod since it is not allways a builder.
30036
30037 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
30038
30039         * marshal.c (mono_marshal_get_managed_wrapper): 
30040         mono_marshal_alloc takes native int so CONV_I
30041         the arg for 64bits.
30042
30043 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
30044
30045         * reflection.c (fixup_cattrs): New function to fixup the methoddef
30046         tokens in the cattr table. Fixes #53108.
30047
30048 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30049
30050         * loader.c: don't trim ".dll" before looking up in the config file.
30051         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
30052
30053 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
30054
30055         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
30056         Return the module which contains the resource as well.
30057         (ves_icall_System_Reflection_Module_Close): New icall.
30058
30059         * appdomain.c: Bump corlib version number.
30060
30061         * image.c (mono_image_addref): New public function.
30062
30063         * assembly.c: Call mono_image_addref.
30064
30065         * reflection.c (mono_module_get_object): Increase reference count of 
30066         the image.
30067
30068         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
30069         Fixes #22532.
30070
30071         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
30072         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
30073         proper exceptions on DllImport problems.
30074
30075 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
30076
30077         * class.c, metadata.c: eliminate CSIZE macro.
30078
30079 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
30080
30081         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
30082         * object.h: Added async_callback field in MonoAsyncResult.
30083         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
30084         * verify.c: Added async_callback in MonoAsyncResult layout.
30085
30086 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
30087
30088         * reflection.c (mono_reflection_get_custom_attrs): Add support
30089         for Modules.
30090
30091 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
30092
30093         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
30094         marshalling.
30095         (mono_marshal_method_from_wrapper): Add null pointer check.
30096
30097 2004-01-16  Martin Baulig  <martin@ximian.com>
30098
30099         * debug-mono-symfile.h: Set version number to 36 and reflect
30100         latest symbol writer changes.
30101
30102 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
30103
30104         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
30105         multi-dimensional arrays.
30106         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
30107         (mono_class_from_mono_type): Use bounded_array_class_get.
30108         
30109         * class.c (mono_bounded_array_class_get): New function which takes
30110         a 'bounded' bool argument to distinguish vectors from one dimensional
30111         arrays.
30112
30113         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
30114         bounded_array_class_get if the array has bounds.
30115
30116         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30117         Search modules loaded using AssemblyBuilder:AddModule as well.
30118
30119 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30120
30121         * appdomain.c: increased corlib version.
30122         * filewatcher.c: removed g_print.
30123         * icall.c:
30124         (get_property_info): only allocate what is actually requested.
30125         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
30126
30127 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30128
30129         * Makefile.am: added filewatcher.[ch]
30130         * filewatcher.[ch]: FileSystemWatcher runtime support.
30131         * icall.c: added new FSW icalls.
30132
30133 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
30134
30135         * string-icalls.c: fix stringbuilder regression as suggested by
30136         Iain McCoy <iain@mccoy.id.au>.
30137
30138 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
30139
30140         * process.c (process_read_stringtable_block): Recognize '007f' as
30141         a language neutral stringtable block.
30142
30143 2004-01-12  Patrik Torstensson
30144
30145         * object.h (MonoStringBuilder) : Changed layout to support our
30146         new stringbuilder class.
30147         * marshal.c: Change marshalling to support the new layout of 
30148         string builder.
30149         * appdomain.c: increased version number because new layout of
30150         string builder.
30151
30152 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
30153
30154         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
30155         assembly name as an string instead of an AssemblyName, since it is
30156         easier to extract info from it.
30157
30158         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
30159         the culture subdirectories too. Fixes #52231.
30160
30161 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30162
30163         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
30164         It takes 2 new parameters with an optional name for the method to look
30165         for and case ignoring info.
30166
30167         * threadpool.c: removed unused variable.
30168
30169 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30170
30171         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
30172         It takes 2 new parameters with an optional name for the property to look
30173         for and case ignoring info.
30174         Fixes bug #52753.
30175
30176 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
30177
30178         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
30179         Fix #52451.
30180
30181 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30182
30183         * appdomain.c:
30184         * assembly.c: escape the uri before passing it to g_filename_from_uri.
30185         Fixes bug #52630.
30186
30187 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
30188
30189         * reflection.c: Add support for more than one unmanaged resource.
30190
30191         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
30192         in field->def_value, as done in all other cases.
30193
30194         * reflection.c (mono_reflection_get_custom_attrs): Add support for
30195         TypeBuilders.
30196
30197         * reflection.c (mono_reflection_create_runtime_class): Remove 
30198         errorneous assignment to klass->element_class, since it is already
30199         done in mono_reflection_setup_internal_class.
30200
30201 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30202
30203         * gc.c: added missing LeaveCriticalSection.
30204         * icall.c: indented a couple of lines.
30205         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
30206         if we call EndInvoke inside a callback. Fixes bug #52601.
30207
30208 2004-01-07  Martin Baulig  <martin@ximian.com>
30209
30210         * mono-debug-debugger.h
30211         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
30212
30213 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
30214
30215         * appdomain.c: Use messages in NotImplementedException.
30216
30217         * exception.c (mono_get_exception_not_implemented): Now this takes
30218         a message argument.
30219
30220         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
30221         exception instead of g_asserting an aborting when something is not
30222         implemented.
30223
30224         Add some inline docs.
30225
30226 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
30227
30228         * reflection.h: Update after changes to object layout.
30229
30230         * reflection.c: Implement saving of unmanaged aka win32 resources.
30231
30232         * appdomain.c: Bump version number.
30233
30234         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
30235         Handle missing domains gracefully.
30236
30237 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
30238
30239         * file-io.c : On Windows, there are much more invalid_path_chars.
30240
30241 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
30242
30243         * class.h, object.c: prepare for GetType () speedup.
30244
30245 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
30246
30247         * profiler.c: workaround for --profile null reference exception on
30248           cygwin. Patch by Patrik Torstensson.
30249
30250 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
30251
30252         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
30253         make work for unaligned access.
30254
30255 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
30256
30257         * class.c: small cleanup (class->fields [i] -> field).
30258         * image.c: check address of metadata is valid.
30259
30260 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
30261
30262         * assembly.h assembly.c (mono_assembly_loaded): New public function to
30263         search the list of loaded assemblies.
30264
30265         * reflection.c (mono_reflection_type_from_name): Use 
30266         mono_assembly_loaded instead of mono_image_loaded.
30267
30268         * reflection.c: Fix warnings.
30269
30270 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30271
30272         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30273         is dynamic. This is needed since an assembly can contain both dynamic and
30274         non-dynamic images.
30275
30276         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30277         assembly->dynamic.
30278
30279         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30280
30281         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30282         to store modules loaded using AddModule.
30283
30284         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30285         on Modules.
30286
30287         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30288
30289         * reflection.c (mono_image_fill_export_table_from_module): New function to
30290         fill out the EXPORTEDTYPES table from a module.
30291
30292         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30293         into a separate function. Also handle loaded non-dynamic modules.
30294
30295         * reflection.c (mono_image_basic_init): Fix memory allocation.
30296
30297         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30298
30299         * assembly.c (mono_assembly_load_references): Make this public.
30300
30301 2003-12-19  Martin Baulig  <martin@ximian.com>
30302
30303         * class.c (mono_class_initialize_generic): Made this static, take
30304         a `MonoGenericInst *' instead of a `MonoClass *'.
30305         (mono_class_from_generic): Call mono_class_initialize_generic()
30306         unless we're already initialized or being called from
30307         do_mono_metadata_parse_generic_inst().
30308
30309         * class.h (MonoGenericInst): Added `initialized' and
30310         `init_pending' flags.
30311
30312         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30313         `mono_class_init (gklass)' or mono_class_initialize_generic()
30314         here; set `generic_inst->init_pending' while parsing the
30315         `type_argv'.
30316
30317 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30318
30319         * locales.c: include string.h for memxxx prototypes
30320
30321 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30322
30323         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30324         constructor when accessing literal fields.
30325
30326 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30327
30328         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30329
30330         * reflection.c (assembly_add_resource_manifest): New function to fill
30331         the MANIFESTRESOURCE table.
30332
30333         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30334
30335         * reflection.h: Update to changes in class layout.
30336
30337         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30338         Reenable call to mono_runtime_is_shutting_down ().
30339
30340         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30341         determine if the runtime is shutting down.
30342
30343 2003-12-16  Jackson Harper <jackson@ximian.com>
30344
30345         * icall.c: comment out call to mono_runtime_is_shutting_down to
30346         fix build.
30347         
30348 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30349
30350         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30351         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30352
30353 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30354
30355         * reflection.c: move definition of swap_with_size
30356         to before its first call
30357
30358 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30359
30360         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30361
30362         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30363         icall.
30364
30365         * object.c: Fix warnings.
30366
30367         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30368         members if FlattenHierarchy is set.
30369
30370         * reflection.c (mono_image_add_decl_security): New function to emit
30371         declarative security.
30372
30373         * reflection.h reflection.c: Add support for declarative security.
30374
30375         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30376         
30377 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30378
30379         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30380         
30381         * appdomain.c verify.c: Moved corlib version checking into its own
30382         function in appdomain.c since it needs to create vtables etc.
30383
30384 2003-12-13  Patrik Torstensson <p@rxc.se>
30385
30386         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30387         instead of unwrapped server.
30388
30389 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30390
30391         * verify.c (check_corlib): Fix field index.
30392
30393 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30394
30395         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30396         GetGacPath icall.
30397
30398 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30399
30400         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30401         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30402         cope with sizeof(size_t) != sizeof(guint32).
30403
30404 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30405
30406         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30407         in case of failure.
30408
30409 2003-12-10  Mark Crichton <crichton@gimp.org>
30410
30411         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30412         in managed code.
30413
30414         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30415
30416 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30417
30418         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30419         marked as deleted.
30420
30421 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30422
30423         * verify.c (check_corlib): Handle the case when the version field is 
30424         initialized by a static constructor.
30425
30426 2003-12-08  Patrik Torstensson  <p@rxc.se>
30427
30428     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30429
30430 2003-12-08  Martin Baulig  <martin@ximian.com>
30431
30432         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30433         a MonoReflectionGenericParameter, also take the parameter index
30434         and name as arguments.
30435         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30436         (ves_icall_MonoGenericParam_initialize): New interncall.
30437         (ves_icall_Type_make_byref_type): New interncall.
30438
30439         * reflection.h (MonoReflectionGenericParam): Derive from
30440         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30441         `index' fields.
30442
30443         * reflection.c (mono_reflection_define_generic_parameter): Create
30444         and return a new MonoReflectionGenericParam; don't initialize the
30445         constraints here.
30446         (mono_reflection_initialize_generic_parameter): New public method;
30447         initializes the constraints and creates the `param->pklass'.
30448
30449 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30450
30451         * reflection.h reflection.c: Use the new fields 'num_types', 
30452         'num_fields' and 'num_methods' to track the number of types etc.
30453
30454         * verify.c (check_corlib): Check corlib version number.
30455
30456 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30457
30458         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30459         function works on all methods.
30460
30461 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30462
30463         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30464         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30465         the custom_type_info flag of the transparent proxy.
30466         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30467         objects that supports IRemotingTypeInfo.
30468         * object.h: Added custom_type_info field in transparent proxy.
30469
30470 2003-12-06  Martin Baulig  <martin@ximian.com>
30471
30472         * class.c (mono_class_create_from_generic): Removed.
30473         (mono_class_from_generic): Check `ginst->klass' before doing
30474         anything else.  This is important to fully support "recursive"
30475         generic types.
30476
30477         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30478         empty `generic_inst->klass' before doing anything else.
30479
30480 2003-12-06  Dick Porter  <dick@ximian.com>
30481
30482         * verify.c: 
30483         * object.h:
30484         * icall.c:
30485         * locales.c: Use C structs to access class fields.  Don't do a
30486         conversion between MonoString and UChar because both are
30487         platform-endian UTF-16.  Compare now takes startindex and count
30488         parameters.  Add a char overload for IndexOf.  Speed up the
30489         invariant string IndexOf.
30490
30491 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30492
30493         * Makefile.am (monosn_LDADD): Fix parallel build.
30494
30495 2003-12-04  Martin Baulig  <martin@ximian.com>
30496
30497         * icall.c
30498         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30499         (ves_icall_Type_make_array_type): New interncall.       
30500
30501 2003-12-04  Martin Baulig  <martin@ximian.com>
30502
30503         * locales.c: also change it in the !HAVE_ICU case.
30504
30505 2003-12-04  Dick Porter  <dick@ximian.com>
30506
30507         * icall.c:
30508         * locales.c: construct_compareinfo is now in CompareInfo, not
30509         CultureInfo.
30510
30511 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30512
30513         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30514         image->files array.
30515
30516         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30517         table as well.
30518
30519         * assembly.c (mono_assembly_load_references): Only load references
30520         once.
30521
30522         * class.c (mono_class_from_name): Avoid linear search of the 
30523         EXPORTEDTYPE table.
30524
30525         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30526
30527 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30528
30529         * image.h (MonoImage): Add 'field_cache' field.
30530
30531         * loader.c (mono_field_from_token): Cache field lookups.
30532         
30533         * reflection.c (mono_module_get_object): Fix name property.
30534
30535         * icall.c (ves_icall_get_enum_info): Update after changes to 
30536         mono_metadata_get_constant_index ().
30537
30538         * icall.c: Get rid of get_type_info icall, use a separate icall for
30539         each type property to avoid needless memory allocations. Fixes #51514.
30540
30541         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30542         to avoid needless binary searches.
30543
30544         * class.c (class_compute_field_layout): Move the initialization of
30545         field->def_value to mono_class_vtable ().
30546
30547         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30548         non-corlib types.
30549
30550         * object.c (mono_object_allocate): Make it inline.
30551
30552         * object.c (mono_object_allocate_spec): Make it inline.
30553         
30554 2003-12-02  Dick Porter  <dick@ximian.com>
30555
30556         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30557         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30558
30559 2003-12-01  Dick Porter  <dick@ximian.com>
30560
30561         * threads.c: Fix signature and call in CreateMutex and
30562         CreateEvent.
30563
30564 2003-12-01  Dick Porter  <dick@ximian.com>
30565
30566         * icall.c: 
30567         * locales.c: Implement string compares and searching
30568
30569         * object.h: Add extra Thread field
30570
30571 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30572
30573         * reflection.c (fixup_method): Add support for MonoCMethod.
30574
30575 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30576
30577         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30578
30579         * reflection.c (assembly_name_to_aname): Allow extra characters in
30580         assembly names. Fixes #51468.
30581
30582 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30583
30584         * exception.c (mono_exception_from_name_domain): New helper function.
30585
30586         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30587         exception object in the correct domain.
30588
30589         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30590         formatting + make a copy a the input data.
30591
30592         * loader.c (mono_get_method_from_token): Methods which contain
30593         native code do not have entries in the ImplMap.
30594
30595         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30596         Thanks to Gonzalo for spotting this.
30597         
30598         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30599         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30600
30601         * assembly.h (mono_assembly_load_from): Split the second part of 
30602         assembly loading into a new public function.
30603
30604         * exception.h (mono_get_exception_bad_image_format): New function.
30605
30606 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30607
30608         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30609         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30610         
30611         * icall.c: Add new icall for creating dynamic methods.
30612
30613         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30614
30615         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30616
30617         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30618         create a dynamic method.
30619
30620         * reflection.c (resolve_object): New helper function.
30621
30622         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30623         which manipulate it so they can also work on dynamic methods.
30624
30625         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30626         creating the MonoReflectionMethodAux structure if it is not needed.
30627         
30628         * reflection.h verify.c: Update after changes to object layout.
30629
30630         * reflection.c (method_builder_encode_signature): Fix compilation on
30631         gcc 2.95.x.
30632
30633 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30634
30635         * appdomain.h: Added support for context static fields. Added static_data
30636           field to MonoAppContext and renamed thread_static_fields to a more
30637           generic special_static_fields in MonoAppDomain, since it can now contain
30638           context static fields.
30639         * domain.c: Updated hashtable name.
30640         * object.c: Replaced field_is_thread_static() for a more generic
30641           field_is_special_static() which also checks for context static attribute.
30642           In mono_class_vtable(), added support for static context fields.
30643         * threads.c: Changed methods that manage thread static fields to more
30644           generic methods so they can be reused both for thread and context static
30645           data.
30646         * threads.h: Declared some new methods.
30647
30648 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30649
30650         * reflection.h: Update after changes to the managed types.
30651
30652         * reflection.c (encode_custom_modifiers): New helper function.
30653
30654         * reflection.c (method_encode_signature): Emit custom modifiers.
30655
30656         * reflection.c (field_encode_signature): Emit custom modifiers.
30657
30658 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30659
30660         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30661
30662         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30663         implementation.
30664
30665         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30666         icall.
30667
30668         * object.c (mono_field_get_value_object): New function.
30669
30670         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30671         specific.
30672
30673 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30674
30675         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30676         return a preallocated out-of-memory exception instance.
30677
30678         * object.c (out_of_memory): Use the new function.
30679
30680         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30681         flag is before the custom modifiers. Fixes #49802.
30682
30683 2003-11-16  Martin Baulig  <martin@ximian.com>
30684
30685         * class.c (mono_class_is_open_constructed_type): Implemented the
30686         MONO_TYPE_GENERICINST case.
30687
30688 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30689
30690         * assembly.c (mono_assembly_fill_assembly_name): New function to
30691         fill out the MonoAssemblyName structure.
30692         (mono_assembly_open): Use the new function.
30693
30694         * icall.c (fill_reflection_assembly_name): New helper function.
30695
30696         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30697         new function.
30698
30699         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30700
30701 2003-11-15  Martin Baulig  <martin@ximian.com>
30702
30703         * class.c (mono_class_is_open_constructed_type): New public
30704         function; checks whether a type is an open constructed type,
30705         ie. whether it still contains type parameters.
30706         (mono_class_inflate_generic_type): If we're a type parameter and
30707         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30708         type.
30709
30710         * class.h (MonoGenericInst): Added `guint32 is_open'.
30711
30712         * loader.c (method_from_methodspec): Check whether we're an open
30713         or closed constructed type and set `ginst->is_open'.
30714
30715         * reflection.c (mono_reflection_bind_generic_parameters): Check
30716         whether we're an open or closed constructed type and set
30717         `ginst->is_open'.
30718         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30719         from open constructed types.
30720
30721 2003-11-15  Martin Baulig  <martin@ximian.com>
30722
30723         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30724         a generic instance (instead of a generic type declaration) with
30725         unbound generic parameters, bind them to our actual types.
30726
30727 2003-11-14  Martin Baulig  <martin@ximian.com>
30728
30729         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30730
30731         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30732         an interface type, populate `res->interfaces' with instantiated
30733         versions of all the interfaces we inherit.
30734
30735 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30736
30737         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30738         when MONO_PATH is set but doesn't contain the install dir.
30739
30740 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30741
30742         * icall.c:
30743         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30744         it's also implemented in base classes. Fixes bug #50927.
30745
30746 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30747
30748         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30749         if this method is called from a finalizer. Fixes #50913.
30750
30751 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30752
30753         * threads.c: Implement VolatileRead/VolatileWrite
30754
30755         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30756
30757 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30758
30759         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30760         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30761         2.95.3.
30762
30763         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30764         from Peter Ross (pro@missioncriticalit.com).
30765         
30766 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30767
30768         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30769
30770 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30771
30772         * assembly.c (mono_assembly_load_references): Disable check because it
30773         triggers on older corlibs which lots of people have.
30774
30775 2003-11-12  Jackson Harper  <jackson@ximian.com>
30776
30777         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30778         load corlib.dll if mscorlib.dll is not found.
30779         * assembly.h: Remove corlib name define.
30780         * class.c:
30781         * domain.c:
30782         * image.c: Change corlib name to mscorlib.
30783         
30784 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30785
30786         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30787
30788 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30789
30790         * appdomain.h: Added loader_optimization here to sync with the C#
30791         code, and add disallow_binding_redirects field.
30792
30793 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30794
30795         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30796
30797         * reflection.c (mono_image_build_metadata): Fix crash on modules
30798         with no types.
30799
30800         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30801
30802         * icall.c (ves_icall_get_method_info): Return callingConvention as
30803         well.
30804
30805         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30806         namespaces from the EXPORTEDTYPE table as well.
30807
30808         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30809         from all modules inside the assembly.
30810         
30811 2003-11-11  Martin Baulig  <martin@ximian.com>
30812
30813         * reflection.c (mono_reflection_bind_generic_parameters): Make
30814         this work for interfaces.
30815
30816 2003-11-11  Martin Baulig  <martin@ximian.com>
30817
30818         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30819
30820 2003-11-11  Martin Baulig  <martin@ximian.com>
30821
30822         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30823         "MonoInflatedMethod" and "MonoInflatedCtor".
30824
30825 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30826
30827         * reflection.c (resolution_scope_from_image): Use the assembly table
30828         from the manifest module, since other modules don't have it.
30829
30830         * debug-helpers.c (mono_type_full_name): New helper function.
30831
30832         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30833
30834         * image.c (mono_image_load_file_for_image): New public function which
30835         is a replacement for the load_file_for_image in class.c.
30836
30837         * assembly.c (mono_assembly_load_module): A wrapper for the function
30838         above which does assembly association and reference loading too.
30839
30840         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30841
30842 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30843
30844         * appdomain.c: not all of the attributes for the full assembly name
30845         are required and the order doesn't matter. Fixes bug #50787.
30846
30847 2003-11-10  Dick Porter  <dick@ximian.com>
30848
30849         * locales.c: Use platform-endian UTF16
30850
30851 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30852
30853         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30854         
30855 2003-11-10  Martin Baulig  <martin@ximian.com>
30856
30857         * metadata.c
30858         (mono_metadata_load_generic_params): Make this actually work.
30859
30860         * reflection.c (mono_reflection_bind_generic_parameters): If our
30861         parent is a generic instance, pass all the `types' to it, no
30862         matter whether it has the same number of type parameters or not.
30863
30864 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30865
30866         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30867
30868         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30869         assignment code to this function so it gets called recursively for all
30870         modules.
30871
30872         * image.c (load_modules): Remove the assembly assignment since it is
30873         now done by mono_assembly_load_references.
30874         
30875         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30876         Add 'module' argument.
30877         (mono_module_get_types): New helper function.
30878         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30879
30880 2003-11-08  Martin Baulig  <martin@ximian.com>
30881
30882         * class.c (mono_class_inflate_generic_method): Interface method
30883         don't have a header.
30884
30885         * reflection.c (mono_image_get_methodspec_token): Take an
30886         additional `MonoGenericInst *' argument instead of reading it from
30887         the header; this is necessary to support interfaces.
30888         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30889         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30890         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30891         argument.
30892
30893         * reflection.h (MonoReflectionInflatedMethod): Added
30894         `MonoGenericInst *ginst'.
30895
30896 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30897
30898         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30899
30900 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30901
30902         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30903
30904 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30905
30906         * reflection.c 
30907         (reflection_methodbuilder_from_method_builder):
30908         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30909         initialize a ReflectionMethodBuilder structure.
30910         (mono_image_get_methodbuilder_token):
30911         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30912         tokens which point to types in another module inside the same assembly.
30913
30914         * reflection.c: Use the new helper functions.
30915         
30916         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30917
30918         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30919         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30920
30921         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30922         neccesary.
30923
30924         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30925         current module. Emit the manifest only for the main module.
30926
30927         * reflection.c (mono_image_create_token): Add assertion when a 
30928         memberref needs to be created.
30929
30930         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30931
30932         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30933         larger buffer for the custom attribute blob. Fixes #50637.
30934         
30935 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30936
30937         * threadpool.c: notify listener on async processing handles after
30938         invoking the async callback. Thanks to Zoltan.
30939
30940 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30941
30942         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30943         avoid code duplication.
30944
30945         * reflection.h (MonoDynamicImage): New type which is currently unused,
30946         but will be used through the ref.emit code in place of 
30947         MonoDynamicAssembly.
30948
30949         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30950         object layout.
30951
30952         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30953         a MonoDynamicImage instead of just a MonoImage.
30954         
30955         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30956         icalls to ModuleBuilder but keep their semantics, so they will work
30957         with moduleb->assemblyb. This will change later.
30958         
30959 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30960
30961         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30962         object layout.
30963
30964         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30965         main module, since it is now done by the managed code.
30966
30967 2003-11-03  Martin Baulig  <martin@ximian.com>
30968
30969         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30970         `ginst->klass' here.
30971         (method_encode_methodspec): Don't use the `ginst->generic_method's
30972         klass if it's a generic instance, use `ginst->klass' in this case.
30973
30974 2003-11-03  Martin Baulig  <martin@ximian.com>
30975
30976         * reflection.c (mono_image_get_generic_method_param_info):
30977         Removed, use mono_image_get_generic_param_info() instead.
30978         (mono_image_get_type_info): Write the GenericParam table before
30979         the Method table.  This is neccessary because in the GenericParam
30980         table, type parameters of the class (ie. '!0' etc.) must come
30981         before the ones from its generic methods (ie. '!!0' etc).
30982
30983 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30984
30985         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30986
30987 2003-11-02  Martin Baulig  <martin@ximian.com>
30988
30989         * reflection.c (create_generic_typespec): Take a
30990         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30991         the generic parameters from it.
30992
30993 2003-11-02  Martin Baulig  <martin@ximian.com>
30994
30995         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30996         instead of a `MonoClassField *' since we just need the type.
30997         (create_generic_typespec): New static function.  Creates a
30998         TypeSpec token for a generic type declaration.
30999         (mono_image_get_generic_field_token): New static function.
31000         (mono_image_create_token): If we're a FieldBuilder in a generic
31001         type declaration, call mono_image_get_generic_field_token() to get
31002         the token.
31003
31004 2003-11-02  Martin Baulig  <martin@ximian.com>
31005
31006         * reflection.h
31007         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
31008         `MonoReflectionGenericInst *declaring_type' and
31009         `MonoReflectionGenericInst *reflected_type' fields.
31010
31011         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
31012         `MonoReflectionGenericInst *declaring_type' and a
31013         `MonoReflectionGenericInst *reflected_type' argument instead of a
31014         single `MonoReflectionGenericInst *type' one.  Set
31015         `res->declaring_type' and `res->reflected_type' from them.
31016         (mono_reflection_inflate_field): Likewise.      
31017
31018 2003-11-02  Martin Baulig  <martin@ximian.com>
31019
31020         * class.c (mono_class_setup_vtable): Don't store generic methods
31021         in the vtable.  
31022
31023 2003-11-02  Martin Baulig  <martin@ximian.com>
31024
31025         * reflection.h (MonoReflectionGenericInst): Added
31026         `MonoReflectionType *declaring_type'.
31027
31028         * reflection.c (mono_reflection_bind_generic_parameters): Use
31029         `if (tb->parent)' instead of `klass->parent'.
31030
31031 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
31032
31033         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
31034         with an empty ASSEMBLY table.
31035
31036         * reflection.c (mono_image_build_metadata): Avoid using the same loop
31037         variable in the inner and outer loops.
31038
31039 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
31040
31041         * metadata.h (mono_metadata_make_token): Put parentheses around macro
31042         argument.
31043
31044         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
31045         
31046         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
31047         icalls. Instead, do everything in managed code. This is needed since
31048         it is hard to restore the original domain etc. in unmanaged code in the
31049         presence of undeniable exceptions.
31050
31051         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
31052         New icalls to push and pop appdomain refs.
31053
31054 2003-10-31  Martin Baulig  <martin@ximian.com>
31055
31056         * class.c (inflate_generic_type): Renamed to
31057         mono_class_inflate_generic_type() and made it public.
31058
31059         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
31060         New interncall.
31061
31062         * loader.c (mono_field_from_memberref): Also set the retklass for
31063         typespecs.
31064
31065         * fielder.c (mono_image_get_inflated_field_token): New static
31066         method; creates a metadata token for an inflated field.
31067         (mono_image_create_token, fixup_method): Added support for
31068         "MonoInflatedField".
31069         (fieldbuilder_to_mono_class_field): New static function.
31070         (mono_reflection_inflate_field): New public function.
31071
31072         * reflection.h
31073         (MonoReflectionGenericInst): Added `MonoArray *fields'.
31074         (MonoReflectionInflatedField): New typedef.     
31075
31076 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
31077
31078         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
31079         for Solaris and other platforms without s6_addr16
31080
31081 2003-10-30  Martin Baulig  <martin@ximian.com>
31082
31083         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
31084         argument instead of two.
31085         (mono_class_inflate_generic_signature): Likewise.
31086         (inflate_generic_header): Likewise.
31087         (mono_class_inflate_generic_method): Likewise.  In addition, if
31088         `ginst->klass' is set, it becomes the new `method->klass'.
31089
31090         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
31091         field.
31092
31093         * reflection.c (encode_generic_method_sig): Write a 0xa as the
31094         first byte. [FIXME]
31095         (method_encode_methodspec): If we have generic parameters, create
31096         a MethodSpec instead of a MethodRef.
31097         (fixup_method): Added support for "MonoInflatedMethod" and
31098         "MonoInflatedCtor".
31099         (mono_image_create_token): Added support for "MonoInflatedMethod"
31100         and "MonoInflatedCtor".
31101         (inflated_method_get_object): New static function; returns a
31102         managed "System.Reflection.MonoInflatedMethod" object.
31103         (mono_reflection_bind_generic_method_parameters): Return a
31104         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
31105         (mono_reflection_inflate_method_or_ctor): Likewise.
31106         (mono_image_get_generic_method_param_info): Initialize unused
31107         fields to zero.
31108         (mono_image_get_generic_param_info): Likewise.
31109
31110         * reflection.h (MonoReflectionInflatedMethod): New public
31111         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
31112         "S.R.MonoInflatedCtor" classes.
31113
31114         * loader.c (method_from_memberref): If we're a TypeSpec and it
31115         resolves to a generic instance, inflate the method.
31116
31117 2003-10-28  Dick Porter  <dick@ximian.com>
31118
31119         * object.c (mono_runtime_run_main): Convert command-line arguments
31120         into utf8, falling back to the user's locale encoding to do so.
31121
31122 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
31123
31124         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
31125         at this time.
31126
31127         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
31128
31129         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
31130         up icalls at method definition time. Partially fixes #33569.
31131
31132 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
31133
31134         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
31135         marshalling of arrays. Fixes #50116.
31136
31137         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
31138
31139         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
31140         points to a vtable in the dying appdomain.
31141
31142         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
31143         listeners into unmanaged code inside the lock.
31144
31145         * object.c (mono_class_vtable): Turn off typed allocation in non-root
31146         domains and add some comments.
31147
31148 2003-10-25  Martin Baulig  <martin@ximian.com>
31149
31150         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
31151
31152         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
31153
31154         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
31155         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
31156         currently parsing.  Create the generic class and store it in
31157         `generic_inst->klass' before parsing the type arguments.  This is
31158         required to support "recursive" definitions; see mcs/tests/gen-23.cs
31159         for an example.
31160         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
31161         to support recursive typespec entries.
31162
31163         * class.c (mono_class_setup_parent): If our parent is a generic
31164         instance, we may get called before it has its name set.
31165         (mono_class_from_generic): Splitted into
31166         mono_class_create_from_generic() and mono_class_initialize_generic().
31167
31168 2003-10-25  Martin Baulig  <martin@ximian.com>
31169
31170         * icall.c (ves_icall_Type_BindGenericParameters): Return a
31171         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
31172         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
31173         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
31174
31175         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
31176         (create_typespec): Likewise.
31177         (mono_reflection_bind_generic_parameters): Return a
31178         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
31179         (mono_reflection_inflate_method_or_ctor): New public function.
31180
31181         * reflection.h (MonoReflectionGenericInst): New typedef.        
31182
31183 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
31184
31185         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
31186         inside the domain lock. Fixes #49993.
31187         
31188         * object.c (mono_class_vtable): When typed allocation is used, 
31189         allocate vtables in the GC heap instead of in the mempool, since the
31190         vtables contain GC descriptors which are used by the collector even
31191         after the domain owning the mempool is unloaded.
31192
31193         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
31194
31195         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
31196         reflect what it does. Also invalidate mempools instead of freeing
31197         them if a define is set.
31198
31199         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
31200         of the appdomain.
31201         
31202         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
31203         hold the finalizable objects in this domain.
31204
31205         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
31206         appdomain.
31207
31208         * appdomain.c (mono_domain_set): New function to set the current
31209         appdomain, but only if it is not being unloaded.
31210
31211         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
31212         appdomain which is being unloaded.
31213         
31214         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
31215         unloading of the root appdomain.
31216
31217         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
31218         icall to execute a method in another appdomain. Intended as a 
31219         replacement for InternalSetDomain, which can confuse the code 
31220         generation in the JIT.
31221
31222         * appdomain.c (mono_domain_is_unloading): New function to determine
31223         whenever an appdomain is unloading.
31224
31225         * appdomain.c (mono_domain_unload): New function to correctly unload
31226         an appdomain.
31227
31228         * assembly.c (mono_assembly_load_references): Check that an assembly
31229         does not references itself.
31230
31231         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
31232         domain manually, it asks the finalizer thread to do it, then waits for
31233         the result. Also added a timeout.
31234
31235         * icall.c: Register the new icalls.
31236
31237         * threads.h threads.c: Export the mono_gc_stop_world and 
31238         mono_gc_start_world functions.
31239         
31240         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
31241         function to fill out the mempool with 0x2a.
31242
31243 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
31244
31245         * reflection.h (MonoReflectionMethodAux): New structure to store
31246         information which is rarely used, thus is not in the MonoMethod
31247         structure.
31248
31249         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
31250         store the aux info.
31251
31252         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
31253         and marshalling info into the aux structure.
31254
31255         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
31256         from the aux structure.
31257
31258         * loader.c (mono_method_get_param_names): Retrieve the param names from
31259         the aux structure.
31260         
31261 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
31262
31263         * exception.h exception.c: Add AppDomainUnloadedException && fix 
31264         warning.
31265
31266 2003-10-21  Dick Porter  <dick@ximian.com>
31267
31268         * socket-io.c
31269         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
31270         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31271
31272 2003-10-21  Martin Baulig  <martin@ximian.com>
31273
31274         * reflection.c (mono_reflection_bind_generic_parameters):
31275         `klass->parent' is NULL for interfaces.
31276
31277 2003-10-21  Martin Baulig  <martin@ximian.com>
31278
31279         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31280
31281 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31282
31283         * exception.c (mono_exception_from_name_msg): New helper function for
31284         creating exceptions and initializing their message field.
31285
31286         * exception.c: Simplify functions using the new helper.
31287
31288         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31289         New function.
31290
31291         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31292         mono_raise_exception, since otherwise gcc doesn't generate the function
31293         epilog for raise_exception, confusing the stack unwinding in the JIT.
31294         Fixes #45043.
31295
31296         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31297         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31298         Fixes #49499.
31299
31300 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31301
31302         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31303         utf8.
31304
31305 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31306
31307         * icall.c: Removed GetUninitializedObject method because
31308           AllocateUninitializedClassInstance does the same.
31309
31310 2003-10-18  Martin Baulig  <martin@ximian.com>
31311
31312         * class.c (inflate_generic_signature): Renamed to
31313         mono_class_inflate_generic_signature() and made it public.
31314         (my_mono_class_from_generic_parameter): New static function; if we
31315         don't already have the generic parameter's MonoClass, create a
31316         very simple one which is just used internally in the runtime and
31317         not passed back to managed code.
31318
31319         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31320
31321         * metadata.h (MonoMethodSignature): Moved the
31322         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31323         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31324
31325         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31326         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31327         interncall on the MonoMethod class, not on MethodInfo.
31328         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31329         calling mono_reflection_bind_generic_method_parameters() directly.
31330
31331         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31332         return the already computed `method->signature'.
31333         (method_from_methodspec): New static function to load a method
31334         from a MethodSpec entry.
31335         (mono_get_method_from_token): Call the new method_from_methodspec()
31336         for MethodSpec tokens.  
31337         (mono_get_method_from_token): If we're a generic method, load the
31338         type parameters.
31339
31340         * reflection.c (mono_image_get_memberref_token): Allow
31341         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31342         table.
31343         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31344         (mono_image_create_token): First check whether it's a generic
31345         method (so we'd need to create a MethodSpec), then do the other
31346         two alternatives.
31347         (mono_reflection_bind_generic_method_parameters): Return a
31348         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31349         called directly from the interncall.
31350
31351 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31352
31353         * reflection.c (load_public_key): Move loading of the public key
31354         into managed code.
31355
31356         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31357
31358         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31359         fields.
31360
31361         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31362         culture, hash_alg and public_key. Fixes #49555.
31363
31364 2003-10-17  Martin Baulig  <martin@ximian.com>
31365
31366         * class.h (MonoGenericInst): Moved this declaration here and added
31367         `MonoMethod *generic_method'.
31368
31369         * icall.c
31370         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31371         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31372
31373         * metadata.c (mono_metadata_type_equal): Two types of
31374         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31375         index; ie. don't compare the address of the `MonoGenericParam'
31376         structure.
31377         (mono_metadata_load_generic_params): Removed the `MonoMethod
31378         *method' argument.
31379
31380         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31381         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31382
31383         * reflection.c (method_encode_signature): Encode the number of
31384         generic parameters.
31385         (encode_generic_method_sig): New static function.
31386         (method_encode_methodspec): New static function; creates an entry
31387         in the MethodSpec table for a generic method.
31388         (mono_image_get_methodspec_token): New static function.
31389         (mono_image_create_token): Call mono_image_get_methodspec_token()
31390         for generic methods.
31391         (mono_reflection_bind_generic_method_parameters): New public
31392         function.  Instantiates a generic method.
31393
31394 2003-10-16  Martin Baulig  <martin@ximian.com>
31395
31396         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31397         *gen_params' here from MonoMethodHeader.
31398
31399         * metadata.c (mono_metadata_parse_method_signature): If we have
31400         generic parameters, initialize `method->gen_params' and then set
31401         the correct `type->data.generic_param' in all the parameters.
31402
31403 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31404
31405         * threads.c (mono_threads_get_default_stacksize): New function to 
31406         return the default stacksize.
31407
31408         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31409         termination of the finalizer thread, since the previous method had
31410         race conditions. Fixes #49628.
31411
31412         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31413         as for the other managed threads.
31414
31415 2003-10-16  Martin Baulig  <martin@ximian.com>
31416
31417         * class.c (inflate_generic_signature): Copy `generic_param_count'
31418         and `gen_params'.
31419
31420         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31421         New interncall.
31422
31423         * metadata.c (mono_metadata_parse_method_signature): Actually set
31424         the `method->generic_param_count' here.
31425         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31426
31427 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31428
31429         * object.h: Add a new field to TypedRef to simplify the implementation
31430         of the REFANY opcodes in the JIT.
31431
31432         * icall.c: Make use of the new field.
31433
31434         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31435         dynamically.
31436
31437 2003-10-15  Martin Baulig  <martin@ximian.com>
31438
31439         * class.c (mono_class_from_gen_param): Renamed to
31440         mono_class_from_generic_parameter() and moved most of the
31441         functionality from mono_reflection_define_generic_parameter()
31442         here; ie. we create a "real" class here.
31443         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31444         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31445         previously been called.
31446
31447         * class.h (MonoGenericParam): Moved the declaration of this struct
31448         here from metadata.h and added `MonoMethod *method'.
31449
31450         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31451         interncall.
31452
31453         * loader.c (mono_get_method_from_token): If we have any generic
31454         parameters, call mono_metadata_load_generic_params() to read them
31455         from the MONO_TABLE_GENERICPAR.
31456
31457         * metadata.c (mono_metadata_load_generic_params): Added
31458         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31459
31460         * metadata.h (MonoMethodSignature): Replaced
31461         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31462         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31463
31464         * reflection.c (mono_reflection_define_generic_parameter): Moved
31465         most of the functionality into the new
31466         mono_class_from_generic_parameter(); set the `method' field if
31467         we're a method parameter.       
31468
31469 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31470
31471         * marshal.c (emit_struct_conv): if native size is 0
31472         emit no code.
31473
31474 2003-10-14  Martin Baulig  <martin@ximian.com>
31475
31476         * icall.c: The generics API has changed in the spec since it was
31477         added to System.Type; these modifications make it match the spec
31478         again.
31479         (ves_icall_Type_GetGenericParameters): Renamed to
31480         `ves_icall_Type_GetGenericArguments'.
31481         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31482         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31483         `ves_icall_MonoType_get_HasGenericArguments'.
31484         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31485         `ves_icall_MonoType_get_IsGenericParameter'.
31486         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31487         this is no interncall anymore.
31488         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31489         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31490
31491 2003-10-14  Martin Baulig  <martin@ximian.com>
31492
31493         * reflection.c (mono_reflection_bind_generic_parameters): Also
31494         inflate generic methods if we're reading the class from IL.
31495
31496 2003-10-13  Martin Baulig  <martin@ximian.com>
31497
31498         * reflection.c (mono_reflection_define_generic_parameter): This
31499         method isn't called directly from the icall anymore; take a
31500         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31501         method generic parameters.
31502         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31503         (method_builder_encode_signature): Encode generic parameters.
31504         (mono_image_get_method_info): Write generic params to the
31505         MONO_TABLE_GENERICPARAM table.
31506
31507         * reflection.h (MonoReflectionMethodBuilder): Added
31508         `MonoArray *generic_params'.
31509
31510         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31511
31512         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31513         wrapper for mono_reflection_define_generic_parameter().
31514         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31515
31516 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31517
31518         * marshal.h: Add missing function to fix build.
31519
31520         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31521         the SetLastError pinvoke attribute.
31522
31523         * marshal.c (mono_marshal_set_last_error): New helper function called
31524         by the generated code.
31525         
31526         * marshal.c (mono_mb_emit_branch): New helper function.
31527
31528         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31529
31530         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31531         classes as parameters and return values of delegates. Fixes #29256. 
31532
31533 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31534
31535         * locales.c: use gint32 in non HAVE_ICU case
31536
31537 2003-10-11  Martin Baulig  <martin@ximian.com>
31538
31539         * mono-debug.c (mono_debug_add_method): Added a workaround for
31540         bug #48591.
31541
31542 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31543
31544         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31545         delegates passed to native code must use the STDCALL calling 
31546         convention. Fixes #35987.
31547
31548 2003-10-10  Martin Baulig  <martin@ximian.com>
31549
31550         * class.c (inflate_generic_type): If we're inflating for a generic
31551         type instance (and not for a generic method), return
31552         MONO_TYPE_MVAR unchanged.
31553
31554 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31555
31556         * string-icalls.c: Join ignores null strings in the source array.
31557         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31558         * threads.c: GetAvailableTheads is slightly more accurate.
31559
31560 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31561
31562         * threads.h threads.c : add mono_threads_set_default_stacksize
31563         and pass default to CreateThread calls.
31564
31565 2003-10-09  Dick Porter  <dick@ximian.com>
31566
31567         * icall.c:
31568         * locales.h:
31569         * locales.c: Internal calls for constructing CultureInfo and
31570         related objects from libicu (if its available.)
31571
31572 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31573
31574         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31575
31576 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31577
31578         * threadpool.c: added an argument to async_invoke_thread that is the
31579         item to process, pass the MonoAsyncResult to the thread start function
31580         when creating a new thread. This way we don't need to acquire any lock
31581         when we're creating a new thread. Readded a semaphore for faster
31582         response times (instead of that Sleep i added).
31583
31584 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31585
31586         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31587         get daylight change dates better on Windows, fix handling
31588         of platforms without tm_gmtoff.
31589
31590 2003-10-06  Martin Baulig  <martin@ximian.com>
31591
31592         * class.c (inflate_generic_method): Renamed to
31593         mono_class_inflate_generic_method() and made public.
31594         (mono_class_init): Don't inflate the generic methods here.
31595         (mono_class_from_generic): Added `gboolean inflate_methods'
31596         argument.  Inflate the methods here.
31597
31598         * loader.c (mono_method_get_param_names): Ignore instances of
31599         generic types for the moment.
31600
31601         * reflection.c (fixup_method): Added support for inflated methods.
31602         (mono_image_create_token): Use mono_image_get_methodref_token()
31603         for inflated methods.
31604         (mono_custom_attrs_from_param): Ignore instances of generic types
31605         for the moment.
31606         (mono_reflection_bind_generic_parameters): New public function.
31607         Moved all the functionality from
31608         ves_icall_Type_BindGenericParameters() here and added support for
31609         dynamic types.
31610         (mono_reflection_define_generic_parameter): Initialize
31611         `klass->methods' here.
31612
31613         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31614         functionality into mono_reflection_define_generic_parameter().
31615         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31616         TypeBuilder, return that TypeBuilder.
31617
31618 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31619
31620         * appdomain.c: removed mono_delegate_semaphore.
31621
31622         * threadpool.c:
31623         (mono_thread_pool_add): moved hash table creation inside and the thread 
31624         creation outside of the critical region.
31625         (mono_thread_pool_finish): removed obsolete code.
31626         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31627         continue or exit the thread depending on the queue.
31628
31629 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31630
31631         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31632         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31633         handle more bool marshalling options
31634
31635 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31636
31637         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31638         arrays of structs. Also add a more descriptive error message when
31639         a structure member is marshalled as LPArray.
31640
31641 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31642
31643         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31644         marshalling arrays of complex types. Fixes #29098. Also remove an
31645         usused and incomplete function.
31646
31647 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31648
31649         * gc.c: report heap_size - free_bytes as total memory allocated
31650         (bug#49362).
31651
31652 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31653
31654         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31655         fix timezone handling problems on Windows.
31656         
31657         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31658         asserts when the year is outside the range handled by ms the functions.
31659
31660         * class.c (setup_interface_offsets): If the class is an interface,
31661         fill out its interface_offsets slot.
31662
31663 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31664
31665         * threadpool.c: mark threadpool threads as background.
31666
31667 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31668
31669         * decimal.c - define DECINLINE to nothing if not using GCC
31670
31671 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31672
31673         * assembly.c: More refcount fixes.
31674
31675 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31676
31677         * string-icalls.c: if we're not trimming, return the same string.
31678         When not splitting, don't create a new string.
31679
31680 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31681
31682         * image.c:
31683         (mono_image_open): increment the ref_count inside the critical section.
31684
31685 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31686
31687         * image.c (mono_image_open): Fix reference counting bug.
31688
31689 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31690
31691         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31692         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31693         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31694         mono_lookup_pinvoke_call throws.        
31695
31696 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31697
31698         * reflection.c (mono_reflection_parse_type): Fix #49114.
31699
31700         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31701         temporary workaround for cygwin header problem.
31702
31703         * object.c (mono_object_isinst): Synchronize this with the code
31704         generated by the JIT for casts.
31705
31706 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31707
31708         * reflection.c (encode_type): Fix #38332.
31709
31710 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31711
31712         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31713         the original method from the wrapper method.
31714
31715 2003-09-25  Martin Baulig  <martin@ximian.com>
31716
31717         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31718         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31719         (ves_icall_Type_get_IsGenericInstance): New interncall.
31720
31721 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31722
31723         * object.c: fix cast warning in big endian code.
31724
31725 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31726
31727         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31728         
31729 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31730
31731         * assembly.c: don't call check_env from mono_assembly_load. It's
31732         already done once in mono_assemblies_init and may cause headaches when
31733         multiple threads are loading assemblies.
31734
31735 2003-09-19  Martin Baulig  <martin@ximian.com>
31736
31737         * reflection.c (mono_reflection_define_generic_parameter): Don't
31738         allocate `klass->methods', set `klass->flags' to
31739         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31740
31741 2003-09-18  Martin Baulig  <martin@ximian.com>
31742
31743         * class.c (mono_class_init): Don't create `class->methods' if it's
31744         already initialized.
31745
31746         * metadata.c (mono_metadata_load_generic_params): Make this
31747         actually work.
31748
31749         * reflection.c (mono_reflection_define_generic_parameter): Set
31750         parent class and interfaces from the constraints.
31751
31752         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31753         to keep this struct in sync with the declaration in TypeBuilder.cs.
31754
31755 2003-09-17  Martin Baulig  <martin@ximian.com>
31756
31757         * metadata.h (MonoType): Replaced the data's `int type_param'
31758         field with `MonoGenericParam *generic_param'.
31759         (MonoGenericParam): Added `MonoClass *klass'.
31760
31761         * class.c (mono_class_from_gen_param): Removed the
31762         `MonoImage *image' and `int type_num' arguments.
31763
31764         * metadata.c (mono_metadata_parse_generic_param): New static
31765         method; creates a MonoGenericParam which just contains the index.
31766         (do_mono_metadata_parse_type): Call
31767         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31768         MONO_TYPE_MVAR.
31769
31770         * reflection.c (mono_image_typedef_or_ref): Generic type
31771         parameters may be in the same assembly, but never use a typedef
31772         for them.
31773         (mono_reflection_define_generic_parameter): We're now creating a
31774         "real" class for the type parameter; it's now safe to call
31775         mono_class_from_mono_type() on the class'es type, it'll do the
31776         right thing.
31777
31778 2003-09-16  Martin Baulig  <martin@ximian.com>
31779
31780         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31781         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31782         the `symfile' data structure must be fully initialized before it
31783         gets added to the table.
31784
31785 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31786
31787         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31788
31789         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31790         class init trampolines.
31791
31792 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31793
31794         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31795         to the built-in profiler to turn off time and allocation profiling
31796         respectively.
31797
31798 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31799
31800         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31801         g_direct_equal.
31802
31803         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31804         in human readable form.
31805
31806 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31807
31808         * reflection.c icall.c: Fixed warnings.
31809
31810         * image.c (load_class_names): Use a temporary hash table to hold the
31811         namespaces in order to avoid doing many string comparisons.
31812
31813         * image.h: Fix typo.
31814
31815         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31816         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31817         since the NULL case is short-circuited inside g_hash_table_lookup, 
31818         leading to better performance.  
31819
31820         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31821         obtain the first custom attribute for a given index. Depends on the
31822         CustomAttribute table being sorted by the parent field.
31823
31824         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31825         for better performance.
31826
31827 2003-09-07  Martin Baulig  <martin@ximian.com>
31828
31829         * class.c (mono_class_init): If we're a generic instance, inflate
31830         all our methods instead of loading them from the image.
31831         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31832
31833 2003-09-07  Martin Baulig  <martin@ximian.com>
31834
31835         * mono-debug-debugger.c: Added support for constructors.
31836
31837 2003-09-06  Martin Baulig  <martin@ximian.com>
31838
31839         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31840         New interncall.
31841
31842         * reflection.c (mono_reflection_setup_generic_class): Call
31843         ensure_runtime_vtable() to create the vtable.
31844
31845 2003-09-05  Martin Baulig  <martin@ximian.com>
31846
31847         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31848         MONO_TYPE_MVAR.
31849
31850 2003-09-04  Martin Baulig  <martin@ximian.com>
31851
31852         * reflection.c (mono_reflection_define_generic_parameter): Generic
31853         parameters start with zero.
31854
31855 2003-09-04  Martin Baulig  <martin@ximian.com>
31856
31857         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31858
31859         * reflection.h (MonoReflectionGenericParam): New typedef.
31860         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31861         the generic parameters from the managed TypeBuilder.
31862
31863         * reflection.c (mono_reflection_define_generic_parameter): New function.
31864         (mono_reflection_create_runtime_class): Encode generic parameters.
31865         (mono_reflection_setup_generic_class): New function; this is
31866         called after adding adding all generic params to the TypeBuilder.
31867         (encode_type): Added MONO_TYPE_VAR.
31868
31869 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31870
31871         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31872         here from the JIT.
31873
31874         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31875         load hook.
31876
31877 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31878
31879         * reflection.h reflection.c class.h class.c: Delete duplicate 
31880         definition of mono_type_get_name () from reflection.c and export the
31881         one in class.c.
31882
31883         * class.c: Class loading fixes from Bernie Solomon 
31884         (bernard@ugsolutions.com).
31885
31886         * reflection.c: Endianness fixes from Bernie Solomon 
31887         (bernard@ugsolutions.com).
31888         
31889 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31890
31891         * assembly.h assembly.c: Define a file format version for AOT
31892         libraries.
31893         
31894         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31895
31896         * appdomain.h (MonoJitInfo): New field to determine whenever the
31897         code is domain neutral.
31898         
31899 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31900
31901         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31902
31903 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31904
31905         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31906         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31907         Avoid caching the result since strings must be domain specific. Fixes
31908         #48050.
31909
31910 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31911
31912         * marshal.c (mono_marshal_init): Make this callable multiple times
31913         since it is hard to find a correct place to call it.
31914
31915         * object.c (mono_runtime_class_init): Execute static constructors in
31916         the correct appdomain.
31917
31918         * image.c (build_guid_table): Handle the case when multiple images have
31919         the same GUID.
31920
31921 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31922
31923         * icall.c: added a couple of icalls for System.Web.
31924
31925 2003-08-28  Martin Baulig  <martin@ximian.com>
31926
31927         * icall.c (ves_icall_Type_BindGenericParameters): Use
31928         `klass->generic_inst' instead of `&klass->byval_arg' in the
31929         mono_type_get_object() call.  The returned type must be
31930         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31931
31932 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31933
31934         * NOTES: New file.
31935
31936         * object.c (mono_class_proxy_vtable): Make it thread safe.
31937
31938         * pedump.c: Fix warning.
31939
31940         * object.c appdomain.h: Get rid of metadata_section. 
31941         It is no longer needed and it was causing deadlocks with domain->lock.
31942
31943         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31944
31945 2003-08-26  Martin Baulig  <martin@ximian.com>
31946
31947         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31948
31949 2003-08-26  Martin Baulig  <martin@ximian.com>
31950
31951         * pedump.c (main): Call mono_metadata_init(),
31952         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31953         and mono_loader_init().
31954
31955 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31956
31957         * loader.h: Add missing include to fix build.
31958
31959         * image.h: mono_image_load_references is no more.
31960
31961         * assembly.c: Reworked assembly loading to make it really thread safe.
31962         After these changes, the assembly returned by mono_assembly_open is
31963         fully initialized, i.e. all its references assemblies are loaded.
31964
31965         * assembly.c (mono_image_load_references): Renamed to 
31966         mono_assembly_load_references, and made private, since clients no
31967         longer need to call it.
31968
31969         * class.c: Removed calls to mono_assembly_load_references, since it was
31970         a source of deadlocks.
31971
31972         * loader.h loader.c class.h class.c: Protect data structures using a 
31973         new lock, the loader lock.
31974
31975         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31976         GPtrArrays only when needed.
31977
31978         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31979         into empty structures by mcs. Fixes pinvoke7.cs.
31980         
31981         * domain.c (mono_init): Call a new initialization function.
31982
31983         * appdomain.c (mono_runtime_init): Call the new initializer function
31984         of the marshal module.
31985
31986         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31987         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31988
31989         * marshal.h marshal.c: Added locks around the wrapper caches to make
31990         this module thread safe.
31991
31992         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31993         this argument. Fixes pinvoke1.exe.
31994
31995 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31996
31997         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31998         enumeration of values. Removed fields to store remote call output values in
31999         MonoAsyncResult. Not needed any more.
32000         * object.c: Initialize call_type and async_result fields in mono_message_init.
32001         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
32002         dispatching the message.
32003         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
32004         async call to finish. To do it use a message with EndInvoke call type.
32005
32006 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
32007
32008         * loader.h loader.c (mono_method_hash_marhal_info): New function which
32009         determines whenever a method has marshalling info.
32010
32011 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32012
32013         * assembly.c: fix the build on windows.
32014
32015 2003-08-22 Lluis Sanchez <lluis@ximian.com>
32016
32017         * object.cs: Fixed bug #47785.
32018
32019 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
32020
32021         * string-icalls.c (StringReplace): If their are no occurances of
32022         the old string found return a reference to the supplied
32023         string. This saves some memory and matches MS behavoir.
32024         
32025 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32026
32027         * socket-io.c: fixed compilation for systems that define AF_INET6
32028         and don't define SOL_IP/SOL_IPV6.
32029
32030 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
32031
32032         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
32033         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
32034
32035         * rawbuffer.c rawbuffer.h: Make this module thread safe.
32036
32037         * domain.c: Make this module thread safe.
32038
32039         * domain.c (mono_init): Call new initialization function.
32040
32041         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
32042         reference types too. Fixes #38812.
32043
32044         * image.c (mono_image_init): Fixed warnings.
32045
32046         * class.c (mono_class_from_typeref): Handle assembly load failure
32047         correctly.
32048
32049         * appdomain.c (add_assemblies_to_domain): Handle the case when
32050         the references of an assembly are not yet loaded.
32051
32052         * metadata.c image.c assembly.c: Moved initialization of global
32053         variables to a separate function called at startup since lazy 
32054         initialization of these variables is not thread safe.
32055         
32056         * image.c assembly.c: Made this module thread safe by adding locks in 
32057         the appropriate places.
32058
32059         * domain.c (mono_init): Call the new initialization functions of the
32060         three modules.
32061
32062 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
32063
32064         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
32065           make a direct call. It is proxy's work to make the call asynchronous.
32066           mono_delegate_end_invoke(): If the targe is a proxy, just collect
32067           the return values.
32068         * object.cs: mono_method_call_message_new(): read AsyncResult and
32069           state object from parameters list, if this info is requested.
32070         * object.h: Added fields to store remote call output values in
32071           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
32072
32073 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32074
32075         * object.h: add needed fields to MonoThread.
32076         * threads.c, threads.h: allow registering a function to cleanup data
32077         allocated per thread by the JIT.
32078
32079 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32080
32081         * loader.h: portability fix by Bernie Solomon
32082         * <bernard@ugsolutions.com>.
32083
32084 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
32085
32086         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
32087         return a MonoArray. This simplifies the code and also ensures that
32088         the cache allways contains an object reference as a value.
32089
32090         * icall.c (ves_icall_get_parameter_info): Simplified using the new
32091         function.
32092
32093 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32094
32095         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
32096         fixes a problem with byte ordering when getting the address family for
32097         a socket.
32098
32099 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
32100
32101         * .cvsignore: Added monosn.
32102
32103         * reflection.h reflection.c loader.c: Added support for parameter
32104         marshalling to dynamically created types. Fixes #47295.
32105
32106 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
32107
32108         * rand.c: remove useless warnings.
32109
32110 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32111
32112         * class.c: implemented ldtoken for methods and fieldrefs.
32113
32114 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32115
32116         * threadpool.c: when mono_async_invoke was called, no one took care of
32117         monitoring the queue. So if the method invoked took some time and we
32118         got new async invoke requests after 500 ms (the thread created waited
32119         that long in WaitForSingleObject), the new async invoke was not called
32120         until the previous one finished.
32121
32122         This is fixed now. Thanks to Totte for helping with it.
32123
32124 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32125
32126         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
32127
32128 2003-08-11  Martin Baulig  <martin@ximian.com>
32129
32130         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
32131
32132 2003-08-06  Martin Baulig  <martin@ximian.com>
32133
32134         * mono-debug-debugger.c: Added support for static fields,
32135         properties and methods.
32136
32137 2003-08-06  Martin Baulig  <martin@ximian.com>
32138
32139         * mono-debug-debugger.c: Don't store the MonoString's vtable to
32140         make this work for applications with multiple application domains.
32141
32142 2003-08-04  Martin Baulig  <martin@ximian.com>
32143
32144         * mono-debug-debugger.c: Completely reworked the type support; the
32145         most important thing is that we're now just using one single
32146         `MonoType' instance per type.
32147
32148 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
32149
32150         * mono-endian.h, mono-endian.c, icall.c: Added icall
32151         ves_icall_System_Double_AssertEndianity to assert double word endianity
32152         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
32153
32154 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32155
32156         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
32157         support, icalls and fixes.
32158
32159 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
32160
32161         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
32162         classes that are a punctuation character in .NET is not the same a
32163         g_unichar_ispunct.
32164
32165 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32166
32167         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
32168
32169 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
32170
32171         * icall.c: Add new MemCopy internalcall.
32172         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
32173         Simplified code; It is not necessary to handle all the cases here,
32174         as the C# code takes care of it.  Only handle the case of the name
32175         resource embedded into the assembly.
32176
32177         Changed signature to return the data pointer and the size of the
32178         data. 
32179
32180 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
32181
32182         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
32183         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
32184
32185 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32186
32187         * socket-io.c: ignore EINTR error in select.
32188
32189 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32190
32191         * class.h, class.c: removed unused subclasses field in MonoClass.
32192
32193 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32194
32195         * icall.c: improve fix of get_base_definition(). If the parent class
32196           doesn't have the mehod, look at the parent of the parent.
32197         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
32198           to check if a parameter is an in or out parameter
32199           (PARAM_ATTRIBUTE_IN is not set by default).
32200           mono_method_return_message_restore(): Use mono_class_value_size to
32201           get the size of a value type. mono_type_stack_size (parameterType)
32202           does not return the correct value if parameterType is byRef.
32203           mono_load_remote_field(), mono_load_remote_field_new(),
32204           mono_store_remote_field(), mono_store_remote_field_new():
32205           raise exception if the remote call returns an exception.
32206
32207 2003-07-28  Martin Baulig  <martin@ximian.com>
32208
32209         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
32210         method.  This is a wrapper around mono_runtime_invoke() which
32211         boxes the instance object if neccessary.
32212
32213 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32214
32215         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
32216         metadata.h, row-indexes.h, verify.c: first cut of generics support.
32217
32218 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32219
32220         * icall.c: disable mcs bug workaround.
32221
32222 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
32223
32224         * object.c (mono_runtime_class_init): Take the metadata_section
32225         mutex before obtaining the domain mutex.
32226
32227         * appdomain.h: Added definition of metadata_section mutex here. 
32228
32229         * object.c: define metadata_mutex here.
32230
32231 2003-07-24  Ravi Pratap  <ravi@ximian.com>
32232
32233         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
32234         fixed.
32235
32236 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
32237
32238         * reflection.c: Fix bug #46669
32239
32240 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32241
32242         * exception.c:
32243         * exception.h:
32244         * icall.c:
32245         * object.h: fill in the type name for TypeLoadException.
32246
32247 2003-07-23  Ravi Pratap  <ravi@ximian.com>
32248
32249         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
32250         relationship between TypeBuilders while compiling corlib) and bug
32251         45993 (Array types returned from the runtime while compiling
32252         corlib were from the loaded corlib).
32253
32254 2003-07-22  Martin Baulig  <martin@ximian.com>
32255
32256         * mono-debug-debugger.c: Reworked the type support a bit more;
32257         distinguish between types and classes.
32258
32259 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
32260
32261         * icall.c: add IsArrayImpl icall.
32262
32263 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
32264
32265         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
32266         initializing real_size only once. Also fix bug #46602.
32267
32268 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
32269
32270         * object.c: Renamed mono_metadata_section to metadata_section.
32271
32272 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32273
32274         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32275           empty array if the type is an array. Fixed.
32276           ves_icall_MonoMethod_get_base_definition: if the base method
32277           is abstract, get the MethodInfo from the list of methods of
32278           the class.
32279         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32280           and it was 1-based. Fixed in mono_param_get_objects.
32281
32282 2003-07-20  Martin Baulig  <martin@ximian.com>
32283
32284         * mono-debug.h: Set version number to 31.
32285         (mono_debug_init): Added `MonoDomain *' argument.
32286
32287         * mono-debug-debugger.c: Reworked the type support; explicitly
32288         tell the debugger about builtin types; pass the `klass' address to
32289         the debugger.
32290
32291 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32292
32293         * image.c: Allow new metadata tables to be loaded without a
32294         warning. Also update the warning message to give the new constant value.
32295                 
32296 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32297
32298         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32299         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32300         array type representation changes.
32301
32302 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32303
32304         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32305         on Environment.Exit () call.
32306
32307 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32308
32309         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32310         requires a matching corlib.
32311
32312 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32313
32314         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32315           Committed again without the CRs.
32316         
32317 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32318
32319         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32320           getting it from the "this" socket instance. Did not work
32321           if the socket is a subclass of Socket.
32322           Also fixed bug #35371.
32323
32324 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32325
32326         * metadata.c: fixed size for TypedByRef.
32327         * loader.c: when searching for a method, consider the vararg amrker.
32328         * unicode.c, decimal.c: constify some arrays.
32329
32330 2003-07-15  Dick Porter  <dick@ximian.com>
32331
32332         * socket-io.c: Fixed compilation for gcc < 3.2.
32333
32334         Fixed compilation for machines that don't have AF_INET6 (thanks to
32335         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32336
32337         Fixed compile warnings.
32338         
32339         Fixed formatting and line endings.
32340
32341 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32342
32343         * socket-io.h:
32344         * socket-io.c: Added IPv6 support.
32345
32346 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32347
32348         * class.c (mono_class_is_assignable_from): New function to implement
32349         the is_assignable_from logic. Used by mono_object_isinst, 
32350         Type::IsAssignableFrom () and the interpreter.
32351
32352         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32353         Object, even interfaces.
32354         
32355         * object.c (mono_object_isinst): Implement in terms of 
32356         is_assignable_from.
32357
32358         * icall.c (ves_icall_type_is_assignable_from): New icall.
32359
32360 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32361
32362         * domain.c (foreach_domain): fix compiler warning.
32363
32364 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32365
32366         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32367         not available on all plattforms
32368
32369 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32370
32371         * image.h image.c: Store the metadata version string in MonoImage.
32372         * icall.c: New icall to retrieve the image version.
32373         * reflection.c (create_dynamic_image): Fill in the image version field
32374         * reflection.c (build_compressed_metadata): Use the image version
32375         from the image structure.
32376
32377 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32378
32379         * appdomain.c: modified comment.
32380         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32381         That will be its last iteration when mono_gc_cleanup is called from
32382         mono_runtime_cleanup and before the domain is unloaded.
32383
32384         Fixes bug #45962.
32385
32386 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32387
32388         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32389         attributes.
32390
32391 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32392
32393         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32394         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32395         Bernie Solomon <bernard@ugsolutions.com>.
32396
32397 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32398
32399         * object.c, object.h: provide mono_object_new_fast() for faster
32400         allocation in some special cases.
32401
32402 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32403
32404         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32405         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32406
32407 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32408
32409         * threadpool.c: fix leaks.
32410
32411 2003-07-01  Dick Porter  <dick@ximian.com>
32412
32413         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32414         using MonoGHashTables.  Fixes threadpool bug posted to list.
32415
32416 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32417
32418         * image.h, image.c: added support to load an assembly from a byte array.
32419         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32420         assembly bundle support.
32421
32422 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32423
32424         * threadpool.c (mono_thread_pool_add): keep a reference to the
32425         AsyncResult to prevent GC
32426
32427 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32428
32429         * class.c: leak fix.
32430
32431 2003-06-25  Dick Porter  <dick@ximian.com>
32432
32433         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32434         for the async object, the WaitHandle object will close the handle.
32435         Fixes bug 45321.
32436
32437 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32438
32439         * class.c: in mono_array_class_get (), lookup from the hash with the
32440         same type we insert: this works around a bug in
32441         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32442         lluis. The real fix will have to wait for after the release.
32443
32444 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32445
32446         * icall.c: fix memory leak when getting type members.
32447
32448 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32449
32450         * reflection.c: added more pubtoken special cases.
32451
32452 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32453
32454         * class.c: handle field offset correctly when class size
32455         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32456
32457 2003-06-20  Martin Baulig  <martin@ximian.com>
32458
32459         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32460         *image' field.
32461
32462 2003-06-20  Martin Baulig  <martin@ximian.com>
32463
32464         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32465
32466 2003-06-20  Martin Baulig  <martin@ximian.com>
32467
32468         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32469         just distinguish between variables in registers and variables at
32470         an offset relative to a register.
32471
32472 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32473
32474         * icall.c: #ifdef out latest changes until mcs is fixed.
32475
32476 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32477
32478         * icall.c: return members in metadata order.
32479
32480 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32481
32482         * icall.c: avoid infinite loop in GetTimeZoneData.
32483
32484 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32485
32486         * icall.c: added Marshal.Prelink/All icalls.
32487
32488 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32489
32490         * object.c, object.h: fix warnings and do some overflow checking
32491         when creating arrays.
32492
32493 2003-06-17  Dick Porter  <dick@ximian.com>
32494
32495         * file-io.h:
32496         * file-io.c: File attributes need to be tweaked slightly when
32497         passed from the managed to the w32 world.
32498
32499 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32500         * profiler.h profiler-private.h profiler.c: Rework last patch
32501         based on suggestion by Paolo.
32502         
32503 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32504
32505         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32506         instruction level coverage data collection.
32507         * profiler.h profiler.c (: Added new callback function which can be
32508         used by the profiler to limit which functions should have coverage
32509         instrumentation.
32510         * profiler.c (mono_profiler_load): Call g_module_build_path to
32511         generate the file name of the profiler library.
32512
32513 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32514
32515         * profiler.c, profiler.h, profiler-private.h: added basic block 
32516         coverage profiling API.
32517
32518 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32519
32520         * reflection.c (mono_reflection_create_runtime_class): Add support
32521         for events in dynamically generated code.
32522
32523         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32524         not allocated.
32525
32526 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32527
32528         * icall.c: when getting timezone info, return reasonable values if we
32529         can't get the actual data.
32530
32531 2003-06-14  Dick Porter  <dick@ximian.com>
32532
32533         * threads.c (start_wrapper): Remove the reference to the thread
32534         object in the TLS data, so the thread object can be finalized.
32535         This won't be reached if the thread threw an uncaught exception,
32536         so those thread handles will stay referenced :-( (This is due to
32537         missing support for scanning thread-specific data in the Boehm GC
32538         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32539
32540 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32541
32542         * reflection.c: ensure streams and tables are first allocated with
32543         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32544
32545 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32546
32547         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32548
32549 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32550
32551         * reflection.c (mono_reflection_create_runtime_class): Add support for
32552         properties to dynamically created classes.
32553         * reflection.c: Fix a few places where non-MonoObjects were inserted
32554         into the tokens hashtable.
32555
32556 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32557
32558         * object.c: some support to handle out of memory exceptions.
32559
32560 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32561
32562         * marshal.c (mono_marshal_get_native_wrapper): support reference
32563         return types
32564
32565 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32566
32567         * object.h, object.c: more portability stuff from Bernie Solomon.
32568         Unexport mono_object_allocate(). Added mono_object_unbox ().
32569         Set exitcode when an unhandled exception is thrown.
32570
32571 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32572
32573         * marshal.c (mono_marshal_get_native_wrapper): use custom
32574         marshaler for return types.
32575
32576 2003-06-10  Dick Porter  <dick@ximian.com>
32577
32578         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32579         ip_mreq is available
32580
32581 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32582
32583         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32584         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32585         by Bernie Solomon <bernard@ugsolutions.com>.
32586
32587 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32588
32589         * gc.c (mono_gc_init): Avoid error message on shutdown when
32590         GC_DONT_GC=1 is used.
32591
32592         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32593         New icall to return the GUID of a module.
32594
32595 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32596
32597         * class.c: ensure instance size always includes the parent's size
32598         even whem class size is set explicitly (fixes bug#44294).
32599
32600 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32601
32602         * profiler.h, profiler.c: made the simple profiler thread-safe,
32603         get more accurate timing info. Allow the loading of an
32604         externally-developed profiler module.
32605
32606 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32607
32608         * marshal.c (mono_marshal_get_native_wrapper): improved
32609         class/byref arguments.
32610         (mono_marshal_get_native_wrapper): better string marshaling support.
32611
32612 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32613
32614         * class.c: ensure .pack and .size are handled correctly and
32615         simplified layout of static fields.
32616
32617 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32618
32619         * appdomain.c
32620         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32621
32622         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32623         current directory (fix bug 44008)
32624
32625 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32626
32627         * marshal.c (mono_marshal_get_native_wrapper): started support for
32628         custom marshalers.
32629         (mono_delegate_to_ftnptr): consider marshalling specifications
32630
32631 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32632
32633         * reflection.c, reflection.h: emit custom marshal info.
32634
32635 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32636
32637         * object.c: free the GError.
32638         * icall.c: added CloseEvent_internal.
32639         * threads.[ch]:
32640         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32641         call.
32642
32643 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32644
32645         * loader.c (mono_method_get_signature): Add support for dynamic
32646         assemblies.
32647
32648 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32649
32650         * reflection.c: fixed bug #43905.
32651
32652 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32653
32654         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32655         handling TypedReference and ArgIterator.
32656         * loader.c, loader.h: added function to get signature at call site.
32657
32658 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32659
32660         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32661         data readonly. Buglets and warning fixes. Some MethodSpec support.
32662
32663 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32664
32665         * class.h, class.c, object.c: remove relative numbering support.
32666
32667 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32668
32669         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32670         free the string, until we get a chance to fix Gtk#
32671
32672 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32673
32674         * marshal.c: revert last patch.
32675
32676 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32677
32678         * icall.c: updates for new mono_class_vtable() not calling
32679         the type constructor anymore.
32680
32681 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32682
32683         * object.h, object.c: separate vtable creation from type
32684         initialization. Make running the .cctor thread safe.
32685
32686 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32687
32688         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32689
32690 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32691
32692         * loader.c (mono_get_method): consider calling convention
32693
32694 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32695
32696         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32697         to return the invisible global type for a module.
32698
32699         * reflection.c (mono_image_build_metadata): Emit global fields too.
32700
32701 2003-05-20  Peter Williams  <peterw@ximian.com>
32702
32703         * loader.c (mono_lookup_internal_call): Add a few newlines.
32704
32705 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32706
32707         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32708         literal strings.
32709
32710         * appdomain.c (set_domain_search_path): Recalculate search path when
32711         AppDomainSetup.PrivateBinPath changes.
32712
32713         * object.c (mono_class_compute_gc_descriptor): It turns out some
32714         parts of the class libs (like System.Thread) holds pointers to
32715         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32716         to treat native int a pointer type here.
32717         
32718 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32719
32720         * appdomain.h, domain.c: add hashtable for jump target resolution.
32721
32722 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32723
32724         * reflection.h reflection.c icall.c: Added new icalls 
32725         GetManifestResourceInfoInternal, GetModulesInternal and support
32726         infrastructure.
32727
32728 2003-05-16  Dick Porter  <dick@ximian.com>
32729
32730         * icall.c:
32731         * file-io.h:
32732         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32733
32734 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32735
32736         * object.c: mono_store_remote_field: little fix to previous patch.
32737
32738 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32739
32740         * class.c: add constructors to array classes.
32741         * icall.c: special case array construction for InternalInvoke (),
32742
32743 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32744
32745         * class.h class.c reflection.c object.c: Added support for field
32746         defaults in dynamically generated classes.
32747
32748 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32749
32750         * reflection.c: properly encode charset for ddlimport.
32751
32752 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32753
32754         * threads.c: allow compiling without GC.
32755
32756 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32757
32758         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32759         handling of thread static data.
32760
32761 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32762
32763         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32764
32765 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32766
32767         * class.c (mono_array_class_get): always set the serializable flags
32768         (mono_array_class_get): always set the SEALED attribute for array types
32769
32770 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32771
32772         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32773         attributes (fix for bug 42021).
32774
32775 2003-05-12  Dick Porter  <dick@ximian.com>
32776
32777         * gc.c: Don't run finalizers when the finalizer thread is
32778         finishing up, because the default domain has already been
32779         destroyed.
32780
32781 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32782
32783         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32784         value is null, we should throw an exception.   This is slightly
32785         different than the other conventions used for the constructor.
32786
32787 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32788
32789         * socket-io.c: fixed windows build.
32790
32791 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32792
32793         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32794
32795 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32796
32797         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32798         compilers.
32799
32800 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32801
32802         * class.c (mono_class_layout_fields): Add experimental GC aware
32803         auto layout facility. Requires class library changes to work correctly.
32804
32805         (mono_class_setup_vtable): Avoid overriding explicit interface
32806         method implementations. Fixes iface3.exe test.
32807
32808         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32809         object reference.
32810         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32811         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32812
32813         * metadata.h: Add new type classification macro which determines
32814         whenever the type holds an object reference.
32815
32816 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32817
32818         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32819
32820 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32821
32822         * gc.c (finalizer_thread): Work around a GC bug.
32823
32824 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32825
32826         * marshal.c (emit_struct_conv): allow unions
32827
32828         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32829
32830 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32831
32832         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32833
32834 2003-05-06  Martin Baulig  <martin@ximian.com>
32835
32836         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32837
32838 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32839
32840         * socket-io.c:
32841         (Select_internal): allow NULLs, don't create arrays if not needed.
32842         Coupled with Socket.cs changes.
32843
32844         * threadpool.c:
32845         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32846         register a finalizer for it that will close the semaphore handle. This
32847         fixes the leak and make Lupus' test run with > 4080 loops.
32848
32849 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32850
32851         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32852         Jerome Laban (bug #42287)
32853
32854 2003-05-02  Martin Baulig  <martin@ximian.com>
32855
32856         * debug-mono-symfile.h
32857         (MonoSymbolFile): Moved declaration into mono-debug.h.
32858         (MonoDebugMethodJitInfo): Likewise.
32859         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32860         argument.
32861         (_mono_debug_address_from_il_offset): Take a
32862         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32863
32864         * mono-debug.h
32865         (MonoDebugDomainData): New struct.
32866         (mono_debug_get_domain_data): New function.
32867         (mono_debug_add_method): Take an additional `MonoDomain *'
32868         argument.
32869         (mono_debug_source_location_from_address): Likewise.
32870         (mono_debug_il_offset_from_address): Likewise.
32871         (mono_debug_address_from_il_offset): Likewise.
32872
32873 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32874
32875         * reflection.c: one more check for null type in custom attrs.
32876
32877 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32878
32879         * reflection.c: avoid warning (comparison is always false due to limited
32880         range of data type).
32881
32882 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32883
32884         * icall.c: throw an exception in Type.GetField if the argument 'name'
32885         is NULL.
32886
32887 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32888
32889         * reflection.c: fixed handling of enums in named arguments to custom
32890         attributes (bug #42123).
32891
32892 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32893
32894         * reflection.c: use the right array element type and handle
32895         a null for a Type argument, too.
32896
32897 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32898
32899         * reflection.c: handle arrays as arguments to custom attributes.
32900
32901 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32902
32903         * reflection.c: handle a string value in a custom attr
32904         ctor that takes an object.
32905
32906 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32907
32908         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32909         (fix bug #42063)
32910
32911 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32912
32913         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32914
32915 2003-04-27  Martin Baulig  <martin@ximian.com>
32916
32917         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32918         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32919         MONO_DEBUGGER_EVENT_BREAKPOINT.
32920         (mono_breakpoint_trampoline_code): Removed.
32921         (mono_debugger_event_handler): The last argument is now a
32922         `guint32'.
32923         (mono_debugger_insert_breakpoint_full): Removed the
32924         `use_trampoline' argument.
32925         (mono_debugger_method_has_breakpoint): Likewise.
32926         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32927         mono_debugger_breakpoint_callback(); take the method and
32928         breakpoint number as arguments.
32929
32930 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32931
32932         * metadata.c: fix off by one when loading parameters attributes.
32933
32934 2003-04-24  Martin Baulig  <martin@ximian.com>
32935
32936         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32937
32938 2003-04-24  Martin Baulig  <martin@ximian.com>
32939
32940         * mono-debug-debugger.c: Moved all code which interacts with the
32941         Mono Debugger here.
32942
32943         * debug-mono-symfile.c: This code now just deals with the symbol
32944         file itself, the debugger code is now in mono-debug-debugger.c.
32945
32946 2003-04-23  Martin Baulig  <martin@ximian.com>
32947
32948         * mono-debug.c (mono_debug_source_location_from_il_offset):
32949         New method; like mono_debug_source_location_from_address(), but
32950         takes an IL offset instead of a machine address.
32951
32952 2003-04-23  Martin Baulig  <martin@ximian.com>
32953
32954         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32955         `line' field; this is now computed by the debugger.
32956
32957 2003-04-23  Martin Baulig  <martin@ximian.com>
32958
32959         * mono-debug.[ch]: New files.  This is the new debugging interface.
32960
32961         * mono-debug-debugger.[ch]: New files.  Moved all code which
32962         interacts with the Mono Debugger here.
32963
32964 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32965
32966         * domain.c (mono_init): initialize mono_defaults.monitor_class
32967
32968 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32969
32970         * reflection.c (method_encode_code): Add a spicy exception to help
32971         future compiler authors.
32972
32973 2003-04-21  Martin Baulig  <martin@ximian.com>
32974
32975         * icall.c
32976         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32977         Make this work with relative pathnames; g_filename_to_uri() needs
32978         an absolute filename.
32979
32980 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32981
32982         * icall.c: Track name changes in Object and ValueType.
32983
32984 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32985
32986         * metadata.c (mono_type_stack_size): size should be a multiple of
32987         sizeof (gpointer)
32988
32989 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32990
32991         * gc.c:
32992         (internal_domain_finalize): moved into mono_domain_finalize. No need
32993         to create another thread because the finalizers will be run in the
32994         finalizer thread.
32995         
32996         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32997         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32998         to be run (MS does this too).
32999
33000 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
33001
33002         * object.c (mono_class_compute_gc_descriptor): Update comment.
33003
33004         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
33005
33006         * image.h: Add synchronized wrapper cache.
33007
33008         * image.c (do_mono_image_open): Initialize cache.
33009
33010         * reflection.c (create_dynamic_mono_image): Initialize cache.
33011
33012 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33013
33014         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
33015         ves_icall_System_Buffer_ByteLengthInternal.
33016
33017 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
33018
33019         * reflection.c: setup klass->nested_in earlier. Allow
33020         a dash in the assembly name.
33021
33022 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
33023
33024         * metadata.c (mono_type_to_unmanaged): dont access
33025         type->data.klass for MONO_TYPE_OBJECT
33026         (mono_type_to_unmanaged): consider System.Delegate class
33027
33028 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
33029
33030         * class.c: just setup supertypes in the proper place instead of
33031         initializing the full element class for arrays.
33032
33033 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
33034
33035         * class.c: ensure the element class of arrays is initialized.
33036         Setup the supertype info for array classes, too.
33037
33038 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
33039
33040         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
33041
33042 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33043
33044         * Makefile.am: re-added -m option when running cygpath. This way,
33045         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
33046         separator.
33047         * mono-config.c: same codepath for locating mono config file for WIN32
33048         and the rest.
33049         * assembly.c: if mono_assembly_setrootdir is called, don't override
33050         the value set.
33051
33052 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33053
33054         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
33055         MONO_ASSEMBLIES variable.
33056
33057 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
33058
33059         * icall.c: added Assembly::GetNamespaces() icall.
33060
33061 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33062
33063         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
33064
33065 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
33066
33067         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
33068         * object.c: fixed bug in the construction of vtable for proxies
33069
33070 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
33071
33072         * object.c (mono_array_new): Mark mono_array_new as an icall.
33073
33074 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33075
33076         * class.c: fixed test for public method when overriding interfaces.
33077         Closes bug #40970.
33078
33079 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
33080
33081         * appdomain.h, domain.c: added mono_domain_foreach() to
33082         be able to access the currently loaded appdomains.
33083         * object.c: make string interning work across sppdomains.
33084         Mark some functions for use as icalls.
33085
33086 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
33087
33088         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
33089
33090         * reflection.h reflection.c: Allocate long living data using 
33091         GC_MALLOC_ATOMIC so the collector does not need to scan it.
33092
33093         * reflection.c: Double the allocation size in streams instead of
33094         increasing it, to prevent unneccesary copying on large assemblies.
33095         
33096         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
33097         creation if the assembly does not have the Run flag set.
33098
33099 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
33100
33101         * class.h: avoid the C++ keywords in header files (Jerome Laban
33102         spotted and fixed this).
33103
33104 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33105
33106         * object.c:
33107         (mono_unhandled_exception): fill in the arguments for the
33108         UnhandledException event. Only trigger that event for the default
33109         domain (as MS does).
33110
33111 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
33112
33113         * object.c: Improve typed allocation stuff based on suggestions from
33114         Paolo. Also turn it on if the GC library supports it.
33115
33116 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33117
33118         * object.c object.h class.h: Added experimental typed allocation
33119         facility using the interfaces in gc_gcj.h.
33120
33121         * os/gc_wrapper.h: Added new include files.
33122         
33123 2003-04-03  Martin Baulig  <martin@ximian.com>
33124
33125         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
33126         which is not yet enabled by default.
33127
33128         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
33129         functions.
33130         (mono_gc_lock, mono_gc_unlock): New static functions.
33131
33132         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
33133         functions; stop/start the world for the garbage collector.  This
33134         is using the windows API; we need to complete the SuspendThread()/
33135         ResumeThread() implementation in the io-layer to make this work on Unix.
33136         (mono_gc_push_all_stacks): New public function; tells the garbage
33137         collector about the stack pointers from all managed threads.
33138
33139 2003-04-03  Martin Baulig  <martin@ximian.com>
33140
33141         * object.h (MonoThread): Added `gpointer stack_ptr'.
33142
33143         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
33144
33145 2003-04-03  Martin Baulig  <martin@ximian.com>
33146
33147         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
33148
33149 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33150
33151         * reflection.c (typebuilder_setup_fields): Initialize field.first and
33152         field.last.
33153
33154 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
33155
33156         * loader.c (mono_lookup_internal_call): Report the corlib that is
33157         out of sync.
33158
33159 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
33160
33161         * icall.c (ves_icall_type_GetTypeCode): fixed check for
33162         System.DBNull (it's class not valuetype).
33163
33164 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
33165
33166         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
33167         if the array method was already assigned a token (fixes bug#40646).
33168
33169 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
33170
33171         * reflection.c (mono_reflection_get_type): Attempt type resolve even
33172         if no assembly is given.
33173
33174 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
33175
33176         * metadata.h: Added the new tables.
33177
33178         * row-indexes.h: Added definitions for new tables.
33179
33180         * metadata.c: Add schemas for new tables, and add support for
33181         computing the sizes of them.
33182
33183         * class.c: Update for handling the new type cases.
33184
33185 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
33186
33187         * metadata.h (MONO_TYPE_IS_VOID): new macro
33188
33189 2003-03-31  Martin Baulig  <martin@ximian.com>
33190
33191         * threads.h (MonoThreadCallbacks): Added `thread_created'.
33192
33193         * threads.c (mono_thread_new_init): Call `thread_created' in the
33194         mono_thread_callbacks.
33195
33196 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
33197
33198         * loader.h: added marshalbyrefobject_class to mono_defaults
33199         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
33200         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
33201           generation of output parameters.
33202           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
33203         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
33204           contextbound and the target object belongs to the context of the caller.
33205         * object.h: added context and unwrapped_server variables in MonoRealProxy.
33206         * object.c: Implemented support for interfaces and abstract classes
33207           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
33208           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
33209
33210 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
33211
33212         * class.h class.c (mono_class_is_subclass_of): New function.
33213         
33214         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
33215         routines for most common case (calls from ArrayList::ToArray).
33216
33217         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
33218         routine so programs which call Environment::Exit() can be profiled.
33219
33220         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
33221         Added MONO_ARCH_SAVE_REGS.
33222
33223         * icall.c (ves_icall_type_is_subtype_of): Use new function.
33224
33225 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
33226
33227         * blob.h: Add a couple of new MonoType types definitions.
33228
33229         * tabledefs.h: Add a couple of new call convs.
33230
33231 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
33232
33233         * reflection.h (MonoReflectionDynamicAssembly): track changes in
33234         the layout of the class.
33235
33236         * reflection.c (alloc_table): double the size on overflow to avoid
33237         unnecessary copying.
33238
33239         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
33240         avoid filling out metadata tables and blobs. Also set mb->ilgen to
33241         null so it can be garbage collected.
33242         
33243 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
33244
33245         * reflection.c (mono_reflection_get_type): Return the resolved type
33246         only if it is in the assembly we searched.
33247
33248         * reflection.c (ensure_runtime_vtable): Initialize method slots.
33249
33250         * class.c (mono_class_setup_vtable): Set the slot of the overriding
33251         method.
33252
33253 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33254
33255         * appdomain.c:
33256         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
33257         the right one is 'file:///blah', but MS allows it.
33258         * assembly.c:
33259         (mono_assembly_open): allow 'file://blah'
33260
33261         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
33262
33263 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
33264
33265         * socket-io.c: fixes bug #40310.
33266
33267 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
33268
33269         * reflection.c (mono_reflection_parse_type): handle deeply nested
33270         types correctly.
33271
33272         * reflection.c (mono_image_create_token): Use unique token values
33273         since they will be put into a hash table.
33274
33275         * class.c (mono_class_setup_vtable): If a method occurs in more than
33276         one place in the vtable, and it gets overriden, then change the
33277         other occurances too.
33278
33279         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33280         object as return type.
33281
33282 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33283
33284         * icall.c: Deleted "ToString" implementation for double and float
33285         because they are full implemented in managed code.
33286
33287 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33288
33289         * reflection.c, reflection.h: implemented and exported functions
33290         to retrieve info about custom attributes.
33291
33292 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33293
33294         * appdomain.c: moved Uri handling to assembly.c
33295         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33296         work when using a file Uri in *nix and windows.
33297
33298         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33299         GetReferencedAssemblies.
33300
33301 2003-03-18  Dick Porter  <dick@ximian.com>
33302
33303         * icall.c: Rename a couple of internal calls
33304
33305         * threads.c: Set the thread state to Stopped when a thread exits.
33306         Fixes bug 39377.
33307
33308 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33309
33310         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33311         New icall.
33312
33313         * object.c (mono_class_vtable): fix warning.
33314
33315 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33316
33317         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33318
33319         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33320         memory.
33321         (method_encode_clauses): Create exception info structures in the right
33322         order.
33323         (mono_reflection_setup_internal_class): Initialize supertypes field.
33324
33325         * class.c object.c: Handle interfaces which implement other interfaces 
33326         correctly.
33327
33328         * class.h class.c: Move the supertypes array initialization code into 
33329         a separate function so it can be used for dynamic types too. Also call
33330         it earlier, in mono_class_init(), since it can be used before the
33331         type is initialized.
33332
33333 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33334
33335         * Makefile.am:
33336         * assembly.c:
33337         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33338
33339         * appdomain.c:
33340         * appdomain.h:
33341         * marshal.c:
33342         * object.c: remove warnings.
33343
33344 2003-03-13  Martin Baulig  <martin@ximian.com>
33345
33346         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33347         (MonoDebugLexicalBlockEntry): New types.
33348
33349         * debug-mono-symfile.c
33350         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33351
33352 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33353
33354         * process.c: ret can be any non-zero value accroding to MS doc.
33355
33356 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33357
33358         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33359         fixing a warning for a miss-used prototype, would have cause
33360         random memory corruption.
33361
33362 2003-03-07  Martin Baulig  <martin@ximian.com>
33363
33364         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33365         getting really annoying ....
33366
33367 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33368
33369         * reflection.c (fixup_method): added support for array methods.
33370
33371 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33372
33373         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33374         (pointed out by Michael Adams).
33375
33376 2003-03-04  Dick Porter  <dick@ximian.com>
33377
33378         * icall.c: Temporarily reverted the Double and Single ToString()
33379         change, because it broke nunit.
33380
33381 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33382
33383         * object.h, threads.h: make include files compatible with C++
33384         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33385
33386 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33387
33388         * icall.c: Erased ToString helper functions for Double and Single.
33389         Now, that implementations ar all in managed code (Double and Single
33390         Formatters).
33391
33392 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33393
33394         * appdomain.c: Added method for initializing the default context of
33395         a domain. Added internal call for getting the default context.
33396         * appdomain.h: Added context variable in MonoDomain struct.
33397         * domain.c: mono_domain_set also sets the default context of the domain
33398         * icall.c: Mapped internal method InternalGetDefaultContext.
33399         * object.c: mono_object_get_virtual_method returns always a remoting
33400         wrapper if the object is a transparent proxy.
33401         mono_runtime_invoke_array: when creating an object by calling the
33402         constructor, if the created object is a proxy, then the constructor should
33403         be called using the a remoting wrapper.
33404
33405 2003-03-03  Dick Porter  <dick@ximian.com>
33406
33407         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33408         variable so it compiles on solaris.  Problem spotted by
33409         Christopher Taylor <ct@cs.clemson.edu>
33410
33411 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33412
33413         * appdomain.c:
33414         (get_info_from_assembly_name): don't leak value.
33415
33416         * icall.c:
33417         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33418         result.
33419
33420 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33421
33422         * assembly.c: export mono_image_load_references ().
33423         * class.c: handle function pointers. mono_class_from_name() now
33424         supports nested type names directly.
33425
33426 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33427
33428         * reflection.h reflection.c: Encode already created dynamic methods 
33429         and fields correctly as a DEF instead of a REF.
33430
33431         * reflection.c: Get rid of the force_ref argument to 
33432         mono_image_typedef_or_ref since it was wrong in the first place.
33433
33434         * string-icalls.c: add error checking to string constructors according
33435         to the MSDN docs.
33436
33437         * reflection.c: Emit types in the order their TypeBuilders were 
33438         created. Previously, a new table index was assigned to each type before
33439         the tables were emitted. This was wrong because the signature blob
33440         might already refer to a type by its original table index.
33441
33442 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33443
33444         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33445         change.
33446         
33447 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33448
33449         * Makefile.am: make assemblies dir have \ instead of / on windows.
33450
33451 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33452
33453         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33454         iterate over the NESTEDCLASS table using a linear search since the
33455         table is not guaranteed to be sorted by the secondary key.
33456
33457         * class.c (mono_class_create_from_typedef): fixed up call to
33458         mono_metadata_nesting_typedef.
33459         
33460 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33461
33462         * marshal.c (mono_string_to_byvalstr): clear the memory as
33463         suggested by Jerome Laban <jlaban@wanadoo.fr>
33464
33465 2003-02-26  Dick Porter  <dick@ximian.com>
33466
33467         * process.c: Cope with padding in .rsrc blocks
33468
33469 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33470
33471         * metadata.h: reverted the filter_len change, it breaks reflection
33472         
33473 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33474
33475         * metadata.h: added a new field to store the filter_len
33476         
33477
33478 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33479
33480         * reflection.c: handle custom attributes for types and members
33481         created with Reflection.Emit (bug#38422).
33482
33483 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33484
33485         * reflection.c: define RTSpecialName automatically for constructors for
33486         compatibility with MS.NET.
33487
33488         * reflection.c (mono_reflection_create_runtime_class): initialize
33489         nested_in field of dynamically created classes.
33490
33491 2003-02-22  Martin Baulig  <martin@ximian.com>
33492
33493         * debug-mono-symfile.h: Incremented version number.
33494
33495 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33496
33497         * object.h icall.c process.c: fix warnings.
33498
33499 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33500
33501         * appdomain.h appdomain.c:
33502         (mono_domain_try_type_resolve): split the 
33503         name_or_tb argument into a name and a tb argument.
33504         (mono_domain_has_type_resolve): new function to check whenever the
33505         application has registered a TypeResolve event handler.
33506         
33507         * icall.c reflection.h reflection.c: move the type resolve logic into
33508         mono_reflection_get_type () so it will be invoked when 
33509         Assembly::GetType () is called.
33510
33511         * reflection.c:
33512         (mono_reflection_get_type): renamed to get_type_internal.
33513         (mono_reflection_get_type): fixed type name generation so it works 
33514         for nested types too.
33515         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33516         costly type name generation if there is no resolve event handler.
33517
33518 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33519
33520         * class.c, image.c: load exported types from file references.
33521
33522 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33523
33524         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33525           used to cache the managed methods used to create proxies and make 
33526           remote invocation of methods.
33527         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33528           to be remotely created.
33529         * object.c: Modified the method mono_class_vtable(). It now initializes 
33530           the remote flag of the vtable. Modified mono_object_new_specific(), 
33531           so now it checks the remote flag.
33532         * icall.c: Added a couple of internal methods, one for enabling instance 
33533           creation interception for a type, and one for creating objects bypassing
33534           the remote check.
33535
33536 2003-02-18  Martin Baulig  <martin@ximian.com>
33537
33538         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33539         New interncall to get a method's metadata token.
33540
33541         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33542         New interncall for the debugger.
33543
33544 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33545
33546         * class.c (mono_class_setup_vtable): allocate supertype array
33547
33548 2003-02-18  Martin Baulig  <martin@ximian.com>
33549
33550         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33551
33552 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33553
33554         * reflection.c:
33555         (assembly_name_to_aname): jump over unknown properties (i've found
33556         something like: 'type, assembly, version=xxx, custom=null, public...',
33557         so now will ignore custom=null and still get the rest of the values).
33558
33559 2003-02-17  Dick Porter  <dick@ximian.com>
33560
33561         * threads.c: Have Thread.Start() wait for a semaphore to signal
33562         that the thread has set up all its local data.  This fixes bug
33563         34323, where Abort() raced the new thread's TLS data.
33564
33565         Also removes the handle_store() call from start_wrapper, because
33566         threads are now always created suspended and there is no longer a
33567         race between the parent and child threads to store the info.
33568
33569 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33570
33571         * image.c: explain the #- heap issue in a message, hopefully
33572         avoiding FAQs on mono-list.
33573
33574 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33575
33576         * icall.c:
33577         (GetEntryAssembly): if the domain has not invoked
33578         AppDomain.ExecuteAssembly yet, return the assembly of the default
33579         AppDomain.
33580
33581 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33582
33583         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33584
33585 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33586
33587         * metadata.c, reflection.c: simple speedup to type hash
33588         and equals code.
33589
33590 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33591
33592         * image.c, image.h, class.c, assembly.c: move module loading
33593         to MonoImage. When loading metadata, consider alignemnet from
33594         the start of metadata, not from the metadata address in memory.
33595
33596 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33597
33598         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33599         AssemblyBuilder objects. Factored out custom attribute creation into
33600         a separate function.
33601         (create_custom_attr): new function to create custom attributes.
33602
33603 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33604
33605         * Makefile.am: Got tired of typing the full pathname to pedump.
33606         Until there is another option, am installing this.
33607
33608 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33609
33610         * class.c (class_compute_field_layout): always set field->parent 
33611         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33612
33613 2003-02-11  Dick Porter  <dick@ximian.com>
33614
33615         * threads-types.h:
33616         * monitor.c: Rewrote Monitor, making lock much faster and
33617         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33618         creates them as needed.
33619
33620         * exception.c: Added SynchronizationLockException
33621
33622         * threads.c: Deleted old Monitor implementation.  The new one is
33623         in a new file.
33624
33625 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33626
33627         * class.c: handled TypedReference type code. Set the correct size for
33628         class data. Setup interface_offsets for interface classes, too.
33629
33630 2003-02-09  Martin Baulig  <martin@ximian.com>
33631
33632         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33633
33634 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33635
33636         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33637         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33638         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33639         * verify.c: check for code that runs after the end of the method.
33640
33641 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33642
33643         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33644         "System.Math::Round2".
33645         * sysmath.h: Added Floor, Round and Round2 definitions.
33646         * sysmath.c: Modified certain functions that were not 100% compliant
33647         with MS.NET (math precision) and added the implementation of Floor,
33648         Round and Round2.
33649
33650 2003-02-07  Martin Baulig  <martin@ximian.com>
33651
33652         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33653
33654 2003-02-07  Martin Baulig  <martin@ximian.com>
33655
33656         * debug-mono-symfile.c: Reflected latest symwriter changes.
33657         (mono_debug_create_mono_symbol_file): Removed.
33658         (mono_debug_open_mono_symbol_file): Take an argument which
33659         specifies whether to create a dynamic symbol file.
33660
33661 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33662
33663         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33664
33665 2003-02-05  Martin Baulig  <martin@ximian.com>
33666
33667         * reflection.c (mono_image_build_metadata): Make this public,
33668         protect it against being called multiple times, don't create
33669         resources and don't build the compressed metadata here.
33670         (mono_image_create_pefile): Do this here.
33671
33672         * icall.c
33673         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33674
33675 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33676
33677         * socket-io.c: fixed bug #36322.
33678
33679 2003-02-06  Piers Haken <piersh@friskit.com>
33680
33681         * appdomain.[ch]:
33682         * class.h:
33683         * debug-mono-symfile.c:
33684         * icall.c:
33685         * loader.c:
33686         * mono-config.c:
33687         * monosn.c:
33688         * reflection.c:
33689         * socket-io.c: warning cleanups
33690
33691 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33692
33693         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33694         function. works like remoting invoke, but does a check for the Proxy first.
33695
33696 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33697
33698         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33699
33700 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33701
33702         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33703         array of pointers.
33704         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33705         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33706
33707         * object.c (mono_store_remote_field_new): used by the new jit
33708         instead of mono_store_remote_field
33709         (mono_load_remote_field_new): used by the new jit
33710         instead of mono_load_remote_field
33711
33712 2003-02-05  Patrik Torstensson
33713
33714         * appdomain.c: changed unload to take the domain id instead
33715         of domain
33716         
33717         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33718
33719
33720 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33721
33722         * appdomain.c: don't look for assemblies in ApplicationBase if
33723         PrivateBinPathProbe is set.
33724
33725 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33726
33727         * object.c: make the first argument in main_args contain the absolute
33728         path to the assembly. Fixes bug #37511.
33729
33730 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33731
33732         * icall.c: get correct UTC offset for countries not using daylight
33733         time saving. Fixes bug #30030.
33734
33735 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33736
33737         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33738         and 1 are the family).
33739
33740 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33741
33742         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33743
33744         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33745
33746 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33747
33748         * reflection.c: added support for SignatureHelper tokens, which is
33749         needed by the Calli opcode.
33750
33751         * reflection.h: track changes to SignatureHelper class.
33752
33753         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33754
33755 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33756
33757         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33758
33759 2003-02-03  Patrik Torstensson
33760         * appdomain.[c|h], domain.c : 
33761          - Added support for getting a domain via domain id
33762          - Support for setting and getting domain from System.AppDomain 
33763            (used in cross appdomain channel)
33764          - Added support for get/set for a MonoAppContext on a thread 
33765            (Context class in System.Runtime.Remoting.Contexts),
33766          - Removed hack in Get/SetData and ExecuteAssembly.
33767         
33768         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33769         the managed world to get control when a proxy is created.
33770
33771         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33772         
33773 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33774
33775         * icall.c
33776         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33777         Populate the codebase field as well.
33778
33779 2003-02-02  Martin Baulig  <martin@ximian.com>
33780
33781         * debug-mono-symfile.c
33782         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33783         (mono_debug_symfile_add_method): Allow interncalls.
33784
33785 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33786
33787         * icall.c: throw parse exception if strtod fails or the string is empty.
33788
33789 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33790
33791         * marshal.c: handle object type separately from defined
33792         class types.
33793
33794 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33795
33796         * marshal.c: handle NATIVE_LPSTR for strings when it's
33797         explicitly specified.
33798
33799 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33800
33801         * reflection.c, reflection.h, icall.c: setup the reflection
33802         handle cache for ModuleBuilders and AssemblyBuilders.
33803
33804 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33805
33806         * reflection.c (reflection_methodbuilder_to_mono_method): set
33807         pinvoke flag
33808
33809 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33810
33811         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33812
33813 2003-01-29  Dick Porter  <dick@ximian.com>
33814
33815         * threads.c: No need for the fake_thread kludge now that Thread
33816         doesn't run a class constructor
33817         
33818 2003-01-29  Dick Porter  <dick@ximian.com>
33819
33820         * threads.c: Use g_direct_hash instead of the rather bogus
33821         g_int_hash
33822
33823 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33824
33825         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33826         (fix pinvoke12.exe)
33827         (mono_marshal_get_struct_to_ptr): generate valid IL code
33828         (mono_marshal_get_ptr_to_struct): generate valid IL code
33829         (*): correctly set sig->pinvoke, we need to memdup the signature
33830         to do that
33831
33832 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33833
33834         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33835         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33836
33837 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33838
33839         * profiler.c: provide more callers information.
33840
33841 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33842
33843         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33844
33845         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33846
33847         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33848
33849 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33850
33851         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33852         exception instead of going into an infinite loop on dates which it 
33853         can't yet handle.
33854
33855         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33856         out-of-range exception if needed.
33857
33858         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33859         an implementation for an interface method and to override an inherited
33860         method at the same time. 
33861         Imagine a scenario when a virtual method is used to override a
33862         virtual abstract method in a parent class, and this same method 
33863         provides an implementation for an method inherited from an interface. 
33864         In this case, the interface resolution code will set im->slot, which 
33865         means that the virtual method override pass will skip this method 
33866         which means a pointer to the abstract method inherited from the parent
33867         will remain in the vtable of this non-abstract class.
33868
33869         * class.c: (mono_class_setup_vtable): continue search for a real 
33870         method if only an abstract method is found.     
33871
33872 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33873
33874         * reflection.c: add size to encoding for ByValStr and ByValArray
33875         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33876
33877 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33878
33879         * class.c (mono_class_setup_vtable): pass the override info as an
33880         argument.
33881
33882         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33883         correctly.
33884         
33885         * reflection.c (ensure_runtime_vtable); add support for method 
33886         overrides.
33887         
33888 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33889
33890         * reflection.c (resolution_scope_from_image): Hack to work to work with
33891         dynamic assemblies.
33892
33893         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33894         added a 'force_ref' argument to force this function to allways return 
33895         a TypeRef. This is needed by mono_image_get_memberref_token ().
33896         
33897 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33898
33899         * reflection.c (mono_image_get_type_info): interfaces really don't have
33900         a parent.
33901
33902         * reflection.c (mono_image_basic_init): fill out missing fields of
33903         image structure.
33904
33905         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33906         dynamic assemblies. This is required so dynamic assemblies show up in
33907         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33908         Type::GetType() etc. This is consistent with MS behaviour.
33909
33910         * image.c image.h reflection.c: add newly created classes to the name 
33911         cache so mono_class_get () will find them.      
33912
33913 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33914
33915         First part of changes to get IKVM.NET running under mono.
33916         
33917         * appdomain.h, appdomain.c: added new function 
33918         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33919         This function will call AppDomain::DoTypeResolve to do the actual work.
33920
33921         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33922         moved existing code dealing with dynamic tokens to a new function 
33923         called mono_reflection_lookup_dynamic_token (). This function will 
33924         raise TypeResolve events when appropriate. Since reflection.c is not 
33925         part of libmetadata, a new hook function called 
33926         mono_lookup_dynamic_token() is added to class.c which will call this.
33927
33928         * assembly.h assembly.c: make the invoke_load_hook function public,
33929         so it can be called for dynamic assemblies.
33930
33931         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33932
33933         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33934         type isn't found.
33935
33936         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33937         MonoGHashTable, since it contains pointers to objects which the GC 
33938         needs to track.
33939
33940         * assembly.c (search_loaded): remove unused variable.
33941         
33942 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33943
33944         * object.c: fixed issue exposed by gcc-generated IL programs
33945         that use RVA data for pointers.
33946
33947 2003-01-25  Martin Baulig  <martin@ximian.com>
33948
33949         * threads.c (start_wrapper): Moved the initialization of
33950         `start_func' above the mono_new_thread_init() call to which we
33951         pass it as argument.
33952
33953 2003-01-24  Martin Baulig  <martin@ximian.com>
33954
33955         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33956         the MonoThread pointer.
33957
33958 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33959
33960         * icall.c: Rename `PowImpl' to Pow.
33961
33962 2003-01-23  Dick Porter  <dick@ximian.com>
33963
33964         * threads.c (start_wrapper): Create a Thread object if needed, so
33965         the Main() thread can do the class initialisation in a subthread
33966         that has been set up to allow managed code execution.
33967
33968         Pass the thread ID instead of the MonoThread pointer to the thread
33969         start and attach callbacks.  This change is required, because the
33970         jit thread start callback must be called _before_ the Thread
33971         object can be created.
33972         
33973         (mono_thread_init): Removed much object creation code that is no
33974         longer needed.  No managed code is called from here now.
33975
33976         * object.c (mono_runtime_exec_managed_code): Create a subthread
33977         for Main, and call back to the runtime to use it.
33978         Set the exit code when Main exits.
33979
33980         * gc.c: Make sure domain finalisation happens in a subthread.
33981         Re-enable threaded GC, fixing bug 31333 (again).
33982
33983         * environment.c: System.Environment internall calls (so far just
33984         ExitCode is here, the others are still in icall.c)
33985
33986         * appdomain.c (mono_runtime_cleanup): All threads running managed
33987         code should have finished before mono_runtime_cleanup() is
33988         reached, so no need to clean up threads.
33989
33990 2003-01-22  Martin Baulig  <martin@ximian.com>
33991
33992         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33993         `gpointer func' arguments.      
33994         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33995         but added `MonoThread *thread' argument.
33996         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33997
33998         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33999         and pass it to the mono_thread_start_cb callback.
34000         (mono_install_thread_callbacks): New public function to install a
34001         set of callbacks which are set by the debugger.
34002         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
34003
34004 2003-01-22  Martin Baulig  <martin@ximian.com>
34005
34006         * Makefile.am: Install debug-mono-symfile.h.
34007
34008 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
34009
34010         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
34011
34012 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
34013
34014         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
34015         * class.c (mono_ptr_class_get): correctly set access levels of pointers
34016         (mono_array_class_get): correctly set access levels of arrays
34017
34018 2003-01-20      Patrik Torstensson
34019         * image.h (MonoAssemblyName): changed major, minor, build, revision
34020         from signed to unsigned.
34021
34022 2003-01-20  sean kasun <skasun@azstarnet.com>
34023
34024         * reflection.c (load_cattr_value): Now this handles
34025         MONO_TYPE_SZARRAY.  Fixes bug #35629
34026
34027 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
34028
34029         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
34030         integer value
34031
34032 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34033
34034         * decimal.c: fixed bug #26056.
34035
34036 2003-01-17  Martin Baulig  <martin@ximian.com>
34037
34038         * gc.c: Raise an ExecutionEngineException instead of using g_error().
34039
34040 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34041
34042         * exception.[ch]:
34043         (mono_get_exception_type_initialization): new function.
34044
34045         * object.c: throw a TypeInitializationException when an exception is
34046         thrown invoking the class constructor.
34047
34048 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34049
34050         * reflection.c: fixed attribute reading.
34051
34052 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34053
34054         * icall.c:
34055         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
34056         provided, look for the type in the calling assembly and then in
34057         mscorlib; if the assembly name is provided, only try that one.
34058
34059 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
34060
34061         * object.c: register the vtable before there is a chance it's
34062         queried again recursively.
34063
34064 2003-01-13  Duncan Mak  <duncan@ximian.com>
34065
34066         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
34067         gc-internal.h. 
34068         
34069 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
34070
34071         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
34072
34073 2003-01-11  Martin Baulig  <martin@ximian.com>
34074
34075         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
34076         this to 20 for the release.
34077
34078 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
34079
34080         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
34081
34082         * loader.c (mono_method_get_marshal_info): bug fix
34083
34084         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
34085         structures with explicit layout
34086
34087 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34088
34089         * profiler.c: made the output more readable (and sorted). 
34090         Added caller information for the allocation profiler.
34091
34092 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
34093
34094         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
34095
34096 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34097
34098         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
34099         to get value types.
34100         
34101 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
34102
34103         * object.c, profiler.h, profiler.c, profiler-private.h:
34104         Added object allocation profiler.
34105
34106 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
34107
34108         * reflection.h, reflection.c: handle global methods.
34109         Compress blob entries.
34110
34111 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
34112
34113         * marshal.c: fix compilation.
34114
34115 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
34116
34117         * loader.c (mono_method_get_marshal_info): impl.
34118
34119         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
34120
34121 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34122
34123         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
34124         for reference types.
34125
34126 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
34127
34128         * loader.c: fixed off by one error in loaded parameter names.
34129
34130 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
34131
34132         * marshal.c (mono_marshal_get_icall_wrapper): like
34133         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
34134         instead of a MonoMethod.
34135
34136 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34137
34138         * decimal.c: fixed bug #36537.
34139
34140 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
34141
34142         * marshal.c: throw a missing method exception if a
34143         P/Invoke method is not found.
34144
34145 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34146
34147         * icall.c: allow a null this for constructors.
34148
34149 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
34150
34151         * icall.c: raise the proper exceptions if the arguments to the
34152         internal Invoke are incorrect.
34153
34154 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
34155
34156         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
34157
34158 2003-01-03  Martin Baulig  <martin@ximian.com>
34159
34160         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34161
34162 2002-12-31  Martin Baulig  <martin@ximian.com>
34163
34164         * debug-mono-symfile.c: Completely rewrote the type section.
34165         Instead of using individual malloc()ed fields, we use one big
34166         continuous memory area and offsets into this area.
34167         See the comments in the source code for details.
34168
34169 2002-12-30  Martin Baulig  <martin@ximian.com>
34170
34171         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
34172
34173 2002-12-30  Martin Baulig  <martin@ximian.com>
34174
34175         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
34176         line number table in this data blob instead of using an external
34177         pointer.
34178
34179 2002-12-28  Martin Baulig  <martin@ximian.com>
34180
34181         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34182
34183 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
34184
34185         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
34186         as a boxed return type.
34187
34188 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
34189
34190         * appdomain.c
34191         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
34192         g_build_filename to properly get separators on the filename created.
34193
34194         * object.h: Small change, introduce MonoMarshalByRefObject to
34195         track the layout of that structure in the C# universe as we make
34196         changes there.
34197
34198 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
34199
34200         * object.c: removed assert to allow static fields on interfaces.
34201         * loader.c: a TypeSpec may be used for any type, not just arrays.
34202
34203 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34204
34205         * class.c, class.h: added mono_class_array_element_size ().
34206         Ignore static methods in interfaces.
34207
34208 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34209
34210         * threads.c: fixed the build under cygwin.
34211
34212 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
34213
34214         * reflection.c: handle nullref constants. Allocate keys for
34215         reflection handles with the GC.
34216
34217 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34218
34219         * threads.c, threads.h: added mono_thread_get_abort_signal()
34220         to get a suitable signal for thread abort.
34221
34222 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34223
34224         * metadata.c: fix handling of ExportedType table.
34225
34226 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34227
34228         * icall.c: added WriteWindowsDebugString internal call.
34229
34230 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34231
34232         * reflection.h: added fields to match C# implementation.
34233
34234 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34235
34236         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
34237
34238 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
34239
34240         * gc.h, gc-internal.h: Rename header for GC internal calls to
34241         gc-internal.h from gc.h as to not clash with Boehm GC having its
34242         header installed as <gc.h> in outside include paths.
34243         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
34244         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
34245
34246 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34247
34248         * icall.c: assign minor, build and revision in FillName.
34249
34250 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
34251
34252         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
34253         Added support for running code generated by Reflection.Emit.
34254
34255 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34256
34257         * appdomain.c: check for NULL argument in LoadFrom.
34258
34259 2002-12-10  Dick Porter  <dick@ximian.com>
34260
34261         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
34262
34263 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34264
34265         * appdomain.c: fix buglet when building exe file name.  Handle full
34266         assembly name (needed after latest changes to AssemblyName).
34267         * image.c:
34268         (mono_image_close): free some hashtables.
34269
34270 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34271
34272         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34273         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34274         on some systems (redhat 7.3) 
34275
34276 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34277
34278         * threads.c: delete the critical section of a sync block,
34279         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34280
34281 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34282
34283         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34284
34285 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34286
34287         * appdomain.[ch]: handle the assembly preload event to try loading the
34288         assemblies using the paths we have in the current domain.
34289
34290         * assembly.[ch]: created an assembly preload hook that is called to try
34291         loading the assembly by other means that the ones provided here.
34292
34293         * domain.c: initialize the domain search path.
34294
34295         From now on, assemblies (TODO: except corlib and System) are loaded
34296         according to these rules when using mono_assembly_load ():
34297
34298                 1. It tries to load the assembly from the ApplicationBase
34299                 of the current domain appending .dll and .exe (TODO: have to
34300                 try loading from name/name.dll and name/name.exe).
34301
34302                 2. It tries the search path specified in PrivateBinPath for the
34303                 current domain (if any).
34304
34305                 3. Previous behavior.
34306
34307 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34308
34309         * icall.c: implemented GetInterfaceMap() related icall.
34310         * domain.c, loader.h: load MethodInfo in mono_defaults.
34311
34312 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34313
34314         * gc.c: disable the finalizer thread for now, untill all the issues
34315         with it are resolved.
34316
34317 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34318
34319         * string-icalls.c: handle embedded nulls in string ctor when the
34320         length is specified.
34321
34322 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34323
34324         * class.c: look for explicit interface implementation in parent
34325         classes, too.
34326
34327 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34328
34329         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34330
34331 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34332
34333         * gc.c: protect handles with a critical section.
34334
34335 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34336
34337         * icall.c:
34338         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34339         parameters. If no assembly specified, try getting the type from all
34340         the assemblies in the current domain, else, load the assembly and get
34341         the type from it.
34342
34343 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34344
34345         * marshal.c: applied patch from Aleksey Demakov that fixes
34346         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34347
34348 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34349
34350         * icall.c: fixed get_location.
34351
34352 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34353
34354         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34355         declarations to make it work with older gcc. 
34356
34357         * loader.c (mono_get_method): set signature->pinvoke for native calls
34358
34359 2002-11-20  Dick Porter  <dick@ximian.com>
34360
34361         * threads.c (mono_thread_init): Set the main thread's handle
34362
34363 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34364
34365         * gc.c: allow compilation without GC support. Changed to match the
34366         mono coding style.
34367
34368 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34369
34370         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34371
34372 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34373
34374         * reflection.c: set a public key token on the core assemblies.
34375
34376 2002-11-18  Dick Porter  <dick@ximian.com>
34377
34378         * threads.c: Split out some thread initialisation so that other
34379         files can set the start callback function.
34380
34381         * gc.c: Run finalisers in a separate thread, to avoid stack
34382         overflow.  Fixes bug 31333.
34383
34384         * appdomain.c: Set up GC finalisation thread.
34385
34386         * reflection.c: 
34387         * object.c: 
34388         * domain.c: Use gc.h macros for GC_malloc
34389         
34390 2002-11-15  Dick Porter  <dick@ximian.com>
34391
34392         * threadpool.c: 
34393         * threads.c:
34394         * appdomain.c: Removed mono_runtime_init_with_attach(),
34395         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34396         merging the extra parameter with the existing function.  Removed
34397         unneeded code in mono_thread_attach().
34398
34399 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34400
34401         * image.c (mono_image_loaded_by_guid): a method to get loaded
34402         images by guid. 
34403         (load_metadata_ptrs): we store the guid as string.
34404
34405 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34406
34407         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34408
34409         * metadata.c (mono_guid_to_string): imported method form Zoltan
34410         Varga (slightly modified)
34411
34412         * assembly.c (mono_assembly_open): load precompiled code
34413
34414         * loader.h (MonoMethod): we store the method token for use in the
34415         aot compiler. 
34416
34417 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34418
34419         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34420         the hook function called when an assembly is loaded.
34421         
34422         * domain.c: Modified file.
34423         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34424
34425         Fixes bug #33196.
34426
34427 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34428
34429         * reflection.c: Map PEFileKind to the value expected by the WinNT
34430         image loader. 
34431
34432 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34433
34434         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34435         Read until the buffer is filled completely.
34436
34437 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34438
34439         * icall.c: implemented MonoType.InternalGetEvent ().
34440
34441 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34442
34443         * appdomain.c: implemented InitAppDomainSetup. Delayed
34444         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34445         the entry_assembly.
34446
34447         * assembly.c: base_dir is now an absolute path ending with
34448         G_DIR_SEPARATOR.
34449
34450         * icall.c: modified get_location according to the above changes.
34451
34452         * object.c: init AppDomain.SetupInformation for the default domain after
34453         we have the entry assembly.
34454
34455         * domain.c: when unloading a domain, setup = NULL.
34456
34457 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34458
34459         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34460
34461 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34462
34463         * object.h, object.c: introduced mono_object_get_virtual_method ()
34464         to lookup the method invoked on an object when a callvirt is done on
34465         a method.
34466         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34467
34468 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34469
34470         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34471         current domain when loaded an assembly and failed to load it.
34472
34473         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34474
34475 2002-10-31  Dick Porter  <dick@ximian.com>
34476
34477         * icall.c: 
34478         * file-io.h: 
34479         * file-io.c: Return the error status in a parameter, as the
34480         GetLastError() value has long since been blown away if we try and
34481         look it up in a subsequent internal call invocation.  Delete the
34482         GetLastError() internal call, because it's useless.
34483
34484 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34485
34486         * class.[ch]: added cast_class to fix bug 29517
34487
34488 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34489
34490         * marshal.c: create valid IL code in the filter clause:
34491         the new JIT is less forgiving:-)
34492
34493 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34494
34495         * icall.c: removed get_property internal call.
34496
34497 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34498
34499         * appdomain.h domain.c: Added an ID to appdomains.
34500         
34501         * threads.c threads.h icall.c: Implement icall
34502         Thread:GetDomainID(), and remove unused icall 
34503         CurrentThreadDomain_internal.
34504
34505 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34506
34507         * icall.c: Don't recurse through the base types in GetConstructor.
34508         Fixes bug #32063. 
34509
34510 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34511
34512         * mempool.h, mempool.c: added mono_mempool_empty() and
34513         mono_mempool_stats().
34514
34515 2002-10-23  Dick Porter  <dick@ximian.com>
34516
34517         * file-io.c: 
34518         * file-io.h: 
34519         * icall.c: Added MonoIO.GetFileType internal call
34520
34521 2002-10-17  Dick Porter  <dick@ximian.com>
34522
34523         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34524         delegate semaphore before waiting for all threads to finish,
34525         because new threads can also call async delegates.  Fixes bug
34526         32004.
34527
34528         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34529         of 3 seconds, in case another async job is queued.  (This part is
34530         needed because the bug fix reintroduced the 3s exit lag.)  This
34531         makes the mono_runtime_shutdown flag superfluous.
34532
34533 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34534
34535         * reflection.c: include ehader size in method section headers.
34536         Really check for suplicated modules entries.
34537
34538 2002-10-17  Martin Baulig  <martin@gnome.org>
34539
34540         * debug-mono-symfile.c: Added back support for locals.
34541
34542 2002-10-14  Martin Baulig  <martin@gnome.org>
34543
34544         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34545         MONO_TYPE_VOID.
34546
34547 2002-10-14  Martin Baulig  <martin@gnome.org>
34548
34549         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34550         mono_class_get() instead of looking in the class cache. 
34551
34552 2002-10-13  Martin Baulig  <martin@gnome.org>
34553
34554         * debug-mono-symfile.c: Set version number to 28, include the
34555         signature in method names.
34556
34557 2002-10-13  Martin Baulig  <martin@gnome.org>
34558
34559         * debug-mono-symfile.h: Set version number to 27.
34560
34561 2002-10-11  Martin Baulig  <martin@gnome.org>
34562
34563         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34564
34565 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34566
34567         * metadata.c, metadata.h: added helper function to allocate signatures.
34568
34569 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34570
34571         * icall.c: added internal call to get the location of machine.config.
34572
34573 2002-10-08  Martin Baulig  <martin@gnome.org>
34574
34575         * debug-mono-symfile.c: Ignore classes with a pending init for the
34576         moment.
34577
34578 2002-10-03  Dick Porter  <dick@ximian.com>
34579
34580         * threads.c: Freebsd pthread_t is a pointer
34581
34582 2002-10-03  Dick Porter  <dick@ximian.com>
34583
34584         * socket-io.c: Implemented GetHostName_internal
34585
34586 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34587
34588         * mono-config.c:
34589         (mono_config_parse_file): don't leak the text.
34590
34591 2002-10-02  Martin Baulig  <martin@gnome.org>
34592
34593         * debug-mono-symfile.c: Added support for methods.
34594
34595 2002-10-01  Martin Baulig  <martin@gnome.org>
34596
34597         * debug-mono-symfile.c: Don't emit methods and line numbers for
34598         the dynamic symbol file, just write the type table.  We can easily
34599         have an external helper program which creates a symbol file for an
34600         IL file.        
34601
34602 2002-10-01  Dick Porter  <dick@ximian.com>
34603
34604         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34605         Only add the handle to the cleanup array when we're about to
34606         launch the thread.  Bug 31425 deadlocked when the test was run on
34607         mono under w32.
34608
34609 2002-10-01  Martin Baulig  <martin@gnome.org>
34610
34611         * debug-mono-symfile.c: Added support for properties.
34612
34613 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34614
34615         * reflection.c: unaligned store fix from Mark Crichton
34616         <crichton@gimp.org>.
34617
34618 2002-09-27  Martin Baulig  <martin@gnome.org>
34619
34620         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34621         New interncall.
34622
34623 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34624
34625         * assembly.h, assembly.c: use a sane API to hook into the assembly
34626         loading process instead of a useless special-purpouse hack
34627         (ngen needs a hook, too, for example).
34628
34629 2002-09-27  Dick Porter  <dick@ximian.com>
34630
34631         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34632         io-layer can set up some process handle info.  Not needed on w32,
34633         but doesn't hurt either.
34634
34635         * process.c: Pass the program name in the second parameter to
34636         CreateProcess, so the path is searched.  Include the working
34637         directory. Implemented process name, process enumeration, and some
34638         process detail internal calls.
34639         
34640         * icall.c: Added internal calls for process lookup, and some
34641         process details
34642
34643 2002-09-26  Martin Baulig  <martin@gnome.org>
34644
34645         * assembly.c (mono_install_open_assembly_hook): New global
34646         function to install a function to be invoked each time a new
34647         assembly is loaded.
34648         (mono_assembly_open): Run this callback function if set.
34649
34650         * debug-mono-symfile.c: Put back line numbers for the dynamic
34651         symbol file and also record the .il file as source file.  This
34652         allows us to install the temporary symbol file as `file.dbg' just
34653         like a compiler-generated one.
34654
34655 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34656
34657         * Corrected typo in gc.c (BOHEM vs BOEHM).
34658
34659 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34660
34661         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34662         GetProperties. Also avoid calling g_slist_length in GetProperties and
34663         GetMethods.
34664
34665 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34666
34667         * reflection.c: avoid unaligned stores (bug spotted by
34668         Mark Crichton  <crichton@gimp.org>).
34669
34670 2002-09-25  Martin Baulig  <martin@gnome.org>
34671
34672         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34673         instead of guint64 for addresses and added prologue/epilogue info.
34674
34675 2002-09-25  Martin Baulig  <martin@gnome.org>
34676
34677         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34678         store line number info.  For the dynamic symbol file, we only need
34679         to provide the JIT generated dynamic line number info for the dynamic
34680         symbol file.
34681
34682 2002-09-25  Martin Baulig  <martin@gnome.org>
34683
34684         * debug-mono-symfile.h: Incremented version number.
34685
34686 2002-09-24  Martin Baulig  <martin@gnome.org>
34687
34688         * class.c (mono_debugger_class_init_func): New global function
34689         pointer variable.
34690         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34691         call it.
34692
34693         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34694         function.  This is called via the mono_debugger_class_init_func
34695         hook to add all types to the dynamic type table.
34696         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34697         from its metadata token.
34698
34699         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34700         New interncall for the debugger.
34701
34702 2002-09-24  Nick Drochak <ndrochak@gol.com>
34703
34704         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34705         before using it in case it is null.
34706         
34707 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34708
34709         * metadata.c: allow custom modifiers in local var signatures
34710         (bug spotted by Zoltan Varga).
34711
34712 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34713
34714         * class.c: deal with the <Module> class that may have a NULL vtable.
34715         Eliminate warnings.
34716
34717 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34718
34719         * image.c, image.h: more strong name helpers.
34720         * monosn.c: more work: convert pem keys to cryptoapi format.
34721
34722 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34723
34724         * string-icalls.c: speedup IndexOf.
34725
34726 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34727
34728         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34729
34730 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34731
34732         * icall.c: cleanup: use mono_object_domain ().
34733
34734 2002-09-23  Martin Baulig  <martin@gnome.org>
34735
34736         * debug-mono-symfile.c: Improved type support.
34737
34738 2002-09-22  Martin Baulig  <martin@gnome.org>
34739
34740         * debug-mono-symfile.c: Added support for reference types and strings.
34741
34742 2002-09-22  Martin Baulig  <martin@gnome.org>
34743
34744         * debug-mono-symfile.c: Started to work on the type table.
34745
34746 2002-09-21  Martin Baulig  <martin@gnome.org>
34747
34748         * debug-mono-symfile.c: Largely reworked the symbol table format.
34749         The symbol table is now incrementally updated each time a new
34750         method is added.  We're now also using our own magic and version
34751         so that you don't need to recompile all your classes if the
34752         dynamic table changes.
34753         (mono_debug_update_mono_symbol_file): Removed.
34754         (mono_debug_symfile_add_method): New function to add a method.
34755
34756 2002-09-21  Martin Baulig  <martin@gnome.org>
34757
34758         * icall.c
34759         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34760         New interncall.
34761
34762         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34763         New interncall to get a method from its metadata token.
34764
34765 2002-09-21  Martin Baulig  <martin@gnome.org>
34766
34767         * debug-mono-symfile.c: Create type table.
34768
34769 2002-09-20  Martin Baulig  <martin@gnome.org>
34770
34771         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34772
34773 2002-09-20  Martin Baulig  <martin@gnome.org>
34774
34775         * debug-mono-symfile.c: Provide information about params and locals.
34776
34777 2002-09-20  Martin Baulig  <martin@gnome.org>
34778
34779         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34780         New interncall.
34781
34782         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34783         interncall to get a method from its metadata token.
34784
34785 2002-09-20  Martin Baulig  <martin@gnome.org>
34786
34787         * debug-mono-symfile.c: Added a few checks for method->header
34788         being non-NULL.  This should never happen, but for the moment
34789         let's use a g_warning() rather than a g_assert().
34790
34791 2002-09-19  Mark Crichton  <crichton@gimp.org>
34792
34793         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34794         even if support for it isn't present.  Added an #ifdef to fix this.
34795
34796         * socket-io.c: Added checks back for Solaris support.
34797
34798 2002-09-19  Martin Baulig  <martin@gnome.org>
34799
34800         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34801         changes in the symbol file format.
34802
34803 2002-09-18  Martin Baulig  <martin@gnome.org>
34804
34805         * debug-mono-symfile.c: Set version number to 21.
34806
34807 2002-09-18  Dick Porter  <dick@ximian.com>
34808
34809         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34810         on netbsd.  Fixes bug 30051.
34811
34812 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34813
34814         * reflection.c:
34815         (set_version_from_string): little fix.
34816
34817 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34818
34819         * monosn.c, Makefile.am: added strong name utility.
34820         * reflection.h, reflection.c: implemented delayed signing,
34821         locale, version and hash id assembly attributes.
34822
34823 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34824
34825         * loader.c, metadata.c: load param attributes in signatures.
34826
34827 2002-09-16  Martin Baulig  <martin@gnome.org>
34828
34829         * debug-mono-symfile.c: Added string table with all method names.
34830
34831 2002-09-14  Martin Baulig  <martin@gnome.org>
34832
34833         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34834         fast method lookup.
34835
34836 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34837
34838         * reflection.c: record the public key token of referenced assemblies.
34839
34840 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34841
34842         * image.c, image.h: added functions to get the strong name and the
34843         public key of an assembly.
34844         * pedump.c: use them.
34845
34846 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34847
34848         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34849
34850 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34851
34852         * marshal.c (mono_marshal_get_managed_wrapper): Added
34853         MONO_TYPE_BOOLEAN 
34854
34855 2002-09-11  Martin Baulig  <martin@gnome.org>
34856
34857         * gc.c: Call GC_unregister_disappearing_link() on all links when
34858         finalizing them, this is necessary to aviod a crash in boehm's
34859         finalize handler.
34860
34861 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34862
34863         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34864         nick@chemlab.org.
34865
34866 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34867
34868         * icall.c: implemented MonoType::Module.
34869         * reflection.c, reflection.h: mono_module_get_object () from
34870         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34871
34872 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34873
34874         * icall.c: ignore overridden methods in GetMethods ().
34875         Fix for FieldInfo::SetValue().
34876         * object.c: handle float/double in runtime invoke.
34877
34878 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34879
34880         * object.c: allow a constructor to be called again on an object.
34881
34882 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34883
34884         * class.h, class.c: move field layout code to it's own function and
34885         export it. Get an interface id earlier. Move fields in MonoClass
34886         so they are more cache friendly and align the bitfields.
34887         * loader.c: temporary handle get_param_names() for a runtime method.
34888         * reflection.c, reflection.h: more code to handle runtime creation of
34889         types.
34890
34891 2002-09-09  Martin Baulig  <martin@gnome.org>
34892
34893         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34894         signature with the pinvoke field being set for the actual call.
34895
34896 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34897
34898         * icall.c: removed some unused icalls. Start of map of glib charsets
34899         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34900
34901 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34902
34903         * debug-helpers.c: break infinite loop (found and fixed by
34904         Holger Arnold <harnold@gmx.de>).
34905
34906 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34907
34908         * icall.c: target may be null in create_delegate.
34909
34910 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34911
34912         * marshal.c: handle a boolean return type.
34913
34914 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34915
34916         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34917
34918 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34919
34920         * gc.c: fix weakreferences.
34921
34922 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34923
34924         * icall.c: added icall to get default codepage.
34925
34926 2002-09-03  Dick Porter  <dick@ximian.com>
34927
34928         * threads.h: 
34929         * threads.c: Use MonoThread instead of MonoObject where
34930         apropriate.
34931
34932         Store running thread objects in a hash table, so that we have all
34933         the info to hand when waiting for them to finish
34934         (means we don't need OpenThread() any more, so mingw builds should
34935         be fully functional again.)
34936
34937         * verify.c:
34938         * object.h: Added thread ID to MonoThread
34939
34940 2002-09-03  Martin Baulig  <martin@gnome.org>
34941
34942         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34943
34944 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34945
34946         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34947
34948 2002-09-03  Martin Baulig  <martin@gnome.org>
34949
34950         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34951         argument to store the end address of the disassembled instruction.
34952
34953         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34954         here from debug-symfile.h.
34955         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34956         JIT into this struct.
34957         (MonoSymbolFile): Added `char *image_file' field.
34958         (MonoDebugGetMethodFunc): Removed.
34959         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34960         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34961         (mono_debug_find_method): New method.
34962
34963         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34964         create a full symbol file.
34965         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34966         and static symbol files.
34967         (mono_debug_find_method): The symbol file keeps an internal method hash,
34968         call this to get a MonoDebugMethodInfo from a MonoMethod.
34969
34970         * debug-symfile.[ch]: Removed.
34971
34972 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34973
34974         * image.c (do_mono_image_open): Remove linker version check.
34975
34976 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34977
34978         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34979         wrappers for instance methods.
34980         
34981 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34982
34983         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34984
34985 2002-08-28  Dick Porter  <dick@ximian.com>
34986
34987         * Makefile.am: Export HOST_CC for w32 builds
34988
34989 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34990
34991         * file-io.c process.c: MonoString are null terminated, no
34992         need for mono_string_to_utf16() anymore.
34993
34994 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34995
34996         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34997
34998 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34999
35000         * icall.c, reflection.h: speedup System.MonoType.
35001
35002 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35003
35004         * reflection.c: allow null as the value of a string argument in
35005         custom attributes constructors.
35006
35007 2002-08-27  Martin Baulig  <martin@gnome.org>
35008
35009         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
35010         `trampoline_address' field.
35011
35012 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
35013
35014         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
35015         check (fixes bug #29486) 
35016
35017 2002-08-27  Martin Baulig  <martin@gnome.org>
35018
35019         * debug-mono-symfile.c: Changed the file format in a way that allows us
35020         open it read-only and to use a specially malloced area for all the
35021         dynamic data.  We can now also generate a symbol file on-the-fly if we're
35022         debugging IL code and there is no MCS generated symbol file for it.
35023
35024 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35025
35026         * object.c: added a define for a good string and array
35027         creation speedup (not enabled by default because we need to deal with
35028         the synch stuff).
35029
35030 2002-08-26  Martin Baulig  <martin@gnome.org>
35031
35032         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
35033         function to create a dynamic symbol file.  This is used by the
35034         debugger to create a symbol file for IL code on-the-fly.
35035
35036 2002-08-26  Martin Baulig  <martin@gnome.org>
35037
35038         * loader.c (mono_lookup_pinvoke_call): Include the error message
35039         from g_module_error() in the error message.
35040
35041 2002-08-24  Martin Baulig  <martin@gnome.org>
35042
35043         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
35044         function to update the symbol file.  The symbol file is mmap()ed
35045         writable, but private.  This allows us to install the symbol file
35046         together with the assembly.
35047
35048 2002-08-24  Martin Baulig  <martin@gnome.org>
35049
35050         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
35051         but they can read the new symbol file format which mcs is now creating.
35052
35053         * debug-symfile.c (mono_debug_find_source_location): Moved to
35054         debug-mono-symfile.c; this is now operating on the new symbol file.
35055
35056 2002-08-23  Martin Baulig  <martin@gnome.org>
35057
35058         * debug-helpers.c (mono_method_desc_from_method): New function to get
35059         a MonoMethodDesc from a MonoMethod.
35060
35061 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
35062
35063         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
35064         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
35065
35066 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35067
35068         * string-icalls.[ch]: make helper methods static.
35069
35070 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35071
35072         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
35073         types to it and to SetValueInternal.
35074
35075         * object.c: Moved handle_enum label to its proper place. This was the
35076         f... bug! ;-)
35077
35078         This time i compiled mcs and gtk-sharp and they both work.
35079
35080 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35081
35082         * icall.c: reverted partially my previous patch until 
35083         object.c:set_value handles enums correcly.
35084
35085 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35086
35087         * icall.c:
35088         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
35089         (ves_icall_System_Environment_get_MachineName): removed warning when
35090         compiling under cygwin.
35091
35092 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35093
35094         * object.c: fixed field_get_value() for reference types.
35095
35096 2002-08-22  Dick Porter  <dick@ximian.com>
35097
35098         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
35099         Don't free a buffer while it's still needed.  Patch from Jonathan
35100         Liger <Jonathan.liger@wanadoo.fr>
35101
35102 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
35103
35104         * icall.c (ves_icall_System_Environment_get_Platform): Add new
35105         internal call.
35106
35107 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
35108
35109         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
35110         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
35111
35112         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
35113         we call unmanaged code which throws exceptions.
35114
35115 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35116
35117         * appdomain.h: added per-domain entry_assembly.
35118         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
35119         arguments.
35120         * icall.c: Assembly::GetEntryAssembly icall.
35121         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
35122         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
35123
35124 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35125
35126         * appdomain.h, gc.c: added mono_domain_finalize ().
35127
35128 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35129
35130         * object.c:
35131         (mono_print_unhandled_exception): changed g_warning by g_printerr
35132         because g_log has a 1024 characters limit (yeah, i got a big stack
35133         trace). Don't print exception name, that should be in ToString 
35134         returned string.
35135
35136 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35137
35138         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
35139         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
35140
35141 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35142
35143         * object.c:
35144         (mono_print_unhandled_exception): after previous commit, i realized
35145         that MS calls ToString on the exception. I changed this function to
35146         do that. This way we get stack_trace for free.
35147
35148 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35149
35150         * object.c:
35151         (mono_print_unhandled_exception): invoke Message property instead of
35152         getting 'message' field from Exception. Don't allocate memory for
35153         'trace' and 'message' if not needed.
35154
35155 2002-08-18  Dick Porter  <dick@ximian.com>
35156
35157         * unicode.c: Fix asserts to match Encoder.cs checks
35158
35159 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35160
35161         * marshal.c: fix unaligned store issue and a few wrong
35162         opcode argument types.
35163
35164 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35165
35166         * icall.c: added GetUninitializedObjectInternal internal call.
35167
35168 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
35169
35170         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
35171         to the right domain.
35172
35173 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
35174
35175         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
35176
35177         * class.c (class_compute_field_layout): set blittable to false for Strings
35178
35179         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
35180
35181 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35182
35183         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
35184         first chunk of code to create types at runtime. Code to
35185         handle ReflectedType/DeclaringType. Make reflection handles
35186         domain specific.
35187
35188 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35189
35190         * class.c: set correct name in arrays.
35191
35192 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
35193
35194         * appdomain.c (mono_domain_transfer_object): make it work with
35195         valuetypes. bug fixes.
35196
35197 2002-08-12  Dick Porter  <dick@ximian.com>
35198
35199         * object.h: Rename some parameters to avoid c++ keywords (Patch
35200         from Joseph Wenninger <kde@jowenn.at>)
35201
35202 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
35203
35204         * icall.c: added icall to implement Assembly.GetFile*.
35205
35206 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35207
35208         * reflection.h, reflection.c: code to embed managed resources.
35209
35210 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35211
35212         * class.c: move all the type size stuff into
35213         class_compute_field_layout().
35214
35215 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35216
35217         * class.c: ensure enums have always the correct instance size.
35218         * unicode.c: remove wrong assert.
35219
35220 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35221
35222         * assembly.c: fix mem corruption issue.
35223         * image.h, image.c: added mono_image_get_resource () to access
35224         managed resources.
35225         * icall.c: implemented Assembly.EntryPoint property and some
35226         Managed Resources related internalcalls.
35227
35228
35229 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35230
35231         * image.c, image.h: impemented mono_image_get_entry_point ().
35232         * appdomain.c: use mono_image_get_entry_point.
35233
35234 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35235
35236         * reflection.c: support the object type argument when loading
35237         custom attributes.
35238
35239 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
35240
35241         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
35242         String as return type.
35243
35244 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
35245
35246         * reflection.c: fix encoding of named args for custom attrs to match
35247         the ms implementation. Read them back when instantiating custom
35248         attributes.
35249
35250 2002-08-02  Radek Doulik  <rodo@ximian.com>
35251
35252         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
35253         by Dietmar as quick fix
35254         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
35255         16 as stack size, used on more places as quick fix before Dietmar
35256         will fix it properly
35257
35258 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35259
35260         * object.h, object.c: added accessors for fields and properties.
35261
35262 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35263
35264         * class.c, class.h: made mono_class_get_field_from_name ()
35265         loop on parent types.
35266         Added mono_class_get_property_from_name ().
35267
35268 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35269
35270         * class.c, class.h: move the code to setup the type vtable in its own
35271         function so that it can be reused also for types created at runtime.
35272         Eliminate the "class" identifier from the header file.
35273         * reflection.c: setup the vtable for enums so that we can create
35274         objects for use in SetConstant ().
35275
35276 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35277
35278         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35279         instead of the delegate itself as this pointer (bug #28383)
35280
35281 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35282
35283         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35284         conversions.
35285
35286 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35287
35288         * loader.c: don't set the pinvoke bit on icalls.
35289
35290 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35291
35292         * debug-helpers.c (mono_method_full_name): only print a number to
35293         indicate wrapper type (so that the output is more readable in traces).
35294
35295 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35296
35297         * class.c (mono_class_init): include method override patch from Paolo
35298
35299 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35300
35301         * icall.c: fixed GetTypeCode().
35302
35303 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35304
35305         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35306         use real delegate invoke function to make it work with multicast
35307         delegates (fix bug# 28291).
35308
35309 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35310
35311         * object.c: load constant strings.
35312
35313 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35314
35315         * reflection.c: no magic numbers.
35316         * tabledefs.h: security action enum.
35317
35318 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35319
35320         * assembly.c: fix possible memory corruption.
35321
35322 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35323
35324         * reflection.h, reflection.c: added support for linking resources.
35325         * verify.c: check we have an updated corlib.
35326
35327 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35328
35329         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35330         string arrays.
35331         (mono_marshal_string_array): null terminate unmanaged string arrays.
35332         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35333
35334 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35335
35336         * icall.c: Type.GetType () can now return also types from the
35337         calling assembly.
35338
35339 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35340
35341         * loader.h, loader.c: stack walking support.
35342         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35343         GetCallingAssembly.
35344
35345 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35346
35347         * marshal.c: added optimisations for blittable types 
35348
35349         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35350         (mono_class_setup_mono_type): set blittable attribute for single
35351         and double.
35352
35353         * marshal.c (mono_string_utf8_to_builder): impl.
35354         (mono_string_builder_to_utf8): impl.
35355         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35356
35357 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35358
35359         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35360         (mono_marshal_get_managed_wrapper): impl. byref types
35361
35362 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35363
35364         * icall.c:
35365         (search_method): don't display debug message. 
35366
35367 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35368
35369         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35370
35371 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35372
35373         * appdomain.c: set the missing filename when throwing exception.
35374
35375 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35376
35377         * metadata.c (mono_type_size): code cleanup
35378         (mono_type_stack_size): removed some test code
35379
35380 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35381
35382         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35383         mono_get_exception_file_not_found now.
35384
35385         * exception.c (mono_exception_from_name_two_strings): New version
35386         that will call a constructor with two string arguments. 
35387         (mono_get_exception_file_not_found): New helper routine, used to
35388         report file-not-found errors.
35389
35390 2002-07-20  Dick Porter  <dick@ximian.com>
35391
35392         * process.h:
35393         * process.c: Pass file handles to CreateProcess
35394         
35395         * icall.c:
35396         * file-io.h:
35397         * file-io.c: Implemented CreatePipe
35398
35399 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35400
35401         * metadata.c (mono_get_param_info): set alignment for value types
35402
35403 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35404
35405         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35406         Constify mono_domain_assembly_open().
35407         * loader.c: handle null namespace in icalls.
35408
35409 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35410
35411         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35412         (emit_str_to_ptr_conv): marshal object as structs
35413
35414         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35415
35416         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35417
35418 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35419
35420         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35421         (mono_marshal_get_native_wrapper): we an now return value types
35422
35423 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35424
35425         * verify.c: more checks implemented.
35426
35427 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35428
35429         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35430         (fix bug #27695)
35431         (mono_marshal_get_native_wrapper): allow byref arguments
35432         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35433         impl. PtrToStringXXX methods
35434         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35435         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35436         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35437         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35438         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35439
35440 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35441
35442         * reflection.c: fix buglet in parsing an assembly name.
35443
35444 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35445
35446         * marshal.c (emit_ptr_to_str_conv): first impl.
35447
35448 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35449
35450         * object.c, class.h: cache the vtable in the class as suggested by
35451         vargaz@freemail.hu (Zoltan Varga).
35452
35453 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35454
35455         * class.h, loader.c: added mono_field_from_token().
35456         * verify.c: first cut of type checking code.
35457
35458 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35459
35460         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35461
35462 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35463
35464         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35465         (fix bug #27782)
35466         (mono_marshal_get_remoting_invoke): impl.
35467         (mono_delegate_begin_invoke): impl.
35468         (mono_mb_emit_save_args): impl.
35469         (mono_delegate_end_invoke): impl.
35470         (mono_marshal_get_delegate_begin_invoke):
35471         (mono_marshal_get_delegate_end_invoke):
35472         (mono_marshal_get_delegate_invoke): generate a special name for
35473         those methods (including the signature) and associate them whith
35474         the delegate class. 
35475
35476 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35477
35478         * reflection.[ch]: 
35479         (mono_reflection_type_from_name): now it has a MonoImage parameter
35480         which is used as the default image to search the type in. If the image
35481         is NULL or getting the type from it fails, it defaults to corlib.
35482
35483         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35484         new parameter.
35485
35486 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35487
35488         * reflection.c: update the parameter table index.
35489
35490 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35491
35492         * domain.c: don't include the mark byte in the string hash.
35493
35494 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35495
35496         * icall.cs: icall for Type.GetTypeCode ().
35497         * verify: a couple of fixes and disabled local initialization checks.
35498
35499 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35500
35501         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35502
35503         * debug-helpers.c (mono_method_full_name): print the type of the
35504         runtime wrapper
35505
35506         * metadata.c (mono_signature_hash): a hash function for signatures
35507         (mono_signature_hash): better hash algorithm
35508
35509         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35510
35511         * debug-helpers.c (mono_method_full_name): this can now generate
35512         method names with signatures
35513
35514         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35515         method dont have this pointers.
35516
35517 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35518
35519         * reflection.c: fixup typebuilder tokens.
35520         * image.c: fix buglet.
35521         * marshal.h: remove whitespace.
35522         * metadata.h, metadata.c: reinstate code that was removed.
35523         * verify.c: handle catch directives and fix another couple of bugs.
35524
35525 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35526
35527         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35528         (mono_marshal_get_native_wrapper): make it comp. with the old code
35529         (mono_marshal_get_native_wrapper): support boolean
35530         (mono_marshal_get_managed_wrapper): support more types
35531
35532 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35533
35534         * class.c (class_compute_field_layout): compute class->blittable attribute.
35535
35536 2002-07-09  Dick Porter  <dick@ximian.com>
35537
35538         * threads.c: Make the thread cleaning up cope with threads that
35539         call ExitThread()
35540
35541 2002-07-08  Radek Doulik  <rodo@ximian.com>
35542
35543         * reflection.c (method_encode_code): use non-translated values to
35544         compute finally_start, this fixes exception handling on ppc, yay!
35545
35546         * decimal.h (struct signscale): fix endianess
35547
35548 2002-07-07  Radek Doulik  <rodo@ximian.com>
35549
35550         * reflection.c: swap box_val and not val
35551
35552 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35553
35554         * reflection.c, reflection.h: handle full assembly info in type name.
35555         Handle Type arguments when loading custom attributes.
35556         * icall.c: updated to use new mono_reflection_type_from_name () method.
35557
35558 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35559
35560         * loader.c:
35561         (method_from_memberref): also print assembly name when method not found.
35562
35563 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35564
35565         * icall.c:
35566         (ves_icall_TypeGetProperties): fixed bug #27473. 
35567
35568 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35569
35570         * reflection.c: display image name and token when cannot find the
35571         .ctor for an attribute.
35572
35573 2002-07-05  Martin Baulig  <martin@gnome.org>
35574
35575         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35576
35577 2002-07-04  Dick Porter  <dick@ximian.com>
35578
35579         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35580         compile on mingw.  This will cause mingw builds to not wait for
35581         subthreads to terminate after the main thread does.  I've lodged a
35582         bug with the mingw developers for them to wrap OpenThread().
35583
35584 2002-07-03  Dick Porter  <dick@ximian.com>
35585
35586         * threads.c: Store thread IDs instead of handles, because
35587         GetCurrentThread() returns a pseudohandle and therefore stores
35588         useless values.  mono_thread_cleanup() continues checking the
35589         array of threads until it is empty, to cope with subthreads
35590         spawning new threads after the main thread has finished.
35591
35592         * profiler.h:
35593         * profiler.c:
35594         * profiler-private.h: Pass the thread ID to thread profiler
35595         functions, instead of a handle
35596
35597 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35598
35599         * verify.c: fixes to make it more usable.
35600         * pedump.c: added --verify code to verify IL code in an assembly.
35601
35602 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35603
35604         * reflection.c: turn errors into warnings to allow compiling corlib.
35605
35606 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35607
35608         * reflection.c: add special cases to compile corlib.
35609
35610 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35611
35612         * reflection.c: handle properties with only a set method.
35613
35614 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35615
35616         * opcodes.h: add enum with opcodes in opval order.
35617
35618 2002-07-01  Dick Porter  <dick@ximian.com>
35619         
35620         * object.h:
35621         * object.c (mono_runtime_run_main): Removed unneeded argument
35622
35623 2002-06-28  Martin Baulig  <martin@gnome.org>
35624
35625         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35626
35627 2002-06-27  Dick Porter  <dick@ximian.com>
35628
35629         * threads.c: Store the handle in both the parent thread and in the
35630         subthread, to minimise the time between starting a new thread and
35631         storing its ID.
35632
35633 2002-06-26  Dick Porter  <dick@ximian.com>
35634
35635         * appdomain.c (mono_runtime_cleanup): Close the socket library
35636         after all the threads have finished, not before
35637
35638 2002-06-26  Martin Baulig  <martin@gnome.org>
35639
35640         * debug-symfile.c (mono_debug_find_source_location): Added
35641         `guint32 *line_number' argument.  If it's not NULL, store the line number
35642         there and return the file name without the line number.
35643
35644 2002-06-25  Dick Porter  <dick@ximian.com>
35645
35646         * icall.c:
35647         * process.h:
35648         * process.c: Process forking and other support functions
35649
35650 2002-06-25  Dick Porter  <dick@ximian.com>
35651
35652         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35653         things dont happen when the image is closed.
35654         (mono_image_lookup_resource): Walk the resource section looking
35655         for a particular entry
35656
35657         * cil-coff.h: PE resource section decoding
35658
35659 2002-06-25  Dick Porter  <dick@ximian.com>
35660         
35661         * assembly.h:
35662         * assembly.c: 
35663         (mono_assembly_foreach): Accessor functions to walk the list of
35664         loaded assemblies
35665         (mono_assembly_set_main):
35666         (mono_assembly_get_main): Process methods need to know which
35667         assembly is the "main" one
35668
35669         * object.c (mono_runtime_run_main): Record the main assembly
35670
35671         * debug-helpers.c: Fix typo
35672
35673 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35674
35675         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35676         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35677
35678 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35679
35680         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35681
35682 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35683
35684         * image.c (do_mono_image_open): Initialize reference count,
35685         otherwise we leak the MonoImage.
35686
35687 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35688
35689         * reflection.c: small tweak to handle self-hosting.
35690
35691 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35692
35693         * reflection.c: fix type name parse code.
35694
35695 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35696
35697         * reflection.c: break out of the loop.
35698         * image.c: special case corlib.
35699
35700 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35701
35702         * reflection.c: add all the custom attrs at the end to ensure the
35703         ctors have been properly initialized when the attributes are defined
35704         in the current assembly.
35705
35706 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35707
35708         * reflection.c: handle correctly multiple-nested types.
35709
35710 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35711
35712         * row-indexes.h: fix typos.
35713         * reflection.c: adjust for typos and fix method_def_or_ref
35714         encoding in MethodImpl table.
35715
35716 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35717
35718         * reflection.c: fix entry point patching (thanks Serge!).
35719
35720 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35721
35722         * verify.c: add check for System.Exception
35723
35724 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35725
35726         * image.c, class.c: minifix for code just c&p'ed.
35727         * reflection.c: warning fix.
35728         * object.h, loader.h, domain.c: load also StringBuilder.
35729
35730 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35731
35732         * marshal.h, marshal.c: some support code to handle complex marshaling.
35733
35734 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35735
35736         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35737         Better signatures with vtable error dump.
35738
35739 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35740
35741         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35742
35743 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35744
35745         * icall.c (ves_icall_Type_GetField): impl.
35746
35747 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35748
35749         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35750         to retrieve a marshal description blob for a field or param.
35751
35752 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35753
35754         * reflection.h, reflection.c: change order of nested type emission
35755         to avoid table corruption. The NestedTypes table is sorted.
35756         * icall.c: change order of GetConstructor results to workaround mcs bug.
35757
35758 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35759
35760         * reflection.h, reflection.c: handle field and param marshal
35761         information.
35762
35763 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35764
35765         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35766
35767 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35768
35769         * reflection.c: fix call convention.
35770
35771 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35772
35773         * reflection.h, reflection.c: mono_image_get_memberref_token()
35774         takes a type instead of a class, now. Added
35775         mono_image_get_array_token() to create tokens for the special
35776         multi-dim array methods.
35777
35778 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35779
35780         * assembly.c: handle modules (no assembly table). Split
35781         loading references in its own function.
35782         * class.c: handle moduleref resolution scope.
35783         * image.c, image.h: cache module name in image.
35784
35785 2002-06-07  Martin Baulig  <martin@gnome.org>
35786
35787         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35788         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35789
35790 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35791
35792         * icall.c: more signature fixes that used uint instead of int.
35793
35794 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35795
35796         * reflection.c: fixed signature of field refs.
35797
35798 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35799
35800         * class.c, reflection.c: handle typerefs of nested types
35801         (both on read and when writing files).
35802
35803 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35804
35805         * icall.c: fix method signatures that tried to workaround the previous
35806         typo, d'oh!
35807
35808 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35809
35810         * debug-helpers.c: fix typo.
35811
35812 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35813
35814         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35815         rewrote the PE/COFF writing code (our programs are understood by the
35816         ms runtime, now).
35817
35818 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35819
35820         * gc.c, gc.h, icall.c: weakreference support.
35821
35822 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35823
35824         * Makefile.am, mono-config.c: use $(sysconfdir).
35825
35826 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35827
35828         * icall.c: changed default precision of Double.ToString() to 15.
35829         Fixed memory leak. Unified with Single.ToString.
35830
35831 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35832
35833         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35834
35835 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35836
35837         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35838         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35839         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35840         and myself.
35841
35842 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35843
35844         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35845
35846 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35847
35848         * reflection.c, socket-io.c: more compilation fixes.
35849
35850 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35851
35852         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35853         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35854         unicode.c: warning and compiler compatibility fixes.
35855
35856 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35857
35858         * class.h, metadata.c: fixed warnings/compilation errors.
35859
35860 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35861
35862         * Makefile.am, mono-config.c, mono-config.h: configuration file
35863         support routines.
35864         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35865         config file. Export methods to insert and lookup mappings.
35866
35867 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35868
35869         * reflection.c: handle types and boxed objects in custom attr
35870         constructors.
35871
35872 2002-05-30  Martin Baulig  <martin@gnome.org>
35873
35874         * debug-symfile.c
35875         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35876
35877 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35878
35879         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35880         to lookup the implmap row for a P/Invoke method.
35881         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35882         P/Invoke method from the runtime on an as needed basis.
35883
35884 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35885
35886         * metadata.c (mono_metadata_parse_signature): impl.
35887
35888 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35889
35890         * class.c: handle .pack directive.
35891
35892 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35893
35894         * object.c: initialize static fields with RVA data.
35895
35896 2002-05-25  Martin Baulig  <martin@gnome.org>
35897
35898         * debug-symfile.c
35899         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35900
35901 2002-05-24  Martin Baulig  <martin@gnome.org>
35902
35903         * debug-symfile.c
35904         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35905         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35906         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35907
35908 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35909
35910         * object.c: special case string ctros in invoke.
35911         * gc.c: silly whitespace changes.
35912
35913 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35914
35915         * threadpool.[ch]: impl. a threadpool that can
35916         be used by mint and mono.
35917
35918 2002-05-22  Martin Baulig  <martin@gnome.org>
35919
35920         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35921         The first argument is now a `MonoReflectionModuleBuilder *', the return
35922         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35923         `methods' field to get the method builder.  The `token' argument is the
35924         unfixed token.
35925
35926         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35927         invalid characters instead of g_assert_not_reached()ing.  This seems
35928         to be the behaviour of mscorlib.
35929
35930 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35931
35932         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35933         Hestilow to fix bug #25104
35934
35935 2002-05-21  Martin Baulig  <martin@gnome.org>
35936
35937         * debug-symfile.c (mono_debug_find_source_location): New function.
35938         Looks up an IL offset in the line number table and returns the source
35939         location as a string.
35940
35941 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35942
35943         * icall.c:
35944         (mono_double_ToStringImpl): changed %f by %g until we have something
35945         better.
35946
35947 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35948
35949         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35950         parameters first in C#.
35951
35952 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35953
35954         * icall.c, reflection.h: added icall to get info about an event.
35955
35956 2002-05-20  Radek Doulik  <rodo@ximian.com>
35957
35958         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35959         endian
35960         (mono_value_box): don't use memcpy for small sizes on
35961         architectures with unaligned access
35962
35963 2002-05-20  Martin Baulig  <martin@gnome.org>
35964
35965         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35966         if `tb->parent == NULL'.
35967         (mono_reflection_create_internal_class): New function.  This is
35968         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35969         for enum types.
35970
35971         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35972         New interncall.
35973
35974 2002-05-19  Martin Baulig  <martin@gnome.org>
35975
35976         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35977         argument to get the length, don't default to the array length.
35978
35979 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35980
35981         * assembly.c (mono_assembly_setrootdir): New function used to
35982         override the MONO_ASSEMBLIES directory.
35983
35984 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35985
35986         * icall.c: ValueType_GetHashCode() initialize local var.
35987
35988 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35989
35990         * reflection.c: sort custom attributes table.
35991
35992 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35993
35994         * reflection.c: support named args in custom attributes (write support).
35995
35996 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35997
35998         * reflection.c: fix finally position calculation.
35999
36000 2002-05-15  Radek Doulik  <rodo@ximian.com>
36001
36002         * reflection.c: fixed endianess at many places
36003
36004         * icall.c (ves_icall_InitializeArray): comment out debug msg
36005
36006 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
36007
36008         * object.c (mono_unhandled_exception): new function to handle
36009         unhandled exceptions.
36010         (mono_unhandled_exception): call the UnhandledException event.
36011         (mono_runtime_delegate_invoke): impl.
36012
36013 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
36014
36015         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
36016         returns the RVA, not the direct pointer to the data. Handle the case
36017         when the class size is fixed.
36018
36019 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
36020
36021         * reflection.c: fix some endianess issues.
36022
36023 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
36024
36025         * object.c (mono_runtime_invoke): is now able to catch exceptions.
36026
36027         * threads.c (mono_thread_init): added a callback which is invoked
36028         at thread start.
36029
36030 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
36031         
36032         * icall.c: make GetHashCode return non-negative values.
36033
36034 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
36035
36036         * object.c, icall.c, gc.c: revert to address-based hashcode.
36037
36038 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
36039
36040         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
36041
36042 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36043
36044         * icall.c, class.c: special case <Module>.
36045
36046 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
36047
36048         * icall.c: fix bug in GetNow().
36049
36050 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
36051
36052         * object.c (mono_runtime_class_init): make sure that we call all
36053         static class constructors.
36054
36055 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
36056
36057         * reflection.c: sort methodsemantics table.
36058
36059 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
36060
36061         * reflection.h, reflection.c: honour init locals setting.
36062
36063 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
36064
36065         * icall.c: copied Double ToStringImpl for Single ToStringImpl
36066
36067 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36068
36069         * reflection.c: support ContructorBuilders in attribute blob creation.
36070
36071 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36072
36073         * reflection.c: some changes to build a binary that can be run
36074         directly in windows.
36075
36076 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36077
36078         * loader.c: print a big message when an icall can't be found.
36079
36080 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36081
36082         * string-icalls.c: fix bug 24248.
36083
36084 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
36085
36086         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
36087         icall.c, reflection.h: separate assembly loading by pathname and by
36088         assembly name. Use the MONO_PATH env var to search for assemblies.
36089
36090 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36091
36092         * assembly.c, image.h: add some support for assemblies
36093         with multiple modules.
36094         * class.c, class.h: export mono_class_from_typeref().
36095         * loader.c: remove duplicated code and use mono_class_from_typeref(),
36096         instead.
36097
36098 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36099
36100         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
36101         documentation says (the ECMA one is correct).
36102
36103 2002-05-02  Dick Porter  <dick@ximian.com>
36104
36105         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
36106         Don't name the synchronisation mutex.
36107
36108 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
36109
36110         * rand.c
36111         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
36112         Make the prototypes match.
36113         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
36114         Same.
36115
36116         * icall.c
36117         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
36118         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
36119         all systems have tm.tm_zone, so use strftime() with %Z to print
36120         the timezone abreviation into a temp string.
36121
36122         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
36123         rather than mono_array_addr() on a MonoString on Big Endian
36124         machines.
36125
36126 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
36127
36128         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
36129         fix bug 24041
36130
36131 2002-04-30  Dick Porter  <dick@ximian.com>
36132
36133         * socket-io.c: Cope with SOCKET being an integer rather than a
36134         pointer now.
36135
36136         * threads.c: Added Thread_free_internal, to deal with thread
36137         handle cleanup.  Moved calls to handle_store() and handle_remove()
36138         to start_wrapper(), so each can only be called once.  Allocate
36139         synchronisation blocks with GC_malloc(), and use GC finalisation
36140         to close the handles.
36141
36142         * icall.c: added System.Threading.Thread::Thread_free_internal
36143
36144 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36145
36146         * icall.c: support Environment.Exit, CommandLineArgs().
36147
36148 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
36149
36150         * object.c, object.h: added mono_runtime_run_main () and
36151         mono_runtime_get_main_args () for use in System.Environment.
36152
36153 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36154
36155         * gc.c: fix thinko, enable actual finalization since the jit is now
36156         fixed.
36157
36158 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36159
36160         * gc.c, object.c: take into account that an object may be offset wrt the address
36161         returned by GC_malloc().
36162
36163 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
36164
36165         * image.c: handle files without entries in the assembly table (modules).
36166
36167 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
36168
36169         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
36170         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
36171         allowed to be null when it's System.Object class setup.
36172
36173 2002-04-27  Martin Baulig  <martin@gnome.org>
36174
36175         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
36176         if `tb->parent == NULL' rather than crashing.
36177
36178 2002-04-28  Nick Drochak  <ndrochak@gol.com>
36179
36180         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
36181         calling acos() where asin() should have been called.
36182
36183 2002-04-26  Martin Baulig  <martin@gnome.org>
36184
36185         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
36186         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
36187         there's a subdirectory called `System', but we don't want to read that
36188         subdirectory as an assembly.
36189
36190 2002-04-25  Martin Baulig  <martin@gnome.org>
36191
36192         * debug-symfile.c: Reflect latest MonoString changes.
36193
36194 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
36195
36196         * rand.c, rand.h: instance method icalls need to have an explicit
36197         this pointer as first argument in the C implementation.
36198
36199 2002-04-25  Nick Drochak <ndrochak@gol.com>
36200
36201         * icall.c: Fix typo in map for GetNonZeroBytes
36202
36203 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36204
36205         * string-icalls.c : String does now passes unit tests without any 
36206         errors, the following changes has been made:
36207         
36208         Implemented replace methods.
36209         Renaming of methods to (try) follow the standard.
36210         Fixed compare ordinal
36211         Made all memory allocated directly to function instead of via icall function.
36212         Small performance fix in is_in_array function
36213                         
36214  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
36215
36216         c (mono_string_Internal_ctor_charp_int_int):
36217         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
36218         sindex < 0, throw ArgumentOutOfRangeException instead of
36219         ArgumentNullException.
36220
36221         Added new check for length == 0, however
36222         I need to make it return String.Empty from the C code.
36223         
36224         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
36225         that calculate the length for us here.
36226         
36227         (mono_string_Internal_ctor_sbytep_int_int): Replaced
36228         mono_string_new_utf16 with mono_string_new, since value is utf8.
36229
36230 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36231
36232         * object.c: register the object for finalization if needed.
36233         Allocate one more char in the string for the terminating 0 char.
36234
36235 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36236
36237         * class.c, class.h, image.c: check if a type implemenst a destructor.
36238         Use the proper key for array class lookups.
36239         * icall.c: register the icalls in the System.GC class.
36240         * gc.c, gc.h: GC-related functions and icalls.
36241
36242 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36243
36244         * icall.c:
36245         * socket-io.c:
36246         * unicode.c: free some strings gotten from mono_string_to_utf8 and
36247         changed a couple of free () by g_free ().
36248
36249         * decimal.c: one-liner in the comments for decimal2string ().
36250
36251 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36252
36253         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
36254
36255 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36256
36257         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
36258         * object.c (mono_runtime_invoke_array) : handle null in params
36259
36260 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36261
36262         * string-icalls.c: fixed bug in split (one off bug)
36263
36264 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36265
36266         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
36267         * icalls.c: added String::Equals as internal method
36268
36269 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36270
36271         * threads.c: fixed bug in the double interlocked functions
36272
36273 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36274
36275         * threads.c: implemented all of the new interlocked icalls.
36276         * string-icalls.c: fix a bug in insert.
36277         * icalls.c: added the icalls for interlocked, removed old string functions.
36278         
36279 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36280
36281         * loader.c: fix off-by-one error when reading argument names.
36282
36283 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36284
36285         * profiler.c: win32 counter implementation (untested).
36286         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36287         (the latter needs testing and more complete impl. from win32 folks).
36288
36289 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36290
36291         * object.c: mono_array_new_full workaround mono_array_class_get
36292         problem.
36293
36294 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36295
36296         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36297         * object.h (mono_string_chars): Changed casting type.
36298
36299 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36300
36301         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36302                            method signatures to use gunichar2 instead of gint16.
36303
36304 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36305
36306         * object.h, object.c: domain-specific versions of mono_object_new and
36307         mono_array_new.
36308
36309 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36310
36311         * object.c: changed String layout
36312
36313         * string-icalls.c (mono_string_Internal_ctor_chara): added
36314         internal string constructors.
36315
36316 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36317
36318         * threads.c: pass 'this' to the thread start routine.
36319
36320 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36321
36322         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36323         InternalCompareStr don't call twice mono_string_cmp_char for the last
36324         character. Improved performance in mono_string_cmp_char.
36325
36326 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36327
36328         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36329         code into its own library: libmonoruntime.
36330
36331 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36332
36333         * object.h, object.c: changed array format so that szarrays do not
36334         require a bounds structure.
36335         * icall.c, appdomain.c: support for new szarray format.
36336
36337 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36338
36339         * metadata.c: compare also the retuns type when comparing signatures:
36340         we didn't do this as an optimization since really overloaded methods
36341         must differ also in the arguments, but this doesn't work with
36342         low-level IL code (or when using explicit conversion operators: see
36343         bug#23498 for an example).
36344
36345 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36346
36347         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36348
36349 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36350
36351         * icall.c: make MonoType::GetElementType its own icall.
36352
36353 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36354
36355         * icall.c: remove MonoMethod_get_Name().
36356         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36357         object.
36358
36359 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36360
36361         * string-icalls.c: optimized a few methods.
36362
36363 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36364
36365         * icall.c: added all new string internal calls
36366         * string-icalls.c: added, new string internal call implementation.
36367         * object.c: added mono_string_new_size for allocating a string a size
36368
36369 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36370
36371         * object.c (mono_object_isinst): use the same code as in the
36372         optimized x86 version.
36373
36374 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36375
36376         * profiler.c: TSC-based timer code (faster and more accurate).
36377         Not hooked up in configure, yet (set USE_X86TSC to 1).
36378
36379 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36380
36381         * profiler.c, profiler.h: track time spent compiling methods.
36382         * threads.c: track thread creation/destruction.
36383
36384 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36385
36386         * profiler.c, profiler.h, profiler-private.h: profiling interface
36387         and sample implementation. Moved here so that it can be used also by
36388         the jit.
36389
36390 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36391
36392         * reflection.c, reflection.h: keep types and other handles separate in
36393         the hash tables for referred tokens. Add guid for modules.
36394
36395 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36396
36397         * assembly.c: fix bugs found with valgrind.
36398         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36399
36400 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36401
36402         * threads: added icall support for getting current domain for
36403                    the thread.
36404  
36405 2002-04-13  Martin Baulig  <martin@gnome.org>
36406
36407         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36408         (MonoDebugVarInfo): Added `index' field for register based addresses.
36409         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36410         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36411         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36412         `MonoDebugVarInfo *this_var'.
36413
36414         * debug-symfile.c (relocate_variable): New static function to write
36415         a location description for a local variable or method parameter.
36416
36417 2002-04-12  Martin Baulig  <martin@gnome.org>
36418
36419         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36420         stack offset and begin/end scope address of a local variable.
36421         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36422         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36423         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36424
36425         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36426         Added new relocation types for start/end scope of a local variable.
36427
36428 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36429
36430         * object.h: add mono_object_domain() macro.
36431         * reflection.c: handle typespecs.
36432         * icall.c: MonoMethod::get_Name() implementation.
36433
36434 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36435
36436         * icall.c: String::GetHashCode() icall implementation.
36437
36438 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36439
36440         * icall.c: String::IndexOfAny icall.
36441         * object.c, object.h: make array->max_length more useful.
36442         Intrduced mono_object_class() and mono_string_length() macros.
36443
36444 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36445
36446         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36447         instead of g_unichar_isdigit.
36448
36449 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36450
36451         * icall.c: Implement a simple Double.ToString().
36452
36453 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36454
36455         * appdomain.h: only io-layer.h is supposed to be included.
36456         * icall.c: explicitly import environ. Fix warning.
36457
36458 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36459
36460         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36461                 return true even if it's not Daylight Savings time.
36462                 Only return false for the case where the function isn't
36463                 implemented for a plaform (read Windows).
36464
36465 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36466
36467         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36468         data with a mutex.
36469
36470 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36471
36472         * mempool.c (mono_mempool_alloc): only use g_malloc when
36473         absolutely necessary.
36474
36475 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36476
36477         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36478
36479         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36480         (mono_class_proxy_vtable): use domain mempool
36481
36482 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36483
36484         * appdomain.h, appdomain.c: split initialization that requires the
36485         execution engine support into mono_runtime_init().
36486
36487 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36488
36489         * class.c (mono_class_init): don't include vtable inside MonoClass
36490         to save some memory, gather some statistics.
36491         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36492
36493 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36494
36495         * icall.c: internalcall implementation for ValueType.Equals().
36496
36497 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36498
36499         * object.c (mono_message_init): moved 
36500         (mono_runtime_exec_main): new arch. independent impl.
36501         (mono_runtime_invoke_array): new method - like
36502         mono_runtime_invoke, but you can pass an array of objects.
36503         (mono_remoting_invoke): new arch. independent impl.
36504         (mono_message_invoke): new arch. independent impl.
36505         (mono_runtime_class_init): new arch. independent impl.
36506         (mono_runtime_object_init): new arch. independent impl.
36507
36508 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36509
36510         * metadata.c, object.c, reflection.c: documented the exported
36511         functions.
36512
36513 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36514
36515         * icall.c: simpler code to pass the assembly builder data to corlib.
36516         Implement GetNestedTypes() internalcall.
36517
36518 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36519
36520         * class.c: warn if a type can't be loaded.
36521
36522 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36523
36524         * image.h: typedef MonoImageOpenStatus
36525         * types.h: removed unused file
36526         
36527 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36528
36529         * icall.c: Enum_ToObject accepts enum value arguments.
36530
36531 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36532
36533         * class.c: move initialization of properties, events and nested
36534         classes, so that they happen for interfaces, too.
36535
36536 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36537
36538         * icall.c: cleanup some ugly casts in Array_SetValue*.
36539
36540 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36541
36542         * icall.c: the values array fro enums is of the correct type, now.
36543         Implement (correctly) getFullName instead of assQualifiedName for
36544         MonoType.
36545         * reflection.h, reflection.c: added mono_type_get_name ().
36546
36547 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36548
36549         * assembly.c, image.h: for each MonoImage, record from wich assembly
36550         it was loaded.
36551         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36552         Make Type.Assembly work.
36553
36554 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36555
36556         * debug-symfile.h: use char* instead of gpointer to avoid
36557         unnecessary casts.
36558
36559         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36560
36561         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36562         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36563
36564 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36565
36566         * icall.c (mono_message_init): impl. (code cleanup)
36567         (ves_icall_InternalExecute): impl. FieldGetter
36568
36569         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36570         defined we call all (non-static)methods through the vtable. 
36571
36572 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36573
36574         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36575         finalizer even though the memory is still referenced (and the chunk of
36576         memory is not freed).
36577
36578 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36579
36580         * assembly.c: fix brokeness.
36581
36582 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36583
36584         * class.c: kill some warnings. Check explicit interface method
36585         implementation also without considering the namespace.
36586         Load also literal strings in static class data.
36587
36588 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36589
36590         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36591         (default_assembly_name_resolver): Make the resolver take the
36592         "base" directory where the assembly was originally defined, so we
36593         can load DLLs that are in the same directory as the assembly that
36594         is being referenced.
36595
36596 2002-03-28  Dick Porter  <dick@ximian.com>
36597
36598         * file-io.h: 
36599         * file-io.c:
36600         * socket-io.c: 
36601         * unicode.h: 
36602         * unicode.c: Warning cleanups
36603
36604 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36605
36606         * object.h, reflection.h: use the correct type instead of MonoObject.
36607
36608 2002-03-28  Martin Baulig  <martin@gnome.org>
36609
36610         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36611         (mono_debug_update_symbol_file): Initialize classes if necessary.
36612
36613 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36614
36615         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36616         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36617
36618 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36619
36620         * assembly.h: fix function prototype.
36621         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36622         * mono-endian.h: use const cast.
36623
36624 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36625
36626         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36627
36628 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36629
36630         * loader.c: don't assert when a typeref can't be loaded, give
36631         a chance to the runtime to trow an exception instead.
36632         * loader.h: fix warning.
36633
36634 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36635
36636         * class.c (mono_class_proxy_vtable): added proxy support
36637
36638 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36639
36640         * icall.c: removed last of PAL calls, added System.Environment
36641         * file-io.h, file-io.c: MonoIO implementation
36642         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36643
36644 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36645
36646         * appdomain.c: do not use the byte marker in ldstr table lookup.
36647         * debug-helpers.c: allow two ':' to separate class and method name.
36648         * object.c: allocate arrays bounds with the GC, too.
36649         * verify: add a few more checks.
36650
36651 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36652
36653         * reflection.c: output also literal strings. Allocate parameter data
36654         with GC_malloc() (thanks, Martin, for catching this!).
36655
36656 2002-03-26  Martin Baulig  <martin@gnome.org>
36657
36658         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36659         include the `this' offset in the `param_offsets'.
36660
36661 2002-03-25  Martin Baulig  <martin@gnome.org>
36662
36663         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36664         mono_debug_get_class() function to get the classes. Added new
36665         relocation types for arrays and strings.
36666         (mono_debug_get_class): New static function to search in all
36667         referenced assemblies for a metadata token.
36668
36669         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36670
36671 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36672
36673         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36674         hold gc-allocated objects. Make the string heap a stream like the
36675         others. Removed duplicated code when writing stream info.
36676         Added asserts to catch possible buffer overflows. Set the sorted map
36677         for tables that need sorting. Added some documentation.
36678
36679 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36680
36681         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36682         for interned strings and vtables.
36683
36684 2002-03-24  Martin Baulig  <martin@gnome.org>
36685
36686         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36687         it in the array since it was created with g_slist_prepend().
36688
36689 2002-03-24  Martin Baulig  <martin@gnome.org>
36690
36691         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36692         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36693         (mono_debug_method_from_token): Renamed to
36694         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36695         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36696
36697         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36698         relocation types.
36699
36700         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36701
36702 2002-03-24  Martin Baulig  <martin@gnome.org>
36703
36704         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36705         (mono_debug_method_from_token): New func.
36706
36707         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36708         New interncall, calls mono_debug_local_type_from_signature().
36709         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36710         calls mono_debug_method_from_token().
36711
36712 2002-03-23  Martin Baulig  <martin@gnome.org>
36713
36714         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36715         specifies the number of bytes to be converted, not the array size.
36716         Return the number of chars, not the number of bytes.
36717         (ves_icall_iconv_get_chars): The `byteCount' argument
36718         specifies the number of bytes to be converted, not the array size.
36719
36720 2002-03-23  Martin Baulig  <martin@gnome.org>
36721
36722         * reflection.h (MonoReflectionSigHelper): New type.
36723
36724         * reflection.c (mono_reflection_sighelper_get_signature_local),
36725         (mono_reflection_sighelper_get_signature_local): New functions.
36726
36727         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36728         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36729         interncalls.
36730
36731 2002-03-23  Martin Baulig  <martin@gnome.org>
36732
36733         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36734         is_writeable is set.
36735         (mono_raw_buffer_update): New function to write the modified map
36736         back to disk.
36737
36738         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36739
36740         * debug-symfile.c (mono_debug_update_symbol_file): Call
36741         mono_raw_buffer_update() when done writing.
36742
36743 2002-03-23  Martin Baulig  <martin@gnome.org>
36744
36745         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36746
36747         * debug-symfile.c: Added support for arguments and local variables.
36748
36749 2002-03-23  Dick Porter  <dick@ximian.com>
36750
36751         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36752         protected by ifdefs, hence breaking the w32 build.
36753
36754 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36755
36756         * object.c: implement is_interned() the right way.
36757
36758 2002-03-21  Martin Baulig  <martin@gnome.org>
36759
36760         * debug-symfile.[ch]: New files to handle debugging information
36761         files. There's also support to dynamically update these symbol
36762         files to include machine dependent information.
36763
36764 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36765
36766         * threads.c (mono_thread_create): new function to create thread
36767         from C
36768
36769 2002-03-20  Martin Baulig  <martin@gnome.org>
36770
36771         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36772         method is a constructor.
36773         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36774         points to ves_icall_InternalInvoke().
36775
36776 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36777
36778         * file-io.c: Flush shouldn't throw exceptions.
36779
36780 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36781
36782         * file-io.c: FileStream flush support; FileSetLength now
36783         restores file pointer.
36784
36785 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36786
36787         * class.c: set image for pointer classes.
36788
36789 2002/03/19  Nick Drochak <ndrochak@gol.com>
36790
36791         * sysmath.c: Forgot one.
36792
36793 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36794
36795         * sysmath.c: Avoid redefining existing names.
36796
36797 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36798
36799         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36800         handled by runtime as icall rather than dllimport from libm.so
36801         * file-io.c, file-io.h: fixed handle argument type.
36802
36803 2002-03-18  Dick Porter  <dick@ximian.com>
36804
36805         * reflection.c (mono_image_get_type_info): rename interface to
36806         iface, because of "#define interface struct" on windows.
36807
36808 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36809
36810         * class.c, class.h: rename and export mono_ptr_class_get().
36811         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36812         * reflection.c, reflection.h, icall.c: better/saner type name
36813         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36814         method signatures.
36815
36816 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36817
36818         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36819
36820         * icall.c (ves_icall_InternalInvoke): impl.
36821
36822 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36823
36824         * reflection.c: output the interface map table, too.
36825
36826 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36827
36828         * class.c (class_compute_field_layout): separate computation of 
36829         static field layout
36830
36831 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36832
36833         * icall.c: added System.Buffer support.
36834         * file-io.c: moved file icalls from PAL to FileStream.
36835
36836 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36837
36838         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36839
36840 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36841
36842         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36843
36844 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36845
36846         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36847
36848 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36849
36850         * debug-helpers.{c,h}: moved here from monograph some useful functions
36851         to locate a method by name/signature in a class or image. Included
36852         also a small and flexible IL disassembler.
36853
36854 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36855
36856         * reflection.c: fixup tokens in methods with small header size, too.
36857
36858 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36859
36860         * object.c (mono_string_to_utf8): remove assert(!error), instead
36861         print a warning. 
36862
36863 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36864
36865         * icall.c: update to the new mono_Array_class_get interface.
36866
36867 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36868
36869         * appdomain.c, object.c: Boehm-GC enable.
36870         * icall.c: make get_data_chunk() support split data requests.
36871         Ensure a class is initialized in more cases. Return only the first
36872         property found in GetProperties() or the compiler gets confused. 
36873         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36874         * reflection.h, reflection.c: add fixup mechanism for field and method
36875         tokens. Initialize assembly->typeref in a single place. Output
36876         properties after events. Support custom attributes for events, too.
36877         Typo fix for paramter custom attrs.
36878
36879 2002-03-07  Martin Baulig  <martin@gnome.org>
36880
36881         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36882
36883 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36884
36885         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36886
36887 2002-03-06  Martin Baulig  <martin@gnome.org>
36888
36889         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36890         non-zero lower bounds. See testcases #F10-#F13.
36891
36892 2002-03-05  Martin Baulig  <martin@gnome.org>
36893
36894         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36895
36896         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36897         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36898         here.
36899         (ves_icall_System_Array_SetValue): Likewise.
36900         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36901         as argument and does the actual work. This function is used when copying a
36902         multi-dimensional array.
36903         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36904         now do all the widening conversions of value types.
36905         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36906
36907 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36908
36909         * class.c: remove some magic numbers and use the smbolic names,
36910         instead. Added init_events() to load event info at class init time.
36911         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36912         and mono_metadata_methods_from_event().
36913         * reflection.h, reflection.c: added support for writing out the evnets
36914         related information.
36915
36916 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36917
36918         * reflection.h, icall.c: use a different method (GetInterfaces)
36919         to gather interface info and add isbyref, isprimitive and
36920         ispointer to the ves_icall_get_type_info() return value.
36921
36922 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36923
36924         * class.h: stared adding support for events.
36925         * icall.c: split find_members implementation. Added debug icall to get
36926         the address of an object.
36927         * reflection.c: handle TypeBuilders in mono_type_get_object().
36928
36929 2002-03-01  Martin Baulig  <martin@gnome.org>
36930
36931         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36932         ArgumentOutOfRangeException(), not an ArgumentException().
36933         (ves_icall_System_Array_GetLowerBound): Likewise.
36934         (ves_icall_System_Array_GetValue): Improved argument checking.
36935         (ves_icall_System_Array_SetValue): Improved argument checking.
36936
36937 2002-03-01  Martin Baulig  <martin@gnome.org>
36938
36939         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36940         called with invalid arguments rather than just dying with g_assert().
36941         (ves_icall_System_Array_SetValue): Likewise.
36942         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36943         raise a NotImplementedException instead.
36944         (ves_icall_System_Array_GetLength): Added argument checking.
36945         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36946
36947 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36948
36949         * object.h (mono_assert): new macros mono_assert and
36950         mono_assert_not_reached
36951
36952 2002-02-28  Martin Baulig  <martin@gnome.org>
36953
36954         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36955         and "System::String::IsInterned" to "System::String::_IsInterned".
36956
36957 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36958
36959         * icall.c: remove hacks for typebuilder. Added icall to create a
36960         modified type from a tybebuilder.
36961         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36962         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36963         to create a backing MonoClass for a TypeBuilder.
36964
36965 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36966
36967         * class.c, class.h: more refactoring of class init.
36968         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36969
36970 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36971
36972         * marshal.c, marshal.h: start of marshaling interface.
36973
36974 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36975
36976         * icall.c: fix order in assembly qualified name icall.
36977
36978 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36979
36980         * class.c: do not free str, since we store it in the hash table.
36981         * reflection.h: add label field to MonoILExceptionInfo.
36982         * reflection.c: handle references to more than one assembly. Handle
36983         case when there isn't a module created in the assembly.
36984
36985 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36986
36987         * class.c: Fix typo. Start refactoring of class init code.
36988
36989 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36990
36991         * appdomain.c: exit with 1 on error.
36992         * class.c: we already have the name in MonoClassField.
36993         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36994         MonoStreamHeader instead of an offset of image->raw_metadata.
36995
36996 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36997
36998         * appdomain.c (mono_init): Be even more descriptive about the error.
36999
37000 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
37001
37002         * appdomain.c: give the user an informative message when corlib can't
37003         be loaded.
37004
37005 2002-02-26  Martin Baulig  <martin@gnome.org>
37006
37007         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
37008         New icall to get the time zone data.
37009
37010 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37011
37012         * reflection.c: set virtual and raw size of section correctly.
37013         * threads.c: transfer domain information to newly created threads.
37014
37015 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37016
37017         * class.c: when instancing a class in a domain, load the default
37018         vaules for static fields from the constant table. Fix System.Enum to
37019         not be an enum.
37020         * icall.c: implement Object::GetType() internalcall. Implemented
37021         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
37022         Fixed checking of binding flags in find_members().
37023         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
37024         * reflection.c: handle enumerations when writing to the constant
37025         table. Use a different object cache for types.
37026
37027
37028 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
37029
37030         * object.c (mono_object_isinst): fix for arrays
37031
37032         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
37033
37034 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37035
37036         * object.c: don't use mprotect ()  and fix intern pool hash table
37037         lookup for big endian systems.
37038
37039 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
37040
37041         * icall.c: change type_is_subtype_of () signature.
37042
37043 2002-02-21  Mark Crichton  <crichton@gimp.org>
37044
37045         * rand.c, rand.h: Added random number generator for
37046         System.Security.Cryptography classes.
37047
37048         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
37049
37050         * icall.c: Added System.Security.Cryptography calls.
37051
37052 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
37053
37054         * class.c, icall.c, metadata.c: better support for pointer types.
37055         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
37056         * reflection.c: Add support for getting custom attrs for properties
37057         and simplify some code.
37058
37059 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
37060
37061         * icall.c: change getToken () and add custom attribute GetBlob()helper
37062         method.
37063         * reflection.h: add custom attrs array to the reflection builder structures.
37064         * reflection.c: encode and emit custom attributes for all the relevant
37065         reflection objects. Cache fieldref and methodref tokens. Change
37066         mono_image_create_token() interface to take a MonoDynamicAssembly.
37067         More complete custom attributes decoder. Load custom attributes for
37068         Assembly, Field, Method and Constructor objects, too. Make the
37069         returned array an Attribute[] one, not object[]. Added
37070         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
37071         custom attribute constructor.
37072
37073 2002-02-20  Dick Porter  <dick@ximian.com>
37074
37075         * icall.c:
37076         * rawbuffer.c:
37077         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
37078         problem code out for now).
37079
37080 2002-02-19  Radek Doulik  <rodo@ximian.com>
37081
37082         * object.c (mono_ldstr): use hash table to avoid multiple swapping
37083
37084 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
37085
37086         * icall.c: register the GetCustomAttributes method.
37087         * object.c, object.h: add mono_string_new_len ().
37088         * reflection.h, reflection.c: added mono_runtime_invoke(),
37089         mono_install_runtime_invoke(). Added
37090         mono_reflection_get_custom_attrs () to load custom attributes and
37091         create the attribute objects.
37092
37093 2002-02-19  Dick Porter  <dick@ximian.com>
37094         * threads-dummy-types.c:
37095         * threads-dummy-types.h:
37096         * threads-dummy.c:
37097         * threads-dummy.h:
37098         * threads-pthread-types.c:
37099         * threads-pthread-types.h:
37100         * threads-pthread.c:
37101         * threads-pthread.h:  Deleted obsolete files
37102
37103 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
37104
37105         * class.c (mono_class_vtable): runtime init the class when we
37106         allocate static class data.
37107
37108         * icall.c (ves_icall_System_Array_SetValue): check for null values.
37109
37110         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
37111         and String - but we will need generic marshalling support in the
37112         future. 
37113         (mono_init): set the domain name in a ms compatible way
37114
37115         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
37116         String[].
37117
37118 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
37119
37120         * object.c (mono_array_clone): use alloca() instead of g_malloc  
37121         for sizes
37122
37123         * appdomain.c (mono_domain_unload): impl.
37124
37125 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37126
37127         * appdomain.c, object.c: fix intern pool implementation.
37128         * class.c: fix alignment code.
37129
37130 2002-02-16  Radek Doulik  <rodo@ximian.com>
37131
37132         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
37133         and s2 > s1, just copy lower bytes to be compatible with little
37134         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
37135         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
37136
37137         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
37138         force big_endian to be 1 for big endian machines 
37139         (ves_icall_iconv_new_decoder): ditto
37140
37141 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
37142
37143         * socket-io.c (convert_sockopt_level_and_name): If the system
37144         doesn't define SOL_IP or SOL_TCP, get them by hand using
37145         getprotobyname() and caching the values (because this could be a
37146         slow operation).
37147         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
37148         Use the appropriate struct when the system does support it. Ie,
37149         not all systems have struct ip_mreqn so use struct ip_mreq when
37150         appropriate.
37151
37152 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
37153
37154         * reflection.c: handle finally clauses.
37155
37156 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
37157
37158         * socket-io.c: use g_snprintf() instead of snprintf.
37159
37160 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37161
37162         * reflection.c (mono_param_get_objects): Cast second argument to
37163         mono_method_get_param_names to a const char** to silence the
37164         compiler warning.
37165
37166         * appdomain.c (mono_domain_assembly_open): Put parens around the
37167         truth statement in the for-loop.
37168
37169         * unicode.c (iconv_convert): Got rid of a compiler warning about
37170         int i being unused when the system has a new iconv.
37171         (iconv_get_length): Same.
37172
37173         * image.c (load_class_names): Cast the second argument to
37174         g_hash_table_insert() to char* to hush compiler warnings about the
37175         arg being a const.
37176         (mono_image_open): Same here.
37177
37178         * socket-io.c: Don't conditionally include sys/filio.h or
37179         sys/sockio.h here anymore since we now get them from
37180         io-layer/io-layer.h
37181         (inet_pton): If the system doesn't support inet_aton, implement
37182         using inet_addr and also #define INADDR_NONE if it isn't defined
37183         by the system.
37184
37185 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
37186
37187         * metadata.c, metadata.h: added function to get packing and size info
37188         of a typedef.
37189         * reflection.h, reflection.c: handle field RVA data. Save info about
37190         the table layout if needed. Assign typedef indexes to all the types
37191         before dumping the info about them to avoid forward reference problems.
37192
37193 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
37194
37195         * socket-io.c (convert_sockopt_level_and_name): ifdef
37196         SO_ACCEPTCONN because it is not defined on my system (old debian)
37197
37198 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
37199
37200         * opcode.c: use stddef.h to get NULL.
37201
37202 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37203
37204         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
37205         for FIONBIO, FIONREAD and SIOCATMARK.
37206         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
37207         define INADDR_NONE and besides, inet_addr() is deprecated and
37208         should not be used. Use inet_pton() instead - it also has the
37209         added bonus that it can easily handle IPv6 addresses as well.
37210         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
37211
37212 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
37213
37214         * decimal.c: remove _MSC_VER conditional.
37215
37216 2002-02-13  Dick Porter  <dick@ximian.com>
37217
37218         * socket-io.c: 
37219         * icall.c: Internal calls for Blocking, Select, Shutdown,
37220         GetSocketOption and SetSocketOption
37221
37222 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37223
37224         * assembly.cs: better resolver: use it instead of some kludgy
37225         code.
37226
37227 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
37228
37229         * reflection.c: the best way to speed-up the compiler is to avoid
37230         infinite loops.
37231
37232 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
37233
37234         * class.c (mono_class_vtable): changed the object layout
37235         (obj->vtable->class). 
37236         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
37237
37238 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37239
37240         * assembly.c: look for assemblies in the assembly dir, too.
37241
37242 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37243
37244         * class.c: fix thinko in mono_class_from_type().
37245
37246 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37247
37248         * exception.h, exception.c: added TypeLoadException.
37249         * object.h, object.c: added mono_array_clone ().
37250         * icall.c: handle throwOnError in AssemblyGetType().
37251         Added Array.Clone().
37252         * opcode.h, opcode.c: use a single value for the opcode val.
37253         Compile fix for non-gcc compilers.
37254
37255 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
37256
37257         * opcodes.c, opcodes.h: export interesting info about opcodes.
37258
37259 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
37260
37261         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
37262         icalls. 
37263
37264         * class.c (class_compute_field_layout): set element_class for enums
37265         (mono_class_create_from_typedef): set element_class for normal classes
37266
37267         * icall.c (ves_icall_System_Enum_get_value): impl.
37268
37269         * class.c (mono_class_create_from_typedef): do not set valuetype
37270         flag for System.ValueType and System.Enum
37271
37272 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37273
37274         * unicode.c (iconv_convert): fix big endian problem.
37275
37276 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37277
37278         * class.c: add asserts if we are ever going to scribble over memory.
37279         * socket-io.c: not all systems have AF_IRDA defined.
37280
37281 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37282
37283         * class.c (class_compute_field_layout): do not consider static
37284         fields to compute alignment
37285
37286 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37287
37288         * appdomain.c (mono_appdomain_get): impl.
37289         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37290
37291 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37292
37293         * icall.c: ignore "file://" prefix when loading an assembly.
37294
37295 2002-01-23  Dick Porter  <dick@ximian.com>
37296
37297         * socket-io.c:
37298         * icall.c:
37299         * Makefile.am: Added socket support
37300
37301 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37302
37303         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37304         code back.  This should return the assemblies that are loaded by
37305         the runtime on behalf of an application domain. 
37306
37307         The current implementation is still broken, it just returns every
37308         assembly loaded, but until we get real applications domain this
37309         will do.
37310
37311 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37312
37313         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37314         AppDomain object.
37315
37316 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37317
37318         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37319         the mono_class_from_name lookup.
37320         (ves_icall_get_parameter_info): ditto.
37321         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37322         method.
37323         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37324
37325 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37326
37327         * class.c: load also nested classes on class init.
37328         System.ValueType instance methods gets passed boxed
37329         values, unless methods in derived classed that get a pointer to the
37330         data.
37331         * icall.c: use better name parsing code in GetType().
37332         * image.c, image.h: add mono_image_loaded ().
37333         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37334         * reflection.c, reflection.h: added mono_reflection_parse_type().
37335
37336 2002-01-22  Veronica De Santis <veron78@interfree.it>
37337
37338         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37339         * threads.c : Added the implementation of internal calls for events
37340         * threads.h : Added prototypes of internal calls for events
37341         
37342 2002-01-21  Radek Doulik  <rodo@ximian.com>
37343
37344         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37345
37346 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37347
37348         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37349         (mono_class_value_size): use min_align
37350
37351 2002-01-20  Dick Porter  <dick@ximian.com>
37352
37353         * threads.h:
37354         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37355         so it compiles on w32.
37356
37357 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37358
37359         * metadata.c (mono_type_stack_size): impl.
37360
37361         * class.c (mono_class_get_field): impl. memberref token
37362
37363 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37364
37365         * icall.h : Added the internal calls mapping for CreateMutex_internal
37366                     and ReleaseMutex_internal.
37367         * threads.h : Added the prototype of mutexes internal calls.
37368         * threads.c : Added the implementations of mutexes internal calls.
37369
37370 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37371
37372         * metaparse.h: removed unused file.
37373         * reflection.c, reflection.h: added stream_data_align () function 
37374         to align data in streams and keep stream aligned. Add support for
37375         exception support in method headers.
37376
37377 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37378
37379         * unicode.c: make iconv_convert () return the number of bytess written
37380         in the output buffer.
37381
37382 2002-01-15  Dick Porter  <dick@ximian.com>
37383         * threads.c: Make the runtime's idea of infinite timeouts coincide
37384         with the class library's
37385
37386         Fix a particularly egregious bug in mono_thread_cleanup(). That
37387         code was so utterly bogus it must have been written on a Monday.
37388
37389 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37390
37391         * reflection.h: add subtypes field to TypeBuilder.
37392         * reflection.c: encode constants for literal fields.
37393         Handle subtypes. Fix user string token (and add a zero byte)
37394         at the end.
37395         
37396 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37397
37398         * class.c (mono_class_init): bug fix: assign slot numbers for
37399         abstract methods.
37400
37401 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37402
37403         * reflection.c: don't try to output a code RVA for abstract methods.
37404         Small fixes for method header format. Output parameter info to the
37405         ParamDef table. Save method overriding info to MethodImpl table.
37406         Fix property support. Allow typedef.extends to be a type in the
37407         building assembly.
37408         * verify.c: fix off-by-one error.
37409
37410 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37411
37412         * class.c: fix mono_class_from_mono_type () for szarray types.
37413         Remove unused cache check in mono_class_from_type_spec().
37414         * icall.c: *type_from_name () functions handle simple arrays and byref.
37415         * reflection.c: handle byref and szarray types. Handle methods without
37416         body (gets P/Invoke compilation working). Handle types and fields in
37417         get_token ().
37418         * reflection.h: add rank to MonoTypeInfo.
37419
37420 2002-01-10  Dick Porter  <dick@ximian.com>
37421
37422         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37423         internal calls
37424
37425 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37426
37427         * icall.c: initialize class in type_from_handle ().
37428         Loop also in parent classes for get_method ().
37429         * reflection.c: properly encode class and valuetype types.
37430         Start on encoding TypeBuilder types. Handle fieldrefs.
37431         Use correct length when registering a user string.
37432         Handle ConstructorBuilder and MonoMethod in get_token ().
37433         Make mono_type_get_object () aware of cached types.
37434         * object.c: back out change to mono_string_new ().
37435
37436 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37437         * object.c: mono_string_new should return a NULL when the string 
37438         passed in is NULL -- not try to deference it.
37439         
37440 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37441
37442         * icall.c: hack to make IsSubType work for TypeBuilders.
37443         * reflection.c: emit constructors before methods.
37444         Retrieve param names in mono_param_get_objects().
37445
37446 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37447
37448         * Makefile.am: fix list of headers and sources so automake 1.5
37449         doesn't complain. Removed \# at end of list.
37450
37451 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37452
37453         * reflection.c: get token for a method ref. Set return type of
37454         constructor to void.
37455         * loader.c: debug message.
37456         * class.c: typo fix.
37457
37458 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37459
37460         * icall.c: fix array init with rank > 1. FindMembers
37461         loops in parent class as well.
37462         * image.c: do not insert nested types in name cache.
37463         * reflection.c: warning fix.
37464         * reflection.h: add override method (for interface impl).
37465
37466 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37467
37468         * metadata.c: fix customattr decoding.
37469
37470 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37471
37472         * rawbuffer.cs: Added native Win32 implementation, avoids using
37473         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37474
37475 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37476
37477         * class.c: make the low-level routines handle the cache.
37478
37479 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37480
37481         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37482
37483 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37484
37485         * class.c: fix mono_array_element_size() for objects.
37486         * class.h, class.c: add properties to MonoClass and load them
37487         at init time.
37488         * icall.c: check with isinst() when assigning a value to an array
37489         instead of requiring the classes to match exactly.
37490         Implemented icall for System.Type::GetType().
37491         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37492         enums. Handle bindingflags when looking for methods and fields.
37493         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37494         and mono_metadata_methods_from_property().
37495         * reflection.h, reflection.c: added structures for propreties,
37496         parameters and enums. Implemented mono_property_get_object() and
37497         mono_param_get_objects().
37498
37499 2001-12-18  Dick Porter  <dick@ximian.com>
37500
37501         * file-io.c: Use mono_string_to_utf16() instead of
37502         mono_string_chars()
37503
37504         * object.c: Added mono_string_to_utf16(), which copies the non
37505         NULL-terminated MonoString into a new double-null-terminated
37506         buffer.
37507
37508 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37509
37510         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37511
37512 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37513
37514         * file-io.c: raise exceptions if handle is invalid.
37515
37516 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37517
37518         * assembly.c: yet another check for mscorlib.
37519         * class.c, class.h: load nesting info for classes.
37520         * icall.c: many new functions to support the Reflection classes.
37521         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37522         * reflection.h, reflection.c: mono_image_create_token(),
37523         mono_assembly_get_object(), mono_type_get_object(),
37524         mono_method_get_object(), mono_field_get_object(): methods to return
37525         objects that parallel the C representation of assemblies, types,
37526         methods, fields.
37527
37528 2001-12-11  Dick Porter  <dick@ximian.com>
37529
37530         * icall.c:
37531         * file-io.c: Internal calls for file IO.
37532
37533 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37534
37535         * tabledefs.h: missing FileAttributes.
37536         * verify.h, verify.c: use is_valid_string () to simplify and check for
37537         valid strings more correctly. Fix warnings and speeling.
37538         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37539         Check code: branches, maxstack, method calls.
37540
37541 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37542
37543         * object.c (mono_object_allocate): removed static, so that the jit
37544         can allocate value types.
37545
37546         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37547
37548 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37549
37550         * class.c: init enum types right away and register the
37551         token->MonoClass map in mono_class_create_from_typedef ().
37552         * verify.h, verify.c: first cut of the verifier.
37553         * pedump.c: add --verify switch to verify metadata tables.
37554         * tabledefs.h: add some missing enums.
37555
37556 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37557
37558         * class.c (mono_install_runtime_class_init): impl.
37559         (mono_class_init): renamed mono_class_metadata_init to
37560         mono_class_init, also removed the metadata_inited flag
37561
37562         * object.c (mono_object_isinst): use faster algorithm
37563
37564 2001-11-30  Radek Doulik  <rodo@ximian.com>
37565
37566         * mono-endian.h: reverted last change
37567         added function prototypes
37568
37569         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37570         add mono-endian.c back
37571
37572         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37573         for unaligned access, I've mistaked it with endianess. I am
37574         sorry.
37575         (mono_read16): fix reverted endianess
37576         (mono_read64): ditto
37577         (mono_read32): ditto
37578
37579 2001-11-30  Dick Porter  <dick@ximian.com>
37580
37581         * exception.c: Implement mono_exception_from_name()
37582
37583 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37584
37585         * metadata.h, metadata.c: remove params_size and locals_size and their
37586         calculation from the metadata code: they are only usefult to the
37587         interp.
37588
37589 2001-11-29  Radek Doulik  <rodo@ximian.com>
37590
37591         * object.c (mono_ldstr): swap bytes here, it's probably not the
37592         best place, but works for me now, I'll redo it once I know mono
37593         better, also note that I add PROT_WRITE and don't reset back, also
37594         note that it's only affects big endians, so x86 should be OK
37595
37596         * mono-endian.h (read16): use just glib macros for both endians
37597
37598         * mono-endian.c: removed as glib macros are used in in
37599         mono-endian.h so we don't need to care about endianess for read
37600         macros as glib does that for us already
37601
37602 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37603
37604         * class.h, class.h: take minimum alignment into consideration so
37605         that the fields of a class remain aligned also when in an array.
37606
37607 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37608
37609         * loader.h, loader.c: add mono_method_get_param_names().
37610         * class.c: 0-init class fields.
37611
37612 2001-11-26  Dick Porter  <dick@ximian.com>
37613
37614         * icall.c:
37615         * threads-types.h:
37616         * threads.c: New file that handles System.Threading on all platforms
37617
37618         * object.c: 
37619         * object.h: Remove the synchronisation struct from MonoObject,
37620         replace it with a pointer that gets initialised on demand
37621
37622         * Makefile.am: Replace all the system-specific threading code with
37623         a single file that uses the new wrapper library
37624
37625 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37626
37627         * class.c, class.h: add mono_install_trampoline() so that the runtime
37628         can register a function to create a trampoline: removes the ugly
37629         requirement that a runtime needed to export arch_create_jit_trampoline.
37630         * object.h, object.c: added mono_install_handler() so that the runtime
37631         can install an handler for exceptions generated in C code (with
37632         mono_raise_exception()). Added C struct for System.Delegate.
37633         * pedump.c: removed arch_create_jit_trampoline.
37634         * reflection.c: some cleanups to allow registering user strings and
37635         later getting a token for methodrefs and fieldrefs before the assembly
37636         is built.
37637         * row-indexes.h: updates and fixes from the new ECMA specs.
37638
37639 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37640
37641         * class.h, class.c: add enum_basetype field to MonoClass.
37642         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37643         to get index in the constant table reated to a field, param or
37644         property.
37645         * reflection.h, reflection.c: handle constructors. Set public-key and
37646         version number of the built assembly to 0.
37647         * row-indexes.h: update from new ECMA spec.
37648
37649 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37650
37651         * class.h, class.c: add a max_interface_id to MonoClass.
37652         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37653         since it's used to do that. Added mono_type_type_from_obj().
37654         Make GetType() return NULL instead of segfaulting if the type was not
37655         found. Handle simple arrays in assQualifiedName.
37656         * object.h: add a struct to represent an Exception.
37657         * reflection.c: output call convention in method signature.
37658         Add code to support P/Invoke methods and fixed offsets for fields.
37659
37660 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37661
37662         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37663         the value.
37664         * icall.c: use mono_array_addr instead of array->vector: fixes the
37665         reflection image writing.
37666         * reflection.c: init call convention byte to 0 in method signature.
37667         Encode the property signature. Don't output property-related methods
37668         twice. Really process the properties for a type (don't cast a field to
37669         a property, my mom always told me that).
37670         Fix 64 bit issues in pointer alignment in a different and more
37671         readable way.
37672
37673 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37674
37675         * loader.h: Removed type class from MonoDefaults, added monotype
37676
37677         * loader.c: Loaded MonoType, removed loading of Type
37678
37679         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37680         and fills in System.Type._impl with a RuntimeTypeHandle rather
37681         than the actual MonoClass *
37682
37683         (ves_icall_type_from_handle): change from type_class to
37684         monotype_class
37685
37686         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37687         implemented
37688
37689         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37690         implemented
37691
37692         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37693
37694         (ves_icall_System_Reflection_Assembly_GetType): implemented
37695
37696         (ves_icall_System_MonoType_assQualifiedName): implemented
37697
37698         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37699
37700 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37701
37702         * assembly.c (mono_assembly_open): Implement a cache for the
37703         assemblies. 
37704
37705         (mono_assembly_close): only destroy the assembly when the last
37706         reference is gone.
37707         
37708 2001-11-09  Dick Porter  <dick@ximian.com>
37709
37710         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37711
37712 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37713
37714         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37715
37716 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37717
37718         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37719         from Martin Weindel.
37720         * object.h: add mono_string_chars ().
37721
37722 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37723
37724         * reflection.c (build_compressed_metadata): Eliminates warnings
37725         and uses 64-bit clean code.
37726
37727         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37728         (mono_type_equal): Change signature to eliminate warnings.
37729
37730 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37731
37732         * icall.c, loader.c: remove the internalcall array constructors.
37733         Changes to match the new MonoArray structure.
37734         * object.h, object.c: an array object doesn't allocate an extra
37735         vector. Add mono_array_new_full () to create jagged arrays easily.
37736
37737 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37738
37739         * metadata.h, metadata.c: add mono_metadata_field_info () to
37740         retreive all the info about a field from vairous tables.
37741         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37742         * class.h, class.c: augment MonoClassField with more info.
37743         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37744         policy and load a field's RVA if needed.
37745
37746 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37747
37748         * class.c (mono_class_metadata_init): create a trampoline for all
37749         virtual functions instead of actually compiling them.
37750
37751 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37752
37753         * class.h, class.c: include name in MonoClassField.
37754         * class.c: fix fundamental type of System.Object and System.String.
37755         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37756         tokens in ldtoken.
37757         * icall.c: remove internalcalls for the Reflection stuff that is now
37758         done in C# code.
37759         * loader.c: mono_field_from_memberref () implementation.
37760         * mono-endian.c: thinko (s/struct/union/g).
37761         * object.c, object.h: make the mono_string_* prototypes actually use
37762         MonoString instead of MonoObject.
37763         * reflection.c, reflection.h: updates for changes in the reflection
37764         code in corlib: we use C structures that map to the actual C# classes.
37765         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37766         fat method header if needed and use the info from the ILGenerator for
37767         methods. Handle fields in types. Misc fixes.
37768
37769 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37770
37771         * class.c (mono_class_metadata_init): bug fix: always allocate
37772         space for static class data
37773
37774 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37775
37776         * class.c (mono_compute_relative_numbering): use relative
37777         numbering to support fast runtime type checks.
37778
37779 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37780
37781         * class.c (mono_class_create_from_typeref): added debugging output
37782         to print class name when MonoDummy is returned instead of real class
37783
37784 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37785
37786         * class.c (mono_class_metadata_init): interface offset table now
37787         contains pointers into the vtable - this is more efficient for the jit
37788
37789 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37790
37791         * class.c (mono_class_metadata_init): use a temporary vtable (the
37792         old algorithm only worked for the interpreter, but not for the jit)
37793
37794 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37795
37796         * loader.c (method_from_memberref): use mono_class_get to get the
37797         class of an array instead of using System.Array directly.
37798         (mono_get_method): also add MEMBERREF methods to the method cache
37799         which usefull for arrays.
37800
37801 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37802
37803         * pedump.c (arch_compile_method): added to compute vtable entry
37804
37805         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37806         number of interfaces.
37807         
37808         * class.h: merged MonoArrayClass into MonoClass
37809
37810         * class.c (mono_class_create_from_typedef): compute the vtable size and
37811         allocate space to include the vtable inside MonoClass
37812         (mono_class_metadata_init): initialize the vtable
37813
37814 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37815
37816         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37817         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37818         * image.c: endian fixes by Laurent Rioux.
37819         * object.h, object.c: rename MonoStringObject to MonoString and
37820         MonoArrayObject to MonoArray. Change some function names to conform to
37821         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37822         guint16* as first argument, so don't use char*.
37823         Provide macros to do the interesting things on arrays in a portable way.
37824         * threads-pthread.c: updates for the API changes and #include <sched.h>
37825         (required for sched_yield()).
37826         * icall.c: updates for the API changes above.
37827         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37828         platforms that need them.
37829
37830 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37831
37832         * class.c: set the correct type for all the fundamental
37833         type when loading the class.
37834
37835 2001-10-05  Dick Porter  <dick@ximian.com>
37836
37837         * threads-pthread.c (pthread_mutex_timedlock): Simple
37838         compatibility version for C libraries that lack this call.
37839
37840 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37841
37842         * class.c: MonoTypes stored in MonoClass are stored as
37843         fundamental MonoTypes when the class represents a
37844         fundamental type (System.Int32, ...).
37845         The TypeHandle return by ldtoken is a MonoType*.
37846         * icall.c: ves_icall_get_data_chunk () write out all the
37847         PE/COFF stuff. Implement ves_icall_define_method (),
37848         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37849         * image.c: properly skip unknown streams.
37850         * loader.h, loader.c: add type_class to mono_defaults.
37851         * metadata.c, metadata.h: export compute_size () as
37852         mono_metadata_compute_size () with a better interface.
37853         Typo and C&P fixes.
37854         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37855         * reflection.c, reflection.h: many cleanups, fixes, output method
37856         signatures and headers, typedef and typeref info, compress the metadata
37857         tables, output all the heap streams, cli header etc.
37858         * row-indexes.h: typo fixes.
37859
37860 2001-10-04  Dick Porter  <dick@ximian.com>
37861
37862         * object.h: Add a synchronisation mutex struct to MonoObject
37863
37864         * object.c (mono_new_object): Initialise the object
37865         synchronisation mutexes
37866
37867         * icall.c: System.Threading.Monitor internal calls
37868         
37869         * threads-pthread.h:
37870         * threads-pthread.c: System.Threading.Monitor internal calls
37871
37872         * threads-types.h: New file, includes the system-specific thread
37873         structures
37874         
37875         * threads-pthread-types.h:
37876         * threads-pthread-types.c: New files, handle pthread-specific
37877         synchronisation types
37878
37879         * threads-dummy-types.h: 
37880         * threads-dummy-types.c: New files of dummy support for
37881         thread-specific types
37882
37883         * metadata.c:
37884         * image.c:
37885         * pedump.c: include mono-endian.h not endian.h
37886         
37887         * Makefile.am: More threads files.
37888         Name mono-endian.h not endian.h
37889
37890 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37891
37892         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37893         stuff and implement a few more bits.
37894         * icall.c: a field needs to be dereferenced twice. Do not use the same
37895         name for two variables in the same scope.
37896         * image.c, image.h: cleanups.
37897
37898 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37899
37900         * class.c (mono_class_metadata_init): bug fix: compute the right size
37901
37902 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37903
37904         * icall.c: implemented some of the Reflection internalcalls.
37905         * image.c, image.h: start writing out the PE/COFF image.
37906         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37907         that does the reverse than decode_blob_size ().
37908         * object.c: use mono_metadata_encode_value (). Move here
37909         temporary implementation of mono_string_to_utf8 ().
37910         * rawbuffer.c: make malloc_map static.
37911
37912 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37913
37914         * metadata.c: fix type comparison for arrays.
37915         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37916         Added a couple of new classes to monodefaults.
37917         * icall.c: added a couple of Reflection-related internalcalls.
37918         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37919         Added a byval_arg MonoType to MonoClass.
37920
37921 2001-09-28  Dick Porter  <dick@ximian.com>
37922
37923         * icall.c:
37924         * threads-pthread.h: 
37925         * threads-pthread.c: Implemented internal calls for
37926         LocalDataStoreSlot operations.  Applied mutexes around all shared
37927         data.  Reworked the thread creation and Start() operations to
37928         avoid a race condition.
37929         
37930         * threads-dummy.h:
37931         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37932
37933 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37934
37935         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37936
37937 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37938
37939         * class.c, loader.c: warn and return NULL instead of erroring out.
37940         * icall.c: added System.AppDomain::getCurDomain().
37941         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37942
37943 2001-09-25  Dick Porter  <dick@ximian.com>
37944
37945         * threads-pthread.h:
37946         * threads-pthread.c: Implemented timed thread joining and added
37947         System.Threading.Thread::Join_internal internal call
37948
37949         * icall.c: Added System.Threading.Thread::Join_internal internal call
37950
37951         * threads-dummy.h:
37952         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37953
37954 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37955
37956         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37957         mono_string_intern () to implement the semantics of the ldstr opcode
37958         and the interning of System.Strings.
37959         * icall.c: provide hooks to make String::IsIntern and String::Intern
37960         internalcalls.
37961
37962 2001-09-23  Dick Porter  <dick@ximian.com>
37963
37964         * threads-dummy.c: 
37965         * threads-dummy.h: New files of dummy threading routines
37966
37967         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37968         support code based on system specifics
37969
37970         Rename PTHREAD_LIBS to THREAD_LIBS
37971         
37972 2001-09-23  Dick Porter  <dick@ximian.com>
37973
37974         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37975         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37976         internal calls.
37977         (mono_thread_init): Set up a Thread object instance to return when
37978         the main thread calls Thread.CurrentThread
37979         (mono_thread_cleanup): Wait for all subthreads to exit
37980
37981         * icall.c: New internal calls for System.Threading.Thread::Sleep
37982         (including Schedule) and CurrentThread
37983
37984         * threads.h: New file, to insulate thread-specific stuff from the
37985         rest of the code
37986
37987 2001-09-21  Dick Porter  <dick@ximian.com>
37988
37989         * threads-pthread.h: 
37990         * threads-pthread.c: New file, for handling pthreads-style
37991         threading support.  Start() now starts a new thread and executes
37992         the ThreadStart delegate instance.
37993
37994         * icall.c: Added the internalcall for
37995         System.Threading.Thread::Start_internal
37996
37997         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37998
37999 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
38000
38001         * loader.c: work around the different signatures for delegates
38002         constructors csc generates in compiled code vs the ones compiled in mscorlib.
38003
38004 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38005
38006         * class.h, class.c: add mono_class_get_field_from_name ().
38007         * *: Fix C comments and other ANSI C issues.
38008
38009 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
38010
38011         * endian.h, assembly.c: fix some endianness issues.
38012
38013 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
38014
38015         * loader.h, load.c: add delegate_class to mono_defaults.
38016         Handle runtime provided methods in mono_get_method ().
38017
38018 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
38019
38020         * loader.c (mono_get_method): use pinvoke for internal call
38021
38022         * icall.c: use pinvoke for internal call
38023
38024         * loader.c (method_from_memberref): set the method name
38025
38026 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
38027
38028         * metadata.c: help the compiler generate better code for
38029         mono_class_from_mono_type ().
38030
38031 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
38032
38033         * class.c (mono_class_metadata_init): delayed computing of the
38034         class size to mono_class_metadata_init ()
38035
38036 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
38037
38038         * class.c, class.h: add an interfaces member to MonoClass.
38039         * image.c, image.h: add assembly_name field to MonoImage
38040         from the assembly table.
38041         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
38042
38043 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38044
38045         * class.c: Handle Array in mono_class_from_mono_type ().
38046         * metadata.c, pedump.c: some endian fixes.
38047
38048 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
38049
38050         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
38051         * metadata.c: fix small problem introduced with the latest commit.
38052
38053 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
38054
38055         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
38056         We don't need a MonoMetadata pointer anymore to compare signatures in
38057         mono_metadata_signature_equal (), update callers.
38058         Reduced memory usage an number of allocations for MonoMethodHeader and
38059         MonoMethodSignature.
38060
38061 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
38062
38063         * metadata.c: added compare for szarray.
38064
38065 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
38066
38067         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
38068         and add a couple more types to it and mono_defaults. Give an hint on
38069         classes that need implementing in our corlib and are referenced
38070         in mscorlib.
38071
38072 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
38073
38074         * class.h, class.c: keep track if a class is also an Enum.
38075         * loader.c: Implement a couple more types for use in libffi
38076         marshalling. Gives better diagnostics when failing to dlopen
38077         a library. Set method->klass for P/Invoke methods, too.
38078
38079 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
38080
38081         * class.c, class.h: add a MonoType this_arg to MonoClass that
38082         represents a pointer to an object of the class' type that
38083         can be used by the interpreter and later the type cache.
38084         Add best guess alignment info for valuetype objects.
38085
38086 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
38087
38088         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
38089         into MonoType: one less level of indirection and allocation and
38090         simplifies quite a bit of code. Added cache for MonoTypes that are
38091         used frequently, so that we don't need to allocate them all the time.
38092
38093 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
38094
38095         * class.c (mono_class_create_from_typedef): System.Enum is also a
38096         value type, although it does not derive from System.ValueType
38097         (maybe a bug in the ms compiler?)
38098
38099         * metadata.c (mono_type_size): return the right size for value types
38100
38101         * loader.c (mono_get_method): only initialize method header if not abstract
38102
38103         * class.c (mono_class_from_mono_type): use mono_default values. 
38104
38105 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
38106
38107         * *: use MonoClass pointers instead of <type_tokens>
38108         
38109         * class.h: new flag: metadata_inited.
38110
38111         * class.c (mono_class_metadata_init): impl.
38112         (mono_class_instance_size): impl.
38113         (mono_class_data_size): impl.
38114
38115 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
38116
38117         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
38118         MonoClass now has the name and name_space fields. 
38119         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
38120         mono_get_method () takes and optional MonoClass as argument.
38121         Removed mono_typedef_from_name() and added mono_class_token_from_name()
38122         instead that takes advantage of a map from class names to typedef
38123         tokens in MonoImage.
38124
38125 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
38126
38127         * metadata.c: zero is not a valid alignment boundary.
38128         Merge MONO_TYPE_VOID in default decoding code.
38129
38130 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
38131
38132         * image.h: merged MonoMetadata into MonoImage
38133
38134         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
38135         identify the type of elements.
38136
38137 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
38138
38139         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
38140         * cil-coff.h: split MonoMSDOSHeader and add size info.
38141         * image.c: add some consistency checks.
38142         * metadata.c: fix row size computation: one programmer
38143         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
38144         add explanation for the locator routine.
38145         Fix decoding of size in method header.
38146         
38147 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
38148
38149         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
38150         (g_concat_dir_and_file): Bring g_concat_dir_and_file
38151         function from gnome-libs.  This uses the right path separator
38152         based on the OS, and also works around a bug in some systems where
38153         a double slash is not allowed. 
38154         (default_assembly_name_resolver): Use g_concat_dir_and_file
38155         (mono_assembly_open): ditto.
38156
38157 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
38158
38159         * metadata.c (mono_metadata_signature_equal): impl.
38160
38161         * *: void is now a realy MonoType (instead of using NULL)
38162         
38163         * metadata.c (do_mono_metadata_parse_type): use
38164         mono_metadata_parse_type to parse void value.
38165
38166 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
38167
38168         * metadata.c, metadata.h: in the signature and method header store
38169         only the space required for holding the loca vars and incoming arguments.
38170
38171 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
38172
38173         * metadata.c (do_mono_metadata_parse_type): treat void like any
38174         other type (instead of assigning NULL);
38175
38176 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
38177
38178         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
38179
38180 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
38181
38182         * image.c (do_mono_image_open): added a cache for arrays.
38183
38184 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38185
38186         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
38187         decode a single column from a row in a metadata table and changes
38188         to take advantage of it in the typedef locator (gives a nice speed up).
38189         Store offset info for function params.
38190
38191 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
38192
38193         * image.h (MONO_IMAGE_IS_CORLIB): removed 
38194
38195 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
38196
38197         * assembly.c: how could mono_assembly_close () had ever worked?
38198         * metadata.c, metadata.h: provide offset info for local vars.
38199         Implement mono_type_size () to take care of alignment as well
38200         as size (it was mono_field_type_size in cli/class.c before).
38201
38202 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
38203
38204         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
38205
38206         * assembly.h (CORLIB_NAME): set to corlib.dll
38207
38208         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
38209
38210 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38211
38212         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
38213         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
38214         tokentype.h: massive namespace cleanup.
38215
38216 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38217
38218         * metadata.h, metadata.c: decode exception clauses when parsing method header.
38219
38220 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
38221
38222         * metadata.c (mono_metadata_free_type): added check for type !=
38223         NULL (void) before calling mono_metadata_free_type()
38224
38225 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
38226
38227         * metadata.h, row_indexes.h: added header with enumerations to use
38228         to index in the columns from tables in metadata and to decode coded
38229         tokens: we should start using this instead of embedding magic numbers
38230         all over the code.
38231
38232 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
38233
38234         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
38235         Move metadata_t info from cli_image_info_t to MonoImage, where
38236         it's easily accessible. Changed all the uses accordingly.
38237         Added the method and class caches to MonoImage.
38238         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
38239         and mono_metadata_decode_value () signature to be more consistent
38240         with the other parse functions (and simplify code). Taken advantage
38241         of zero-length array allocation with GCC. Removed reduntant (and
38242         wrong) MonoFieldType struct and use MonoParam instead. Changed
38243         mono_metadata_parse_field_type () to use common code for parsing.
38244         Added mono_metadata_typedef_from_field () and
38245         mono_metadata_typedef_from_method () to lookup a typedef index from a
38246         field or method token.
38247         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
38248
38249 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
38250
38251         * metadata.c (mono_metadata_parse_field_type): Implement. 
38252         (do_mono_metadata_parse_type): Split engine from
38253         mono_metadata_parse_type, so that we can create smaller structures
38254         for things that just have one pointer to the MonoType (look at
38255         the MonoFieldType)
38256
38257 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
38258
38259         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
38260         as Jan Gray found out, it is incorrect. 
38261
38262 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
38263
38264         * assembly.c: Implement asssembly loading.  This loads an image
38265         and loads all the referenced assemblies.  Come to think of it, we
38266         could always do lazy loading of the assemblies. 
38267
38268         * image.c (mono_image_open): Keep loaded images in a hashtable.
38269
38270         * image.h (MonoImage): Add reference count.
38271
38272 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38273
38274         * assembly.c (mono_assembly_open): Keep track of the file name in
38275         case the assembly has no ASSEMBLY table.
38276
38277         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38278         from get.c here.
38279
38280 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38281
38282         * metadata.c, metadata.h: decode local vars in method header
38283         parse function. Change callers accordingly.
38284
38285 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38286
38287         * metadata.h, cil-coff.h: protect against multiple inclusion.
38288         Added some new structures to hold information decoded from metadata:
38289         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38290         and relevant decoding/free functions.
38291         * metadata.c: implement decoding functions. Add warning for out of bounds
38292         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38293         all the info about a method signature and invocation. Remove check on
38294         uninitialized local var in parse_mh() and fix memory leak.
38295
38296 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38297
38298         * metadata.h: More macros.
38299
38300         * tokentype.h: New file.
38301
38302 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38303
38304         * assembly.c: added a consistency check and initialize
38305         some structures with g_new0().
38306         * metadata.c: fixed a couple more bugs in table size computation
38307         and add other checks for out-of bound access to metadata.
38308
38309 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38310
38311         * metatada.c: fix bugs computing table sizes. Spew a
38312         warning when index in string heap is out of bounds.
38313
38314 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38315
38316         * metadata.h: Add a couple of macros to manipulate tokens. 
38317
38318 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38319
38320         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38321         cli_section_tables).
38322
38323 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38324
38325         * metadata.c (mono_metadata_user_string): New function, provides
38326         access to the UserString heap. 
38327
38328 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38329
38330         * metadata.c: Add inline documentation.
38331
38332 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38333
38334         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38335         files. 
38336
38337 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38338
38339         * typeattr.h: New file, TypeAttribute flags. 
38340
38341 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38342
38343         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38344         mono_assembly_ensure_section): Section loading code.
38345         (load_section_tables): Load the sections.
38346
38347         * mono/metadata/metadata.c (mono_metadata_locate_token,
38348         mono_metadata_locate): Functions to locate the information
38349         definition given a token or a table and an index.
38350         (mono_metadata_compute_table_bases): New.
38351         (compute_size): New function to compute the sizes of the various
38352         tables.
38353
38354         * mono/metadata/metadata.h: Finish listing the different index
38355         types. 
38356
38357         * mono/metadata/pedump.c: Improve to dump new information.
38358
38359 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38360
38361         * mono/metadata/metadata.c: Entered all the tables matching
38362         Beta2. 
38363
38364         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2