f7ff00536e0a25e014f4a11293970df952428718
[mono.git] / mono / metadata / ChangeLog
1 2010-07-24  Mark Probst  <mark.probst@gmail.com>
2
3         * sgen-major-copying.c, sgen-internal.c, sgen-gc.c, sgen-gc.h,
4         sgen-pinning.c: Copying major collector doesn't mess around with
5         internals of the internal allocator anymore, instead using public
6         functions.
7
8 2010-07-24  Mark Probst  <mark.probst@gmail.com>
9
10         * sgen-internal.c: Internal allocator in its own module.
11
12         * sgen-gc.c, sgen-gc.h, sgen-gray.c, sgen-los.c,
13         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning.c,
14         sgen-pinning-stats.c: Remove internal allocator and call the
15         public functions now.
16
17         * Makefile.am: Added new file.
18
19 2010-07-24  Zoltan Varga  <vargaz@gmail.com>
20
21         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix warnings on amd64.
22
23 2010-07-24  Sanjoy Das <sanjoy@playingwithpointers.com>
24
25         * sgen-gc.h: Removed 'foo defined but not used' warnings for the
26           *_signal_num variables.
27
28 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
29
30         * file-io.c (ves_icall_System_IO_MonoIO_Read): Add a null check.
31         (ves_icall_System_IO_MonoIO_Write): Ditto.
32
33         * loader.c (mono_loader_cleanup): Delete loader_mutex, the shutdown races should
34         be fixed now.
35
36 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
37
38         * loader.c (mono_loader_lock_if_inited): New helper function which can be called
39         during startup before the loader lock is initialized.
40         (mono_loader_unlock_if_inited): Ditto.
41
42
43 2010-07-21  Geoff Norton  <gnorton@novell.com>
44
45         * sgen-archdep.h: Fix the build on amd64-darwin.
46
47 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
48
49         * object.c (mono_print_unhandled_exception): Fix a warning.
50
51 2010-07-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
52
53         * threadpool.c: use a monitor thread to start up new ones when needed.
54         Fixes bug #622398.
55
56 Thu Jul 15 18:44:44 CEST 2010 Paolo Molaro <lupus@ximian.com>
57
58         * reflection.c, class-internals.h, class.c, icall.c: support
59         reflection of default constant value for Re.Emit properties.
60
61 2010-07-14  Miguel de Icaza  <miguel@novell.com>
62
63         * reflection.c (load_cattr_value): Add support for encoding
64         DateTime constants into the blob.    Turns out that this is
65         required by .NET, it was only documented post 1.0.
66
67         * icall.c (ves_icall_type_GetTypeCodeInternal): Guard test for
68         System.Decimal and System.DateTime inside a mono_is_corlib_image
69         call.   A sample program showed that we could return the wrong
70         TypeCode just by creating a class with those names. 
71
72         * class.c (mono_is_corlib_image): Exposed this to other metadata/
73         code.
74
75 2010-07-14  Sebastien Pouliot  <sebastien@ximian.com>
76
77         * security-core-clr.c: Don't abort (only warn) if we cannot find 
78         a caller for relfecting code (transparent is assumed). Fix
79         get_method_access_exception to accept a NULL caller.
80
81 2010-07-14  Mark Probst  <mark.probst@gmail.com>
82
83         * sgen-gc.c: Heavy statistics on the internal allocator.
84
85 2010-07-13  Mark Probst  <mark.probst@gmail.com>
86
87         * sgen-marksweep.c, sgen-gc.h: Keep track of num_empty_blocks
88         properly and in a thread-safe way.
89
90 2010-07-13  Mark Probst  <mark.probst@gmail.com>
91
92         * sgen-gc.c, sgen-marksweep.c: Make object marking thread-safe.
93
94 2010-07-13  Mark Probst  <mark.probst@gmail.com>
95
96         * sgen-gc.c: Versions of safe_object_get_size() and
97         copy_object_no_checks() that work without the object's vtable
98         intact, by passing the correct vtable as an argument.
99
100 2010-07-13  Mark Probst  <mark.probst@gmail.com>
101
102         * sgen-marksweep.c: Make allocation of major sections thread-safe.
103
104 2010-07-13  Mark Probst  <mark.probst@gmail.com>
105
106         * sgen-gc.c, sgen-gc.h, sgen-los.c, sgen-major-copying.c,
107         sgen-marksweep.c: Update the heap boundaries thread-safe and lock
108         free if parallel mark is enabled.
109
110 2010-07-13  Mark Probst  <mark.probst@gmail.com>
111
112         * sgen-gc.c, sgen-gc.h, sgen-major-copying.c: Lock the internal
113         allocator if parallel mark (not committed yet) is enabled.
114
115 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
116
117         * reflection.c (inflate_mono_method): Handle dynamic
118         generic instances that have method.count set but
119         methods not. Fixes another crash from boo's test suite.
120
121 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
122
123         * icall.c (ves_icall_MonoMethod_get_base_method): If
124         the method slot is bigger than the class vtable, return
125         the original method. Makes booc work again.
126
127 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
128
129         * verify.c (mono_generic_param_is_constraint_compatible):
130         The candidate type itself might satisty the required
131         constraints.
132
133         Fixes #621599.
134
135 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
136
137         * reflection.c (fix_partial_generic_class): Inflate the
138         generic instance parent in case it was changed after
139         MonoGenericClass was instantiated.
140
141         Fixes one of the issues from #389886.
142
143 2010-07-10  Mark Probst  <mark.probst@gmail.com>
144
145         * sgen-gray.c: Store only a pointer to one end of the gray queue.
146
147 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
148
149         * loader.c (mono_method_signature_checked): Release the domain
150         lock on failure.
151
152 2010-07-10  Mark Probst  <mark.probst@gmail.com>
153
154         * sgen-gc.c: Store the forwarding address in the first word of an
155         object, where the forwarding bit is stored.
156
157 2010-07-10  Mark Probst  <mark.probst@gmail.com>
158
159         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
160         interface to register our Mach exception thread which will not be
161         suspended by stop-the-world.
162
163 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
164
165         * loader.c (mono_get_method_constrained): Properly unlock the
166         domain lock on failure. Use checked variant of
167         inflate_generic_signature.
168
169 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
170
171         * loader.c (mono_method_signature_checked): Use checked
172         variant of inflate_generic_signature.
173
174         Fixes #606353.
175
176 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * metadata.c (mono_metadata_parse_type_internal): Don't use
179         cannonical types when a transient type was requested.
180
181         Fixes #608626.
182
183 2010-07-10  Mark Probst  <mark.probst@gmail.com>
184
185         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
186         All functions that touch the gray queue directly or indirectly now
187         take it as an argument.
188
189 2010-07-10  Mark Probst  <mark.probst@gmail.com>
190
191         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
192         Put the gray queue data into a struct and pass it around.
193
194 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
195
196         * class.c (mono_method_can_access_method_full): Handle type
197         accessibility with very deep nested types.
198
199         * class.c (mono_method_can_access_field_full): Ditto.
200
201         Fixes #619300.
202
203 2010-07-10  Mark Probst  <mark.probst@gmail.com>
204
205         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
206         sgen-scan-object.h: Use a macro for rounding up sizes and
207         addresses to ALLOC_ALIGN.
208
209 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
210
211         * file-io.c: fix GetFileSystemEntries for patterns containing
212         directories.
213
214 2010-07-09  Mark Probst  <mark.probst@gmail.com>
215
216         * sgen-marksweep.c (major_finish_major_collection): Don't free
217         major heap blocks on 32 bit platforms because it can lead to
218         address space fragmentation.  We'll figure this out later.
219
220 2010-07-09  Mark Probst  <mark.probst@gmail.com>
221
222         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
223         heap blocks for mark&sweep eventually.
224
225 2010-07-09  Mark Probst  <mark.probst@gmail.com>
226
227         * sgen-protocol.c: Fix build when binary protocol is disabled.
228
229 2010-07-09  Mark Probst  <mark.probst@gmail.com>
230
231         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
232         thread-safe.
233
234 2010-07-08 Neale Ferguson <neale@sinenomine.net>
235
236         * sgen-archdep.h: Add support for s390x
237         * domain.c: Use gsize so that 64-bit big endian systems produce 
238         bitmap.
239
240 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
241
242         * pedump.c (verify_image_file): Initialize the vtable as well.
243
244 2010-07-07  Geoff Norton  <gnorton@novell.com>
245
246         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
247         header.
248
249 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
250
251         * assembly.c (mono_assembly_load_reference): Replace a g_warning
252         with a mono_trace calls. This makes compiling MD a lot less scary.
253
254 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
255
256         * verify.c (do_stobj): Improve error message.
257
258 2010-07-08  Mark Probst  <mark.probst@gmail.com>
259
260         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
261         from the object because it might have pinned/forwarding bits set.
262
263 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
264
265         * Makefile.am (sgen_sources): Add missing sgen files.
266
267 2010-06-07  Martin Baulig  <martin@ximian.com>
268
269         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
270         New helper function since mono_thread_get_abort_signal() is now
271         internal.
272
273 2010-06-07  Martin Baulig  <martin@ximian.com>
274
275         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
276
277 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
278
279         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
280         public, as mono_string_to_utf_8 is deprecated.
281
282         * object.(c|h): Added mono_object_to_string, a public helper function 
283         that calls ToString on a MonoObject and returns a MonoString.
284
285         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
286
287 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
288
289         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
290         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
291         match their declarations and vice-versa.
292
293
294 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
295
296         * class-internals.h, domain-internals.h: mark functions that are
297         needed by the llvm module.
298
299 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
300
301         * assembly.c (framework_assemblies): Add 3.5 assemblies.
302
303         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
304         by one to have room to remap 3.5 assemblies.
305
306         * domain.c (supported_runtimes): Add 3.5 remapping information.
307
308 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
309
310         * reflection.c (mono_image_create_token): Handle a
311         FieldBuilder from a different assembly.
312
313         Fixes #611836.
314
315 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
316
317         * verify.c (do_store_static_field): Improve error
318         message.
319
320 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
321
322         * assembly.c: Revert r159692 since it breaks loading 3.5
323         assemblies under 2.0.
324
325 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
326
327         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
328         TypedByRef is passed.
329
330         * icall.c (ves_icall_Type_make_byref_type): Ditto.
331
332         * icall.c (ves_icall_Type_MakePointerType): Ditto.
333
334         Fixes #612780.
335
336 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
337
338         * assembly.c: Add a few more assemblies to the list of framework
339         assemblies.
340
341         Fixes #617714.
342
343 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
344
345         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
346         fails.
347
348 2010-06-25  Mark Probst  <mark.probst@gmail.com>
349
350         * class.c (mono_class_inflate_generic_method_full_checked): Added
351         a comment regarding a hack in mini-trampolines.c.
352
353 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
354
355         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
356         sizeof(SIZEOF_VOID_P) which is 4.
357
358         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
359
360 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
361
362         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
363         GCs too.
364
365         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
366
367         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
368         objects.
369
370         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
371         desktop mode.
372
373 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
374
375         * *-gc.c (mono_gc_get_description): New function returning a human readable
376         description of the current GC.
377
378 2010-06-24  Miguel de Icaza  <miguel@novell.com>
379
380         * mono-hash.c: Moved here from mono/utils as this file is
381         GC-aware, and the utils directory is not.
382
383 2010-06-23  Miguel de Icaza  <miguel@novell.com>
384
385         * Makefile.am: Add support for building a sgen-aware versions of
386         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
387         they share all the components of the default, but use a differen
388         set of CFLAGS to enable SGEN instead.
389
390         Put the BOEHM defines in the CFLAGS definition. 
391
392         * domain-internals.h (MonoJitInfo): this structure used to have
393         different sizes depending on the GC that was configured (Boehm vs
394         SGen).   I have removed this difference for the sake of avoiding
395         the complexity of dealing with the mono/arch directory requiring
396         GC-specific changes to their Makefiles.
397
398 2010-06-23  Mark Probst  <mark.probst@gmail.com>
399
400         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
401
402 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
403
404         * metadata.c (mono_metadata_type_hash): Don't hash
405         the type kind for dynamic types since it can change.
406
407 2010-06-22 Geoff Norton  <gnorton@novell.com>
408
409         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
410         alloca instead to prevent a deadlock.
411
412 2010-06-22  Geoff Norton  <gnorton@novell.com>
413
414         * domain.c: Allow gettings the tls key, since we need it for
415         cross thread tls poking in sgen-mach
416         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
417         in external files for platform specific STW support.
418         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
419         * sgen-os-posix.c: Move the existing posix signal based STW here.
420
421 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
422
423         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
424
425 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
426
427         * object-internals.h: Map new PropertyBuilder fields.
428
429         * reflection.c (property_encode_signature): Emit an instance
430         signature if property's callconv is hasthis.
431
432         * appdomain.c: Bump corlib version.
433
434 2010-06-20  Jb Evain  <jbevain@novell.com>
435
436         * metadata-verify.c: do not consider the assembly invalid if it
437         doesn't have a #Blob stream as resource assemblies don't
438         necessarily have one.
439
440 2010-06-17  Geoff Norton  <gnorton@novell.com>
441
442         * sgen-archdep.h: sgen support for arm linux and darwin.
443
444 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
445
446         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
447         has a faulty header.
448
449 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
450
451         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
452         way to mono_gc_wbarrier_value_copy but takes a bitmap that
453         indicates which slots need a write barrier.
454
455 2010-06-14  Jonathan Pryor <jpryor@novell.com>
456
457         * Makefile.am (EXTRA_DIST): Add runtime.h.
458
459 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
460
461         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
462
463 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
464
465         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
466         IMT slot which is passed to callbacks.get_imt_trampoline.
467
468 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
469
470         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
471         imt trampoline per imt slot when using LLVM.
472
473 2010-06-10  Jonathan Pryor <jpryor@novell.com>
474
475         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
476           runtime.c:mono_runtime_shutdown().
477         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
478           AppDomain.ProcessExit event in all AppDomains.
479
480 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
481
482         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
483         done by the caller.
484
485 2010-06-05  Mark Probst  <mark.probst@gmail.com>
486
487         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
488         up freeing.
489
490 2010-06-05  Mark Probst  <mark.probst@gmail.com>
491
492         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
493         segments of memory at once, to reduce the number of mmap/munmap
494         calls.
495
496 2010-06-05  Mark Probst  <mark.probst@gmail.com>
497
498         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
499         allocations and distinguish between normal, degraded and pinned
500         allocations.
501
502 2010-06-05  Mark Probst  <mark.probst@gmail.com>
503
504         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
505         allocations count toward major collections and trigger major
506         collections from degraded allocations if appropriate.
507
508 2010-06-05  Mark Probst  <mark.probst@gmail.com>
509
510         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
511
512 2010-06-05  Mark Probst  <mark.probst@gmail.com>
513
514         * sgen-gc.c: Enable mark&sweep again.
515
516 2010-06-05  Mark Probst  <mark.probst@gmail.com>
517
518         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
519
520 2010-06-05  Mark Probst  <mark.probst@gmail.com>
521
522         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
523         major heap allowance for minor collections, instead of two
524         separate ones for small and large objects.  This reduces the
525         number of major collections.
526
527 2010-06-04  Marek Habersack  <mhabersack@novell.com>
528
529         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
530         the BFLAGS_IgnoreCase is raised
531
532 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
533
534         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
535         all information in a single structure. Return information about scopes as well.
536
537         * mono-debug.c (mono_debug_lookup_locals): Ditto.
538
539 2010-06-02  Geoff Norton  <gnorton@novell.com>
540
541         * appdomain.c: If we are running with IOMAP we might
542         have been provided a string that isn't case-aware for our file-
543         system, so we need to use io-portability to check if the file 
544         exists, rather than a simple glib test.
545
546         Fixes #608849
547
548 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
549
550         * verify.c (verify_generic_parameters): Verify if
551         there are not loops in constraints.
552
553 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
554
555         * verify.c (is_compatible_boxed_valuetype): Constaints
556         must be recursively checked if one generic argument
557         has a constraint on another.
558
559         Fixes #610625.
560
561 2010-05-31  Miguel de Icaza  <miguel@novell.com>
562
563         * console-unix.c (terminal_get_dimensions): Fix my previous
564         botched commit and return the actual value obtained from the ioctl.
565
566 2010-05-29  Mark Probst  <mark.probst@gmail.com>
567
568         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
569         references so that we don't have to do the cache-cold fetch of the
570         class in copy_object_no_checks().
571
572 2010-05-29  Robert Jordan  <robertj@gmx.net>
573
574         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
575         mono_marshal_string_to_utf16_copy () to avoid memory allocation
576         mismatches under Windows. Fixes pinvoke2:test_0_asany.
577
578 2010-05-28  Mark Probst  <mark.probst@gmail.com>
579
580         * sgen-gc.c: Change default nursery size to 4MB, because it
581         improves performance on many applications and benchmarks.
582
583 2010-05-28  Mark Probst  <mark.probst@gmail.com>
584
585         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
586         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
587         the GC descriptor by one bit, and don't encode the size for value
588         types not containing references.  Also get rid of
589         DESC_TYPE_STRING.
590
591 2010-05-28  Mark Probst  <mark.probst@gmail.com>
592
593         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
594         other than for remset processing.
595
596 2010-05-28  Mark Probst  <mark.probst@gmail.com>
597
598         * sgen-gc.c: More and better remset consistency checks.
599
600 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
601
602         * sgen-gc.c: Add a note about the int[] trick to avoid some
603         memset.
604
605 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
606
607         * sgen-gc.c (sort_addresses): Use heap sort since it has better
608         performance.
609
610         This helps programs with lots of threads or thread with big stacks
611         since the bottleneck the pin queue can get quite big.
612
613 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
614
615         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
616         a separate function called setup_fragment.
617
618         * sgen-gc.c (search_fragment_for_size_range): Variant of
619         search_fragment_for_size that does search for a secondary smaller
620         size.
621
622         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
623         for tlab allocation so small fragments are used.
624
625         This patch uses small fragments for tlab allocation when possible in order
626         to improve nursery utilization. With a fixed size tlab this patch is not very
627         usefull but once size gets dynamically adjusted, this will be invaluable.
628
629         Performance under pystone 500k is unchanged. Nursery utilization improves by
630         3.5% and 18 more fragments are used per minor GC.
631
632         Performance under modified binary-tree is unchanged. Nursery utilization
633         improves by 0.5% and 3 more fragments are used per minor GC.
634
635         These numbers make sense since as more pinning happens, more fragments are
636         created and so are the chances of having a bunch of small ones.
637
638 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
639         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
640         the current fragment when allocating a TLAB.
641
642         Reduces number of pystone 500k minor collections by 7%.
643
644 2010-05-25  Martin Baulig  <martin@ximian.com>
645
646         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
647
648         * debug-mono-symfile.c: Release memory from symfiles that were
649         loaded from memory.
650
651 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
652
653         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
654         during shutdown.
655
656 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
657
658         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
659         target class and remove some dead code.
660
661 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
662
663         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
664         the MonoTypes inside method headers can be freed when the header is freed.
665
666 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
667
668         * threadpool.c: Fix the DISABLE_SOCKETS build.
669
670 2010-05-19 Martin Baulig  <martin@novell.com>
671
672         Fix #604911.
673
674         * threads.c (wait_for_tids_or_state_change): Use an
675         alertable WaitForMultipleObjectsEx().
676         (wait_for_tids): Likewise.
677
678 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
679
680         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
681         icall.
682
683         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
684         gc tracked memory.
685
686         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
687         argument from a gchandle.
688
689         * marshal.c: Get rid of the delegate_target_locations hash table.
690
691         Fixes #605295.
692
693 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
694
695         * sgen-gc.c: Use _fast variants for string and array length.
696
697 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
698
699         * sgen-gc.c: Fix counters to be 64 bits.
700
701         * sgen-gc.c (dump_heap): Fix formating strings.
702
703 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
704
705         * sgen-gc.c (global_remset_location_was_not_added): New
706         function that implements a 2 element LRU cache for just
707         added remsets. It is used to avoid adding duplicate ones.
708
709         * sgen-gc.c (add_to_global_remset): Check cache before
710         adding new entry.
711
712         * sgen-gc.c (scan_from_remsets): Don't process global remsets
713         that fail the cache test.
714
715         * sgen-gc.c (scan_from_remsets): Simplify the global remset
716         loop removing one condtion that is not possible.
717
718         A 2 element LRU cache was chosen by profiling IronPython 2.6
719         pytones with 1M passes and corlib compilation.
720
721         For the ipy test duplication was originally 940.92, measured
722         by "Store remsets" divided by "Unique store remsets".
723
724         With a 2-element LRU, duplication went to 1.007. Without the
725         check in scan_from_remsets 1.438.
726
727         With a 16-elements LRU, duplication reduction was negligibe.
728         A single element cache was basically of no use.
729
730         With corlib compilation duplication went from  1.4 to 1.02.
731
732         Performance results is a 20% time decrease for ipy and 2%
733         with corlib.
734 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
735
736         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
737
738 2010-05-15  Geoff Norton  <gnorton@novell.com>
739
740         * mono-debug.c: Fix a leak of the global table on shutdown.
741
742 2010-05-15  Geoff Norton  <gnorton@novell.com>
743
744         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
745         to clean up MonoDebugSourceLocation's.
746
747 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
748
749         * class.c (mono_class_create_from_typedef): Fail a class
750         if there is a loop with its parent.
751
752         Fixes #598239.
753
754 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
755
756         * loader.c (mono_loader_set_error_type_load): Convert
757         a g_warninig to mono_trace_warning.
758
759 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
760
761         * class.c (mono_class_get_full): Release strings on failure
762         to avoid leaking them.
763
764 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
765
766         * class.c (mono_class_create_from_typedef): Only return
767         the class if no exceptions were detected.
768
769         * class.c (mono_class_create_from_typedef): Don't remove
770         broken classes from class_cache. Just set failure and
771         bail out.
772
773         This fixes a memory a memory leak where resolving the same
774         broken class multiple times resulted in a memory leak.
775
776         The right behavior would be to actually return the class
777         a let the caller figure it out.
778
779 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
780
781         * mono-ptr-array.h: Add mono_ptr_array_sort.
782
783         * reflection.c (mono_image_build_metadata): Replace that ugly
784         qsort call with mono_ptr_array_sort.
785
786 2010-05-13  Mark Probst  <mark.probst@gmail.com>
787
788         * sgen-gc.c: Switch to the copying major collector, because
789         Mark&Sweep is still buggy.
790
791 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
792
793         * reflection.c (mono_image_build_metadata): Don't put managed
794         references on non-tracked memory.
795
796 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
797
798         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
799
800 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
801
802         * icall.c: Switch to mono-ptr-array.h.
803
804 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
805
806         * Makefile.am: Add mono-ptr-array.h.
807
808         * mono-ptr-array.h: New header that implements
809         a GC tracked equivalent of g_ptr_array. 
810
811 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
812
813         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
814         method to avoid initializing the class.
815
816         Fixes #605115.
817
818 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
819
820         * icall.c (ves_icall_System_MonoType_getFullName): It
821         doesn't require to init the class.
822
823 2010-05-11  Miguel de Icaza  <miguel@novell.com>
824
825         * console-unix.c: Signal handlers now save and restore errno.   We
826         have never had a bug report about this, ioctl does change errno. 
827
828         Hide the unused method.   
829
830         Remove internal declarations from public headers.
831
832         Document what the signal handler is doing
833
834 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
835
836         * sgen-gc.c (clear_unreachable_ephemerons): Clear
837         unreachable keys with a tombstone.
838
839         * sgen-gc.c (mark_ephemerons_in_range): Ignore
840         tombstone keys.
841
842 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
843
844         * icall-def.h:
845         * gc-internals.h:
846         * gc.c: New GC:get_ephemeron_tombstone.
847
848 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
849
850         * appdomain.c (create_exceptions): Rename to
851         create_domain_objects. Create the ephemeron tombstone object.
852
853         * domains-internals.h (MonoDomain): Add new field for the
854         ephemeron tombstone.
855
856         * domain.c (mono_domain_free): Set ephemeron_tombstone to
857         NULL.
858
859 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
860
861         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
862         and dislinks must be processed before LOS since they
863         could end up with pointers to memory returned to the
864         OS.
865
866 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
867
868         * class.c (mono_class_alloc): New helper function to centralize memory allocation
869         for classes, allocates either from the image mempool or from the heap.
870
871         * class.c: Use mono_class_alloc to allocate memory owned by classes.
872
873         * metadata.c (free_generic_class_dependents): Free more items belonging to
874         generic classes.
875
876 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
877
878         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
879         as well. Fixes #604054.
880
881 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
882
883         * metadata-verify.c: MS doesn't mind duplicates in the
884         typeref table. Move it to full verification.
885
886         Fixes #600508.
887
888 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
889
890         * image.c (do_mono_image_load): Report verification
891         errors when loading an image fails.
892
893 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
894
895         * reflection.c (mono_type_get_object): Remove chunk of code
896         no longer in use.
897
898 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
899
900         * icall-def.h
901         * icall.c: Delete some unused icalls.
902
903 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
904
905         * appdomain.c (mono_domain_has_type_resolve): Check for
906         NULL domain objects to make pedump happy.
907
908         * object.c (mono_field_get_value): Assert on NULL object.
909         It's the caller resposibility to check for this.
910
911         * object.c (mono_field_get_value_object): Ditto.
912
913         Fixes #601384.
914
915 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
916
917         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
918         checks can avoid doing a mono_class_init.
919
920         * icall.c: Remove mono_class_init from a bunch of icalls that
921         don't need it.
922
923         Hopefully we're now lazy enough to fix most victims of #601431.
924
925 2010-05-07  Mark Probst  <mark.probst@gmail.com>
926
927         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
928
929 2010-05-07  Mark Probst  <mark.probst@gmail.com>
930
931         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
932
933 2010-05-07  Marek Habersack  <mhabersack@novell.com>
934
935         * culture-info-tables.h: updated to include en-TT culture. Fixes
936         bug #594035
937
938 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
939
940         Move mono_class_init from mono_type_get_object to icalls.
941         This causes massive memory savings for Assembly::GetTypes () and
942         make it fail a lot less due to missing dependencies.
943
944         This is a conservative, naive change as it doesn't remove some
945         mono_class_init from places that might not need them. Carefull
946         review of those should follow.
947
948         * reflection.c (mono_type_get_object): Don't mono_class_init the
949         returning type.
950
951         * reflection.c:
952         * cominterop.c:
953         * icall.c:
954         * marshal.c: Call mono_class_init in functions receiving a MonoType
955         object.
956
957         First step into fixing #601431.
958
959 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
960
961         * gc-internal.h: Add new functions required for ephemeron support.
962
963         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
964
965         * icall-def.h: Add GC::register_ephemeron_array.
966
967         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
968         under sgen. Its fields must not be marked.
969
970         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
971
972         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
973         handling finalizable objects. Clean dead ones after all finalizable
974         handling.
975
976         * sgen-gc.c (dump_heap): Add new kind of internal memory.
977
978         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
979         arrays from the dead domain.
980
981         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
982
983         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
984         whose keys are reachable.
985
986         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
987         list of live ephemeron arrays.
988
989 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
990
991         * class.c (mono_class_layout_fields): Don't perform alignment
992         if align is zero.
993
994         * class.c (mono_class_layout_fields): Init field related information
995         to sane defaults.
996
997 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
998
999         * verify.c (mono_verifier_verify_class): Verify the constraint
1000         of generic type definitions.
1001
1002 2010-05-04  Mark Probst  <mark.probst@gmail.com>
1003
1004         * sgen-marksweep.c: Simplify free list maintenance in sweep.
1005
1006 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1007
1008         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
1009         major_do_collection() across the two major collectors.
1010
1011 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1012
1013         * sgen-gc.c: Add heavy statistics counter for re-added global
1014         remsets.
1015
1016 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1017
1018         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
1019         get rid of a division in critical code.
1020
1021 2010-04-29  Mark Probst  <mark.probst@gmail.com>
1022
1023         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
1024         blocks for objects without references in mark&sweep, to improve
1025         performance.
1026
1027 2010-04-28  Mark Probst  <mark.probst@gmail.com>
1028
1029         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
1030         statistics up-to-date.
1031
1032 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1033
1034         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
1035         heap-dump for mark&sweep.
1036
1037 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1038
1039         * loader.c (mono_method_get_header): Move the is_inflated case before the
1040         wrapper case, as a method can be both.
1041
1042 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1043
1044         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
1045         separate pass to scan pinned and large object but use the gray
1046         queue like for regular objects.
1047
1048 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1049
1050         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
1051         string.h for memmove.
1052
1053         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
1054         ipaddress_to_struct_in6_addr() is only needed when
1055         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
1056
1057 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1058
1059         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
1060         separate copy_object functions for major vs nursery.  Allows us to
1061         get rid of a few checks and the start and end parameters for many
1062         functions.
1063
1064 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1065
1066         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
1067         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
1068         collector.
1069
1070 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
1071
1072         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
1073         calling setup_mono_type () since the nested parent could recursively reference
1074         the nested class using generic constraints. Fixes #599469.
1075
1076 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1077
1078         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
1079         abstraction.
1080
1081 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1082
1083         * sgen-gc.c: Remove more unneeded code.
1084
1085 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1086
1087         * sgen-gc.c: Disable managed allocator and wbarrier when the
1088         binary protocol is enabled.
1089
1090 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1091
1092         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
1093
1094 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1095
1096         * sgen-gc.c: Remove a few commented out and unneeded bits.
1097
1098 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1099
1100         * threadpool.c: patch from Robert Nagy that fixes a nullref and
1101         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
1102
1103 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
1106         types.
1107
1108         Fixes #331126
1109
1110 2010-04-21  Mark Probst  <mark.probst@gmail.com>
1111
1112         * sgen-gc.c: Turn off semi-precise stack mark.
1113
1114 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
1115
1116         * reflection.c (mono_custom_attrs_from_index): Use right function
1117         to free 'list' (i.e. g_list_free) if the verifier fails.
1118
1119 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1120
1121                 * verify.c: Handle the case where mono_type_get_underlying_type_any
1122                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
1123                 and MONO_TYPE_VALUETYPE in those case.
1124
1125                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
1126
1127                 Hopefully Fixes #564253.
1128
1129 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
1130
1131         * domain-internals.h: made threadpool_jobs volatile.
1132         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
1133         all local jobs.
1134         * threadpool.c:
1135                 -When two threads try to initialize the socket IO pool,
1136                 the second one waits until the intialization is finished
1137                 instead of continuing right away.
1138                 -Add checks for domain unload: no items added in this case.
1139                 -Only measure the time every 10 elements added to the queue.
1140                 This is an experiment since linux x86 gettimeofday() sucks.
1141                 -Create new thread if there are none waiting for work items.
1142                 -There was a missing decrement of the busy threads.
1143                 -Make sure the local queue is cleaned up before exiting the
1144                 thread when the program ends.
1145
1146 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1147
1148         * reflection.c (mono_type_get_object): Normalize generics types
1149         as to how managed code expect them to be. A generic instance over
1150         the GTD arguments must have the same mirror as the GTD itself.
1151
1152         Fixes #473289.
1153
1154 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * locales.c: Implement support for DISABLE_NORMALIZATION.
1157
1158 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1161         since it is not a MonoMethod.
1162
1163 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1164
1165         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1166         System.Security.SecurityManager - used only by Moonlight
1167         * security-core-clr.c|h: Add Elevated Trust/Permission support
1168         for CoreCLR / Moonlight
1169
1170 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1171
1172         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1173         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1174
1175 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1176
1177         * mono-perfcounters.c: added code for the "Mono
1178         Memory/Total Physical Memory" performance counter.
1179
1180         * mono-perfcounters-def.h: added definition of the "Mono
1181         Memory/Total Physical Memory" performance counter.
1182
1183 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1184
1185         * class.c (mono_class_get_method_by_index): Return NULL
1186         on type load failures.
1187
1188 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1189
1190         * class.c (mono_class_from_typeref): Check if the supplied
1191         image has an assembly bound to it.
1192
1193         Fixes #567884.
1194
1195 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1196
1197         * loader.c (mono_method_get_signature_full): Use new function
1198         inflate_generic_signature_checked to check for errors.
1199
1200         Fixes #560839.
1201
1202 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1203
1204         * loader.c (inflate_generic_signature): Add _checked variant
1205         and move this function to use it.
1206
1207 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1208
1209         * class.c (mono_class_setup_vtable_general): Use error checking
1210         version of mono_class_inflate_generic_method_full.
1211
1212         Fixes #596975.
1213
1214 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1215
1216         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1217         error handling passing MonoError around.
1218
1219         Fixes #560336.
1220
1221 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1222
1223         * socket-io.c: make GetHostByName ("") work on windows.
1224         Fixes bug #456723.
1225
1226 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1227
1228         * object-internals.h:
1229         * threads.c: use a spin lock when accesing the per-thread appdomain
1230         list.
1231
1232 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1233
1234         * threads.c: no need to take the threads lock in push/pop appdomain.
1235
1236 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1237
1238         * reflection.c (_mono_reflection_parse_type): MS supports
1239         non-assembly-qualified types in a generic type parameter list
1240         when enclosed in '[]' (which signals that they should be a fqn).
1241
1242         This breaks ECMA specs for how type names are encoded in cattr
1243         blobs but F# does it.
1244
1245         Fixes #576342.
1246
1247 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1248
1249         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1250         for instance methods/ctors.
1251
1252         Fixes #422113.
1253
1254 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1255
1256         * reflection.c: Use the new verifier support for checking
1257         custom attributes.
1258
1259         Fixes #595306.
1260
1261 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1262
1263         * metadata-verify.c: Implement structural verification
1264         of custom attributes. This check requires access to the
1265         loader since to resolve the size of an enum we have to
1266         look it up.
1267         We don't check if named argumenments are encoded in a
1268         compatible fashion to their underlying field/prop.
1269         Maybe we should?
1270
1271         * verify-internals.h: Add two new cattr verification API.
1272
1273 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1274
1275         * metadata-verify.c (decode_signature_header): Fix signature.
1276
1277 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1278
1279         * verify.c (mono_verifier_is_enabled_for_method): Handle
1280         assembly less images.
1281
1282         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1283
1284 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1285
1286         * loader.c (mono_method_signature_checked): Properly
1287         init MonoError.
1288
1289         * loader.c (mono_method_signature): It's the calee
1290         resposibility to init the error object.
1291
1292 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1293
1294         * metadata-verify.c (decode_signature_header): Do proper
1295         overflow checking.
1296
1297 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1298
1299         * reflection.c: maintain the invariants required by
1300         mono_class_layout_fields() also in typebuilder_setup_fields ().
1301
1302 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1303
1304         * security-core-clr.c: Call mono_class_setup_methods in 
1305         get_default_ctor before checking klass->methods. Fix typo in
1306         comment
1307
1308 2010-04-10  Jb Evain  <jbevain@novell.com>
1309
1310         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1311         add .net 4.0 RTM version.
1312
1313 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1314
1315         * reflection.c (resolve_object): Properly inflate generic
1316         methods when a context is supplied.
1317
1318         Fixes #591226.
1319
1320 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1321
1322         * verify.c (mono_method_verify): A switch op don't empty
1323         the stack for the next one. Fixes a bug when running fsi
1324         under --verify-all.
1325
1326 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1327
1328         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1329         fields as valid standalone sig too. F# does generate them.
1330
1331         * metadata-verify.c (verify_typedef_table_full): Ignore
1332         what <module> extends.
1333
1334 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1335
1336         * verify.c (do_invoke_method): It's ok to do use call with
1337         virtual, non-final methods if their class is sealed.
1338
1339 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1340
1341         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1342         is a near identical copy of mono_field_get_value_object. So simply
1343         call it.
1344
1345         * object.c (mono_field_get_value_object): Handle literal fields
1346         on open generic classes.
1347
1348         Fixes #594942.
1349
1350 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1351
1352         * reflection.c (mono_reflection_create_runtime_class): Setup
1353         parent/supertype information again since it can be changed
1354         without notice.
1355
1356 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1357
1358         * verify.c (verify_type_compatibility_full): Properly handle
1359         stores between arrays of primitives.
1360
1361         Fixes the verifier side of #555950.
1362
1363 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1364
1365         class.c (mono_bounded_array_class_get): Properly init
1366         cast_class to take the fact that uint[] and int[] can be
1367         casted between each other.
1368
1369         Fixes #555950.
1370
1371 2010-04-07  Geoff Norton  <gnorton@novell.com>
1372
1373         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1374
1375 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1376
1377         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1378         builders. Fixes #594464.
1379
1380 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1381
1382         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1383         waiting for all threads to suspend, as those threads can't be suspended.
1384
1385 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1388         to avoid crashes on newly created threads.
1389
1390 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1391
1392         * file-io.c: reset the MonoIOStat structure in case of error.
1393         Fixes bug #582667.
1394
1395 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1396
1397         * class.c (print_implemented_interfaces): Print proper type name.
1398
1399         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1400         the override map for generic instances since it later ignored.
1401
1402         * class.c (mono_class_implement_interface_slow): Don't break for
1403         dynamic generic instances.
1404
1405         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1406
1407         * reflection.c (mono_reflection_method_get_handle): New method that
1408         resolves a method handle.
1409
1410         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1411         case when we override methods from a dynamic generic instance interface.
1412
1413         Fixes #575941.
1414
1415 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1416
1417         * threadpool.c: don't attempt to close the pipe when it has not been
1418         created.
1419
1420 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1421
1422         * threadpool.c: if there are no waiting threads, try to start a new
1423         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1424         No need to use InterlockedCompareExchange to read volatile variables.
1425
1426 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1427
1428         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1429         and reference types that point to the same class.
1430
1431         Fixes #565598.
1432
1433 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1434
1435         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1436         when verifying compatibility between a generic instance and a generic
1437         parameter.
1438
1439         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1440
1441         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1442         name.
1443
1444         Fixes #587849.
1445
1446 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1447
1448         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1449
1450 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1453
1454 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1455
1456         * process.c: when cross-compiling with MinGW, force GetProcessId
1457         lookup using GetProcAddress.
1458
1459 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1460
1461         * sgen-gc.c: parse_environment_string_extract_number() must be
1462         static.
1463
1464 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1465
1466         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1467         gray_object_dequeue(), to make sure they're inlined.
1468
1469 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1470
1471         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1472         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1473
1474 2010-04-02  Jb Evain  <jbevain@novell.com>
1475
1476         * exception.c: remove dead code.
1477
1478 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1479
1480         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1481         with mono-gc.h.
1482
1483 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1484
1485         * sgen-gc.c: Make the nursery size adjustable by the
1486         MONO_GC_PARAMS environment variable.
1487
1488         Code is contributed under MIT/X11 license.
1489
1490 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1491
1492         * threadpool.c: threadpool threads wait is alertable.
1493         Fixes bug #592964.
1494         Reduced the stack size of the *poll_wait thread.
1495
1496 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1497
1498         * exception.c|metadata-internals.h: Add new mono_get_exception_
1499         field_access_msg and mono_get_exception_method_access_msg 
1500         functions that accept a const char* parameter to provide more 
1501         details when the exception is thrown.
1502         * security-core-clr.c|h: Rework code to allow logging exceptions
1503         (export MONO_LOG_MASK="security") and to supply more details in
1504         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1505         mono_security_core_clr_is_field_access_allowed and 
1506         mono_security_core_clr_is_call_allowed to return an exception,
1507         with messages and logging, that can be emitted by method-to-ir.c
1508
1509 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1510
1511         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1512         pinned object.
1513
1514 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1515
1516         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1517         the assembly name is not well formed utf8. Fixes #567882.
1518
1519 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1522         the generic parameters from the builder. Fixes #473298.
1523
1524 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1525
1526         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1527
1528         * marshal.c (emit_marshal_boolean): Eliminate possible
1529         uninitialized local warning. 
1530
1531 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1532
1533         * class.c (mono_class_init): Postpone coreclr inheritance check
1534         until the end of the initialization (so we can check up the 
1535         default ctor manually for the core-clr inheritance rules).
1536         * security-core-clr.c: Add the missing (undocumented) checks on
1537         default constructors when verifying inheritance rules.
1538
1539 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1540
1541         * domain-internals.h (MonoJitExceptionInfo): Add new field
1542         handler_end to the data union. To be used to point the end
1543         of a finally block.
1544
1545 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1546
1547         * reflection.c: Add support for new v4 type
1548         System.Reflection.MonoModule that is the concrete version
1549         of Module which is abstract unver v4.
1550
1551 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1552
1553         * class.c (mono_class_init): Don't set class failure after
1554         inited = 1 is set. It must be done before.
1555
1556 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1557
1558         * mono-config.c: Add support for OS "haiku"
1559         * ChangeLog: Fix UTF-8 encoding
1560
1561         Code is contributed under MIT/X11 license.
1562
1563 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1564
1565         * console-unix.c: fixed include logic for sys/ioctl.h.
1566
1567 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1568
1569         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1570         systems.
1571
1572 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1573
1574         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1575         unfinished/broken typebuilders.
1576
1577 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1578
1579         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1580         for the minor section allowance.
1581
1582 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1583
1584         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1585         "NoOptimization".
1586
1587 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1588
1589         * sgen-gc.c: Count bytes allocated with heavy statistics.
1590
1591 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1592
1593         * sgen-gc.c: More detailed time statistics.
1594
1595 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1596
1597         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1598         fix the user defined mark interface to pass a pointer
1599         to the object location and not the object itself.
1600
1601 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1602
1603         * reflection.c (mono_method_body_get_object): Release
1604         the method header before the call to CACHE_OBJECT since
1605         this is a macro that returns.
1606
1607 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1608
1609         * class.c (inflate_generic_type): mono_metadata_type_dup
1610         already dupes array information, the g_memdup was just
1611         leaking memory.
1612
1613 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1614
1615         * verify.c: Add stack_peek function. Fix CEE_DUP
1616         to not read from invalid memory if push did expand
1617         the stack.
1618
1619 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1620
1621         * verify.c: Remove old table verification code that has
1622         been superseeded by the new metadata verifier.
1623
1624         * verify.h: Remove mono_image_verify_tables from the public
1625         API.
1626
1627         * pedump.c: Fix for removed bits.
1628
1629 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1630
1631         * verify.c: Allocate stack slows lazily to reduce stack usage
1632         in case of methods with huge stacks. Reduces memory consumption
1633         for mcs yyparse from 459Mb to 1.8Mb.
1634
1635 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1636
1637         * threadpool.c: don't try executing items from domains being
1638         unloaded. Fixes appdomain-async-invoke test.
1639
1640 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1641
1642         * threadpool.c: spin while the threadpool initializes.
1643         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1644         down, don't do anything.
1645
1646 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * threads.c (mono_thread_create_internal): Set the GC type of the
1649         threads_starting_up hash table.
1650
1651 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1652
1653         * threadpool.c: reset 'state' to avoid returning non-null when the
1654         event type is not found.
1655
1656 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1657
1658         * sgen-gc.c: make copy_object () take the address of the
1659         slot holding the reference. This allows saving memory stores
1660         when not needed and it allows keeping track of oldspace->nursery
1661         references for the card table code.
1662
1663 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1664
1665         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1666
1667         Code is contributed under MIT/X11 license.
1668
1669 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1670
1671         * object.c, threads.c, threads-types.h, threads.h: make the
1672         managed thread local storage references precisely tracked.
1673
1674 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1675
1676         * threadpool.[ch]: reworked the threadpool:
1677                 -Threadpool threads use a work-stealing queue. Adding a work
1678                 item from a threadpool thread will queue it in the thread
1679                 local queue without locking (in most cases).
1680                 -epoll events are coalesced before being added to the IO
1681                 queue.
1682                 -Dynamically change the number of active threads
1683                 -Changed the global queue to be more GC friendly
1684
1685         * class-internals.h: add 2 new performance counters for the number of
1686         threads in the threadpool and the IO threadpool.
1687
1688         * object-internals.h: new field in MonoAsyncResult.
1689         * icall-def.h: new internal call for queueing work items.
1690
1691         * Makefile.am: add 2 new files.
1692
1693         * appdomain.c: bump up corlib version.
1694
1695         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1696
1697         * mono-perfcounters-def.h:
1698         * mono-perfcounters.c: added 2 new performance counters.
1699
1700 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1701
1702         * sgen-gc.c: More FIXME/TODO updates.
1703
1704 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1705
1706         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1707         function mono_gc_invoke_with_gc_lock() which invokes a function
1708         with the guarantee that no collection will occur during its execution.
1709
1710 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1711
1712         * sgen-gc.c: Update a few comments.
1713
1714 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1715
1716         * reflection.c: Add support for new v4 type
1717         System.Reflection.MonoAssembly that is the concrete version
1718         of Assembly which is abstract unver v4.
1719
1720 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1721
1722         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1723         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1724
1725         Expose a few macros that are needed for SR but not SRE to the
1726         world (previous inside the SRE ifdef)
1727
1728 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1729
1730         * sgen-gc.c (gc_register_current_thread): We need
1731         stack_start_limit as well in the non-attribute pthread case.
1732
1733 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1734
1735         * threads.c: Fix windows build.
1736
1737 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1738
1739         * thread-types.h: Add mono_thread_resume_interruption.
1740
1741         * threads.c: Add mono_thread_resume_interruption, this
1742         function should be called after the last protected handler
1743         found at interruption time has finished.
1744
1745 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1746
1747         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1748         Check MonoInternalThread's ::state instead of ::abort_exc
1749         since the later can be lazily created.
1750
1751         This is specially problematic when running a finally block
1752         under AbortRequested state. ResetAbort must work, but the
1753         abort_exc object has not been created because interruption
1754         has not began.
1755
1756 2010-03-22  Geoff Norton  <gnorton@novell.com>
1757
1758         * locales.c: Its possible for CFStringGetCStringPtr
1759         to return null and not convert encodings.  Use
1760         CFStringGetCString instead.
1761
1762 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1763
1764         * class-internals.h, class.c, object.c: introduce compressed
1765         interface bitmaps (for now only under small config): this saves
1766         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1767         startups.
1768
1769 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1770
1771         * mono-debug.c: don't try to get the method header, it causes a
1772         deadlock and it is not used for anything anymore.
1773
1774 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1777         broken by the last change.
1778
1779 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1780
1781         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1782         SOCK_RDM.
1783         
1784         Code is contributed under MIT/X11 license.
1785
1786 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1787
1788         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1789         nursery.
1790
1791         Code is contributed under MIT/X11 license.
1792
1793 2010-03-19  Martin Baulig  <martin@ximian.com>
1794
1795         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1796         dummy field, containing an empty string.
1797         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1798
1799
1800 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1801
1802         * class.c: setup_interface_offsets() refactor to not call
1803         mono_class_get_implemented_interfaces () more times than needed and
1804         to reduce the runtime memory requirements to be O(num_interfaces)
1805         instead of O(max_interface_id).
1806
1807 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1808
1809         * mono-mlist.[ch]: add mono_mlist_set_next ().
1810
1811 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1812
1813         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1814         associated changes to support holes in the protected range of a
1815         try block.
1816
1817         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1818         retrieves the holes table from a given MonoJitInfo.
1819
1820 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1821
1822         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1823         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1824         hide the contents of the MonoString and MonoArray structs from the
1825         public API. Change the accessor macros to accessors functions where
1826         needed. Adjusted the array API to allow for pointer-sized lengths and
1827         starting positions, so 64 bit arrays can be optionally provided in an
1828         API compatible way if needed on 64 bit systems.
1829
1830 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1831
1832         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1833         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1834
1835 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1836
1837         * class-internals.h: remove the method header from MonoMethod since
1838         from now on it will be transient. We have a header pointer for method
1839         wrappers, since in that case we need to keep track of it. For this
1840         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1841         structs now. The same happens with MonoMethodInflated.
1842         * class.c: reset the sre_method flag for inflated method structures:
1843         this makes the code that cares look at the header in the MonoMethodInflated
1844         structure.
1845         * loader.c: lookup the method header in the appropriate field now that
1846         it is removed from MonoMethod.
1847         * metadata-internals.h: add a flag to the method header to know if it
1848         can be freed inside mono_metadata_free_mh ().
1849         * method-builder.c: updates after moving the header field from
1850         MonoMethod to MonoMethodWrapper.
1851         * reflection.c: MonoMethods generated from Reflection.Emit use
1852         MonoMethodWrapper structs if they need a method header now (later take
1853         advantage of this and remove all the current unsafe uses of method_aux_hash).
1854         * metadata.c: make method header parsing not leak when verification
1855         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1856         These changes save a few hundred KB of runtime memory in a mcs
1857         bootstrap or a monodevelop startup.
1858
1859 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1860
1861         * verify.c: Improve error message.
1862
1863 2010-03-12  Jb Evain  <jbevain@novell.com>
1864
1865         * reflection.c (add_exported_type): populate the exported
1866         table with the type's nested type.
1867
1868 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1869
1870         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1871         can't read parentheses.
1872
1873 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1874
1875         * threads.c (thread_cleanup): Add a guard to dereferencing
1876         "thread" to avoid an unlikely race condition.
1877
1878 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1879
1880         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1881         instead of an empty string.
1882
1883 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1886         convert to a boolean, recent gcc versions compile this differently.
1887
1888 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1889
1890        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1891        inlined.
1892
1893 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1894
1895         * sgen-gc.c (STRING_SIZE): Off by one.
1896
1897 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1898
1899         * sgen-archdep.h: Fix the signal context register access for
1900         AMD64.
1901
1902 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1903
1904         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1905
1906 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1907
1908         * verify.c: Store the initial basic block returned by mono_basic_block_split
1909         so we can release the whole list and not just the first one.
1910
1911 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1912
1913         * verify.c, debug-helpers.c, profiler.c, loader.c,
1914         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1915         MonoMethodHeader a transient entity.
1916
1917 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1918
1919         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1920         uncontrolled growth of the gray stack.
1921
1922         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1923         added items are removed first, improving cache locality. Avoid freeing queue
1924         segments in the fast path, use the list of segments as the free list, truncate
1925         it to its max size at the start of collection.
1926
1927 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1928
1929         * metadata-internals.h: more memory savings, both with small config and without.
1930
1931
1932 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1933
1934         * appdomain.c, domain-internals.h, domain.c, object.c:
1935         make class_vtable_hash into an array to reduce memory usage.
1936
1937 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1938
1939         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1940         object-internals.h, object.c, reflection.c, threadpool.c:
1941         reduce resource usage when the small config is selected.
1942         In particular, up to 64K of methods/fields/properties/events
1943         are allowed and "other" methods in events are ignored.
1944
1945 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1946
1947         * threads.c: reduce resource usage when compiled for a small config.
1948
1949 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1950
1951         * sgen-gc.c: Also collect number of degraded-alloced objects with
1952         heavy statistics.
1953
1954 2010-03-04  Geoff Norton  <gnorton@novell.com>
1955
1956         * assembly.c: Only support OSX bundling if the bundle is 
1957         actually detectable.
1958
1959 2010-03-04  Geoff Norton  <gnorton@novell.com>
1960
1961         * loader.c: The marshal specs are freed at the end of the call
1962         but it explicitly frees the strings as well as the container,
1963         so we need to dup them too to avoid referencing free'd memory.
1964
1965 2010-03-04  Geoff Norton  <gnorton@novell.com>
1966
1967         * icall-def.h:
1968         * icall.c: Add a new private internal icall to construct
1969         an object from its type without running the ctor.
1970
1971 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1972
1973         * profiler.c: allow multiple profiler engines to be loaded
1974         at the same time.
1975
1976 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1977
1978         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1979         profiler event to track object moves.
1980
1981 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1982
1983         * object.c, profiler.c, profiler.h, string-icalls.c:
1984         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1985
1986 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1987
1988         * decimal.c (mono_double2decimal): Add support for reducing the
1989         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1990         expected.
1991
1992 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1993
1994         * icall-def.h:
1995         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1996
1997 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1998
1999         * mono-config.c (mono_config_parse_assembly_bindings): added -
2000         parses assembly binding redirections from appdomain's config
2001         file.
2002
2003         * metadata-internals.h: added definition of a new function -
2004         mono_config_parse_assembly_bindings - to support parsing assembly
2005         binding redirections defined in appdomain's config file.
2006
2007         * domain-internals.h: added two new fields to _MonoDomain - a list
2008         of assembly bindings and a flag to parse the config file only
2009         once.
2010
2011         * assembly.c (assembly_binding_maps_name): empty culture name and
2012         NULL culture name are considered equal.
2013         (mono_assembly_apply_binding): added support for domain specific
2014         assembly binding redirections, read from the appdomain's
2015         configuration file. Fixes bug #580185
2016
2017 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
2018
2019         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
2020         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
2021         support.
2022
2023 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2024
2025         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
2026         from this function. The new function receive the parent token instead of a type.
2027
2028         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
2029         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
2030         typebuilders. This make it possible to properly encode generic type builders since
2031         their unmanaged type don't have generics data while unfinished.
2032
2033         Fixes #583655.
2034
2035 2010-03-02  Mark Probst  <mark.probst@gmail.com>
2036
2037         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
2038         writing binary log files (can be enabled by #define'ing
2039         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
2040         bugs in longer running programs.
2041
2042 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
2043
2044         * metadata.c: added some API documentation.
2045
2046 2010-03-01  Robert Jordan  <robertj@gmx.net>
2047
2048         * filewatcher.h: Include glib.h to fix the MSVC build.
2049
2050 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
2053         a GC handle instead. This is a bit slower to access, but avoids burdening the
2054         GC with 100s of individual roots.
2055
2056         * reflection.c (mono_class_get_ref_info):
2057         (mono_class_set_ref_info):
2058         (mono_class_free_ref_info): New internal helper fuctions.
2059
2060         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
2061         of accessing klass->reflection_info directly.
2062
2063         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
2064         words.
2065
2066         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
2067         the previous array.
2068
2069 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
2072         needs an indirection.
2073
2074 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
2077         so all generic sharing code is in one place.
2078
2079         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
2080         we don't call setup_interface_offsets () for unfinished types.
2081
2082 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2083
2084         * class.c (mono_class_generic_sharing_enabled): Move this to
2085         generic-sharing.c.
2086
2087         * image.c: Add an unload hook which is called before an image is unloaded.
2088
2089         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
2090         metadata.c having to depend on generic sharing.
2091
2092 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2093
2094         * class.c: reduce size of ridiculously large cache.
2095
2096 2010-02-26  Martin Baulig  <martin@ximian.com>
2097
2098         * mono-debug.h
2099         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
2100
2101         * threads.c (mono_thread_internal_reset_abort): New method; resets
2102         the abort, but doesn't throw any exception if no abort was requested.
2103
2104 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2105
2106         * class.c (get_implicit_generic_array_interfaces): Call
2107         mono_class_setup_interface_offsets () before accessing
2108         eclass->interface_offsets_count. This only shows up on platforms without IMT for
2109         some reason.
2110
2111 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2112
2113         * environment.c, environment.h, icall.c: make the GetOSVersionString()
2114         icall internal.
2115
2116 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
2117
2118         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
2119         direct access to the MonoType fields.
2120
2121 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
2122
2123         * threads.h: Move some internal functions which were added to this header by
2124         mistake to threads-types.h.
2125
2126         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
2127
2128 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
2129
2130         * class-internals.h, class.h, object.h: make MonoRemoteClass
2131         and mono_remote_class() internal.
2132
2133 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2134
2135         * metadata-internals.h, class-internals.h, metadata.h: make the
2136         MonoType guts internal as well.
2137
2138 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2139
2140         * reflection.h: the MonoTypeNameParse guts are internal now.
2141         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2142         are internal now, provide accessors as needed.
2143         * metadata.h, metadata-internals.h: the MonoMethodSignature
2144         guts are internal now.
2145         * Makefile.am: mempool.h is an internal header now.
2146         * *.h, *.c: remove glib.h usage from the public headers.
2147
2148 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2149
2150         * culture-info-table.h : regenerated.
2151
2152 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2153
2154         * metadata.c: Add mono_method_get_header_summary which returns minimal
2155         information about the header of a method. This is the information used
2156         by the inline oracle to reject methods.
2157
2158         This method doesn't decode local variables and doesn't cache it's result,
2159         so it should cause a minimal reduction in memory usage.
2160
2161         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2162         mono_method_get_header_summary.
2163
2164 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2165
2166         * threads.c (mono_thread_exit): Make sure that the main thread is
2167         non-null before dereferencing it.
2168
2169 2010-02-21  Geoff Norton  <gnorton@novell.com>
2170
2171         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2172         locale.
2173         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2174         before falling back to the posix lookup.
2175
2176 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2177
2178         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2179         the DONT_MANAGE flag set.
2180
2181 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2182
2183         * domain.c: Remove old v1 version strings. Let the runtime
2184         default to 2.0 instead of failing because it can't find a
2185         working 1.0 instalation.
2186
2187 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2188
2189         * domain.c: Add v4 RC version string.
2190
2191 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2192
2193         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2194         of overflow checking function.
2195
2196 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2197
2198         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2199         generic methods.
2200
2201         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2202         cases for ParameterInfo.
2203
2204         Fixes #579493.
2205
2206 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2207
2208         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2209         have has_cctor set. Fixes #575946.
2210
2211 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2212
2213         * appdomain.c: display a warning if the parsing the config file
2214         produces any error.
2215         Skip the BOM in UTF-8 files.
2216         Copy the AppDomainSetup before setting the privateBinPath so that the
2217         correct configuration file is read.
2218
2219 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2220
2221         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2222         vtable trampoline per vtable slot index. Not used yet.
2223
2224 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2225
2226         * icall-def.h:
2227         * icall.c: add internal call that returns the system page size.
2228
2229 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2230
2231         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2232         'int' for system classes.
2233
2234 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2235
2236         * icall.c, icall-def.h: new icall to check for sufficient
2237         stack space.
2238
2239 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2240
2241         * reflection.c (ensure_complete_type): Check that reflection_info
2242         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2243
2244 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2245
2246         * attrdefs.h:
2247         * tabledefs.h: Add NoOptimization flag.
2248
2249 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2250
2251         * sgen-gc.c: Don't consider it a missing remset if the target
2252         object is pinned - we might have done the store but not added the
2253         remset yet.
2254
2255 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2256
2257         * sgen-gc.c: When checking for missing remsets, don't assert on
2258         the first one, but print them all and then assert.
2259
2260 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2261
2262         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2263
2264 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2265
2266         * console-unix.c: On OSX Control-Y is assigned to
2267         VDSUSP (non-Posix), the
2268         suspend-program-next-time-it-tries-to-read-input command (this is
2269         different than C-z, which suspends immediately).
2270
2271         Do the same thing that bash does and ignore this setting,
2272         making our repl/getline support pasting.
2273
2274 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2275
2276         * sgen-gc.c: Simple plausibility check for scan_starts.
2277
2278 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2279
2280         * sgen-gc.c: Round up when calculating the number of scan starts.
2281
2282 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2283
2284         * reflection.c: Export mono_get_object_from_blob.
2285
2286         * object-internals.h: Ditto.
2287
2288         * icall.c: New icall property_info_get_default_value to get the default
2289         value of a property. Since using this is not common, no caching is done.
2290
2291         * icall-def.h: Add new icall.
2292
2293 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2294
2295         * class.c: Add mono_class_get_property_default_value.
2296
2297         * class-internal.h: Export mono_class_get_property_default_value.
2298
2299 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2300
2301         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2302
2303 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2304
2305         * sgen-gc.c: introduced critical regions to allow some lockless
2306         operations and increase scalability.
2307
2308 2010-02-10  Geoff Norton  <gnorton@novell.com>
2309
2310         * reflection.c: Support building with DISABLE_REFLECTION
2311
2312 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2313
2314         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2315         Closes bug #566057.
2316
2317         * exception.c: fix typo in comment.
2318
2319 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2320
2321         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2322         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2323
2324         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2325
2326         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2327         the internal API.
2328
2329         Fixes #574434.
2330
2331 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2332
2333         * threads.c: Removed two assertions that were too strict.  Added a
2334         clarifying comment.  Fixes #577090.
2335
2336 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2339         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2340
2341         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2342
2343         * verify.c (mono_type_get_stack_name): Fix a warning.
2344
2345 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2346
2347         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2348         mono_marshal_wrapper_info_from_wrapper.
2349
2350         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2351         mono_marshal_method_set_wrapper_data, and export.
2352
2353         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2354         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2355         by calling mono_marshal_get_wrapper_info ().
2356
2357         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2358         small objects which does no size checks.
2359
2360 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2361
2362         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2363
2364 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2365
2366         * verify.c (mono_method_verify): Use the new basic block formation pass
2367         to avoid verifying dead basic blocks. This is the same behavior as the
2368         runtime MS verifier.
2369
2370 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2371
2372         * mono-basic-block.c:
2373         * mono-basic-block.h: New implementation of a basic block formation pass.
2374         The formation pass does static liveness analysis as well to detect dead
2375         basic blocks.
2376
2377 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2378
2379         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2380         'this' argument in icalls.
2381
2382 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2383
2384         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2385
2386 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2387
2388         * object.c, domain.c: When using SGen, we must register
2389         vtable->type as a root if it's not a MonoType, because then it
2390         wasn't pin-alloced.
2391
2392 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2393
2394         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2395         at the start of nursery collections, because we might have had
2396         degraded allocations which changed next_data.
2397
2398 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2399
2400         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2401         custom attr so this function works in cross-compiling mode.
2402
2403 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * class.c (make_generic_param_class): Initialize interface offsets since we
2406         set klass->inited. Fixes #574819.
2407
2408 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2409
2410         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2411         calling the JIT domain cleanup hook.
2412
2413 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2414
2415         * pedump.c (main): Properly set the verifier mode when running the metadata
2416         verifier.
2417
2418 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2419
2420         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2421         overlapping fields now that we're called before has_references is set.
2422
2423         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2424         method. Otherwise all sort of weird stuff happens.
2425
2426 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2427
2428         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2429         Fixes #572874.
2430
2431 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2432
2433         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2434         Fixes #573322.
2435
2436 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2437
2438         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2439         pin_staging_area_index is greater than 0.
2440
2441 2010-01-22 Miguel de Icaza (miguel@novell.com)
2442
2443         * loader.c: Since we do nothing with the error returned, pass NULL
2444         to ignore the error.
2445
2446 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2447
2448         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2449         happened before starting to encode the actual fields. This avoid ciclic
2450         dependencies and eventual crashes.
2451
2452         Fixes #572660.
2453
2454 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2455
2456         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2457         atomic and remove the half-constructed hack in SGen.
2458
2459 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2460
2461         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2462         has a recursive reference to itself.
2463
2464         Fixes #571863.
2465
2466 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2467
2468         * loader.c (mono_method_signature): Fix error message.
2469
2470 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2471
2472         * sgen-gc.c: Reuse to-space sections between nursery collections.
2473
2474 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2475
2476         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2477         from the current assembly or mscorlib. Fixes bug #322957.
2478
2479 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2480
2481         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2482         get_wrapper_target_class.
2483
2484 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2485
2486         * sgen-gc.c: Fix warnings.
2487
2488 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2489
2490         * verify.c (store_local): Better error message.
2491
2492 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2493
2494         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2495         arguments.
2496
2497 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2498
2499         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2500         function is generics variance aware.
2501
2502 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2503
2504         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2505         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2506
2507 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2508
2509         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2510           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2511
2512         Code is contributed under MIT/X11 license.
2513
2514 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2515
2516         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2517         on a GTD.
2518
2519 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2520
2521         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2522         return a point to a wrapper specific info structure describing the wrapper.
2523         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2524  
2525 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2526  
2527         * sgen-gc.c: Make minor collection section allowance adaptive,
2528         depending on the amount of memory reclaimed in the last major
2529         collection.  If more memory was reclaimed (i.e. more garbage
2530         produced), do the next collection earlier.
2531
2532 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2533
2534         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2535         to itself.
2536
2537         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2538         the token as parameter.
2539
2540         * verify-internals.h: Ditto.
2541
2542         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2543
2544         Fixes #571460.
2545
2546 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2547
2548         * sgen-gc.c: Make store_remset_buffer_index long.
2549
2550 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2551
2552         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2553
2554         Fixes #569579.
2555
2556 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2557
2558         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2559         off precise marking if it is available.
2560         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2561
2562 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2563
2564         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2565
2566         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2567         pinned objects.
2568
2569         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2570         to the array allocator.
2571
2572 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2575         result of mono_compile_method (), it already includes an ftnptr.
2576
2577 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2578
2579         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2580
2581 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2582
2583         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2584         hash value which doesn't depend on glib/eglib versions.
2585         (mono_metadata_type_hash): Use it.
2586
2587         * object.c (mono_method_get_imt_slot): Ditto.
2588
2589 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2590
2591         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2592         independently of the GTD.
2593
2594         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2595
2596         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2597         to the upper limit since instance_size includes this amount.
2598
2599         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2600
2601         Fixes #569544.
2602
2603 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2604
2605         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2606         with static methods.
2607
2608         * object.c (build_imt_slots): Avoid asserting when static methods are
2609         encountered in an interface.
2610
2611 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2612
2613         * sgen-gc.c (to_space_expand): Fix assertion.
2614
2615 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2616
2617         * string-icalls.c: missing declaration fixes.
2618         * sgen-gc.c: portability fixes.
2619
2620 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2621
2622         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2623
2624         * class.c:
2625         * cominterop.c:
2626         * icall.c:
2627         * object.c: 
2628         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2629
2630 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2631
2632         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2633         it can fail loading the type.
2634
2635         * class.c: Add mono_class_inflate_generic_class_checked.
2636
2637         * class.c:
2638         * verify.c:
2639         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2640
2641 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * loader.c (mono_method_signature_checked): New internal function taking an
2644         MonoError argument.
2645
2646         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2647         Fixes build on rh 7.3.
2648
2649 2010-01-10  Aaron Bockover  <abockover@novell.com>
2650
2651         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2652         at runtime in the same way as on Windows, which yields a relocatable
2653         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2654         of the running mono process.
2655
2656         On TARGET_ARM, fallback () will always be executed.
2657
2658 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2659
2660         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2661
2662 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2663
2664         * class.c (mono_class_is_assignable_from_slow): Support variant
2665         generic delegates.
2666
2667         * class.c (mono_class_implement_interface_slow): Support types with
2668         variant generic arguments.
2669
2670 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2671
2672         * verify.c: Remove some code duplication.
2673
2674 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2675
2676         * object.c: Update docs.
2677
2678 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2679
2680         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2681
2682         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2683         fallback trampoline as well.
2684
2685         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2686         out argument that is set to TRUE if the match was direct. 
2687
2688         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2689
2690         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2691
2692 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2693
2694         * class.c: Add mono_class_interface_offset_with_variance function that does same
2695         as mono_class_interface_offset but takes variance into account.
2696
2697         * class-internal.h: Export mono_class_interface_offset_with_variance.
2698
2699         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2700
2701 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2702
2703         * object.c:
2704         * icall.c:
2705         * class.c: Add some FIXME for due to variant generic arguments.
2706
2707         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2708         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2709         the bitfield check fails.
2710
2711 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2712
2713         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2714         to be easier to read and fix bugs in the case a non generic type implements a variant
2715         interface.
2716
2717         * class.c (mono_class_has_variant_generic_params): Make non static.
2718
2719         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2720         the private API.
2721
2722 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2723
2724         * assembly.c: fix MONO_PATH debug output.
2725
2726 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2727
2728         * culture-info-table.h : regenerated.
2729
2730 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2731
2732         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2733         types that are meant to not have a parent.
2734
2735 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2736
2737         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2738         from the image mempool, so it is not leaked.
2739
2740 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2743
2744 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2745
2746         * verify.c (verify_valuetype_layout_with_target): Fix case
2747         that can lead to infinite recursion. Fix bug #567861
2748
2749 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2750
2751         * pedump.c: Run code verifier even if image verification fails
2752         due to a failed type we. This allows more errors to be shown.
2753
2754 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2755
2756         * class.c (count_virtual_methods): Remove the assert and now
2757         fail properly.
2758         
2759         * class.c (setup_interface_offsets): This can fail now.
2760
2761         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2762         errors. Check setup_interface_offsets errors.
2763
2764         * class.c (setup_interface_offsets): Simplify the return error logic
2765         and remove class_init_ok.
2766
2767         Fixes #560327.
2768
2769 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2770
2771         * class.c (mono_class_init): Do class verification at the beginning. Add
2772         some asserts to avoid tripping into invalid memory.
2773
2774         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2775         g_error and a decent message.
2776
2777         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2778
2779         Fixes #567548.
2780
2781 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2782
2783         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2784         as inline functions instead of defining them in mempool.c.
2785
2786         * metadata-internals.h (MonoImageSet): New structure representing a set of
2787         MonoImages, which own a collection of generic instances.
2788
2789         * metadata.c: Get rid of the global generic caches, instead assign each generic
2790         instance to the image set which consists of all the images referenced by the
2791         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2792         the memory used by generic instances to be allocated from a per image-set mempool
2793         later.
2794
2795 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2796
2797         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2798
2799 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2800
2801         * appdomain.c (zero_static_data): Fix a warning.
2802
2803         * locales.c (construct_culture_from_specific_name): Applied patch from
2804         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2805         not found. Fixes #567900.
2806
2807 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2808
2809         * loader.c (mono_method_get_signature_full): Remove two asserts.
2810         Return NULL instead so that the verifier can handle both cases 
2811         gracefully.
2812
2813 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2814
2815         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2816         so we can properly fail types instead of crashing.
2817
2818         Fixes #567676.
2819
2820 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2821
2822         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2823         generic method.
2824
2825 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2826
2827         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2828
2829 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2830
2831         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2832         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2833         we can't remove it from it since we don't hold the lock.
2834         (mon_new): Free the orphaned events here when a mon structure is added to the
2835         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2836         this down.
2837
2838 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2839
2840         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2841         as max stack might be zero.
2842
2843         Fixes #562320.
2844
2845 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2846
2847         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2848
2849         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2850         instances if the GTD did.
2851
2852         * class.c (mono_class_setup_properties): Ditto.
2853
2854         * class.c (mono_class_setup_events): Ditto.
2855
2856         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2857
2858         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2859         error setting.
2860
2861         * class.c (mono_class_init): Fail if GTD did.
2862
2863         * cominterop.c:
2864         * generic-sharing.c:
2865         * icall.c:
2866         * loader.c:
2867         * object.c:
2868         * verify.c: Properly handle failure of mono_class_setup_methods.
2869
2870 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2871
2872         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2873         mono_class_inflate_generic_method_full internal.
2874
2875         * class.c (inflate_generic_context): Now takes a MonoError argument.
2876
2877         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2878         errors.
2879
2880 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2883         they cannot be patched. Partly fixes #564408.
2884
2885 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2886
2887         * metadata-internals.h, reflection.c: Use the
2888         MonoDynamicImage.handleref hash table only with unmanaged keys,
2889         and add a managed hash table handleref_managed for managed keys.
2890
2891 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2892
2893         * sgen-gc.c: Unset to-space bumper between collections.  It might
2894         become invalid due to degraded allocations.
2895
2896 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2897
2898         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2899         with the one from the original method.
2900
2901         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2902         compatibility.
2903
2904         * verify-internals.h: Add new function to the internal API.
2905
2906 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2907
2908         * culture-info-tables.h: regenerated it to include the Georgian culture.
2909
2910 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2911
2912         * sgen-gc.c: Include mono/utils/memcheck.h.
2913
2914         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2915         instead of the current domain, since the two might not match if this is called
2916         from the debugger.
2917
2918         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2919         domain which created this assembly.
2920
2921 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2922
2923         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2924
2925 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2926
2927         * sgen-gc.c: Managed implementation of the specialized generic
2928         store write barrier.
2929
2930 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2931
2932         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2933         A private virtual newslot method is used to implement an interface method without exposing
2934         it to users. When querying for public instance methods, such method would hide a public one
2935         on a parent type.
2936
2937         Fixes #564379.
2938
2939 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2942         conventions.
2943
2944 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2945
2946         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2947
2948 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2949
2950         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2951         as they are no longer used.
2952         
2953          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2954
2955         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2956
2957 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2960         if the owner class has not been finished before returning reflection_info.      
2961
2962         Fixes #565127.
2963
2964 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2965
2966         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2967         param doesn't have custom attributes. Fixes #565117.
2968
2969         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2970         #565120.
2971
2972 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2973
2974         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2975
2976 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2977
2978         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2979         same amount done by a core-clr enabled runtime.
2980
2981 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2982
2983         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2984         the target files is reset to writable by owner and readable by
2985         everyone else to prevent problems when updating shadow copies of
2986         files whose source is read-only. Fixes bug #556884
2987
2988 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2989
2990         * class.c (mono_generic_class_get_class): Allocate the generic
2991         class via malloc again, so that it can be freed when any one of
2992         the images of its constituent types is closed.
2993
2994         * metadata.c: When closing an image, don't free generic insts and
2995         generic classes right away, but put them into a list for later
2996         freeing.
2997
2998         * image.c, metadata-internals.h: Store the free list and in the
2999         second pass of closing an image, free it.
3000
3001 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3002
3003         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
3004
3005         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
3006         types in type_hash.
3007
3008         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
3009
3010 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3011
3012         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
3013         user type.
3014
3015         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
3016         is used.
3017
3018 2009-12-14  Miguel de Icaza  <miguel@novell.com>
3019
3020         * verify.c (mono_method_verify): The Unused opcodes produce an
3021         InvalidProgramException on .NET
3022
3023 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
3024
3025         * loader.c (mono_method_get_header): Move assert after the verifier
3026         has been called on the method header.
3027
3028 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3029
3030         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
3031
3032         * appdomain.c: Bump corlib version.
3033
3034 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3035
3036         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
3037         types as well since otherwise generic instances would not return UT as arguments but
3038         their undelying system type.
3039
3040         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
3041         to reflect the fact that they can have now multiple different types.
3042
3043         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
3044
3045         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
3046
3047         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
3048
3049         * reflection.c (mono_reflection_register_with_runtime): Init super types
3050         if the image is not dynamic.
3051
3052         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
3053         check if the generic type definition is a TypeBuilder.
3054
3055         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
3056         doesn't belong to a dynamic image, skip initialization.
3057
3058         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
3059         base definition is not a dynamic type.
3060
3061 2009-12-11  Marek Habersack  <mhabersack@novell.com>
3062
3063         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
3064         mono_profiler_string_allocation
3065
3066         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
3067         if string profiling is enabled, call
3068         mono_profiler_string_allocation
3069
3070         * profiler.h: added two MonoProfileFlags -
3071         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
3072         installation functions for the hooks below.
3073
3074         * profiler-private.h, profiler.c: added two hooks:
3075         mono_profiler_string_allocation called whenever a string is
3076         allocated by InternalAllocateStr and mono_profiler_iomap called
3077         whenever IOMAP code performs an adjustement on a file path.
3078
3079 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
3080
3081         * boehm-gc.c: fixed race condition while getting the target of a
3082         disappearing link (bug #522233).
3083
3084 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3085
3086         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
3087         the error.
3088
3089 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3090
3091         * reflection.c: Add mono_reflection_register_with_runtime icall to
3092         allow a MonoGenericClass to register itself as the managed mirror of
3093         a given generic instance.
3094         This is a temporary workaround until all MGC instantiation happens in
3095         managed code.
3096
3097         * object-internals.h: Ditto.
3098
3099         * icall-def.h: Ditto.
3100
3101 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3102
3103         * sgen-gc.c (find_in_remsets): Also search the generic store
3104         remsets.
3105
3106 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3107
3108         * sgen-gc.c: Don't access class names in debugging code when
3109         unloading a domain, because they might not be valid anymore.
3110
3111 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3112
3113         * domain.c, domain-internals.h: New function mono_domain_unset().
3114
3115         * appdomain.c (unload_thread_main): Detach the thread again at the
3116         end.
3117
3118         * threads.c: When a thread exists or is detached, unset its domain
3119         so that it's NULL when, for example, a pthread destructor runs.
3120
3121         * sgen-gc.c: Assert that there is no domain set after a thread is
3122         done.
3123
3124 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3125
3126         * class.c (mono_generic_class_get_class),
3127         metadata.c (free_generic_class): Allocate generic MonoClass's from
3128         the image mempool, not via malloc.  The problem with malloc is
3129         that when unloading a domain those classes are freed before
3130         clearing the heap and SGen needs the classes.  Rewriting the
3131         unloading code to do the free later would be more work and there's
3132         no point in using malloc anyway.
3133
3134 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3135
3136         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3137         before returning.
3138
3139 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3140
3141         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3142         user string blobs.
3143
3144         * verify-internals.h: Add new function to the internal API.
3145
3146         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3147         check if it's a valid string.
3148
3149         * object.c (mono_ldstr): Ditto.
3150
3151         Fixes #561943.
3152
3153 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3154
3155         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3156         from a method before returning it. This is the expected behavior.
3157
3158 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3159
3160         * reflection.c (inflate_method): Handle the case of a regular system type.
3161
3162 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3163
3164         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3165         gathering code.
3166
3167         * mempool.c, mempool-internals.h: New function
3168         mono_mempool_get_bytes_allocated().
3169
3170         * Makefile.am: sgen-pinning-stats.c added.
3171
3172 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3173
3174         * sgen-gc.c (create_allocator): Only use the fast path if the
3175         object size is within the small object size limit.
3176
3177 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3178
3179         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3180         possibly adding padding to sizeof (GCMemSection).
3181
3182 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3183
3184         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3185         reference is not in the nursery.
3186
3187 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3188
3189         * class.c (mono_class_from_typeref): Bounds check idx against the 
3190         assemblyref table.
3191
3192 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3193
3194         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3195         through the potential roots, then sort the results and find the
3196         pinned objects from there.
3197
3198         * Makefile.am: sgen-pinning.c added.
3199
3200 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3201
3202         * sgen-gc.c: Record generic stores in specialized remset buffers.
3203
3204 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3205
3206         * sgen-gc.c: Make pinned chunks the same size as major heap
3207         sections, and align them as well, so that we can check whether an
3208         object is in a pinned chunk or a major section in constant time.
3209
3210 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3211
3212         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3213
3214 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3215
3216         * sgen-gc.c: Make all major heap sections the same size (currently
3217         128k) and allocate them on aligned addresses.  Small heap sections
3218         give us better granularity with pinned objects - we can free up
3219         much more memory.
3220
3221 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3222
3223         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3224         output removed.
3225
3226 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3227
3228         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3229
3230         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3231         names in addition to the runtime generated one.
3232
3233         * mono/metadata/image.h: Add a function to take the real name of the assembly
3234         image.
3235
3236         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3237         use it instead of the runtime generated one.
3238
3239         Code is contributed under MIT/X11 license.
3240
3241 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3242
3243         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3244         before the other checks to prevent problems if the DateTime class is blittable.
3245         Hopefully fixes #559600.
3246
3247 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3248
3249         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3250         returns the largest string length that will not be put into the
3251         LOS.
3252
3253         * sgen-gc.c, gc-internal.h: New function that returns the largest
3254         object size that will not be put into the LOS.
3255
3256         * appdomain.c: Bump corlib version.
3257
3258 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3261
3262         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3263
3264 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3265
3266         * reflection.c (inflate_method): Fix signature.
3267
3268         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3269         in managed code.
3270
3271 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3272
3273         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3274
3275 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3276
3277         * sgen-gc.c: Abstract to-space handling.
3278
3279 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3280
3281         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3282
3283         Fixes #559906.
3284
3285 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3286
3287         * sgen-gc.c: Only add references from outside the nursery to
3288         within the nursery to the global remset list.
3289
3290 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3291
3292         * appdomain.c (create_exceptions): Set the domain temporarily if
3293         necessary to avoid cross-domain references.
3294
3295 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3296
3297         * verify.c (get_stack_type): Return that the type is invalid instead of
3298         asserting.
3299
3300         * verify.c (mono_method_verify): Verify that all locals and arguments
3301         have valid stack types.
3302
3303         Fixes #559913.
3304
3305 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3306
3307         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3308         bounds checking overflow aware.
3309
3310         Fixes #559910.
3311
3312 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3313
3314         * verify.c (do_invoke_method): Check for invalid method signatures.
3315
3316         Fixes #553450.
3317
3318 2009-12-02  Jb Evain  <jbevain@novell.com>
3319
3320         * appdomain.c (MONO_CORLIB_VERSION): bump.
3321         * icall-def.h (get_base_definition): renamed to get_base_method
3322         and add a boolean argument indicating we want the original
3323         method definition, or the immediate base method.
3324         * icall.c: apply the get_base_definition to get_base_method change.
3325
3326 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3327
3328         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3329
3330         Fixes #558042.
3331
3332 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3333
3334         * class.c: remove asserts for invalid type token in
3335         mono_class_name_from_token(), mono_assembly_name_from_token() and
3336         mono_class_create_from_typedef () (fixes bug #553318).
3337
3338 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3339
3340         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3341         incorrect assemblies (bug #553322).
3342
3343 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3344
3345         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3346
3347         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3348
3349         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3350
3351         * class.c (inflate_generic_context): Ditto.
3352
3353         * loader.c (method_from_methodspec): Ditto.
3354
3355         Fixes #558230.
3356
3357 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3358
3359         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3360
3361         * class.c (mono_class_create_from_typespec): Ditto.
3362
3363         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3364
3365         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3366
3367         Fixes #558184.
3368
3369 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3370
3371         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3372
3373         * verify.c (verify_delegate_compatibility): Ditto.
3374
3375         * verify.c (do_newobj): Ditto.
3376
3377         Fixes #558046.
3378
3379 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3380
3381         * sgen-gc.c: Use a gray queue instead of requiring that gray
3382         objects are in a contiguous region.
3383
3384         * sgen-gray.c: The gray queue implementation.
3385
3386         * Makefile.am: sgen-gray.c added.
3387
3388 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3389
3390         * appdomain.c: When unloading a domain, zero its static data and
3391         perform a minor collection when using SGen.  That will get rid of
3392         all the remsets pointing into that domain's static data.
3393
3394         * sgen-gc.c: Allow remsets into static data.  By doing this we
3395         need less checks so we're more efficient.
3396
3397 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3398
3399         * verify.c (mono_method_verify): Check for catch clauses with broken
3400         types.
3401
3402         Fixes #558465.
3403
3404 2009-12-01  Jb Evain  <jbevain@novell.com>
3405
3406         * class.c (make_generic_param_class): set the namespace of
3407         the generic parameter class from its owner, if available.
3408
3409 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3410
3411         * verify.c (code_bounds_check): Do proper overflow checking.
3412
3413         * verify.c (mono_method_verify): The number of switch entries is
3414         an unsigned int. Properly bounds check it.
3415
3416         Fixes #558594.
3417
3418 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3419
3420         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3421         mono_metadata_method_has_param_attrs which only checks if a given param
3422         list has a non zero flags entry.
3423
3424         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3425         to inform how many params should we expect to decode.
3426
3427         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3428         as it's faster than mono_metadata_get_param_attrs.
3429
3430         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3431         add mono_metadata_method_has_param_attrs.
3432
3433 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3434
3435         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3436         failures.
3437
3438         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3439         is -1 but its class is broken.
3440
3441         Fixes #558522.
3442
3443 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3444
3445         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3446         for parameter overflow.
3447
3448         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3449         of mono_metadata_get_param_attrs.
3450
3451         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3452         API.
3453
3454         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3455
3456 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3457
3458         * class.c (mono_class_setup_fields): Check for fields with broken types.
3459
3460         Fixes #558741.
3461
3462 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3463
3464         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3465         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3466         its TypeBuilder::CreateType ().
3467
3468         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3469         if not needed.
3470
3471         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3472         to make setup_interface_offsets happy.
3473
3474         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3475         compilation now works.
3476
3477 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3478
3479         * appdomain.c (create_exceptions): New helper function extracted from
3480         mono_runtime_init () to precreate objects used during exception handling.
3481         (mono_runtime_init): Call it.
3482         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3483
3484 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3485
3486         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3487         compilation until the proper one is found.
3488
3489 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3490
3491         * class.c (mono_class_setup_vtable_general): Cache the result of
3492         get_virtual_methods () since it can be slow because of the metadata
3493         optimization.
3494
3495         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3496         from a MonoValueHashTable for now, since the later is based on an earlier
3497         version of hpj's internal probing code and seems to have serious collision
3498         issues.
3499
3500         * loader.c (mono_get_method_full): Update after the change above.
3501
3502 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3505
3506 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3507
3508         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3509         the GTD instead of the DGC instead of crashing.
3510
3511         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3512         required. Inflate fields if needed.
3513
3514         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3515         finished. Renamed.
3516
3517 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3518
3519         * class.c (check_interface_method_override): Check for NULL signatures and fail
3520         the type.
3521
3522         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3523
3524         Fixes #553428.
3525
3526 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3527
3528         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3529         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3530
3531 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3532
3533         * loader.c (field_from_memberref): Resolve the class first then the field
3534         signature. Remove a lot of duplicated code and make sure we don't pass valid
3535         values to mono_loader_set_error_field_load.
3536
3537         Fixes #553306.
3538
3539 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3540
3541         * class.c (inflate_generic_type): Change code to use new signature of
3542         mono_error_set_bad_image.
3543
3544         Fixes #558124.
3545
3546 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3547
3548         * verify.c (mono_method_verify): Don't free ctx.params items if 
3549         we aborted while inflating the ctx.locals. Complete previous fix
3550
3551 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3552
3553         * verify.c (mono_method_verify): Use the uninflated type name, 
3554         when the inflated is null, to report errors. Also take care when
3555         freeing, not to free everything since, in case of an error, some
3556         stuff would be copies (i.e. not allocated by the function itself)
3557         Fix bug #558145
3558
3559 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3560
3561         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3562         or overflow. The caller must have done this check explicitly. This guard us
3563         from accessing invalid memory.
3564
3565         * verify.c (do_push_static_field): Check for stack overflow.
3566
3567         Fixes #553333.
3568
3569 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3570
3571         * loader.c (find_method_in_class): Don't crash if the signature cannot
3572         be resolved.
3573
3574         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3575         of asserting for the case of invalid params.
3576
3577         Fixes #553304.
3578
3579 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3580
3581         * image.c (mono_image_load_module): Fix crash when a bad assembly
3582         has no module at all (fix bug #553412) and also replace the 
3583         g_assert with a return NULL (documented return value for failure)
3584
3585 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3586
3587         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3588
3589 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3590
3591         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3592         file attribute to managed code and avoid doing the mask/attribute
3593         checks here. 
3594
3595 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3596
3597         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3598         the managed world.
3599
3600         * icall-def.h: New entry points.
3601         
3602 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3603
3604         * process.c: Don't put references to managed objects into a
3605         g_ptr_array.
3606
3607 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3608
3609         * class.c (can_access_internals): Allow CoreCLR to participate in
3610         allowing (or not) [InternalsVisibleTo] between assemblies.
3611         * security-core-clr.c|h: Make sure that only trusted code (a 
3612         superset of platform code) can access the internals of platform
3613         code.
3614
3615 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3616
3617         * reflection.c: use the correct base class to get the virtual method
3618         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3619
3620 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3621
3622         * security-core-clr.c (get_caller_no_reflection_related): 
3623         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3624         it's still reflection and must be filtered correctly.
3625
3626 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3627
3628         * object.c (compute_class_bitmap): Fix for large bitmaps.
3629
3630 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3631
3632         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3633
3634         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3635         koush@koushikdutta.com). Disable GC_no_dls on android.
3636
3637 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3638
3639         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3640         tlab_next points outside the TLAB because the allocator was
3641         interrupted.
3642
3643 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3644
3645         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3646
3647 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3648
3649         * object-internals.h: Change signature for mono_string_to_utf8_image.
3650
3651         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3652         argument.
3653
3654         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3655         exceptions due to mono_string_to_utf8.
3656
3657 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3658
3659         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3660
3661         * object.c (mono_remote_class): Make sure all resources are released before
3662         raising an exception.
3663
3664         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3665
3666 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3667
3668         * mono-perfcounters.c (network_get_impl): Change variable initialization
3669         ordering to fix potential memory leak in case of exceptions.
3670
3671         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3672         encoded strings.
3673         
3674 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3675
3676         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3677         variable initialization ordering to fix potential memory leak in case
3678         of exceptions.
3679
3680 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3681
3682         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3683         needed.
3684
3685 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3686
3687         * appdomain.c: Fix shadow path code to better deal with exceptions.
3688
3689 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3690
3691         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3692         exception in the middle of the runtime code.
3693
3694 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3695
3696         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3697         leak memory with broken envvar value.
3698
3699 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3700
3701         * reflection.c (mono_reflection_setup_internal_class): Because
3702         nested classes are not added to the name cache, we must put them
3703         in the reflection_info_unregister_classes list.
3704
3705 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3706
3707         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3708         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3709         platform (trusted) code. Instead we return a TypeLoadException to
3710         be thrown later. This is the exception thrown by Silverlight 2 if
3711         a type, inside application (user) code is marked with [ComImport]
3712
3713 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3714
3715         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3716         mono_is_debugger_attached () too.
3717
3718         * mono-debug.c (mono_is_debugger_attached): New helper function.
3719         (mono_set_is_debugger_attached): Ditto.
3720
3721 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3722
3723         * object-internals.h: Add mono_string_to_utf8_checked.
3724
3725         * object.c: Implement mono_string_to_utf8_checked.
3726
3727 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3728
3729         * class.c: Add missing check for load errors after every
3730         call to mono_class_setup_fields
3731
3732         Fixes #552282.
3733
3734 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3735
3736         metadata-verify.c (verify_tables_schema): Fix the error message.
3737
3738 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3739
3740         * metadata.c: Change event table schema to use TDOR for event type
3741         as this is what it's meant to be.
3742
3743         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3744         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3745         entry.
3746
3747         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3748         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3749         rows in MONO_TABLE_GENERICPARAM.
3750
3751         Fixes #552289.
3752
3753 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3754
3755         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3756         insertion.
3757
3758         * reflection.c (mono_reflection_setup_internal_class): Avoid
3759         registering a gc root the same MonoClass multiple times.
3760         Don't register nested types on the global scope as they should
3761         not be available there.
3762
3763 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3764
3765         * culture-info-tables.h: regenerated.
3766
3767 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3768
3769         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3770
3771 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3772
3773         * string-icalls.c|h: Remove string internal calls that are not 
3774         used anymore by the class libraries.
3775         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3776         which is not used in the class librairies.
3777         * icall-def.h: Update tables.
3778
3779 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3780
3781         * class.h: Move mono_class_inflate_generic_type_checked...
3782
3783         * class-internals.h: to here and make it internal. We don't want to
3784         further expose MonoGenericContext. 
3785
3786 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3787
3788         * verify.c (mono_method_verify): Improve error message.
3789
3790 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3791
3792         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3793         the token is already properly encoded. Fixs 4.0 build.
3794
3795 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3796
3797         * locales.c (construct_number_format): Check if the number index is
3798         valid before trying to use it, if not, just return.
3799         
3800 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3801
3802         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3803         since that loses the abort state. Fixes #539394.
3804
3805 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3806
3807         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3808         explicit this argument to the call signature.
3809         (mono_marshal_get_icall_wrapper): Ditto.
3810
3811 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3812
3813         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3814         to indicate which assembly to use when resolving a custom-mod.
3815
3816         Fixes handling of volatile fields used across assemblies as reported in #551513.
3817
3818 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3819
3820         * loader.c: Improve error messages.
3821
3822 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3823
3824         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3825         of interfaces. Fixes IKVM.
3826
3827         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3828
3829 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3830
3831         * verify.c (verifier_inflate_type): Return the inflated type on success.
3832
3833 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3834
3835         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3836
3837         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3838
3839         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3840
3841         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3842         flag set.
3843
3844         * profiler.c: Add new profiler callbacks for runtime invoke.
3845
3846         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3847
3848 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3849
3850         * sgen-gc.c: Keep track of the reason for a major collection and
3851         write it to the heap-dump file.
3852
3853 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3854
3855         * threads.c: refactor the code that initializes the
3856         thread_start_args into a reusable function and use this in the two
3857         methods that start up threads.
3858
3859 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3860
3861         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3862         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3863
3864 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3865
3866         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3867         Until now, we only had the per-cpu(core) counters.
3868
3869 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3870
3871         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3872         mono_gc_get_suspend_signal(), which returns the suspend signal
3873         number used by the GC.
3874
3875 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3878
3879         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3880         signalling start_notify.
3881
3882 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3883
3884         * appdomain.c: do not test the st_mode field for shadow-copies.
3885         Fixes bug #545276.
3886
3887 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3888
3889         * threadpool.[ch]: added hooks for thread start/finish and item
3890         processing begin/end. For monotouch use only.
3891
3892 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3893
3894         * threads.c (mono_thread_get_name): New helper function.
3895
3896         * reflection.c (resolve_object): Set handle_class for strings too.
3897         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3898         a cattr blob into a set of arrays and structures without creating the custom
3899         attributes themselves.
3900         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3901
3902         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3903
3904         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3905         function.
3906
3907 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3908
3909         * verify.c: Replace calls to mono_class_inflate_generic_type with
3910         mono_class_inflate_generic_type_checked. Fixes #480005.
3911
3912 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3913
3914         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3915         object since not all paths lead to callees initing it.
3916
3917 2009-10-23  Alp Toker  <alp@nuanti.com>
3918
3919         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3920         header and should not be shipped:
3921
3922         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3923         which is specific to the mono build. Not going to work.
3924
3925 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3926
3927         * security-manager.c: Report if core-clr is active from
3928         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3929         to allow Moonlight BCL to behave appropriately (both in browser
3930         and outside, e.g. smcs)
3931
3932 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3933
3934         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3935         Fixes bug #549108.
3936
3937 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3938
3939         * class.c: fix typo.
3940
3941 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3942
3943         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3944         a MonoError parameter.
3945
3946         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3947         version that can does proper error handling.
3948
3949         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3950
3951         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3952
3953         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3954
3955 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3958         NO_UNALIGNED_ACCESS is defined.
3959
3960 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3963         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3964         Fixes #549173.
3965
3966 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3967
3968         * sgen-gc.c: Shorten sections whenever possible.
3969
3970 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3971
3972         * sgen-gc.c: Use our portable semaphore #defines.
3973
3974 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3975
3976         * sgen-gc.c: A debug option for dumping the heap layout to a file
3977         after each collection.
3978
3979 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3980
3981         * sgen-gc.c: Make managed write barriers atomic via
3982         thread-restarts.
3983
3984 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3985
3986         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3987         methods. Fixes #543021.
3988
3989 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3990
3991         * socket-io.[ch]: fix VS build.
3992
3993 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3994
3995         * icall-def.h:
3996         * socket-io.[ch]: implemented SendFile.
3997
3998 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3999
4000         * class.c (mono_class_create_from_typedef): Initialize class->element_class
4001         before the interfaces to avoid crashes later if class initialization fails.
4002         Fixes #548417.
4003
4004         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
4005         Fixes #548276.
4006
4007 2009-10-20  Marek Safar  <marek.safar@gmail.com>
4008
4009         * domain.c: Bump 4.0 version.
4010
4011 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
4012
4013         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
4014         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
4015         check since 'pubkey' can't be NULL at this stage
4016         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
4017         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
4018         initialization of 'iter'
4019
4020 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
4021
4022         * cominterop.c : Search the interface parts of vtable to find 
4023           method matches.  Fixes 547030.
4024
4025         Code is contributed under MIT/X11 license.
4026
4027 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
4028
4029         * marshal.c: BeginInvoke cannot be called on multicast delegates with
4030         multiple targets. Fixes bug #574426.
4031
4032 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4033
4034         * profiler.h: Put here the definition of
4035         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
4036         (and fix the build...).
4037
4038 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4039
4040         * profiler.c, profiler.h, profiler-private.h:
4041         Added support for different ways of getting call chains in stat mode.
4042
4043 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4044
4045         * object.c, object-internals.h: New function for computing the
4046         size of an array, factored out of mono_array_new_full().  Use
4047         SGen's functions for allocating arrays and vectors.
4048
4049         * sgen-gc.c, gc-internal.h: Special functions for allocating
4050         arrays and vectors without race conditions.  A managed array
4051         allocator method.
4052
4053         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
4054
4055 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4056
4057         * object.c, object.h, icall.c: Write barriers do the copying now,
4058         as well, so no need for an additional memcpy.
4059
4060         * sgen-gc.c: Lock when storing remsets.  Do the memory
4061         copying/moving in the write barriers.
4062
4063         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
4064
4065         * reflection.c: Added an assert.
4066
4067 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4068
4069         * threads.c, process.c: A few missing write barriers.
4070
4071 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
4072
4073         * mono-perfcounters.c, mono-perfcounters-def.h: Add
4074         network performance counters for bytes sent per second, bytes
4075         received per second, and bytes total per second.
4076
4077         Code is contributed under MIT/X11 license.
4078
4079 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4080
4081         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
4082         Fix warning.
4083
4084 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4085
4086         * threads.c, object-internals.h, object.c: Move code for
4087         transferring an object to a different domain (via
4088         serialization/remoting) to object.c.
4089
4090         * object.c (call_unhandled_exception_delegate): If the exception
4091         is in a different domain than the delegate, transfer the exception
4092         to that domain.
4093
4094 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
4095
4096         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
4097         Fixes #322934.
4098
4099 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
4102
4103 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4104
4105         * object.c (mono_method_return_message_restore): Handle the case
4106         where the argument is an instance of a generic type.  Fixes
4107         #544446.
4108
4109 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4110
4111         * object.c (set_value): Write barrier fix - we must pass the
4112         count, not the size.
4113
4114 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
4115
4116         * domain.c (mono_init_internal): Print a useful error message when encountering
4117         an old mscorlib, instead of crashing. Fixes #544307.
4118
4119 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
4120
4121         * appdomain.c (copy_app_domain_setup): Fix a warning.
4122
4123         * debug-helpers.c (dis_one): Ditto.
4124
4125 2009-10-04  Mark Probst  <mark.probst@gmail.com>
4126
4127         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
4128         into the new domain, instead of referencing the original one.
4129
4130         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
4131         non-static.
4132
4133         * appdomain.c: Corlib version bump.
4134
4135 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4136
4137         * threadpool.c: one more...
4138
4139 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4140
4141         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4142         threads to die because we're shutting down. delgate5.exe works again.
4143
4144 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4145
4146         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4147           ccw_interface_hash table when a ccw is finalized.
4148
4149         Code is contributed under MIT/X11 license.
4150
4151 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4152
4153         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4154         domain and image unloading into two steps.  We must do this
4155         because clearing the domain in SGen requires the class metadata to
4156         be intact, but we need to free the mono_g_hash_tables in case a
4157         collection occurs during domain unloading and the roots would trip
4158         up the GC.
4159
4160 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4161
4162         * object-internals.h: Remove serialized culture fields from
4163         MonoInternalThread.
4164
4165         * icall-def.h, thread-types.h, threads.c: Remove serialized
4166         culture icalls.
4167
4168         * appdomain.c: Corlib version bump.
4169
4170 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4171
4172         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4173         Fixes #543133.
4174
4175 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4176
4177         * sgen-gc.c: Try to shorten the new section after a major
4178         allocation to avoid ever-growing sections.
4179
4180 2009-10-13  Martin Baulig  <martin@ximian.com>
4181
4182         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4183         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4184         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4185         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4186
4187         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4188
4189 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4190
4191         * threadpool.c: fixed the order in which 'completed' and the wait
4192         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4193         No need to use the wait_handle field of ASyncCall. Make sure the
4194         threadpool is active when adding a job or queueing an idle thread.
4195
4196 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4197
4198         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4199
4200         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4201         when using --compile-all.
4202
4203 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4204
4205         * metadata.c (free_generic_class): Unregister the field_objects
4206         roots if we're using SGen.
4207
4208 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4209
4210         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4211         for GenericParamTableEntry.gparam.
4212
4213 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4214
4215         * marshal.c: don't create the handle when calling. It is created later
4216         if needed.
4217
4218 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4219
4220         * sgen-gc.c: Warning fixes.
4221
4222 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4223
4224         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4225         whole heap for cross-domain references before each collection.
4226
4227         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4228         object.
4229
4230         * threadpool-internals.h, threadpool.c: New function
4231         mono_thread_pool_is_queue_array() for checking whether a given
4232         array is used as a (cross-domain) queue by the thread pool code.
4233
4234 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4235
4236         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4237         searches the whole heap for objects containing a specific
4238         reference.  Only for debugging.
4239
4240 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4241
4242         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4243
4244         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4245         byte arrays between domains.
4246
4247 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4248
4249         * threadpool.c:
4250         * class-internals.h:
4251         * mono-perfcounters-def.h:
4252         * mono-perfcounters.c:
4253         -There is a list of idle threads
4254         -Each of those idle threads wait on their own WaitHandle instead
4255         of all of them using the same semaphore. When a new work item is
4256         added, the job is assigned directly to an idle thread or a newly
4257         created one if possible and then the handle for that thread is
4258         signaled. Compare that to the current approach where all the
4259         threads in the pool compete to dequeue a job from the same
4260         queue.
4261         -New struct ThreadPool that brings together the bunch of static
4262         variable for each threadpool (IO and regular).
4263         -New performance counters: # of items added and its rate per
4264         threadpool. The rate will be used later, perhaps together with
4265         other perf. counters, to decide when idle threads should exit.
4266
4267 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4268
4269         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4270         Fix typo on Windows build.      
4271         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4272         
4273         Code is contributed under MIT/X11 license.
4274
4275 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4276
4277         * object-internals.h: The Thread class is split up into Thread and
4278         InternalThread now.  We have exactly one InternalThread per
4279         thread, and at most one Thread per appdomain per thread.  Most
4280         data is stored in InternalThread.  All InternalThread objects live
4281         in the root domain.
4282
4283         * class-internals.h: Add internal_thread_class to MonoDefaults.
4284
4285         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4286         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4287         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4288         resulting from the split of the Thread class.
4289
4290         * gc-internal.h: Prototype for new function for checking whether a
4291         thread is the finalizer thread.
4292
4293         * appdomain.c: Corlib version bump.
4294
4295 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4296
4297         * appdomain.c|h: Add a mono_domain_try_unload method which is
4298         equivalent to mono_domain_unload, except that it returns an exception
4299         instead of throwing it. Make mono_domain_unload use the
4300         mono_domain_try_unload method to avoid code-duplication.
4301
4302 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4303
4304         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4305         a problem.
4306
4307 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4308
4309         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4310         aborting when a conversion is not implemented.
4311
4312 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4313
4314         * verify.c: when comparing culture strings, use g_ascii_strcmp
4315
4316         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4317         when comparing public key tokens to use memcmp on 16 bytes.   I do
4318         not believe this ever worked as advertised in the past.
4319
4320         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4321         which would have always failed earlier.
4322
4323 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4324
4325         * gc.c: Raise a NullArgumentException if the object passed is
4326         null.
4327
4328 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4329
4330         * image.c (mono_image_close): Atomically decrement the reference count and
4331         remove the image from the hash tables, to prevent another thread from seeing a
4332         dying MonoImage. Fixes #541194.
4333
4334 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4335
4336         * threadpool.c: actually use the minimum number of 'completion ports'
4337         (for us is just a potential worker thread).
4338
4339 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4340
4341         * threadpool.c: remove ares_htable. It does not make sense any more
4342         since the same objects are now stored in GC-tracked arrays while they are
4343         in the queue.
4344
4345 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4346
4347         * threadpool.c: increase the minimum length of the queues to 128.
4348         Remove warning.
4349
4350 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4351
4352         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4353         return the modified signature used by string ctors.
4354
4355 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4356
4357         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4358         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4359         method, to be used by full-aot.
4360
4361 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4362
4363         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4364         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4365         be known to be good.
4366
4367         * class.c (mono_class_init): Fail array types if their element type fails initialization
4368         as well.
4369
4370         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4371         initialization, additionally we request the element_type vtable to be initialized as well.
4372
4373         This is fine and should not increase the working set in any meaningful way since it's reasonable
4374         to assume       that most code will create an array and eventually populate it, which will require the
4375         type's vtable to be initialized.
4376
4377         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4378
4379 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4380
4381         * normalization-tables.h : regenerated.
4382
4383 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4384
4385         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4386         a leb128 encoding can take up to 5 bytes.
4387
4388 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4389
4390         * class.c (verify_class_overrides): Remove useless argument.
4391
4392         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4393         before interface enumeration as this is no longer required.
4394
4395 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4396
4397         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4398         used under mono_class_init context. This functions avoid any code path that
4399         calls mono_class_init, which leads it to be slow as some things like the interface
4400         bitmap are not available.
4401
4402         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4403         of it's own broken version. Fixes the verifier part of #538588.
4404
4405         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4406         API.
4407
4408 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4409
4410         * class.c (mono_class_init): Always set an exception in a class if
4411         vtable setup fails.  Fixes #538577.
4412
4413         * generic-sharing.c: Raise an exception if mono_class_vtable()
4414         returns NULL.
4415
4416 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4419         methods of vtypes, as they could be incorrectly shared with static methods
4420         taking an IntPtr argument.
4421
4422 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4423
4424         * domain.c:
4425         * object.c:
4426         * class-internals.h: renamed waithandle_class to
4427         manualresetevent_class.
4428         * marshal.c: propagate the exception if a remoting BeginInvoke call
4429         fails.
4430
4431 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4432
4433         * object.c: Properly handle vtable failures.
4434
4435 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4436
4437         * socket-io.c: Assert on vtable failure.
4438
4439         * mono-mlist.c: Assert on vtable failure.
4440
4441 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4442
4443         * marshal.c: Assert on vtable failure.
4444
4445 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4446
4447         * icall.c: Properly handle vtable failures.
4448
4449 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4450
4451         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4452
4453 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4454
4455         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4456
4457         * console-unix.c (do_console_cancel_event): Same.
4458
4459 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4460
4461         * class-internals.h: Add mono_class_vtable_full function that allows control
4462         if an exception should be raised or not.
4463
4464         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4465         to do what its documentation say, that is to return NULL and set exception_type on
4466         failure.
4467
4468         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4469         and change the code to honor it.
4470
4471 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4472
4473         * verify.c: Fix typo in error message.
4474
4475 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4476
4477         * security-core-clr.c: Fix default_platform_check so it can run
4478         the runtime coreclr tests (without an infinite recursion when
4479         throwing an exception).
4480
4481 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4482
4483         object.c (mono_delegate_ctor_with_method): Guard against null method.
4484
4485 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4486
4487         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4488         that should be replaced with error handling later.
4489
4490 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4491
4492         * marshal.c (mono_delegate_end_invoke): Fix warning.
4493
4494 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4495
4496         * loader.c (mono_field_from_token): Properly handle invalid
4497         dynamic tokens.
4498
4499 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4500
4501         * pedump.c (verify_image_file): Skip types that can't be
4502         decoded.
4503
4504 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4505
4506         * verify.c: Look for recursive valuetypes only against the
4507         type been initialized as this is a lot simpler and works.
4508
4509 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4510
4511         * verify.c: Ensure that fields are properly loaded before
4512         checking them.
4513
4514 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4515
4516         * object.c (mono_object_get_virtual_method) : Call 
4517           mono_cominterop_get_invoke if the object is a COM object.
4518
4519         Code is contributed under MIT/X11 license.
4520
4521 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4522
4523         * verify.c: Check for recursive valuetype definitions.
4524
4525 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4526
4527         Use inheritance-aware interface offsets. Inherited types use the same offsets
4528         of their parents. This reduce offset duplication in case more than one type in
4529         the inheritance tree explicitly implements the same interface.
4530
4531         This also removes a source of vtable bubbles found in #532409. An abstract type
4532         isn't required to provide abstract methods to all interfaces it implements, which
4533         resulted in a bubble with the previous scheme as the child would get a non-full
4534         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4535         should be fixed.
4536
4537         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4538         it's expected to not cause any significant increase beyond that.
4539
4540         * class.c (setup_interface_offsets): Compute super class iface offsets
4541         first to force sharing.
4542
4543         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4544         dumping only the relevant ones.
4545
4546         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4547         methods a new slot regardless if they belong to an interface or not. This allows
4548         an inherited type to override the iface method separately from the class one.
4549
4550 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4551
4552         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4553         applications that take less than 2s to execute.
4554         Bug #524984 fixed.
4555
4556 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4559
4560         * object.c (mono_get_runtime_callbacks): New helper function to return
4561         the runtime callbacks.
4562
4563         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4564         mono_get_runtime_build_info () as the display name.
4565         
4566 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4567
4568         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4569         argument, since NEWARR expects a native int. Fixes #481559.
4570
4571 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4572
4573         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4574         against broken SRE methods.
4575
4576 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4579         a NULL variable. Abort early on failure.
4580
4581 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4582
4583         * class.c (can_access_type): Fail visibility test for non nested
4584         types with nested visibility.
4585
4586 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4587
4588         * assembly.c (parse_public_key): Avoid allocating (and not 
4589         freeing) the public key array when it's not requested by the 
4590         caller.
4591         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4592         ves_icall_System_Threading_Thread_Thread_internal): Free 
4593         allocated memory on error.
4594
4595 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4596
4597         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4598
4599 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4600
4601         * class.c (mono_class_setup_fields): Remove duplicated local variable
4602         named gklass.
4603         Rename gklass to gtd to reflect the fact that it points to the generic
4604         type definition.
4605         Remove the duplicated call to mono_class_setup_fields on gtd and move
4606         the error check to the beginning.
4607
4608 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4609
4610         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4611         Remove cruft of the previous patch.
4612
4613 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4614
4615         * metadata-verify.c (verify_method_table): Check for abstract + final.
4616         Fixes #534175.
4617
4618 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         * verify.c (verify_class_fields): Check for duplicate fields.
4621
4622 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4623
4624         * metadata-verify.c: Verify the typeref table for duplicates.
4625
4626 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4627
4628         This reverts r140936 and properly handles interfaces with static methods. The
4629         right fix is to ensure vtables without bubles which is an easier to verify
4630         constraint. We should avoid such special cases as of the reverted patch as those
4631         only make the runtime more brittle.
4632
4633         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4634         static methods on interfaces.
4635
4636         * class.c (setup_interface_offsets): Use the number of virtual methods when
4637         calculating interface offsets instead of the number of methods. This way we
4638         avoid bubles on the layout.
4639
4640 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4641
4642         * metadata-verify.c (verify_metadata_header): Some very smart
4643         obfuscators like to add extra stream headers. Ignore them.
4644
4645 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4646
4647         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4648         methods correctly.
4649
4650 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4651
4652         * metadata-verify.c: Verify for duplicated types.
4653
4654 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4655
4656         * metadata-verify.c (verify_typedef_table): Verify for nested types
4657         without an entry on the nested class table.
4658
4659 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4660
4661         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4662         <tom_hindle@sil.org>. Add locking around hash table accesses.
4663
4664 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4665
4666         * verify.c (mono_verifier_verify_class): Verify all interface if
4667         really are interfaces. Fixes #534184.
4668
4669 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4670
4671         * pedump.c: Initialize all types during metadata validation so we report
4672         errors only detected as part of class initialization.
4673
4674 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4675
4676         * metadata-verify.c (verify_method_table): PInvoke requires method to
4677         be static. Fixes #534189
4678
4679 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4680
4681         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4682         being NULL.
4683
4684 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4685
4686         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4687         for holes or bad methods. Fixes #525314.
4688
4689 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4690
4691         * class.c (setup_interface_offsets): Don't allocate slot
4692         for the same interface multiple times. This creates bubbles
4693         that waster space and make vtable verification harder.
4694
4695         The same interface get a slot multiple times since we need
4696         to get the closure of all implemented interfaces, which means
4697         the same interface is reported multiple times.
4698
4699 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4700
4701         * verify.c (mono_verifier_verify_class): Don't check the fields
4702         of generic instances since the context on which they got expanded
4703         might lead to false positives.
4704
4705         Such thing happens when a generic type is inflated in the context
4706         of a generic method and the inflated type of a field turns into a
4707         generic method argument, which causes the checking code to think
4708         it's an invalid class when it's not.
4709
4710 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4711
4712         * verify.c (mono_type_is_valid_in_context): Verify if type
4713         is NULL and remove duplicate test.
4714
4715 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4716
4717         * verify.c (mono_verifier_verify_class): Check fields for
4718         invalid generic arguments.
4719
4720 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4721
4722         * class.c (verify_class_overrides): Verify if for static
4723         and non virtual methods.
4724
4725 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4726
4727         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4728         Check for errors after retrieving the vtable.
4729
4730 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4731
4732         * class.c (mono_class_setup_vtable_general): Verify
4733         if method overrides are valid before processing them.
4734
4735 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4736
4737         * marshal.c (mono_array_to_lparray): Fix minimal build with
4738         cominterop disabled.
4739
4740         * marshal.c (mono_free_lparray): Same.
4741
4742 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4743
4744         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4745         the hash function for the ares_htable.
4746
4747 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4748
4749         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4750         bit for assembly flags. MS is ok with it but there is no spec anywhere
4751         on its mean
4752
4753 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4754
4755         * class.c (mono_class_create_from_typedef): Emit profiler events
4756         in all cases.
4757
4758 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4759
4760         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4761         Release memory on failure.
4762
4763 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4764
4765         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4766         to the internal API.
4767
4768         * metadata.c (get_constraints): Use a single-linked table as we don't
4769         traverse it backward. Fail and return FALSE if only of the contraint types
4770         is not found.
4771
4772         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4773         to mono_metadata_load_generic_param_constraints except for having a return value.
4774         This has to be done since the later is part of the public API.
4775
4776         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4777         and fail the type.
4778
4779         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4780         and fail the method.
4781
4782 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4783
4784         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4785         with MS broken behavior of emmitting EH section sizes without the
4786         header size added.
4787
4788 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4789
4790         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4791         memory until we're sure that we'll need it. This avoids leaking for
4792         broken types or duplicated instantiation.
4793
4794 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4795
4796         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4797         mistake.
4798
4799 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4800
4801         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4802         and expected size calculation.
4803
4804 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4805
4806         * class.c (mono_class_get_field_idx): Add fixme for broken
4807         behavior for types with multiple fields with the same name.
4808         I would rather fix it, but have no idea on how to generate
4809         such artifact for testing.
4810
4811 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4812
4813         * verify.c (verifier_load_field): We should allow references to
4814         fields to be made using the generic type definition. It's up to
4815         the loader system to fail invalid ops.
4816
4817         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4818         are invalid.
4819
4820 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4821
4822         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4823
4824         * metadata-internals.h: Fix declaration of 
4825         mono_metadata_interfaces_from_typedef_full.
4826
4827         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4828         heap_alloc_result parameter that controls if the result should be
4829         g_malloc'd.
4830
4831         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4832         array be g_malloc'd and properly document this public API function.
4833
4834 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4835
4836         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4837         remove METHOD_HEADER_TINY_FORMAT1.
4838
4839         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4840
4841         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4842
4843         Both spec and MS uses only 2 bits to enumerate the kind of header.
4844         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4845         is superfluous, only used for tiny headers with odd code lengths.
4846
4847         This change also make sure that mono doesn't wronly interpret bit 2
4848         of fat header flags, which is currently reserved.
4849
4850 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4851
4852         * metadata.c (do_mono_metadata_parse_type): Do error
4853         checking for element types. Don't abort if presented
4854         with a broken type kind.
4855
4856 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4857
4858         * metadata.c (mono_metadata_parse_method_signature_full):
4859         Gracefully fail bad vararg signatures.
4860
4861 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4862
4863         * profiler.c:
4864         * class.c: Fix warnings for uninitialized variables.
4865
4866 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4867
4868         * icall.c: Fix _NSGetEnviron method declaration warning.
4869
4870 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4871
4872         * icall.c:
4873         * reflection.c: Make bitwise checks explicit.
4874
4875 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4876
4877         * debug-helpers.c:
4878         * marshal.c: Fix printf warnings.
4879
4880 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4881
4882         * reflection.c (encode_cattr_value): Fix a warning.
4883
4884 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4885
4886         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4887         of array bounds.
4888
4889 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4890
4891         * loader.c (mono_method_signature): Don't assert on broken
4892         signature. Print a more useful error message.
4893
4894 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * loader.c (mono_method_get_marshal_info): Assert if
4897         signature is invalid. Bounds check stores to the
4898         mspecs array;
4899
4900 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4901
4902         * loader.c (field_from_memberref): Fix warning.
4903
4904 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4905
4906         * loader.c (mono_method_get_param_names): Check if signature
4907         is null. Don't store beyond the size of the name array.
4908
4909 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4910
4911         * loader.c (mono_get_method_constrained): Check if signature
4912         is null.
4913
4914 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4915
4916         * loader.c (mono_loader_set_error_bad_image): Improve
4917         error messages.
4918
4919 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4920
4921         * loader.c (mono_get_method_full): Convert an assertion
4922         into a loader error.
4923
4924 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4925
4926         * class-internals.h, class.c: Better naming and documentation.
4927
4928 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4929
4930         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4931         obj is NULL.
4932
4933 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4934
4935         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4936         parsing fails.
4937
4938 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4939
4940         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4941         errors with no class set.
4942
4943         * loader.c (field_from_memberref): If the field signature is of the wrong
4944         type fail with a MissingFieldException instead of a BadImageException as
4945         this is the behavior observed on MS. 
4946
4947 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4948
4949         * loader.c (field_from_memberref): Don't crash if either the field
4950         signature or the typespec class are invalid.
4951
4952 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4953
4954         * verify.c (verifier_load_field): Don't allow field related
4955         ops to reference fields on generic type definition.
4956
4957 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4958
4959         * metadata-verify.c: Add new warning level for errors specified
4960         by ECMA 335 but that MS ignores.
4961
4962         * metadata-verify.c (verify_method_table): Make compiler controled
4963         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4964         this check is safe because the end result will only be some visibility
4965         exceptions been thrown.
4966
4967 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4968
4969         * verify.c (get_boxable_mono_type): Don't allow the
4970         use of the generic type definition on boxed type positions.
4971
4972         Fixes #531237.
4973
4974 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4975
4976         * threadpool.c: Make sure no cross-domain references remain in
4977         ares_htable or the arrays that are thrown away when resizing.
4978
4979 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4980
4981         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4982         list of classes for which we have to unregister reflection_info
4983         with the GC and which are not in the namespace cache.
4984
4985         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4986         the class to the list.
4987
4988 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4989
4990         * domain.c (mono_domain_free): Unregister the GC roots in
4991         MonoDomain.
4992
4993 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4994
4995         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4996
4997 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4998
4999         * class.c: Add mono_class_get_field_from_name_full which does
5000         the same as mono_class_get_field_from_name but does check field
5001         signature as well.
5002
5003         * class-internals.h: Export mono_class_get_field_from_name_full as
5004         part of the internal API.
5005
5006         * loader.c (field_from_memberref): Search fields by name and signature
5007         as it's valid to have two fields with same name but different types.
5008
5009         Fixes #528055.
5010
5011 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
5012
5013         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
5014
5015         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
5016
5017         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
5018         System.Type.
5019
5020 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
5021
5022         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
5023
5024         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
5025
5026 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5027
5028         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
5029         to sgen-scan-object.h, which can be included and parameterized via
5030         macros.
5031
5032         * Makefile.am: sgen-scan-object.h added.
5033
5034 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5035
5036         * gc.c: #define GC_dont_gc if we're compiling with SGen.
5037
5038 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5039
5040         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
5041         before clearing a domain in the GC.
5042
5043 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5044
5045         * exception.c (mono_exception_from_name_domain): Actually create
5046         the exception in the specified domain.
5047
5048         * appdomain.c (mono_domain_create_appdomain_internal): Create the
5049         OutOfMemoryException a bit later so that the domain is inialized
5050         "enough" that it works.
5051
5052 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5053
5054         * threads.c (thread_cleanup): Clean up the cached_culture_info
5055         array to prevent cross-domain references.
5056
5057 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
5058
5059         * metadata.c: more documentation for MonoType accessors.
5060
5061 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
5062
5063         Fix incorrect size definitions where the tail array isn't a list
5064         of pointers
5065         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
5066         define size.
5067         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
5068         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
5069         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
5070
5071 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5072
5073         * reflection.h:
5074         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
5075
5076 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5077
5078         * metadata.c:
5079         * loader.c:
5080         * metadata-internals.h:
5081         * method-builder.c:
5082         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
5083
5084 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5085
5086         * cominterop.c:
5087         * metadata.c:
5088         * metadata.h:
5089         * loader.c:
5090         * marshal.c:
5091         * reflection.c: #define for sizeof in MonoType and
5092         MonoMethodSignature.
5093
5094 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5095
5096         * domain.c:
5097         * domain-internals.h: add and use #define's instead of sizeof()
5098         for MonoJitInfo and MonoJitInfoTable.
5099
5100 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5101
5102         * object.c:
5103         * class.h: use #define instead of sizeof() for MonoRemoteClass.
5104
5105 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5106
5107         * metadata.c:
5108         * metadata.h:
5109         * object.c:
5110         * class-internals.h:
5111         * generic-sharing.c:
5112         * marshal.c: use a #define instead of sizeof() for a few
5113         structures that use a zero-length array.
5114
5115 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5116
5117         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
5118         to handle inflated generic methods.
5119
5120         * appdomain.c: Bump corlib version.
5121
5122         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
5123         instances.
5124
5125         * reflection.c (fixup_method): Same
5126
5127         * reflection.c (resolve_object): Same.
5128
5129         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
5130         g_error and a decent message.
5131
5132 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
5133
5134         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5135         from the object because it could not yet be available globally
5136         (it happens if the profiler tries to create a gchandle on the
5137         MonoThread object of a thread that is still registering itself
5138         with the runtime).
5139
5140 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5141
5142         * reflection.c (mono_generic_class_get_object): Initialized the
5143         managed type arguments array.
5144
5145         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5146
5147         * appdomain.c: Bump corlib version.
5148
5149 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5150
5151         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5152         #527902.
5153
5154 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5157         Avoid a crash if synch_cs is not set.
5158         
5159         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5160         Handle the case when the handle is 0.
5161
5162         * appdomain.c: Bump corlib version.
5163
5164 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5165
5166         * reflection.c (mono_type_get_object): Fix a warning.
5167
5168 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5169
5170         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5171         descriptor here.  We assume it's already been computed.
5172
5173         * generic-sharing.c (instantiate_other_info): Compute the GC
5174         descriptor for info type MONO_RGCTX_INFO_KLASS.
5175
5176 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5177
5178         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5179         type, so don't use MONO_OBJECT_SETREF to set a field.
5180
5181 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5182
5183         * gc.c: We were missing one case where invoking a finalizer would
5184         not reset the domain.  Also, in the finalizer thread loop, assert
5185         that we're in the root domain.
5186
5187 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5188
5189         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5190         if the type is not an array.
5191
5192 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5193
5194         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5195         method bound to the declaring type of the method. Raise an exception
5196         if the type is not a generic param.
5197
5198 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5199
5200         * class.c (print_unimplemented_interface_method_info): Print the
5201         full type name.
5202
5203         * class.c (mono_class_setup_vtable_general): When dealing with a
5204         generic instance first check if the generic type definition is
5205         not broken.
5206
5207 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5208
5209         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5210
5211         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5212
5213         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5214
5215         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5216
5217         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5218
5219         Code is contributed under MIT/X11 license
5220
5221 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5222
5223         * verify.c: Fix naming of stelem and ldelem.
5224
5225 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5226
5227         * generic-sharing.c: Replace the templates lock with the loader
5228         lock because of very hard to resolve deadlock issues.
5229
5230 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5231
5232         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5233         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5234         directly. Fixes #525338.
5235
5236         * class.c (mono_class_get_vtable_size): New helper function.
5237
5238         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5239         the field belongs to the type. Fixes #525733.
5240
5241 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5242
5243         * sgen-gc.c: When we stop a thread and its stack top is not within
5244         its allocated stack (because it's in an altstack signal handler),
5245         restart it and stop it again, until it is.
5246
5247 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5248
5249         * sgen-gc.c: Take a thread's stack top and registers from the
5250         sigcontext in the suspend signal handler.
5251
5252         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5253         stuff to sgen-archdep.h.
5254
5255         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5256         caller, because have code in sgen-archdep.h to acquire that data.
5257
5258 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5259
5260         * profiler.c, profiler.h, profiler-private.h:
5261         Added support for keeping track of code chunks and buffers.
5262
5263 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5264
5265         * metadata-verify.c: Fix endianness problems on decoding functions.
5266         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5267
5268 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5269
5270         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5271         schema for vectors and one dimension SZARRAY.
5272
5273 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5274
5275         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5276         schema for vectors and one dimension SZARRAY.
5277
5278 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5279
5280         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5281         Interlocked.(Compare)Exchange with object arguments, which invoke
5282         write barriers.
5283
5284 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5285
5286         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5287         passed invalid arguments.   Fixes another crasher in the
5288         Silverlight test suite.
5289
5290         * class.c (mono_class_array_element_size): Return 0 for the size
5291         of the class;  This fixes the crasher exposed by :
5292
5293         typeof (void).MakeArrayType ();
5294
5295         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5296         if there is no method to dereference.    Put all the code that
5297         depends on this inside the if (method) block.
5298
5299         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5300         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5301
5302         With this change, we pass the test.
5303         
5304         * reflection.c (mono_reflection_sighelper_get_signature_local):
5305         Only dereference the assembly if it has been set.    Fixes a
5306         crasher exposed by #525328
5307
5308 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5309
5310         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5311         don't perform the store in mono_gc_wbarrier_generic_nostore().
5312         Remove the second argument (value), which is not needed.
5313
5314 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5315
5316         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5317         the build.
5318
5319         * boehm-gc.c: Ditto.
5320         
5321 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5322
5323         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5324         not perform the store itself.  Introduce
5325         mono_gc_wbarrier_generic_nostore(), which is the same as
5326         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5327         store.
5328
5329 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5330
5331         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5332         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5333         we still need the memcpy().
5334
5335 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5336
5337         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5338         so that big arrays are handled correctly.  Always use
5339         safe_object_get_size() to calculate array object sizes, which
5340         takes bounds into account.
5341
5342 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5343
5344         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5345         GC descriptor is computed before we use it.
5346
5347 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5348
5349         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5350         write barrier if necessary.
5351
5352 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5353
5354         * icall-def.h, icall.c, thread-types.h: New separate icall for
5355         VolatileWrite(object&,object) that uses a write barrier.
5356
5357         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5358         barriers in icalls which write to "ref" or "out" arguments.
5359
5360 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5361
5362         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5363         handler in a separate icall, to reduce the size of the wrappers.
5364
5365 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5366
5367         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5368
5369 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5370
5371         * metadata-verify.c (parse_field): Allow byref field.
5372
5373         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5374
5375         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5376
5377 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5378
5379         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5380         Fixes #522784.
5381
5382 2009-07-20  Robert Jordan  <robertj@gmx.net>
5383
5384         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5385         Fix invalid IL in valuetype handling (STOBJ must push the
5386         corresponding class). Fixes bug #523149.
5387
5388         Code is contributed under MIT/X11 license.
5389
5390 2009-07-20  Geoff Norton  <gnorton@novell.com>
5391
5392         * gc.c: Use proper semaphores where available on posix and darwin.
5393
5394 2009-07-19  Geoff Norton  <gnorton@novell.com>
5395
5396         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5397
5398 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5399
5400         * refletion.c (is_sre_usertype): Change name to is_usertype and
5401         invert it's result so it returns true if the type is an user type
5402         and not the opposite.
5403
5404         * reflection.c (is_*_type): Change all of those to use new macro
5405         check_corlib_type_cached that cached the type lookup so we don't
5406         need to do string comparisons all the type. Changed the signature
5407         to take a MonoClass instead.
5408
5409         * reflection.c: Change mono_image_create_token and resolve_object
5410         to use is_sre_* functions.
5411
5412 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5413
5414         * sgen-gc.c: Check for writes to the stack in the managed
5415         wbarrier as well.
5416
5417 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5418
5419         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5420         but put them on a list which is processed with the other thread's
5421         remsets.
5422
5423 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5424
5425         * sgen-gc.c: Fix and enable the internal allocator instead of
5426         using malloc/free (which causes deadlocks).
5427
5428 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5429
5430         * refletion.c: Fix builds with SRE disabled by adding a minimal
5431         implementation of mono_reflection_type_get_handle.
5432
5433 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5434
5435         * refletion.c: Make mono_reflection_type_get_handle non static.
5436
5437         * object-internals.h: Export mono_reflection_type_get_handle.
5438
5439         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5440         unmanaged handle using mono_reflection_type_get_handle.
5441
5442 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5443
5444         * refletion.c: Replace all reads of MonoReflectionType::type with
5445         calls to mono_reflection_type_get_handle. Only the functions that
5446         deal with constructing TypeBuilder::type have not been changed
5447         because they have to deal with NULL values.
5448
5449         This is a first step into supporting reflection types that don't
5450         map directly into their unmanaged counterpart.
5451
5452 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5453
5454         * metadata-verify.c (parse_locals_signature): Don't complain
5455         on signature with zero locals since MS generates it and doesn't
5456         bother with.
5457
5458 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5459
5460         * reflection.c (mono_image_get_array_token): Resolve return
5461         type using mono_reflection_type_get_handle.
5462
5463         * reflection.c (mono_image_get_array_token): Resolve array method
5464         parent type using mono_reflection_type_get_handle.
5465
5466 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5467
5468         * reflection.c (mono_image_basic_init): Applied patch from
5469         <Dax@daxxfiles.net>. Set the public key token from the assembly
5470         builder. Fixes #518909.
5471
5472         * appdomain.c: Bump corlib version.
5473
5474 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5475
5476         * class.c (mono_class_needs_cctor_run): Make this return false if
5477         the class has no cctor.
5478
5479 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5480
5481         * sgen-gc.c: When the minor GC needs to allocate a new section,
5482         invoke the major GC afterwards.
5483
5484 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5485
5486         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5487           Applying the window_style field to the SHELLEXECUTEINFO struct.
5488
5489         Code is contributed under MIT/X11 license.
5490
5491 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5492
5493         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5494         locking earlier.  Fix it in the managed allocator by making sure
5495         that no thread is stopped there before the GC runs.  If we do stop
5496         a thread there, we restart it and let it run a but, until it stops
5497         somewhere else.
5498
5499         * gc-internal.h, gc.c: Function for getting the IP from a signal
5500         context via a function registered by mini.
5501
5502 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * object-internals.h (MonoIntPtr): New structure describing a boxed
5505         IntPtr.
5506
5507         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5508         returns. Fixes #519953.
5509
5510         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5511
5512 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5513
5514         * class-internals.h, generic-sharing.c: New RGCTX info type for
5515         getting a remoting invoke with check wrapper.
5516
5517 2009-07-07  Geoff Norton  <gnorton@novell.com>
5518
5519         * icall-def.h: Fix the enable-minimal build.
5520
5521 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5522
5523         * object-internals.h: Add MonoReflectionDerivedType.
5524
5525         * reflection.c: Implement support for PointerType.
5526         Fixed tons of warnings.
5527
5528 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5529
5530         * object-internals.h: Add MonoReflectionByRefType.
5531
5532         * reflection.c: Implement support for ByRefType.
5533
5534 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5535
5536         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5537
5538         * object-internals.h: Add MonoReflectionArrayType and
5539         mono_reflection_create_unmanaged_type.
5540
5541         * reflection.c: Implement support for ArrayType.
5542
5543 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5544
5545         * metadata-verify.c (is_valid_method_header): Parse EH block
5546         flags correctly.
5547
5548 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5549
5550         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5551         processing the disappearing links, and process disappearing links
5552         in a loop until no new objects are copied.
5553
5554 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5555
5556         * object.c (handle_enum): Invoke the write barrier when copying
5557         value type instances.
5558
5559         * sgen-gc.c: Register remsets for unmanaged write barriers only
5560         when the address written to is actually on the heap.  This makes
5561         set_value() in object.c work without requiring that the result be
5562         on the heap.
5563
5564 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5565
5566         The runtime wrappers are all bound to a given type that must
5567         exist in the same image. For regular images we use the <Module>
5568         type, which is required to exist for all images.
5569
5570         The <Module> type can't be used for dynamic images because it
5571         might not exist at the time the wrapper is required, so we create
5572         a synthetic type to use instead.
5573
5574         The current code works because of the 2 stage setup of MonoClass,
5575         but once this is gone it will no longer work.
5576
5577         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5578
5579         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5580
5581         * object-internals.h: Export mono_image_set_wrappers_type icall
5582         as part of the internal API.
5583
5584         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5585         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5586
5587         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5588         image wrappers_type to the provided value.
5589
5590 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5591
5592         * appdomain.c (deregister_reflection_info_roots): No need
5593         to use the image lock here.
5594
5595 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5596
5597         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5598
5599 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5600
5601         * threads.c: Store the thread start argument in a hash table instead of
5602         registering it as a root, as libgc doesn't support unregistering roots
5603         under windows, leading to 'too many root sets' errors when many threads
5604         are created.
5605
5606         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5607         shutdown, they can still be referenced by the other dying objects.
5608         Fixes #514506.
5609
5610 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5611
5612         * socket-io.c: DontLinger does not allow LingerOptions.
5613
5614 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5615
5616         * metadata-verify.c: The spec doesn't mention that it's possible to add
5617         custom attribute to a generic parameter. Fixed.
5618
5619 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5620
5621         * class.c (inflate_generic_type): Don't crash while trying to output a message
5622         on why we're aborting.
5623
5624 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5625
5626         * socket-io.c: DontLinger can take an int or a boolean too.
5627
5628 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5629
5630         * gc.c: check for a null argument to SuppressFinalize () and
5631         ReRegisterForFinalize ().
5632
5633 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5634
5635         * loader.c (method_from_methodspec): Call into the verifier to check
5636         the signature.
5637
5638         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5639
5640         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5641         part of the internal API.
5642
5643 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5644
5645         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5646         the signature.
5647
5648         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5649
5650         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5651         part of the internal API.
5652
5653 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5654
5655         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5656         the signature.
5657
5658         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5659         blob verification.
5660
5661         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5662         part of the internal API.
5663
5664 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5665
5666         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5667         when doing basic verification. 
5668
5669         This check must be done since the runtime peeks into signatures in much
5670         more places than it does decoding so it makes sense to ensure that all
5671         pointers to blob objects are well formed.
5672
5673 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5674
5675         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5676         Use proper overflow dectection. Fix usage of it.
5677
5678 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5679
5680         * loader.c (field_from_memberref): Call into the verifier to check
5681         the signature.
5682
5683         * loader.c (mono_method_get_signature_full): Same.
5684
5685         * loader.c (method_from_memberref): Same.
5686
5687         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5688
5689         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5690         part of the internal API.
5691
5692 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5693
5694         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5695         or unloaded, still return an AsyncResult, but don't add it to the
5696         threadpool.
5697
5698 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5699
5700         * threads.c: fix missing colon when DEBUG is defined.
5701
5702 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5703
5704         * threadpool.c: Don't add new calls to a threadpool if the domain
5705         of the call is unloading or unloaded.  When dequeuing a job, null
5706         the reference in the queue.
5707
5708 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5709
5710         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5711         generation if an object was moved.
5712
5713 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5714
5715         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5716           parameters of type SAFEARRAY[VARIANT].
5717
5718         * reflection.c (encode_marshal_blob): Properly generate element type
5719           (SafeArraySubType marshal attribute option).
5720
5721         Code is contributed under MIT/X11 license.
5722
5723 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5724
5725         * reflection.c: in mono_method_clear_object () really ensure all the
5726         objects are removed.
5727
5728 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5729
5730         * loader.c (mono_method_signature): Call into the verifier to check
5731         the method signature.
5732
5733         * metadata-verify.c (verify_method_table): Move signature verification
5734         to verify_method_table_full.
5735
5736         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5737
5738         * verify-internals.h: Export mono_verifier_verify_method_signature as
5739         part of the internal API.
5740
5741 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5742
5743         * loader.c (mono_method_get_header): Call into the verifier to
5744         check the method header.
5745
5746         * metadata-verify.c: Add mono_verifier_verify_method_header.
5747
5748         * verify-internals.h: Export mono_verifier_verify_method_header as
5749         part of the internal API.
5750
5751 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5752
5753         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5754         check the field signature. Replace an assert with an explicit check.
5755
5756         * class.c (mono_class_setup_fields): Call into the verifier to check
5757         the field signature.
5758
5759         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5760
5761         * verify-internals.h: Export mono_verifier_verify_field_signature as
5762         part of the internal API.
5763
5764 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5765
5766         * class.c (mono_class_find_enum_basetype): Simplify this function
5767         by moving code outside of the loop and not decoding static fields.
5768
5769 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5770
5771         * metadata-verify.c (verify_typedef_table): Check the extends
5772         token here. Move to here a flags check from verify_typedef_table_full.
5773
5774 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5775
5776         * metadata-verify.c (is_valid_method_header): Fix a warning.
5777
5778         * metadata-internals.h (MonoImage): Remove the unused 
5779         static_rgctx_invoke_wrapper_cache.
5780
5781         * image.c marshal.c: Ditto.
5782
5783 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5784
5785         * image.c (do_mono_image_load): Enable table data verification.
5786
5787 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5788
5789         * metadata-verify.c (is_valid_constant): Fix nullref check.
5790
5791 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5792
5793         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5794
5795 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5796
5797         * sgen-gc.c: Managed allocation with pthreads TLS.
5798
5799         * threads.c, threads-types.h: Functions for the JIT to tell the
5800         runtime whether it supports the MONO_TLS opcode.
5801
5802 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5803
5804         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5805         without methods.
5806
5807 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5808
5809         * metadata-verify.c (is_valid_constant): Fix the string length check.
5810         Use safe overflow checking. Add decent error messages.
5811
5812 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5813
5814         * metadata-verify.c: Move remaininh blob checks to the offline
5815         verification path.
5816
5817 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5818
5819         * metadata-verify.c: Move more blob checks to the offline verification
5820         path.
5821
5822 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5823
5824         * object-internals.h : Adding interrupt_on_stop field.
5825
5826         * threads.c (mono_thread_request_interruption) : On Windows exit the
5827           thread if interrupt_on_stop is set.
5828
5829         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5830          Removing old interrupt logic and setting the interrupt_on_stop for the
5831          thread when calling accept.
5832
5833         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5834          setting the interrupt_on_stop for the thread when calling accept.
5835
5836         Contributed under MIT/X11 license.
5837
5838 2009-06-20  Martin Baulig  <martin@ximian.com>
5839
5840         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5841
5842 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5843
5844         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5845         running in no-exec mode.
5846
5847 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5848
5849         * metadata-verify.c (verify_method_table): Move header
5850         checking to verify_method_table_full.
5851
5852         * metata-verify.c (mono_verifier_verify_full_table_data):
5853         Call verify_method_table_full.
5854
5855 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5856
5857         * metadata-verify.c (verify_field_table): Move signature
5858         checking to verify_field_table_full.
5859
5860         * metata-verify.c (mono_verifier_verify_full_table_data):
5861         Call verify_field_table_full.
5862
5863 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5864
5865         * metadata-verify.c (verify_typedef_table): Move remaining
5866         stuff to verify_typedef_table_full.
5867
5868 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5869
5870         * metadata-verify.c: Kill is_corlib from VerifyContext.
5871         It is only used by the offline mode.
5872         So we better remove it from the runtime path.
5873
5874 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5875
5876         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5877         function that perform the offline metadata verification steps.
5878
5879         * metadata-verify.c (verify_typedef_table): Move some checks to
5880         verify_typedef_table_full and make it been called by new function
5881         mono_verifier_verify_full_table_data.
5882
5883         * pedump.c: Call mono_verifier_verify_full_table_data.
5884
5885         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5886         part of the internal API.
5887
5888 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5889
5890         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5891         check.
5892
5893         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5894         flags bits. SupportLastError was confused as bit 7 instead of 6.
5895
5896         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5897         to check against the module ref table instead of module.
5898
5899         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5900
5901         * pedump.c: Call mono_image_load_names.
5902
5903 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5904
5905         * image.c: Extract mono_image_load_names from do_mono_image_load.
5906
5907         * metadata-internals.h: Export mono_image_load_names as part of
5908         the internal API.
5909         
5910 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5911
5912         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5913         first, as it could reference data in the other caches.
5914
5915 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5916
5917         * metadata-verify.c: Finished with method header verification.
5918
5919 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5920
5921         * metadata-verify.c: Added more header verification code.
5922         Now only EH clauses are missing.
5923
5924 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5925
5926         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5927         for return values.
5928
5929 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5930
5931         * metadata-verify.c: Initial method header verification.
5932
5933 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5934
5935         * metadata-verify.c (verify_import_table): The IAT contents
5936         might end been patched by the windows DL when running with
5937         coree enabled.
5938
5939 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5940
5941         * class.c (mono_class_from_typeref): If the enclosing type is not
5942         found return null instead of crashing. Fixes #508487.
5943
5944 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5945
5946         * normalization-tables.h : updated to the latest unicode charcter
5947           data.
5948         * appdomain.c : bump corlib version.
5949
5950 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5951
5952         * class.c (mono_class_from_name): Fix support for assembly references
5953         in the EXPORTEDTYPE table. Fixes #511704.
5954
5955 2009-06-13  Geoff Norton  <gnorton@novell.com>
5956
5957         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5958         assembly in the target domain.
5959
5960 2009-06-12  Robert Jordan  <robertj@gmx.net>
5961
5962         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5963         because "this" of the managed signature has become an
5964         ordinary parameter in the unmanaged signature.
5965
5966 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5967
5968         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5969         field for owner-less generic containers.
5970
5971         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5972         image field of the owner-less generic containers created here.
5973
5974         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5975         contain is ownerless until the caller sets its owner.
5976
5977         * metadata.c (type_in_image): Handle owner-less generic containers
5978         correctly.
5979         
5980 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5981
5982         * image.c (mono_image_close): Support debug_assembly_unload for
5983         dynamic images too.
5984
5985 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5986
5987         * class.c: Fix some typos in comments.
5988
5989 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5990
5991         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5992
5993         * threads.c (mono_thread_execute_interruption): Avoid creating the
5994         abort exception object while holding the synch_cs lock.
5995
5996 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5997
5998         * metadata-verify.c: Verify basic cattr content.
5999
6000 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
6001
6002         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
6003         nested types.
6004         
6005         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
6006         support for nested types. Fixes #511704.
6007
6008 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6009
6010         * metadata-verify.c: Verify methodspec signatures.
6011
6012 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6013
6014         * metadata-verify.c: Verify typespec signatures.
6015
6016 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
6017
6018         * metadata.c (free_inflated_method): Call 
6019         mono_marshal_free_inflated_wrappers (), which was missed earlier.
6020
6021 2009-06-08  Miguel de Icaza  <miguel@novell.com>
6022
6023         * mono-config.c: Small change to report the PPC64/ILP32 model.
6024
6025 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6026
6027         * metadata-verify.c (parse_type): Check szarray.
6028
6029 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6030
6031         * metadata-verify.c (parse_type): Check fnptr.
6032
6033 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6034
6035         * metadata-verify.c (parse_type): Check generic instances.
6036
6037 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6038
6039         * metadata-verify.c (parse_type): Check array shape.
6040
6041 2009-06-05  Robert Jordan  <robertj@gmx.net>
6042
6043         * class.c (mono_class_create_from_typedef): Check only for
6044         mscorlib's System.Array.
6045
6046 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6047
6048         * metadata-verify.c (parse_type): Check pointer, class/valuetype
6049         and generic params. 
6050
6051         * metadata-verify.c (parse_field): Check the signature.
6052
6053 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6054
6055         * metadata-verify.c: Implement locals signature check.
6056
6057 2009-06-04  Marek Safar  <marek.safar@gmail.com>
6058
6059         * domain.c: Add .NET 4.0 Beta 1 version.
6060
6061 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
6062
6063         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
6064           For QueryInterface on CCWs consider the base class
6065           interfaces as well.
6066
6067         Code is contributed under MIT/X11 license.
6068
6069 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6070
6071         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
6072
6073         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
6074         used.
6075
6076         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
6077         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
6078
6079         * generic-sharing.c (inflate_other_data): Ditto.
6080         
6081 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6082
6083         * metadata-verify.c: Implement property signature check.
6084
6085 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6086
6087         * sgen-gc.h: Register saving support for PPC.
6088
6089 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6090
6091         * sgen-gc.c: Fixed a pthread TLS screwup.
6092
6093 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6094
6095         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
6096         supported.
6097
6098 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6099
6100         * sgen-gc.c: Disable TLA and managed allocation if the __thread
6101         keyword is not supported.
6102
6103 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6104
6105         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
6106         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
6107         the inflated method is freed. Fixes #508389.
6108
6109         The code is contributed under the MIT/X11 license.
6110         
6111 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
6112
6113         * marshal.c (get_wrapper_target_class): New helper function.
6114         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
6115         the <Module> class of the image. Fixes #509049.
6116
6117 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6118
6119         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
6120         Check if the thread was interrupted and proccess it straight away.
6121         Makes abortion much more responsive.
6122
6123 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6124
6125         * threads.c (mono_thread_execute_interruption): Use atomic cas with
6126         MonoThread::interruption_requested to match it's counterpart.
6127
6128         Fixes a hang in abort-stress-1 on a 2 core x86.
6129
6130         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
6131         Fix warning.
6132
6133 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6134
6135         Change MonoImage::name_cache to be protected by the image lock
6136         instead of the loader lock.
6137
6138         * appdomain.c (deregister_reflection_info_roots): Protect access
6139         to name_cache.
6140
6141         * class.c (mono_image_init_name_cache): Change from the loader lock
6142         to the image lock. Check if the cache wasn't already created.
6143
6144         * class.c: Change from the loader to the image lock.
6145
6146         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6147         the code to hold the image lock while iterating over name_cache and
6148         not go into mono_array_new holding it.
6149
6150         * metadata-internals.h: Add a comment about this change.
6151
6152 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6153
6154         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6155         Under the 2.0 profile raise the loader error.
6156
6157         Fixes #508532.
6158
6159 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6160
6161         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6162         of ldind opcode for generic instances so we don't fail for direct wrappers.
6163         This only affect direct calls.
6164
6165 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6166
6167         * reflection.c (create_dynamic_mono_image): Fix warnings.
6168
6169         * generic-sharing.c (other_info_equal): Ditto.
6170         
6171 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6172
6173         * metadata-verify.c: Implement field signature check.
6174
6175 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6176
6177         * metadata-verify.c: Implement standalone signature check.
6178
6179 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6180
6181         * metadata-verify.c: Implement methodref signature check.
6182
6183 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6186         callbacks supplied by the runtime.
6187
6188         * object.c (mono_install_callbacks): New internal function to install
6189         the callbacks.
6190
6191         * object.c (mono_create_ftnptr): Move the implementation of this to
6192         mini/.
6193
6194         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6195
6196 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6197
6198         * metadata-verify.c (parse_return_type): Proper byref check.
6199         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6200         generic signatures and method params.
6201
6202 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6203
6204         * metadata-verify.c (decode_signature_header): Fix bounds check.
6205
6206         * metadata-verify.c (parse_custom_mods): Check custom mods.
6207
6208         * metadata-verify.c (parse_type): Do initial basic verification
6209         of valid values.
6210         
6211         * metadata-verify.c (is_valid_method_signature): Parse the generic
6212         param count.
6213
6214 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6215
6216         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6217         discarded based on their most specific definition so we set the method_slots
6218         array before checking if the method is acceptable or not.
6219
6220         Fixes #506757.
6221
6222 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6223
6224         * icall.c: Free the old array when resizing a mono_ptr_array.
6225
6226 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6227
6228         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6229         for the hashes whose keys are managed objects.
6230
6231 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6232
6233         * object-internals.h, threads.c: Set the execution context on
6234         thread start here, not in corlib.
6235
6236         * appdomain.c: Bump corlib version.
6237
6238 2009-05-27  Martin Baulig  <martin@ximian.com>
6239
6240         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6241         if `_mono_debug_using_mono_debugger' is set to make things work
6242         properly when embedding Mono.
6243
6244 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6245
6246         * class.c (mono_class_setup_fields): Don't mark simd types as having
6247         16 bytes alignment as the whole runtime doesn't support.
6248
6249 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6250
6251         * metadata-verify.c (safe_read): Use endian safe read macros.
6252
6253 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6254
6255         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6256         it is read-only when using full aot.
6257
6258 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6259
6260         * metadata-verify.c (is_valid_method_signature): Verify parts
6261         of the return type. Provide an error message in case of failure.
6262
6263 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6264
6265         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6266
6267 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6268
6269         * metadata-verify.c: Include the size prefix in the bounds check.
6270
6271 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6272
6273         * icall.c: Remove warnings.
6274
6275         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6276         prevent auto-detection based on GCC defines.
6277
6278         Add PS3
6279
6280         * metadata-verify.c: Do not include signal.h
6281
6282         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6283         messages.  Not sure why the g_assert_not_reached is not enough to
6284         quiet the compiler.
6285         
6286
6287         * appdomain.c: Remove code that is not used when
6288         DISABLE_SHADOW_COPY is set.
6289
6290         * image.c: use g_getenv
6291
6292 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6293
6294         * reflection.c: Remove code that it not used with
6295         DISABLE_REFLECTION_EMIT is defined.
6296
6297 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6298
6299         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6300         invoke wrappers.
6301
6302 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6303
6304         * socket-io.c
6305         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6306         the ifdef here and instead put that on io-layer
6307
6308 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6309
6310         * metadata-verify.c: Verify the generic param constraint table.
6311
6312 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6313
6314         * metadata-verify.c (verify_generic_param_table): Fix
6315         thinko on the valid flags bits for generic params.
6316
6317 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6318
6319         * metadata-verify.c: Verify the methodspec table.
6320
6321 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6322
6323         * metadata-verify.c: Verify the generic param table.
6324
6325 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6326
6327         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6328
6329 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6330
6331         * sgen-gc.c: Use generation enum more consistently and use the
6332         correct generation in mono_gc_register_for_finalization().
6333
6334 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6335
6336         * metadata-verify.c: Verify the nested class table.
6337
6338 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * metadata-verify.c: Verify the manifest resource table.
6341
6342 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6343
6344         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6345
6346 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6347
6348         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6349         wrappers, this is now done in the JIT.
6350         
6351         * class.c (mono_set_generic_sharing_supported): New internal function.
6352         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6353
6354 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6355
6356         * metadata-verify.c: Verify the exported type table.
6357
6358 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6359
6360         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6361
6362 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6363
6364         * metadata-verify.c: Verify the file table.
6365
6366 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6367
6368         * metadata-verify.c (verify_assembly_table): Fix an error message.
6369
6370         * metadata-verify.c: Verify the assemblyref table.
6371
6372 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6373
6374         * metadata-verify.c (verify_assembly_table): Fix the valid
6375         bits mask for flags.
6376
6377 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6378
6379         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6380         generic methods as well.
6381
6382 2009-05-15  Geoff Norton  <gnorton@novell.com>
6383
6384         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6385         use-case and is significantly more performant than the wapi layer.
6386
6387 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6388
6389         * metadata-verify.c: Verify the assembly table.
6390
6391 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6392
6393         * metadata-verify.c: Fix rows limit check.
6394
6395 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6396
6397         * metadata-verify.c: Verify the fieldrva table.
6398
6399 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6400
6401         * sgen.c: Speed up weak links and finalizers by grouping them by
6402         generation.
6403
6404 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6405
6406         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6407         free the old GCHandle (only applies to SGen).
6408
6409 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6410
6411         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6412         mono_metadata_load_generic_params () for non-generic methods.
6413
6414 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6415
6416         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6417         New function for returning a monitor's weak link if it has one.
6418
6419         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6420         one) when clearing a domain.  These can still be around because
6421         the object might not have been collected.
6422
6423 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6424
6425         * gc.c: Fix a warning.
6426
6427 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6428
6429         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6430         prevous wait that resulted in a deadlock on Windows when initializing
6431         the runtime form DllMain. Also results in improved startup time.
6432         (finalizer_thread): Get rid of thread_started_event.
6433         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6434         resulting MonoThread.
6435
6436         Contributed under MIT/X11 license.
6437
6438 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6439
6440         * metadata-verify.c: Verify the implmap table.
6441         Don't require that #US and #Strings be present.
6442
6443 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6444
6445         * security-core-clr.c: Delegate checks are done at creation time,
6446         not a invocation time. Fix exception for Telerik Silverlight demo
6447
6448 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6449
6450         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6451         case for the Thread class.
6452
6453         * threads.c: Do clean-up of abort exception/state in
6454         thread_cleanup() instead of Thread.free_internal().  Also clean up
6455         current_appcontext.  The reason we have to do that is because
6456         those references might point into another domain and if that
6457         domain is unloaded before the thread is finalized, they point to
6458         invalid data.
6459
6460 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6461
6462         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6463         stub signatures.
6464         
6465         Contributed unter MIT/X11 license.
6466
6467 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6468
6469         * verify.c, metadata-verifier.c: Add support for disabling the
6470         verifier in some builds.
6471
6472         [ Sorry, my previous commit accidentally commited some work in
6473         progress ]
6474
6475 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6476
6477         * class.c (mono_class_setup_fields): Set class->field.first for
6478         generic instances.
6479
6480 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6481
6482         * metadata-verify.c: Verify the typespec table.
6483
6484 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6485
6486         * metadata-verify.c: Verify the module table.
6487
6488 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6489
6490         * metadata-verify.c: Verify the methodimpl table.
6491
6492 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6493
6494         * metadata-verify.c: Verify the property table.
6495
6496 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6497
6498         * debug-helpers.c (mono_method_desc_match): Add support for generic
6499         glob patterns.
6500
6501 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6502
6503         * metadata-verify.c: Verify the propertymap table.
6504
6505 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6506
6507         * metadata-verify.c: Verify the event table.
6508
6509         * metadata-verify.c (search_sorted_table): Fix offset
6510         calculation.
6511
6512 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6513
6514         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6515
6516 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6517
6518         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6519         because mono_delegate_free_ftnptr() needs it.
6520
6521 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6522
6523         * metadata-verify.c: Verify the eventmap table.
6524
6525 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6526
6527         * metadata-verify.c: Verify the standalonesig table.
6528
6529 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6530
6531         * metadata-verify.c: Verify the field layout table.
6532
6533 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6534
6535         * class.c (mono_type_get_name_recurse): Don't crash
6536         for ownerless generic params.
6537
6538         * debug-helpers.c (mono_type_get_desc): Correct the format
6539         for ownerless generic params.
6540
6541 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6542
6543         * metadata-verify.c: Verify the class layout table.
6544
6545 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6546
6547         * metadata-verify.c: Verify the decl security table.
6548
6549 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6550
6551         * domain.c (mono_domain_set_internal_with_options): Don't do
6552         anything if the old domain is the same as the old one.  Fixes
6553         #499326.
6554
6555 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6556
6557         * appdomain.c: Deregister the reflection_info roots when unloading
6558         a domain.
6559
6560         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6561         memory allocated by a domain and frees its disappearing links.
6562
6563         * boehm-gc.c, null-gc.c: Empty implementation of
6564         mono_gc_clear_domain().
6565
6566 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6567
6568         * appdomain.c (clear_cached_vtable): Free the static fields memory
6569         block.
6570
6571 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6572
6573         * gc.c: Set the correct domain when invoking finalizers.
6574
6575         * appdomain.c: Set the correct domain when creating threads.
6576
6577 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6578
6579         * sgen-gc.c: Fix skip size for vectors.
6580
6581 2009-05-03  Martin Baulig  <martin@ximian.com>
6582
6583         * mono-debug-debugger.c
6584         (mono_debugger_check_breakpoints): Check class init handlers even
6585         if we don't have any method load handers.
6586
6587 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6588
6589         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6590         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6591
6592 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6593
6594         * metadata-verify.c: Verify the field marshal table.
6595
6596 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6597
6598         * metadata-verify.c: Verify the custom attribute table.
6599
6600 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6601
6602         * metadata-verify.c: Verify the constant table.
6603
6604 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6605
6606         * metadata-verify.c: Verify the memberef table.
6607
6608 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6609
6610         * metadata-verify.c (get_coded_index_token): Remove
6611         dead argument.
6612
6613 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6614
6615         * metadata-verify.c: Verify the interfaceimpl table.
6616
6617 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6618
6619         * verify.c: Improve error message.
6620
6621         * debug-helpers.c (mono_type_get_desc): Harden the code that
6622         deals with VAR and MVAR.
6623
6624 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6625
6626         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6627         part of #498692.
6628
6629 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6630
6631         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6632         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6633
6634 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6635
6636         * security-core-clr.c: Avoid redundant checks for platform code, 
6637         e.g. check for method and for class (very common) and check
6638         for class and outer class (less common)...
6639
6640 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6641
6642         * reflection.c: Avoid returning random cattrs for synthetic methods.
6643         Fixes #498545.
6644
6645 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6646
6647         * assembly.c: assemblies in the GAC should never be shadow-copied.
6648
6649 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6650
6651         * domain.c, domain-internals.h: Disable
6652         track_resurrection_{objects,handles}_hash in MonoDomain if using
6653         SGen.
6654
6655 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6656
6657         * metadata-verify.c: Verify the param table.
6658
6659 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6660
6661         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6662         MethodList.
6663
6664         * metadata-verify.c (verify_method_table): Proper check the ParamList
6665         field.
6666
6667 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6668
6669         * metadata-verify.c (verify_method_table): Check for runtime
6670         implemented functions such as delegate .ctors. Remove spurious
6671         printf.
6672         
6673 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6674
6675         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6676
6677 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6678
6679         Don't allocate MonoGenericInfo for ownerless generic params.
6680         * class-internals.h (MonoGenericParam::info): Move field to ...
6681         (MonoGenericParamFull): ... this.  New struct.
6682         (MonoGenericContainer::type_params): Change type to
6683         MonoGenericParamFull.
6684         (MonoGenericParam, MonoGenericContainer): Update accessors.
6685         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6686         'info' field for ownerless generic param.
6687         (mono_metadata_load_generic_params): Update to changes.
6688         * reflection.c (mono_reflection_create_generic_class): Likewise.
6689         (reflection_methodbuilder_to_mono_method): Likewise.
6690         (mono_reflection_initialize_generic_parameter): Likewise.
6691
6692 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6693
6694         Don't use MonoGenericParamInfo for ownerless generic params.
6695         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6696         use ParamInfo class at all.
6697         (mono_class_from_generic_parameter): Use them.
6698         (make_generic_param_class): Fix a couple of instances where 'pinfo
6699         == NULL' wasn't handle.
6700
6701 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6702
6703         * class.c (make_generic_param_class): Carve out of ...
6704         (mono_class_from_generic_parameter): ... here.
6705
6706 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6707
6708         Simplify mono_class_from_generic_parameter
6709         * class-internals.h (MonoGenericParamInfo::token): New field.
6710         * metadata.c (mono_metadata_load_generic_params): Initialize it
6711         from metadata.
6712         * class.c (mono_class_from_generic_parameter): Use it instead of
6713         searching through metadata.
6714
6715 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6716
6717         * metadata-verify.c: Add verification of the method table.
6718
6719 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6720
6721         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6722         Delegate::Invoke optimization.
6723
6724 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6725
6726         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6727         string returned by get_shadow_assembly_location_base.
6728
6729         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6730         about caller's ownership.
6731
6732 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6733
6734         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6735         reflection memory on domain unload.
6736
6737         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6738         reflection cleanup code do it.
6739
6740         * domain-internals.h: Add mono_reflection_cleanup_domain.
6741
6742         This fixes a memory leak for managed mirrors of reflection objects
6743         on domain unload. 
6744
6745 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6746
6747         * metadata-verify.c: Implement more verification of the field table.
6748
6749 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6750
6751         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6752         doesn't try to parse the input assembly, which can be broken.
6753
6754 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6755
6756         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6757         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6758         by using the lowest bit in the link to store whether the link is
6759         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6760
6761 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6762
6763         * Makefile.am: Split the console support in platform specific code
6764         and put together a framework for making this easy in the future so
6765         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6766
6767 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6768
6769         * pedump.c: Fix a warning.
6770
6771 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6772
6773         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6774         mono_class_from_mono_type to avoid bad interactions with the dual representation
6775         of the generic type definition.
6776
6777 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6778
6779         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6780         get the MonoClass for the call context type as it might be a generic
6781         instance.
6782
6783         Fixes #491483.
6784
6785 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6786
6787         * object-internals.h: The Thread object has no execution_context
6788         member anymore.
6789
6790         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6791         the execution context.
6792
6793         * appdomain.c: Bump corlib version.
6794
6795 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6796
6797         * verify.c (do_newobj): Improve error message.
6798
6799 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6800
6801         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6802         is nested in the filter block.
6803
6804         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6805         block is not fully nested.
6806
6807         Fixes #495656.
6808
6809 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6810
6811         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6812         not MonoType to check for equality of valuetypes as the generic type
6813         definition allows for two different encodings: the generic type definition
6814         class or a generic instance over the GTD arguments.
6815
6816         Fixes #496175.
6817
6818 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6819
6820         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6821
6822         * verify.c (do_initobj): Improve error message.
6823
6824 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6825
6826         * metadata-verify.c: Enable pe verification as the issue with #496453
6827         is that the authenticode data directory have a different unspecified
6828         format. Ignore it for now.
6829
6830         * pedump.c: Run the metadata verifier together with the IL verifier.
6831
6832         Fixes ##496453.
6833
6834 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6835
6836         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6837
6838 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6839
6840         * class.c (can_access_type): Check visibility against
6841         the element type for pointers and arrays.
6842
6843         Fixes #496150.
6844
6845 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6846
6847         * metadata-verify.c: Fix cli and table verification to use information
6848         from the MonoImage. A lot of duplicated code got killed.
6849
6850 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6851
6852
6853         This patch starts to integrate the metadata verifier with the runtime code.
6854
6855         This patch causes major regression in functionality for the metadata verifier
6856         as cli and table verification are disabled since they require to be ported to
6857         use MonoImage information.
6858
6859         * image.c (do_mono_image_load): Split the code in this function
6860         into mono_image_load_pe_data and mono_image_load_cli_data.
6861         Add     care_about_pecoff parameter to not load pecoff data.
6862         Call into the metadata verifier for pecoff and cli verification.
6863
6864         * image.c (mono_image_open_raw): New function that doesn't perform
6865         any parsing of the image contents.
6866         
6867         The reason for the 3 new functions is to give pedump better control
6868         into the interaction with the verifier.
6869
6870         * metadata-internals.h: Add new functions from image.c as part of the
6871         internal mono API.
6872
6873         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6874         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6875         to make those functions work together with the runtime.
6876
6877         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6878         true if the image needs to be verified.
6879
6880         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6881
6882         * pedump.c: Use new metadata verifier API.
6883
6884 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6885
6886         * object.c (mono_install_vtable_trampoline): Make this receive a
6887         trampoline creation function instead of trampoline, allowing the JIT
6888         to use a different trampoline for each vtable.
6889
6890 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6891
6892         * object.c (mono_raise_exception): Don't reset the thread abort
6893         exception state here.
6894
6895 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6896
6897         * icall-def.h: New icall for getting the thread abort exception
6898         state for a thread.
6899
6900         * object.c, thread.c, object-internals.h: A thread's abort
6901         exception state is now a GC handle.  To get the object it stands
6902         for, we must move it into the current app domain, if it's
6903         different than the one where it originated from.
6904
6905         * appdomain.c: Bump corlib version.
6906
6907         * domain.c, domain-internals.h: New function for setting the
6908         domain and migrate the thread abort exception or not.
6909
6910 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6911
6912         * metadata-verify.c: Add initial verification of the
6913         field table.
6914
6915 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6916
6917         * metadata-verify.c: Add a macro to conditionally enable
6918         dumping of verification information. Add  make_coded_token
6919         and search_sorted_table to enable search sorted tables
6920         by a given coded token.
6921
6922 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6923
6924         * metadata-verify.c: Add array mapping from table index
6925         to description offset. Add get_col_offset and get_col_size
6926         functions.
6927
6928 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6929
6930         * metadata-verify.c: Add remaining table descriptions offsets.
6931         Add remaining coded index descriptions.
6932
6933 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6934
6935         * metadata-verify.c: Fixed constant table description.
6936         Fixed calculation of HasCustomAttribute coded index size.
6937         Fixed calculation of size for many table indexes. 
6938
6939 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6940
6941         * pedump.c (dump_metadata): Dump table offset instead
6942         of useless pointer in memory.
6943
6944 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6945
6946         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6947
6948 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6949
6950         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6951         a missing of for interface types.
6952
6953 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6954
6955         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6956         the code is commented.
6957
6958         * metadata-verify.c (verify_resources_table): Remove spurious printf
6959         and don't fail if there are unmanaged resources. Gmcs generates a useless
6960         one     for all assemblies - I bet it's some MS compatibility junk.
6961
6962 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6963
6964         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6965
6966         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6967
6968         * verify-internals.h: Same.
6969
6970         * pedump.c: Fix for mono_image_verify new signature.
6971
6972 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6973
6974         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6975         flags combinations.
6976
6977 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6978
6979         * metadata-verify.c (verify_module_table): Ignore the generation field.
6980
6981 2009-04-15  Martin Baulig  <martin@ximian.com>
6982
6983         * debug-mono-symfile.c
6984         (mono_debug_symfile_lookup_location): Don't print a warning for
6985         unknown extended opcodes if they're within 0x40 and 0x7f.
6986
6987 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6988
6989         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6990         invoke signatures returning an enum. Fixes #494847.
6991
6992 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6993
6994         * metadata-verify.c: Initial code to verify the typedef table.
6995
6996 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6997
6998         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6999         with non empty stack happens before the beginning of a try block.
7000
7001         Fixes #494812.
7002
7003 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7004
7005         * metadata-verify.c: Verify typename and typenamespace fields of
7006         the typeref table.
7007
7008 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7009
7010         * metadata-verify.c: Initial code to verify the typeref table.
7011
7012 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7013
7014         * verify.c (verify_delegate_compatibility): Fix error message.
7015
7016 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
7017
7018         * security-core-clr.c: Fix typo
7019
7020 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7021
7022         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
7023         a MonoGHashTable to keep its values alive.
7024         (emit_marshal_boolean): Fix a warning.
7025
7026 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7027
7028         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
7029         not have any interface configured for IPv4/IPv6.
7030
7031 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7032
7033         * assembly.c: fix typo in error message.
7034
7035 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7036
7037         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
7038         allocating the location holding the this argument to prevent
7039         'too many root sets' errors.
7040
7041         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
7042         to mark fields as special static.
7043         (mono_field_static_get_value): Handle special static fields.
7044         (mono_field_static_set_value): Ditto.
7045
7046         * class-internals.h (struct _MonoClassField): Document this.
7047
7048 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7049
7050         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
7051           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
7052           case.  This will handle when managed code returns null to native code.
7053
7054         Code is contributed under MIT/X11 license.
7055
7056 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7057
7058         * object.c (build_imt_slots): Changing a free to a g_free to match
7059           the g_malloc0 in add_imt_builder_entry that allocated this memory.
7060
7061         Code is contributed under MIT/X11 license.
7062
7063 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7064
7065         * marshal.c (emit_marshal_boolean): Adding code to ensure that
7066           the correct TRUE value is passed through the marshaling layer.
7067
7068         Code is contributed under MIT/X11 license.
7069
7070 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
7071
7072         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
7073         correctly. Fixes #492330.
7074         
7075         * marshal.c: Fix the embedding of object pointers into JITted code in
7076         the native-to-managed wrappers by allocating some GC tracked memory, and
7077         embedding the address of that.
7078
7079 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
7080
7081         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
7082         pointers into the vtable.
7083
7084 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7085
7086         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
7087
7088         * verify.c (verify_ldftn_delegate): Improve error message.
7089
7090 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7091
7092         * reflection.c (my_mono_class_from_mono_type): Remove.
7093
7094 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7095
7096         Prepare to reduce memory usage of owner-less generic parameters (1/n)
7097         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
7098         and constraints fields into ...
7099         (MonoGenericParamInfo): ... this.
7100         (mono_generic_param_info, mono_generic_container_get_param_info):
7101         New accessors.
7102         * class.c, debug-helpers.c, icall.c: Update to changes.
7103         * metadata.c, reflection.c, verify.c: Likewise.
7104
7105 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
7106
7107         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
7108
7109         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
7110         
7111         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
7112         booleans with sbytes.
7113
7114 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7115
7116         * class.c (can_access_instantiation): Verify accesibility of element types
7117         for arrays and pointers.
7118
7119         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
7120
7121         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
7122
7123         Fixes #493068.
7124
7125 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7126
7127         * verify.c (do_invoke_method): Improve error messages.
7128
7129 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
7130
7131         * verify.c:  Fixing the MSVC build.
7132
7133         Code is contributed under MIT/X11 license.
7134
7135 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7136
7137         * security-core-clr.c: Simplify get_reflection_caller not to call
7138         mono_method_get_last_managed (another stack walk) and adjust the
7139         callers to handle a (should not happen) NULL return value.
7140
7141 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7142
7143         Add accessors to some MonoGenericParam fields
7144         * class-internals.h (mono_generic_param_owner): New accessor.
7145         (mono_generic_param_num): Likewise.
7146         (mono_type_get_generic_param_owner): New helper.
7147         (mono_type_get_generic_param_num): New helper.
7148         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7149
7150 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7151
7152         * class-internals.h (mono_generic_container_get_param): New wrapper.
7153         * class.c, icall.c, metadata.c, verify.c: Use it.
7154
7155 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7156
7157         Fix gtest-252.cs
7158         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7159         the standard case/loop.  In particular, don't complain about
7160         references to generic type definitions.
7161
7162 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7163
7164         * debug-helpers.c (dis_one): Decode string arguments.
7165
7166 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7167
7168         * pedump.c (dump_verify_info): Dump type name correctly.
7169
7170 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7171
7172         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7173         are larger than code size.
7174
7175         This can happen in valid code if the try/catch block is not followed by any instruction
7176         and do a backward branch on the leave instruction.
7177
7178         Fixes #492494.
7179
7180 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7181
7182         * security-core-clr.c: Fix typo while comparing second method names
7183         in can_avoid_corlib_reflection_delegate_optimization
7184
7185 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7186
7187         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7188
7189         Fixes #487738.
7190
7191 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7192
7193         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7194         a MVAR using a class context.
7195
7196         Fixes #490335.
7197
7198 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7199
7200         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7201
7202         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7203
7204         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7205         functions supplied by the JIT for the SGEN GC.
7206
7207         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7208         
7209 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7210
7211         monitor.c (mono_monitor_try_enter_internal):
7212         Added calls to profile monitor contentions.
7213         Also duplicated a small piece of code (the "get the monitor" logic)
7214         from the fast path to the slow path, and changed the relevant goto
7215         statements, so that monitor acquisition events can be emitted from the
7216         slow path (this is by Paolo Molaro).
7217
7218 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7219
7220         * profiler.c, profiler.h, profiler-private.h:
7221         Added support for profiling monitor contentions.
7222
7223 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7224
7225         * metadata-verify.c: Verify the modules table.
7226
7227 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7228
7229         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7230         using the context of the method been verifier and not of the method been called.
7231
7232         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7233         safely inflate generic types. 
7234
7235 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7236
7237         * security-core-clr.c: Change the strategy for checking the 
7238         "reflection using delegates optimization" to avoid unneeded 
7239         attributes in multiple class libraries.
7240
7241 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7242
7243         * sgen-gc.c: Remove object element in the disappearing link struct
7244         by storing the object pointer in the link.
7245
7246 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7247
7248         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7249
7250 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7251
7252         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7253
7254         * verify.c (mono_method_verify): Do proper bounds checking of exception
7255         clause ranges.
7256
7257 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7258
7259         * loader.c (mono_field_from_token): Don't crash if the field parent could
7260         not be decoded.
7261
7262 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7263
7264         * sgen-gc.c: Execute critical finalizers after ordinary
7265         finalizers.
7266
7267         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7268         mono_defaults.
7269
7270 2009-03-31 Jb Evain <jbevain@novell.com>
7271
7272         * verify.c (do_ldstr): don't check if a string is in the user strings
7273         heap if the current image is dynamic.
7274
7275 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7276
7277         * sgen-gc.c: Wait until the last finalizer has executed when
7278         returning from WaitForPendingFinalizers.
7279
7280 2009-03-31  Martin Baulig  <martin@ximian.com>
7281
7282         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7283         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7284         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7285         (mono_debugger_event_create_appdomain): New function.
7286         (mono_debugger_event_unload_appdomain): New function.
7287
7288         * appdomain.c (mono_domain_create_appdomain_internal): Call
7289         mono_debugger_event_create_appdomain().
7290
7291 2009-03-31  Martin Baulig  <martin@ximian.com>
7292
7293         * mono-debug-debugger.c
7294         (mono_debugger_register_class_init_callback): Also register the
7295         class init callback if the class is already initialized to make
7296         things work with shadow copied assemblies.
7297
7298 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7299
7300         * security-core-clr.c
7301         (mono_security_core_clr_ensure_reflection_access_field): Let 
7302         critical code access the field (just like we do for methods). Use
7303         check_field_access helper.
7304         (mono_security_core_clr_ensure_reflection_access_method): Use 
7305         check_field_access helper.
7306
7307 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7308
7309         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7310         call the run-finalize function directly.
7311
7312         * gc.c, gc-internal.h: Make run_finalize() non-static.
7313
7314 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7315
7316         * sgen-gc.c: Use a separate struct for disappearing links.
7317
7318 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7319
7320         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7321         * MaxIOVectorLength enabled, just ignore them.
7322         Fixes bug #349688.
7323
7324 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7325
7326         * metadata-verify.c: Fix eglib build.
7327
7328 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * threads-types.h: Fix the win32 build.
7331
7332 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7333
7334         * class.c: move coreclr inheritance/override checks to 
7335         security-core.clr.c
7336         * security-core.clr.c|h: add code from class.c with additional
7337         documentation. Fix override check when the method is not critical.
7338
7339 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7340
7341         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7342         (match_class): Ditto.
7343
7344 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7345
7346         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7347
7348         * metadata-verify.c: Implement table layout row size calculation. Verify
7349         the total size of the tables.
7350
7351 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7352
7353         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7354
7355 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7356
7357         * appdomain.c:
7358         * console-io.[ch]: added new mono_console_init() to make sure that
7359         file descriptors 0, 1 and 2 are opened.
7360         Bug #489019 fixed.
7361
7362 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7363
7364         * appdomain.h: Export a new callback type and a new function to
7365         set this callback. This allow a mono host to provide it's own
7366         definition for "platform code".
7367         * metadata-internals.h: Add a core_clr_platform_code flag on 
7368         _MonoImage to (cache and) know if it is representing platform 
7369         code.
7370         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7371         on platform code images.
7372         * security-core-clr.c|h 
7373         (mono_security_set_core_clr_platform_callback): Allow the host
7374         to provide it's own platform check definition.
7375         (mono_security_core_clr_determine_platform_image): Detect if an 
7376         image is platform code (using the specified callback).
7377         (mono_security_core_clr_is_platform_image): Return cached value 
7378         for platform code.
7379
7380 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7381
7382         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7383         which has different parameter types for the 'tid' argument in windows and
7384         the io-layer.
7385
7386         * appdomain.c attach.c threads.c: Use the new helper.
7387
7388 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7389
7390         * metadata-verify.c: Verify valid table bits.
7391
7392 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7393
7394         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7395
7396         * metadata-verify.c: Add initial table schema verification.
7397
7398 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7399
7400         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7401         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7402         #488383.
7403
7404         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7405
7406         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7407
7408 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7409
7410         * security-core-clr.c: Add/update documentation
7411
7412 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7413
7414         * marshal.c (emit_marshal_object): Generate code to throw an exception
7415         instead of throwing it. Fixes #488670.
7416
7417 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7418
7419         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7420         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7421         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7422         and add a call to mono_security_core_clr_ensure_delegate_creation
7423         to do the extra checks required by CoreCLR.
7424         * security-core-clr.c|h: Add function to check delegate creation,
7425         both in the binding and accessibility, under CoreCLR.
7426
7427 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7428
7429         * reflection.c (mono_reflection_create_dynamic_method): when 
7430         coreclr is enabled make sure that every resolved object are
7431         checked (e.g. field and method access).
7432         * security-core-clr.c|h: Add function to check objects resolved
7433         when a dynamic method is created.
7434
7435 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7436
7437         * metadata-verify.c: Cache directory rva translations.
7438
7439         * metadata-verify.c: Add cli-header and streams verification.
7440
7441 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7442
7443         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7444         the wrong offset (8 instead of 6).
7445
7446 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7447
7448         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7449         methods, return the native function address itself. Fixes
7450         #487758.
7451
7452 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7453
7454         * console-io.c: some of the values for control characters might not be
7455         present.
7456
7457 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7458
7459         * exception.c|h: Add helpers to create [Field|Method]AccessException
7460         * icall.c: Add required coreclr check calls for field reflection.
7461         Move the existing (method) check logic into security-core-clr.c
7462         * security-core-clr.c: Add functions to check if the access of a
7463         field or method is allowed when reflecting under coreclr. This is
7464         mostly done using a stack walk to find the "real" caller: i.e. the
7465         code that is calling the reflection
7466
7467 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7468
7469         * gc-internal.h: Change location of gc_wrapper.h
7470
7471 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7472
7473         * class.c: Simplification to coreclr checks for overrides that
7474         makes it easier to set breakpoints.
7475
7476 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7477
7478         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7479         mono_security_core_clr_method_level): Avoid potential 
7480         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7481         user/application code) and make it easier to set breakpoints
7482
7483 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7484
7485         * metadata-verify.c: Reject cli header tables that mono don't handle.
7486
7487 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7488
7489         * pedump.c: Fix CLI header dumping.
7490
7491 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7492
7493         * metadata-verify.c: More CLI header verification.
7494
7495 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7498
7499 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7500
7501         * metadata-verify.c: Initial verification of the CLI header.
7502
7503 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7504
7505         * metadata-verify.c (verify_resources_table): Fix verification of zero
7506         sized resource section and id entries count.
7507
7508 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7509
7510         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7511
7512 2009-03-17  Jb Evain  <jbevain@novell.com>
7513
7514         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7515
7516 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7517
7518         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7519         (mono_gc_make_descr_for_array): Ditto.
7520
7521 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7522
7523         * verify.c (mono_verifier_is_class_full_trust): Add support for
7524         CoreCLR security mode where trusted assemblies are defined as
7525         "platform code".
7526
7527 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7528
7529         * metadata-verify.c: Add minimal PECOFF resource verification.
7530
7531 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7532
7533         * metadata-verify.c: Be less restrictive with some coff fields.
7534
7535 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7536
7537         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7538         params as boxed values on stack. Fixes #485706.
7539
7540 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7541
7542         * console-io.c: the termios values may vary in different flavors of unix.
7543
7544 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7545
7546         * console-io.[ch]: return the entire set of control characters when
7547         initializing the terminal.
7548         * appdomain.c: bump corlib version.
7549
7550 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7551
7552         * mono-perfcounters.c: added support for in-process custom
7553         performance counters.
7554
7555 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7556
7557         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7558
7559 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7560
7561         * metadata-verify.c: Verify the data pointed by the import table. 
7562
7563 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7564
7565         * metadata-verify.c (load_data_directories): Store data
7566         directory contents.
7567
7568         * metadata-verify.c: Verify the import table. 
7569
7570 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7571
7572         * metadata-verify.c: Verify data directories.
7573
7574 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7575
7576         * metadata-verify.c: Check section header flags.
7577
7578 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7579
7580         * appdomain.c: if the assembly name is a shadow-copied file, return
7581         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7582         in mono_make_shadow_copy.
7583         * icall.c: if the assembly name is a shadow-copied file, replace it
7584         with the original assembly path.
7585
7586         Bug #484244 fixed. NUnit tests for corlib can be run without
7587         --noshadow now.
7588
7589 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7590
7591         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7592         entries when the table is reallocated.
7593
7594         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7595         mono_gc_alloc_fixed () since it contains GC refs.
7596
7597 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7598
7599         * reflection.c (ensure_complete_type): New helper function to call
7600         type resolve handlers for unfinished dynamic types.
7601         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7602
7603 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7604
7605         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7606         #483247.
7607
7608 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7609
7610         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7611
7612 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7615         between GCHandles of type WeakTrackResurrection and the objects they
7616         point to.
7617
7618         * gc.c: Partly implement the sematics of GCHandles of type 
7619         WeakTrackResurrection: these handles should only be cleared after the
7620         finalizer of the object they are pointing to has ran.
7621
7622 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7623
7624         * icall.c: Partially revert r126631 because using the jump
7625         trampolines for generic shared methods makes it superfluous.
7626
7627 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7628
7629         * threads.c (handle_store): Create the 'threads' hash table with the proper
7630         MONO_HASH_VALUE_GC type.
7631
7632 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7633
7634         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7635         FIRST_GC_TRACKED.
7636
7637         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7638         and LAST_GC_TRACKED as a GC root.
7639
7640         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7641
7642         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7643         the static data even if it consists of 1 reference.
7644
7645         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7646         if there is a GC descriptor.
7647
7648         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7649         instead of through the GC since they contain no object references.
7650
7651 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7652
7653         * generic-sharing.c (instantiate_other_info): Always return a jump
7654         trampoline for method code.
7655
7656 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7657
7658         * culture-info-tables.h: generated to include the en-tt culture.
7659
7660 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7661
7662         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7663         capture the thread context.
7664
7665         * object.c (mono_async_result_new): Cache the invoke wrappers to
7666         ExecutionContext::Capture.
7667
7668 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * marshal.h: Add a prototype for what mono_compile_method returns
7671         for invoke wrappers.
7672
7673         * gc.c: Use the new prototype declaration.
7674
7675 2009-03-04  Geoff Norton  <gnorton@novell.com>
7676
7677         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7678         * gc-internal.h:
7679         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7680
7681 2009-03-04  Martin Baulig  <martin@ximian.com>
7682
7683         * mono-debug.h
7684         (mono_debugger_runtime_invoke): Removed.
7685
7686         * mono-debug-debugger.c
7687         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7688
7689 2009-03-02  Martin Baulig  <martin@ximian.com>
7690
7691         * mono-debug.h
7692         (mono_debugger_unhandled_exception): Removed.
7693         (mono_debugger_handle_exception): Removed.
7694         (mono_debugger_throw_exception): Removed.
7695
7696         * mono-debug.c
7697         (mono_debug_debugger_version): Bump to 5.
7698
7699         * mono-debug-debugger.c: Moved the exception handling code to
7700         ../mini/debug-mini.c
7701
7702 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7703
7704         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7705         finalize_objects_hash.
7706
7707         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7708         
7709         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7710         field.
7711
7712         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7713         cache.
7714
7715         * image.c (mono_image_close): Free it.
7716         
7717         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7718         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7719         on the this argument.
7720
7721         * gc.c (run_finalize): Optimize the calling of the finalizers.
7722
7723 2009-03-03  Martin Baulig  <martin@ximian.com>
7724
7725         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7726         of the `MonoGenericInst' changes.
7727
7728 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7729
7730         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7731         mono_array_class_get_cached to reduce locking contention. Extract
7732         a domain var.
7733
7734         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7735         intermediary managed arrays. Use caching version of mono_array_new
7736         to allocate the result array.
7737
7738         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7739
7740         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7741
7742         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7743         to reduce locking contention.
7744
7745 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7746                 
7747         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7748         thunk builder code for the non-interface case.
7749
7750 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7751
7752         * object.c (get_generic_virtual_entries): New helper function to collect
7753         the virtual generic method instances which need to be added to an IMT
7754         thunk.
7755         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7756         Instead of creating a new IMT thunk, reset the vtable slot to the
7757         trampoline, the thunk will be created the next time the trampoline is called.
7758         (build_imt_slots): Add support for virtual generic methods in interfaces by
7759         adding to the IMT thunk all the methods registered using 
7760         mono_method_add_generic_virtual_invocation ().
7761
7762         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7763         (struct _MonoIMTCheckItem): Ditto.
7764
7765         * object.c (mono_method_add_generic_virtual_invocation): Take a
7766         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7767         the IMT thunk to include all items.
7768         
7769         * object.c (mono_class_create_runtime_vtable): Add a missing
7770         mono_loader_unlock ().
7771
7772 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7773
7774         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7775
7776         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7777
7778 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7779
7780         * object-internals.h: Rename _MonoReflectionEvent to
7781         MonoReflectionMonoEvent so it reflects the right managed type.
7782         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7783
7784         * icall.c:
7785         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7786         type.
7787
7788 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7789
7790         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7791         intermediary managed arrays. Use caching version of mono_array_new
7792         to allocate the result array.
7793
7794 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7795
7796         * reflection.c: Use cached version of mono_array_new alongside
7797         the mono_reflection_get_custom_attrs_by_type call path.
7798
7799 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7800
7801         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7802         intermediary managed arrays. Use caching version of mono_array_new
7803         to allocate the result array.
7804
7805         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7806
7807 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7808
7809         * icall.c: Add small implementation of a growable stack bound array.
7810
7811         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7812
7813         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7814         intermediary managed arrays. Use caching version of mono_array_new
7815         to allocate the result array.
7816
7817 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7818
7819         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7820         helps Enum::CompareTo to be implemented without reboxing all enums
7821         to their underlying type.
7822 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7823
7824         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7825         since it acquires a global lock leading to scalability problems.
7826
7827         * profiler.c: Make the stat profiler work with multiple appdomains, this
7828         currently only works when no appdomains are unloaded.
7829
7830 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7831
7832         * appdomain.c: make the check to avoid copying when the assembly is
7833         already shadow copied actually work.
7834
7835 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7836
7837         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7838
7839         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7840         changes to the managed side.
7841
7842 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7843
7844         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7845         classes + a separate lock for it, as it is used frequently at runtime, not
7846         just during metadata loading/JIT compilation.
7847
7848         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7849         for szarrays.
7850         
7851         * object-internals.h (mono_class_from_name_cached): New macro to cache
7852         the results of the lookup locally without having to declare a static
7853         variable to hold it.
7854         (mono_class_get_field_from_name_cached): Ditto.
7855         (mono_array_class_get_cached): Ditto.
7856
7857         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7858         the new macros.
7859         
7860         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7861         slower search in metadata.
7862
7863         * pedump.c: Fix a warning.
7864
7865 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7866
7867         * reflection.c (encode_locals): Add checks for user types.
7868         (method_encode_clauses): Ditto.
7869         (method_encode_code): Ditto.
7870         (mono_image_create_token): Ditto.
7871
7872         * object-internals.h: Change the type of more fields from MonoReflectionType*
7873         to MonoObject*.
7874
7875 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7878         the a thread does not suspend within 100ms.
7879
7880         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7881         in addition to StopRequested as well.
7882
7883         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7884
7885         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7886         search the method_hash before inserting a new entry, to avoid crashes when
7887         the same method is inserted multiple times, causing the old 
7888         MonoDebugMethodInfo structure to be freed by the value dtor function.
7889
7890 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7891
7892         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7893         SO_EXLUSIVEADDRUSE where available.
7894
7895 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7896
7897         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7898         runtime invoke wrappers, this time it is string ctor wrappers, which
7899         pass a dummy string as 'this' instead of their obj argument. Fixes
7900         #478473.
7901
7902 2009-02-21  Jb Evain  <jbevain@novell.com>
7903
7904         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7905         only get create_culture once.
7906
7907 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7908
7909         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7910         check before the locking.
7911         
7912         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7913         (mono_reflection_create_runtime_class): Ditto.
7914         (mono_reflection_sighelper_get_signature_local): Ditto.
7915         (mono_reflection_sighelper_get_signature_field): Ditto.
7916
7917         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7918         is a System.MonoType object or similar.
7919         (monotype_cast): New helper function to cast a MonoObject to a 
7920         MonoReflectionType object.
7921
7922         * object-internals.h: Change MonoReflectionType* members in structures to
7923         MonoObject* members to force the usage of the monotype_cast () function.
7924
7925         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7926         structures/arrays. This causes us to assert instead of crashing when 
7927         instances of user defined subclasses of System.Type are encountered.
7928
7929 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7930
7931         * cil-coff.h:
7932         * icall-def.h:
7933         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7934         win32 resource loaded from a PE file.
7935
7936         * image.c: fix mono_image_lookup_resource.
7937
7938 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7939
7940         * icall-def.h:
7941         * threads-types.h:
7942         * threads.c: added internal call for WaitHandle.SignalAndWait.
7943
7944 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7945
7946         * cominterop.c : Adding cominterop_type_from_handle and 
7947           registering it as an icall.  Replacing all references
7948           to type_from_handle.
7949
7950         Code is contributed under MIT/X11 license.
7951
7952 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7953
7954         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7955
7956         * appdomain.c: Call the tracer init function.
7957
7958         * domain-internals.h: Enable the tracer for the domain locks.
7959
7960         * image.c: Enable the tracer for image locks.
7961
7962         * loader.c: Enable the trace for the loader lock.
7963
7964         * lock-tracer.h:
7965         * lock-tracer.c: Initial implementation of the lock trace utility.
7966         The tracer requires a compile time define to be enabled and a env var
7967         to be enabled at runtime.
7968
7969 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7970
7971         * domain.c (mono_domain_code_foreach): Improve documentation.
7972
7973 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7974
7975         * appdomain.c:
7976         * generic-sharing.c:
7977         * object.c:
7978         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7979         comes first.
7980
7981 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7982
7983         * domain.c: Add mono_domain_code_* functions that perform locking
7984         around the domain codeman.
7985
7986         * domain-internals.h: Export those functions.
7987
7988         * object.c: Use new functions instead of acquiring the domain lock.
7989
7990 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7991
7992         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7993         delegate. Fixes #477396.
7994
7995 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7996
7997         * reflection.c (create_custom_attr): Get rid of alloca.
7998
7999 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
8000
8001         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
8002           Adding exception handling for all CCW calls.
8003
8004         Code is contributed under MIT/X11 license.
8005
8006 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8007
8008         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
8009
8010         * marshal.c (emit_marshal_boolean): Add null checks to the new 
8011         native->managed marshalling code. Fixes #476247.
8012
8013 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8014
8015         * class.c (mono_class_get_vtable_entry): Move the addition of
8016         static rgctx invoke wrappers for vtable methods here, this simplifies
8017         a lot of code and causes fewer rgctx wrappers to be created.
8018
8019         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
8020         name of the statistics to begin with an uppercase.
8021
8022 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8023
8024         * reflection.c: Revert previous change as it breaks the build.
8025         
8026 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8027
8028         * verify.c: Properly handle SZARRAY element type.
8029
8030         Fixes #474271.
8031
8032 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8033
8034         * reflection.c (mono_image_create_method_token): Correctly encode
8035         MethodDef MemberRefParent token.
8036
8037         Fixes #472845.
8038
8039 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8040
8041         * image.c (mono_image_close): Delete the critical section before
8042         freeing the memory holding it.
8043
8044 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8045
8046         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
8047         Fixes #476257.
8048
8049 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8050
8051         * pedump.c (main): Call mono_marshal_init so pedump
8052         doesn't crash.
8053
8054 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8055
8056         * loader.c (method_from_memberref): Properly fix #474271 and
8057         don't break the runtime bad.
8058
8059 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8060
8061         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
8062         (mono_domain_alloc0): Ditto.
8063
8064 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8065
8066         * loader.c (method_from_memberref): Don't abort if the array
8067         method is not found. A regular loader failure is more informative
8068         and correct.
8069
8070         Fixes #474271.
8071
8072 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8073
8074         *loader.c: Guard MonoImage::method_cache/methodref_cache
8075         using the image lock instead of the loader lock.
8076
8077         * metadata.h: Add comments about which fields are protected by
8078         the image lock.
8079
8080 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8081
8082         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
8083
8084         * generic-sharing.c (mono_method_construct_object_context): Remove the
8085         wrapper_type == NONE assert, it is not needed.
8086
8087 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
8088
8089         * reflection.c (clear_cached_object): New helper function.
8090         (mono_method_clear_object): New function to clear the cached reflection
8091         objects for a dynamic method.
8092
8093         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
8094         Partly fixes # 463323.
8095         
8096 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8097
8098         * class.c:
8099         * loader.c:
8100         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
8101
8102 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8103
8104         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
8105         take the image lock instead of the loader lock.
8106
8107         * metadata-internals.h: Export new functions.
8108
8109 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8110
8111         * domain.c (app_config_parse): Remove another use of stat that is
8112         not necessary as g_file_get_contents already does the presence
8113         check. 
8114
8115 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8116
8117         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
8118
8119         * marshal.c: Move the bstr handling code to cominterop.c.
8120
8121         * marshal.c: Remove some COM interop code missed previously.
8122
8123 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8124
8125         More Paolo patches from the Wii port:
8126         
8127         * security.c: Remove ves_icall_System_Environment_get_UserName
8128         from here.
8129
8130         * icall.c: And put ves_icall_System_Environment_get_UserName
8131         here. 
8132
8133         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8134         redundant call to stat that was only used to test for the file
8135         existence.   Patch from Paolo.
8136
8137         * gc.c (run_finalize): If COM is disabled, do not link in
8138         mono_marshal_free_ccw.
8139
8140         * generic-sharing.c: Use alloca.h here as well.
8141
8142 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8143
8144         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8145
8146 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8147
8148         * cominterop.c cominterop.h: New files.
8149
8150         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8151         function/typedefs which are needed by cominterop.c global.
8152
8153 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8154
8155         * generic-sharing.c: Don't take the loader lock to guard image
8156         mempool allocs.
8157
8158 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8159
8160         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8161         called without the loader lock which is required to guard MonoImage:tokens.
8162
8163 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8164
8165         * class.c:
8166         * metadata.c:
8167         * method-builder.c:
8168         * marshal.c:
8169         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8170
8171 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8172
8173         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8174         Rework the code to use regular mono_image_alloc/0.
8175
8176         * loader.c: Rework the code to use regular mono_image_alloc/0.
8177
8178         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8179
8180 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8181
8182         * object-internals.h : Fixing a typo in the 
8183           MonoReflectionComVisibleAttribute struct.
8184
8185         * marshal.c (cominterop_com_visible): Check the implemented 
8186           interfaces for ComImport.
8187
8188         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8189           assume that bools should be treated as VARIANTBOOLs.
8190
8191         * marshal.c (emit_marshal_boolean): Adding cases for 
8192           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8193
8194         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8195           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8196
8197         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8198           should be treated as VARIANTBOOLs.    
8199
8200         Code is contributed under MIT/X11 license.
8201
8202 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8203
8204         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8205         allocation with the image lock.
8206
8207 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8208
8209         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8210         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8211
8212         * object.c: Add mono_string_to_utf8_image.
8213
8214         * object-internals.h: Export mono_string_to_utf8_image.
8215
8216         * reflection.c: Rework all explicit references to the the image mempool to go thought
8217         the mono_image_alloc set of functions.
8218
8219 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8220
8221         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8222         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8223         and generics-sharing.c.
8224
8225         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8226         as first argument. Note that this function remains broken as it doesn't perform locking around the
8227         mempool allocation.
8228
8229         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8230
8231         * image.c: Add g_slist_append_image.
8232
8233         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8234         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8235
8236         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8237         Fix all related code to do the same.
8238
8239         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8240
8241         * metadata-internals.h: Fix the signatures.
8242
8243 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8244
8245         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8246         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8247         and similar to work using MonoImage.
8248
8249         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8250         MonoMemPool.
8251
8252         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8253
8254         * class.c (mono_metadata_signature_deep_dup): Same.
8255
8256         * class.c (inflate_generic_type): Same.
8257
8258         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8259
8260         * metadata.c (mono_metadata_signature_dup_full): Same.
8261
8262         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8263         mono_metadata_signature_dup_full.
8264
8265         * metadata.c (mono_metadata_type_dup): Same.
8266
8267         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8268
8269         * reflection.c: Same.
8270
8271         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8272
8273         * metadata-internals.h: Fix the signatures.
8274
8275         * class-internals.h: Same.
8276
8277 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8278
8279         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8280         and use mono_image_alloc set of functions instead. 
8281
8282         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8283         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8284         of a MonoMemPool.
8285
8286         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8287
8288         * class.c (g_list_prepend_mempool): Removed.
8289
8290         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8291
8292         * image.c: Add g_list_prepend_image.
8293
8294         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8295
8296         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8297
8298
8299 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8300
8301         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8302         mono_image_unlock.
8303
8304         * image.c (mono_image_init): Init the lock field.
8305  
8306         * image.c (mono_image_init): Cleanup the lock field.
8307
8308         * image.c: Add mono_image_(un)lock functions.
8309
8310 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8311
8312         * class.c, class-internals.h: mono_method_get_context_general()
8313         combines the functionality of mono_method_get_context() and
8314         mini_method_get_context().
8315
8316         * generic-sharing.c, domain-internals.h:
8317         mono_method_construct_object_context() and
8318         mono_domain_lookup_shared_generic() moved from mini.
8319
8320         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8321         method doesn't have the correct instantiation because it's shared
8322         generic code.  Fixes #473999.
8323
8324 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8325
8326         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8327
8328         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8329         
8330 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8331
8332         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8333
8334         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8335
8336         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8337         and recheck the cache for dups after it.
8338
8339         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8340
8341         Fixes one of the deadlocks found in #473150.
8342
8343 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8344
8345         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8346           For Win32, add additional break conditions for accept.
8347
8348         Code is contributed under MIT/X11 license.
8349
8350 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8351
8352         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8353         lazily initialize the native wrapper cache.
8354         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8355         cache, since they are different from the normal wrappers.
8356
8357         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8358
8359         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8360         AOT compiled native wrappers.
8361
8362 2009-02-09  Geoff Norton  <gnorton@novell.com>
8363
8364         * appdomain.h:
8365         * security-core-clr.c: Allow enabling core-clr from the embedding
8366         API.
8367
8368 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8369
8370         * socket-io.c: when requesting all the local ips, if there are no
8371         interfaces up and running, MS returns 127.0.0.1.
8372
8373 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8374
8375         * mono-perfcounters-def.h: processor time is an inverse time.
8376         Fixes bug #468625.
8377
8378 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8379
8380         * socket-io.c: an empty host name returns the list of local IPs.
8381         Fixes bug #386637 part 1/2.
8382
8383 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8384
8385         * verify.c (mono_class_interface_implements_interface): Call
8386         mono_class_setup_interfaces ().
8387         (merge_stacks): Ditto.
8388
8389 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8390
8391         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8392         klass->interfaces.
8393         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8394         (mono_generic_class_get_class): Ditto.
8395
8396 2009-02-06  U-QUACK\miguel  <miguel@quack>
8397
8398         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8399         they live in security.c
8400
8401         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8402         another bit from Paolo's code.
8403
8404 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8405
8406         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8407         methods which will be discarded by add_imt_builder_entry ().
8408
8409         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8410         need to be boxed.
8411
8412         * loader.c: Add a statistics for the size of the memberref signature cache.
8413         
8414         * loader.c (find_cached_memberref_sig): New helper function.
8415         (cache_memberref_sig): Ditto.
8416
8417         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8418         they will be parsed again for every generic instantiation, leading to unbounded
8419         memory growth.
8420
8421 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8422
8423         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8424         parameters of generic methods.
8425
8426         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8427         after the original method is copied to the inflated method.
8428         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8429
8430         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8431         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8432
8433         * class.c metadata.c: Update after the changes above.
8434
8435 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8436
8437         * metadata-verify.c: Simplified error handling and added
8438         section table validation.
8439
8440 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8441
8442         * class-internals.h (MonoClassExt): New structure containing rarely used
8443         fields of MonoClass.
8444         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8445         through a new 'ext' field.
8446
8447         * class.c (mono_class_alloc_ext): New helper function to allocate 
8448         class->ext.
8449
8450         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8451
8452 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8453
8454         * object.c (mono_object_get_virtual_method): Properly inflate
8455         generic methods.  Fixes #472692.
8456
8457 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8458
8459         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8460         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8461         for the parent type, the created type must be ready to be used on a generic
8462         instantiation.
8463         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8464         we won't have duplicated entries in generic_inst_cache.
8465
8466         Fixes #469553.
8467
8468 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8469
8470         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8471         replace with plain BSD per the comments on the bug MONO77637.
8472
8473 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8474
8475         * class.c (mono_class_get_generic_class): New accessor function.
8476         (mono_class_get_generic_container): Ditto.
8477
8478         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8479         fields, similar to the ones in MonoMethod.
8480
8481         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8482         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8483
8484         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8485         
8486         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8487         the same information as element_class->byval_arg.
8488
8489         * class.c reflection.c: Remove references to class->byval_arg.
8490
8491         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8492         klass->enum_basetype directly.
8493
8494         * verify.c metadata.c object.c icall.c reflection.c: Use 
8495         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8496         directly.
8497
8498 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8499
8500         * icall-def.h: Remove internal calls for sockets when
8501         DISABLE_SOCKET is defined, file system writing features when the
8502         OS only support reading and not writing data and Policy support if
8503         the Policy is disabled.
8504         
8505         * image.c (do_mono_image_open): Apply Paolo's patches for using
8506         mono_file_map_ APIs here.
8507
8508         * assembly.c: Add support for platforms to avoid prefix
8509         auto-detection. 
8510
8511 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8512
8513         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8514         warning.
8515
8516         * class.c (mono_class_inflate_generic_class): New helper function.
8517
8518         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8519         statistics for inflated methods/classes.
8520
8521         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8522
8523         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8524         the call is made from Delegate.CreateDelegate () for the invoke method of
8525         a delegate.
8526
8527         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8528
8529         * metadata.c (mono_metadata_signature_size): New helper function.
8530
8531         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8532         generic instances.
8533
8534         * metadata.c (inflated_method_in_image): Avoid calling 
8535         mono_method_signature () if the method does not already have a signature.
8536
8537 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8538
8539         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8540         valuetype is compatible with target type, check by inheritance as a
8541         VT is not really compatible with System.ValueType, for example.
8542
8543         * verify.c (do_invoke_method): Improve error message.
8544
8545         * verify.c (do_box_value): If boxing a nullable, use the type argument
8546         on stack instead.
8547
8548         * verify.c (do_newobj): Improve error message.  
8549
8550         Fixes #469549.
8551
8552 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8553
8554         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8555
8556 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8557
8558         * generic-sharing.c: Don't hold domain lock when calling
8559         instantiate_other_info().  Fixes #471958.
8560
8561         * domain-internals.h, loader.c: Describe locking policy of domain
8562         lock vs loader lock.
8563
8564 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8565
8566         * verify.c (mono_delegate_signature_equal): Make it possible to check
8567         first-arg-bound delegates to static method.
8568
8569         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8570         static methods with the first arg bound.
8571
8572         Fixes #469529.
8573
8574 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8575
8576         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8577         errors.
8578
8579         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8580         under strict mode. Any type, when boxed can be seen as a reference type.
8581
8582         Fixes #469528.
8583
8584 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8585
8586         * object.h: The lower bound of an array is a signed integer value.
8587         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8588         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8589
8590         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8591         calculate the upper bound.
8592         
8593         Fixes #471252.
8594
8595 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8596
8597         From Paolo's work, refactored, cleared up:
8598         
8599         * threadpool.c, icall.c: ifdef code that requires a working socket
8600         stack.
8601
8602         * metadata.c (mono_metadata_field_info): Do not attempt to return
8603         a value from a function declared as void.
8604
8605         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8606         from the console stack.
8607
8608         * assembly.c: use strrchr instead of rindex.
8609
8610         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8611         alloca.h on systems that have it.
8612
8613         * environment.c: Avoid code that uses stuff from
8614         HAVE_SYS_UTSNAME_H
8615         
8616         * appdomain.c: Include sys/time.h.
8617
8618         * console-io.c: include sys/ioctl.h if it is available.
8619
8620 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8621
8622         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8623
8624         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8625         the method builder.
8626
8627         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8628         after it was created and cached, as the later is not thread safe.
8629         
8630 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8631
8632         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8633         called while the debugging module is not initialized. Fixes #471669.
8634
8635 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8636
8637         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8638
8639         Fixes #471255.
8640
8641 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8642
8643         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8644         loader lock is not taken while the templates lock is held.  Fixes
8645         #471089.
8646
8647 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8648
8649         * metadata.c (type_in_image): Added a check to fix a monodis
8650         crash.
8651
8652 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8653
8654         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8655         nullable arguments.
8656
8657         * object.c (mono_runtime_invoke_array): Ditto.
8658         
8659         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8660         freeing wrappers of dynamic methods.
8661
8662         * loader.c (mono_free_method): Call it. Fixes #463323.
8663         
8664         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8665         methods taking vtype/byref arguments, to fix yet another bug caused by
8666         the sharing of runtime invoke wrappers. Partly fixes #471259.
8667
8668 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8669
8670         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8671         <first file in file table>:1 when the IL offset does not have an associated
8672         line number.
8673
8674 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8677         variable info for a method.
8678
8679         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8680         
8681 2009-01-30  Jb Evain  <jbevain@novell.com>
8682
8683         * pedump.c: reuse code from monodis to make sure pedump honors
8684         MONO_PATH, which is needed to verify net_2_1 assemblies.
8685
8686 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8687
8688         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8689         there is no line number info.
8690
8691 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8692
8693         Avoid some MonoType allocations
8694         * reflection.c (mono_reflection_initialize_generic_parameter):
8695         Reuse MonoType from param->pklass rather than allocating one.
8696         (mono_dynamic_image_free): Update to changes.
8697
8698 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8699
8700         Rearrange some code to improve consistency
8701         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8702         (mono_reflection_initialize_generic_parameter): ... here.
8703
8704 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8705
8706         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8707         with type constraints as an experiment.
8708
8709         * boehm-gc.c (on_gc_notification): Update mono_stats.
8710
8711 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8712
8713         Avoid some allocations
8714         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8715         pointer to tail array to avoid extra allocation.
8716         * metadata.c (free_generic_inst): Update to changes.
8717         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8718         on-stack struct.
8719
8720 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8721
8722         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8723         return TRUE if the two type objects are the same.
8724
8725 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8726
8727         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8728         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8729         klass->min_align, since klass->min_align contains the managed alignment,
8730         while the native alignment can be different, like for longs on x86.
8731         Fixes #469135.
8732
8733         * class-internals.h (MonoMarshalType): Add a min_align field.
8734
8735 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8736
8737         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8738         the 1.0 format.
8739
8740 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8741
8742         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8743         some comments about the usage of the used_regs field.
8744
8745         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8746         Fixes #469217.
8747
8748 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8749
8750         * appdomain.c: return NULL instead of throwing FileNotFoundException
8751         when LoadAssembly() fails.
8752
8753 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8754
8755         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8756         image if the owner is NULL.  Fixes the AOT failures.
8757
8758 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8759
8760         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8761         MonoGenericParam structure using memset so the image field is initialized
8762         as well.
8763
8764 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8765
8766         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8767         a plain store.
8768
8769 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8770
8771         * class.c (mono_class_setup_vtable_general): In the generic instance
8772         optimization, set method->slot for abstract virtual methods. Fixes part of
8773         #467834.
8774
8775 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8776
8777         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8778         which signals that the unloading has started but all appdomain services must
8779         remain operational.
8780
8781         * appdomain.c (mono_domain_unload): The initial state for unloading now
8782         is unloading_start and we switch to unloading after the managed call to
8783         AppDomain::DomainUnload has finished.
8784
8785         The new unloading state has to be created because managed code in the
8786         DomainUnload event can depend on things like the threadpool still working.
8787         The domain must remain fully functional while the event executes.
8788
8789         This shown as an issue due to Process::WaitForExit, which waits for
8790         async reads of stdout and stderr to complete. Since those are processed
8791         in the threadpool the code deadlocks because the DomainUnload callback 
8792         waits for the async read finished event, which should have been set by a
8793         threadpool job but has been discarded due to the domain been in unload
8794         state.
8795
8796 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8797
8798         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8799         image must match.
8800
8801 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8802
8803         * reflection.c (resolve_object): For fields, inflate the class and
8804         then get the field in the inflated class.
8805
8806 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8807
8808         * object-internals.h (struct _MonoException): Added a comment
8809         explaining the new use of trace_ips.
8810
8811 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8812
8813         * generic-sharing.c (inflate_other_data): Inflate array methods
8814         correctly.
8815
8816         * loader.c, class-internals.h: Rename search_in_array_class() to
8817         mono_method_search_in_array_class() and make it non-static.
8818
8819 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8820
8821         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8822         Hopefully fixes #458168.
8823
8824 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8825
8826         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8827         as it is performed elsewhere.
8828
8829         Code is contributed under MIT/X11 license
8830
8831 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8832
8833         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8834         requests queued.
8835         * object.c (mono_raise_exception): Increment the exceptions total
8836         counter when an exception is thrown.
8837         * class-internals.h: Add a location for storing the total number of
8838         asp.net requests served.
8839         * mono-perfcounters.c: Implement update support for asp.net counters
8840         from the class libraries. Implement read support for asp.net counters
8841         and exceptions total counter.
8842
8843 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8844
8845         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8846         accessing klass->methods. Fixes #467385.
8847
8848 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8849
8850         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8851         for byval arguments without an [Out] attribute. Fixes #467212.
8852
8853         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8854         Fix compilation under android.
8855         
8856         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8857         processed, scan them directly after they are copied, to achieve better locality
8858         and cache usage.
8859
8860         * socket-io.c: Applied patch from Koushik Dutta
8861         (koush@koushikdutta.com). Disable IPV6 when running under android.
8862
8863 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8864
8865         * icall.c (ves_icall_InternalExecute): Add write barriers.
8866
8867         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8868         the GC code.
8869
8870         * sgen-gc.c: Implement write barriers in IL code.
8871
8872 2009-01-17  Geoff Norton  <gnorton@novell.com>
8873
8874         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8875
8876 2009-01-17  Geoff Norton  <gnorton@novell.com>
8877
8878         * image.c: When unloading the image->references table, there can be gaps
8879         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8880         when unloading an appdomain.
8881
8882 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8883
8884         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8885         speed up ptr-in-nursery checks.
8886
8887         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8888         threads_lock () to prevent deadlocks.
8889
8890         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8891         does not need to be scanned during minor collections, since writes to it
8892         must use write barriers.
8893
8894 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8895
8896         * metadata-verify.c: Add pe nt header verification.
8897         
8898 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8899
8900         * gc.c: Fix a few warnings when using SGEN.
8901
8902 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8903
8904         * metadata-verify.c: Add pe optional header verification.
8905
8906 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8907
8908         * sgen-gc.c: Add support for user defined marker functions, used by
8909         MonoGHashTable to avoid registering a GC root for every hash node.
8910
8911 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8912
8913         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8914         non-pinned roots into separate hashes to avoid having to traverse them
8915         in functions which are only interested in one kind.
8916
8917 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8918
8919         * metadata-verify.c: Add pe header machine field verification.
8920         
8921 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8922
8923         * metadata-verify.c: Add pe header size verification.
8924
8925 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8926
8927         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8928         using the GC, they don't contain references.
8929
8930         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8931
8932 2009-01-13  Geoff Norton  <gnorton@novell.com>
8933
8934         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8935         AppDomains created on the native side can be cleaned up on the native side.
8936
8937 2009-01-13  Geoff Norton  <gnorton@novell.com>
8938
8939         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8940         as well as the managed api.
8941
8942 2009-01-13  Geoff Norton  <gnorton@novell.com>
8943
8944         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8945         with a MonoAppDomain initialized against it.
8946
8947 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8948
8949         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8950         
8951         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8952
8953         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8954         into the wrapper caches. Fixes #465700.
8955
8956         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8957         method builder.
8958         (mono_mb_create_method): Set the clauses from the method builder.
8959
8960 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8961
8962         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8963         Patch from Makoto Kishimoto.
8964
8965 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8966
8967         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8968         encoding them as ROOT_DESC_COMPLEX.
8969         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8970
8971 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8972
8973         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8974         no longer point to the nursery.
8975
8976         * sgen-gc.c: Add a few comments/FIXMEs.
8977         
8978         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8979
8980         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8981         initialization of the various _method variables thread safe. Fixes
8982         #465377.
8983
8984 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8985
8986         * domain.c, domain-internals.h: Remove the shared_generics_hash
8987         and its lookup functions.
8988
8989 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8990
8991         * socket-io.c:  Fixing the MSVC build. 
8992
8993         Code is contributed under MIT/X11 license.
8994
8995 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8996
8997         * metadata-verify.c: Add pe header watermark verification.
8998
8999 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9000
9001         * metadata-verify.c: Add lfanew verification.
9002
9003 2009-01-12  Jb Evain  <jbevain@novell.com>
9004
9005         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
9006         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
9007
9008 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
9009
9010         * socket-io.c: Fix the build.
9011
9012         * environment.c: Fix an #ifdef.
9013
9014 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9015
9016         * threadpool.c (async_invoke_thread): Handle the wait function returning
9017         WAIT_IO_COMPLETION as well.
9018         (async_invoke_io_thread): Ditto.
9019
9020 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
9021
9022         * threads.c: Fixing the Windows build.
9023
9024         Code is contributed under MIT/X11 license.
9025
9026 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9027  
9028         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
9029         interrupt a wait.
9030         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
9031         the thread to wait again.
9032
9033 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9034
9035         * metadata-verify.c: Initial skeleton of the metadata verifier.
9036
9037         * pedump.c: Add support for the metadata verifier.
9038
9039         * verify-internal.h: Export the whole assembly metadata verifier function.
9040
9041 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9042
9043         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
9044
9045 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9046
9047         * Makefile.am: Upgrade dtrace-prelink.sh location.
9048
9049 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9050
9051         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
9052         well. Otherwise the shutdown deadlock that happens on unix will can happen
9053         as well.
9054         If the main thread code finishes too fast it's possible that the finalizer
9055         thread won't have executed yet, won't record itself as the finalizer thread
9056         and the shutdown sequence will wait on it forever.
9057
9058 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9059
9060         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
9061         with MSVC.
9062
9063 2009-01-08  Miguel de Icaza  <miguel@novell.com>
9064
9065         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
9066         Robert Jordan for pointing this out.
9067
9068 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
9069
9070         * icall.c
9071         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
9072         ves_icall_System_IO_DriveInfo_GetDriveType.
9073
9074 2009-01-07  Miguel de Icaza  <miguel@novell.com>
9075
9076         * icall.c: Wrap calls to mono_strtod in CriticalSection
9077         invocations when using eglib, to work around #464316.
9078
9079 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9080
9081         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
9082         return value of GetCurrentDirectory to never access unitialized memory.
9083
9084 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9085
9086         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
9087         return value of GetCurrentDirectory and expand the buffer if needed.
9088
9089         Fixes #459094.
9090
9091 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
9092
9093         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
9094           Adding a call to mono_init_com_types.
9095
9096         Code is contributed under MIT/X11 license.
9097
9098 2009-01-07  Geoff Norton  <gnorton@novell.com>
9099
9100         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
9101         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
9102         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
9103         be the value of the ip buffer.
9104
9105 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9106
9107         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
9108         interfaces_packed here.
9109
9110         Fixes part of #463294.
9111
9112 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9113
9114         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
9115
9116         Fixes part of #463294.
9117
9118 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9119
9120         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
9121         is a boxed complex as well.
9122
9123         Fixes part of #463294.
9124
9125 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9126
9127         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
9128         control if a methodspec should be created for the generic method definition from external assemblies.
9129         Caching of methodspec is done using the handleref hash table.
9130
9131         Fixes #462592.
9132
9133 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9134
9135         * loader.c (find_method): When searching the interfaces of a class
9136         check the transitive closure of implemented interfaces.
9137
9138         Fixes #463303.
9139
9140 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9141
9142         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9143         
9144 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9145
9146         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9147         interfaces calculation to fill_valuetype_array_derived_types.
9148
9149         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9150         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9151         for example.
9152
9153         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9154         interfaces for valuetypes if needed.    
9155
9156         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9157         for their basetype as well. Types are array expanded if rank is > 0.
9158
9159         Fixes #400716.
9160
9161 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9162
9163         * socket-io.h : Changing the signature of
9164           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9165           the blocking state.
9166
9167         * icall-def.h :  Changing the signature of
9168           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9169
9170         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9171           For Windows only.  Avoid blocking when calling accept by
9172           querying for a connection via select.  The loop also queries
9173           the thread state every 1000 micro seconds for the thread
9174           stop state.  This will avoid the process hanging on shutdown
9175           when using a TcpChannel that is never connected to.
9176
9177         Code is contributed under MIT/X11 license.
9178
9179 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9180
9181         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9182
9183 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9184
9185         * class.c (get_implicit_generic_array_interfaces): Extract common
9186         code to a helper function making it a lot easier on the eyes.
9187
9188 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9189
9190         * class.c (get_implicit_generic_array_interfaces): If the internal
9191         enumerator is an interface inflate System.Object instead of itself.
9192
9193         Fixes #461261.
9194
9195 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9196
9197         * object.c (mono_runtime_invoke_array): Don't assert with
9198         byref nullable types.
9199
9200         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9201         byref nullables we unbox the object and store it on the
9202         stack. 
9203         We can't use the boxed object since it is the T of Nullable<T>
9204         and the boxed representation of a nullable it's underlying type
9205         or null.
9206         We could cheat and create a boxed nullable and use the same
9207         machinery of other byref VTs but this feels like a hack and
9208         using the stack has the bonus of reducing heap pressure.
9209
9210         Fixes #461941.
9211
9212 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9213
9214         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9215         return value.
9216
9217         Fixes #461867.
9218
9219 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9220
9221         * icall-def.h : Adding an internal call definition for 
9222           System.Environment.internalBroadcastSettingChange.
9223
9224         * icall.c : Adding a Windows only implementation to broadcast a 
9225           WM_SETTINGCHANGE when an environment variable has changed.
9226
9227         Code is contributed under MIT/X11 license.
9228
9229 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9230
9231         * class.c, class-internals.h: Made
9232         mono_class_has_parent_and_ignore_generics() non-static.
9233
9234 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9235
9236         * image.c: deal with the mmap failing when loading an image.
9237
9238 2008-12-17  Geoff Norton  <gnorton@novell.com>
9239
9240         * threadpool.c: Ensure that the io_queue_lock is initialized
9241         in all circumstances, as we always attempt to cleanup against it.
9242
9243 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9244
9245         * icall.c (ves_icall_System_Environment_get_Platform): For
9246         compatibility reasons for existing client code we will keep
9247         returning 4 for a while.   
9248
9249         For how long will depend on the documentation being updated, and
9250         for us to give client code a chance to be updated.
9251
9252         This reverts the original decison on #433108 since we did not
9253         catch roughly 33 instances of the broken code in our own source
9254         code base, we did not catch failures on the buildbots, and QA did
9255         not bring this as a problem.
9256
9257         Only today I found some customer's code breaking due to our own
9258         class libraries not being fully updated and tracked it down to
9259         this change.  I am reverting it because if we could not even get
9260         our story straight in our own code base, how can we hope that our
9261         end user code be fixed?
9262
9263         As of this morning, our Wiki page that documents how to detect
9264         Unix had not been fixed.    
9265
9266 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9267
9268         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9269
9270         * class.c (mono_class_get_fields): Handle loading errors.
9271
9272 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9273
9274         * 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.
9275         
9276 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9277
9278         * mono-perfcounters.c: avoid warning.
9279
9280 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9281
9282         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9283         make sure all interfaces have MonoClass::interface_id set.
9284
9285         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9286         method table is property set.
9287
9288 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9289
9290         * class.c: New function mono_class_setup_interface_id that setup
9291         MonoClass::interface_id if needed.
9292
9293         * class-internals.h: Export new function.
9294
9295 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9296
9297         * class.c: Add code to sanity check the vtable after setup_vtable_general
9298         has done it's work.
9299
9300 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9301
9302         * icall.c: make Assembly.GetExecutingAssembly work properly when
9303         reflection is used to invoke the method.
9304         Bug #321781 fixed.
9305
9306 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9307
9308         * metadata/generic-sharing.c: Look for constraints in all type
9309         arguments, not just the first one.
9310
9311 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9312
9313         * appdomain.c: return the correct CodeBase for an Assembly instance
9314         that was loaded from the shadow-copy directories.
9315         Bug #458190 fixed.
9316
9317 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9318
9319         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9320
9321         * sgen-gc.c (check_object): New debugging helper function.
9322
9323         * object.c: Fix calls to mono_value_copy_array ().
9324
9325 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9326
9327         * class.c (mono_class_setup_fields): If working on an inflated class
9328         first check if the generic definition did init with success.
9329
9330         Fixes #445361.
9331
9332 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9333
9334         pedump.c (main): Fix a warning.
9335
9336 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9337
9338         * object-internals.h : Adding a definition for 
9339           MonoReflectionComVisibleAttribute.
9340
9341         * marshal.c (cominterop_com_visible) :  Method added to check the 
9342           ComVisible attribute of a class.
9343
9344         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9345           cominterop_raise_hr_exception added to consolidate common code 
9346           to raise hr exceptions.
9347
9348         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9349           if a managed class should support IDispatch.
9350
9351         * marshal.c 
9352           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9353           Added additional checks for managed object when getting 
9354           an IDispatch interface.
9355
9356         Code is contributed under MIT/X11 license.
9357
9358 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9359
9360         pedump.c (main): Handle mono_get_method () returning NULL. 
9361
9362 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9363
9364         * marshal.h: Fix a warning.
9365
9366 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9367
9368         * marshal.c : Adding cominterop_release_all_rcws to release all
9369           runtime callable wrappers held by the runtime.
9370
9371         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9372           
9373         Code is contributed under MIT/X11 license.
9374
9375 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9376
9377         * metadata.c (mono_image_alloc_lock): New helper function.
9378         (mono_image_alloc0_lock): Ditto.
9379
9380         * metadata.c: Use the alloc_lock () helper functions for allocating
9381         memory from the image mempool.
9382
9383 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9384
9385         * class.c (mono_class_from_generic_parameter): Document it's
9386         locking behavior. Fix double checked locking here, we stored in
9387         param->pklass a partially initialized MonoClass and no membar was used.
9388
9389 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9390
9391         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9392         (3) functions are present in the C library use them to do the
9393         job. If they are absent, make sure that the sum of int_part and
9394         dec_part is rounded before returning. This is necessary due to the
9395         division of dec_part by the power of 10 before the final addition
9396         is performed - if the result is not rounded in some cases it will
9397         yield invalid results.
9398
9399 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9400
9401         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9402         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9403         instruction instead of a pointer constant.
9404
9405 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9406
9407         * loader.c (mono_method_get_header): Do most of the work outside the
9408         loader lock, to avoid assembly load hook deadlocks.
9409
9410         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9411         (mono_metadata_parse_type_full): Ditto.
9412
9413 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9414
9415         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9416         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9417         funtions. Finally, use a lock to produce well ordered output.
9418
9419         The lock looks silly, as all calls to the corlib mempool should be guarded
9420         with the loader lock, but for some reason this fact doesn't help. 
9421
9422         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9423
9424 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9425
9426         * socket-io.c: 64 bit big-endian fixes.
9427
9428 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9429
9430         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9431         targets that require strict compatibility between the types.
9432
9433         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9434         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9435         Kill the strict argument and create a new one valuetype_must_be_boxed.
9436
9437         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9438         state that all valuetypes must be boxed.
9439
9440         Fixes #448560.
9441
9442 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9443
9444         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9445         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9446
9447         Contributed under MIT/X11 license.
9448
9449 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9450
9451         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9452         the inflate_generic_type machinery should handle it.
9453
9454         This avoids a crash when the field's flags is zero and it's type is
9455         a primitive.
9456         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9457         is zero and will return one of the cached built-in primitive types. Since
9458         those types live in read-only memory, the code that copies it crashes.  
9459
9460 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9461
9462         * object.c: Don't put function descriptors into generalized IMT
9463         thunks.
9464
9465 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9466
9467         * class.c: Enable generic code sharing on PPC64.
9468
9469 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9470
9471         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9472         from mini/mini.c.
9473
9474         * generic-sharing.c: Allocate the method template slists from the
9475         image mempool so it doesn't leak.
9476
9477 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9478
9479         * class.c (generic_array_methods): Release the linked list.
9480
9481 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9482
9483         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9484         invocation to g_utf16_to_utf8().
9485
9486 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9487
9488         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9489         arguments on big endian archs.
9490
9491 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9492
9493         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9494         the type name (test added in corlib).
9495
9496 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9497
9498         * pedump.c: initialize perf. counters. Fixes a segv.
9499
9500 2008-11-25  Martin Baulig  <martin@ximian.com>
9501
9502         * mono-debug-debugger.c
9503         (mono_debugger_runtime_invoke): Return the exception object if an
9504         exception was thrown.  Visual Studio displays the exception object
9505         in the locals window.
9506
9507 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9508
9509         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9510         ftnptr.
9511
9512 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9513
9514         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9515         MONO_TYPE_U are sizeof (gpointer), too.
9516
9517 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9518
9519         * marshal.c (mono_type_native_stack_size): Fixed size and
9520         alignment for reference types.
9521
9522 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9523
9524         * class.c (mono_class_generic_sharing_enabled): Disable generic
9525         code sharing for PPC64.
9526
9527 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9528
9529         * icall.c (mono_method_get_equivalent_method): Make sure
9530         method->klass->methods is inited before looping over it.
9531
9532 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9533
9534         * object.c: when calling ExecuteAssembly in a newly created domain,
9535         the configuration file and application base are already set up.
9536         Bug #446353 take 2 fixed.
9537
9538 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9539
9540         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9541         Fixes #444715. Fix a warning.
9542
9543 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9544
9545         * appdomain.c: write the full path of the assembly to the .ini file
9546         created when "shadow-copying"
9547         Bug #446353 fixed.
9548
9549 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9550
9551         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9552         if signature==FALSE.
9553
9554 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9555
9556         * marshal.h : Fix the cygwin build.
9557            marshal.c:12442: undefined reference to `_IID_IMarshal'
9558           
9559         Code is contributed under MIT/X11 license.
9560
9561 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9562
9563         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9564           free threaded marshaler when QueryInterface is called on a COM callable
9565           wrapper requesting the IMarshal interface.
9566           
9567         Code is contributed under MIT/X11 license.
9568
9569 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9570
9571         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9572
9573         * reflection.c (mono_type_get_object): Special case the very common
9574         void type.
9575
9576         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9577         hold typeof(void).
9578
9579 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9580
9581         * process.h : Adding method declaration for
9582           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9583           
9584         * process.c : Adding implementation for
9585           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9586           
9587         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9588           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9589
9590         Code is contributed under MIT/X11 license.
9591
9592 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9593
9594         * appdomain.c (unload_thread_main): Clean up threadpool by
9595         calling mono_thread_pool_remove_domain_jobs.
9596
9597         * domain-internals.h (struct _MonoDomain): Add new fields to
9598         help coordinate the cleanup of the threadpool.
9599
9600         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9601         that cleans up the threadpool of all jobs associated with an appdomain.
9602         It does that by cleaning up the queues and making sure all active
9603         threads are accounted.
9604
9605         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9606         unloaded or in the process of. Take this is such way that there is
9607         no race condition between another thread starting the unload and the
9608         current thread acknowledging it.
9609
9610         * threadpool.c (async_invoke_thread): Same.
9611
9612         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9613         firing the new thread.
9614
9615         * threadpool.c (start_tpthread): Same.
9616
9617         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9618
9619         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9620
9621 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9622
9623         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9624         Add support for DuplicateHandle.
9625         
9626         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9627         Add support for DuplicateHandle.
9628         
9629         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9630         Add support for DuplicateHandle.
9631
9632         Code is contributed under MIT/X11 license.
9633
9634 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9635
9636         * class-internals.h: Make min_align into a whole byte.
9637
9638         * class.c: Set min_align for SIMD types to 16.
9639
9640 2008-11-05  Geoff Norton  <gnorton@novell.com>
9641
9642         * attach.c: Default the attacher to enabled for all cases including
9643         embedded.
9644
9645 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9646
9647         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9648         change r117650.
9649
9650 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9651
9652         * monitor.c, monitor.h: New function for querying offsets of
9653         members of MonoThreadsSync.
9654
9655 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9656
9657         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9658         to speed up this function and to avoid the boundless memory growth caused by
9659         the signature_dup () calls.
9660
9661 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9662
9663         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9664         wrapper.
9665
9666         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9667         by 1 bit.
9668
9669         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9670
9671 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9672
9673         * appdomain.c:
9674         * domain-internals.h: made mono_set_private_bin_path_from_config()
9675         "internal".
9676         * object.c: call the above function after setting the configuration
9677         file path for the root domain.
9678         Fixes bug #314478.
9679
9680 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9681
9682         * assembly.c: when the assembly is loaded from an absolute path, end
9683         basedir with a directory separator.
9684         Bug #440781 fixed.
9685
9686 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9687
9688         * monitor.c (mono_monitor_get_fast_enter_method): If
9689         CompareExchange is not available, don't create the fastpath
9690         instead of asserting.  (The method is missing in the 1.1 profile.)
9691
9692 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9693
9694         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9695
9696         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9697         Monitor.Exit IL fastpaths.
9698
9699 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9700
9701         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9702
9703 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9704
9705         * class.c (mono_class_create_from_typedef): Added Vector2l.
9706
9707 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9708
9709         * class.c (mono_class_create_from_typedef): Added Vector2d.
9710
9711 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9712
9713         * appdomain.c: translate \ into / for cache_path.
9714         * domain-internals.h: new mono_is_shadow_copy_enabled().
9715         * icall.c: (fill_reflection_assembly_name) do the same path
9716         manipulations that get_code_base does.
9717         (get_code_base) use mono_is_shadow_copy_enabled.
9718
9719 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9720
9721         * appdomain.c: shadow-copied assemblies go to CachePath +
9722         ApplicationName when both are set. DynamicBase has nothing to do with
9723         shadow copies.
9724         Bug #406877 fixed.
9725
9726 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9727
9728         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9729         STANDALONESIG table.
9730
9731         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9732         standalone signatures.
9733
9734         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9735         comparison code: instead of comparing the signatures using a custom
9736         equals function, transform them to a common signature and compare that. This
9737         works better with AOT.
9738
9739 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9740
9741         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9742
9743         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9744         call for generic instances.
9745         (mono_class_setup_properties): Call setup_properties () before accessing
9746         gklass->properties.
9747
9748         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9749         over the virtual methods of a class using metadata if possible, avoiding the
9750         creation of MonoMethod's for non-virtual methods.
9751         
9752         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9753         get_virtual_methods () to iterate over the virtual methods of classes.
9754
9755 2008-10-25  Martin Baulig  <martin@ximian.com>
9756
9757         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9758
9759 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9760
9761         * class.c (mono_class_create_from_typedef): Added Vector4i.
9762
9763 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9764
9765         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9766         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9767         special-casing applies to eliminate the call completely.
9768
9769 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9770
9771         * class.c (mono_class_create_from_typedef): Added Vector8s.
9772
9773 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9774
9775         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9776
9777 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9778
9779         * icall.c: get rid of annoying warning.
9780
9781 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9782
9783         * threadpool.c: in 1.x, if you change the background status of the
9784         threadpool thread, it's not reset.
9785         Remove unnecessary calls to SetState.
9786
9787 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9788
9789         * threadpool.c: asynchronously create a set of idle threads upon first
9790         use of the threadpool. SetMinThreads will now start the appropriate
9791         number of idle threads if they are not already running. The default is
9792         1 threadpool thread per CPU. Increased the maximum number of threads
9793         per CPU to 10.
9794
9795 2008-10-22  Martin Baulig  <martin@ximian.com>
9796
9797         Revert r116521 from Zoltan, it breaks the debugger:
9798
9799         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9800         over the virtual methods of a class using metadata if possible, avoiding the
9801         creation of MonoMethod's for non-virtual methods.
9802         
9803         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9804         get_virtual_methods () to iterate over the virtual methods of classes.
9805
9806 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9807
9808         * threads.c: when creating a threadpool thread, set its state to
9809         'background'.
9810         * threadpool.c: reset the background state of a threadpool thread
9811         after finishing each work item
9812         Bug #437888 fixed.
9813
9814 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9815
9816         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9817         
9818         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9819         generic instances which works by inflating the methods in the container
9820         class's vtable.
9821
9822         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9823         variant which doesn't make a copy if no inflation was done.
9824         (mono_class_setup_fields): Use it.
9825
9826         * metadata.c (mono_metadata_get_shared_type): New helper function to
9827         return a shared instance of a given MonoType.
9828
9829         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9830         a copy of most non-generic types.
9831
9832 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9833
9834         * threadpool.c: remove one more GetSystemInfo () call.
9835
9836 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9837
9838         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9839         use the code in mono-proclib.h to get processor information.
9840
9841 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9842
9843         * appdomain.c: fixed the logic that determines whether assemblies in a
9844         directory are "shadow-copied" or not. Bug #433483 fixed.
9845
9846 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9847
9848         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9849         warning.
9850
9851 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9852
9853         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9854         returning a vtype.
9855
9856         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9857         reflection.c: Use mono_field_get_name () for accessing a field's name.
9858
9859         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9860         class.c
9861
9862         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9863         field.
9864
9865         * loader.c (find_method_in_class): Reenable the metadata optimization by
9866         not using it for generic instances.
9867
9868         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9869         data/def_type fields from MonoClassField into a separate structure.
9870         (struct MonoClassField): Remove data/def_type fields.
9871         (struct _MonoClass): Add a 'field_def_values' array to store the default
9872         values/RVA for fields.
9873
9874         * class.c reflection.c: Update after the changes.
9875         
9876         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9877         for accessing field->data.
9878
9879         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9880
9881         * loader.c (find_method_in_class): Revert the last change for now as
9882         it breaks Mono.C5 unit tests.
9883
9884         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9885         'field_generic_types' and 'field_objects' which contain the information
9886         previously stored in MonoInflatedField.
9887         (MonoInflatedField): Delete.
9888         (struct _MonoClassField): Delete 'generic_info' field.
9889
9890         * reflection.c: Store the information which was previously in 
9891         field->generic_info in MonoDynamicGenericClass instead.
9892
9893         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9894         MonoClassField changes.
9895
9896 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9897
9898         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9899         store the value inside the data array of the MonoMethodWrapper.
9900         This saves memory, is faster and fixes the lifetime issues (methods
9901         were never removed from the hash previously). May also fix bug#436996.
9902
9903 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9904
9905         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9906         generic instances, compute the type from the generic definition instead of
9907         looking in field->generic_info.
9908
9909         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9910         for inflated fields, the only user was get_fieldref_token () which no
9911         longer needs it.
9912
9913         * class.c (mono_class_init): Revert the last change as it seems to cause
9914         crashes.
9915
9916         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9917         bytes on 64 bit platforms.
9918
9919         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9920         
9921         * object.c (mono_class_create_runtime_vtable): Don't initalize
9922         field->data/field->def_type here, it is done lazily by 
9923         mono_class_get_field_default_value ().
9924
9925         * icall.c (ves_icall_get_enum_info): Call 
9926         mono_class_get_field_default_value () instead of directly accessing
9927         field->data and field->def_type.
9928
9929         * object.c (get_default_field_value): Ditto.
9930
9931         * class.c (mono_field_get_data): Ditto.
9932         
9933         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9934         call for generic instances.
9935
9936         * loader.c (find_method_in_class): If klass != from_class, then inflate
9937         the method with the context of from_class, since the caller assumes this.
9938
9939 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9940
9941         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9942         for accessing method->slot.
9943
9944 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9945
9946         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9947
9948 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9949
9950         * class.c (mono_method_get_vtable_index): Use
9951         mono_method_get_vtable_slot () for accessing method->slot.
9952
9953         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9954         accessing klass->methods.
9955
9956         * class.c (mono_method_get_vtable_slot): New helper function.
9957         (mono_class_get_vtable_entry): Ditto.
9958         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9959         accessing method->slot.
9960
9961         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9962         method to get_inflated_method ().
9963
9964         * class.c (mono_class_get_inflated_method): New helper method to obtain
9965         a method of an inflated class without calling setup_methods ().
9966         (mono_class_get_cctor): Use get_inflated_method.
9967
9968         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9969         
9970         * marshal.c image.c: Lazily create all the marshal caches.
9971
9972         * image.c (mono_image_init): Move initialization of runtime_invoke
9973         caches to marshal.c.
9974
9975         * marshal.c (get_cache): New helper function to lazily initialize a 
9976         wrapper cache.
9977         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9978
9979         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9980
9981 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9982
9983         * loader.c: fixed check for interface type.
9984
9985 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9986
9987         * appdomain.c: check for NULL setup before it's referenced.
9988
9989 p
9990 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9991
9992         * class.c: remove the unused old vtable setup code.
9993
9994 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9995
9996         * class.c: don't depend on interface order in
9997         setup_interface_offsets (bug #435777).
9998         * reflection.c: sort the InterfaceImpl table (patch from
9999         Jb Evain  <jbevain@novell.com>).
10000
10001 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
10002
10003         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
10004         the low level assemblies lock.
10005
10006 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
10007
10008         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
10009         object.c, reflection.c, socket-io.c, threads.c: introduced
10010         mono_framework_version () to return the major framewrok version,
10011         changed the code that was using more complex patterns to use it.
10012         Return the correct value for PlatformID for OSX.
10013
10014 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
10015
10016         * icall-def.h, process.h, process.c: added an icall to get info about
10017         processes using mono-proclib.
10018
10019 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
10020
10021         * mono-perfcounters.c: use the mono-proclib functions to
10022         access process information.
10023
10024 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10025
10026         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
10027         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
10028         reflection.c: remove rawbuffer usage: mmap support is more sanely
10029         provided by utils/mono-mmap.
10030
10031 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
10032
10033         * gc.c: use posix semaphores when possible so that
10034         mono_gc_finalize_notify() is signal safe.
10035
10036 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
10037
10038         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
10039         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
10040         be #ifdef-ed out, the linker will remove the rest.
10041
10042         * marshal.c: Implement DISABLE_COM.
10043
10044         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
10045
10046 2008-10-11  Miguel de Icaza  <miguel@novell.com>
10047
10048         * locales.c (string_invariant_compare_char): Optimization: do not
10049         call g_unichar_type unless we actually need the information.
10050
10051 2008-10-10  Mark Probst  <mark.probst@gmail.com>
10052
10053         * object.c, class-internals.h: Also create remoting trampolines
10054         for generic methods.  Pass the domain to the remoting trampoline
10055         creation function, too.
10056
10057 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
10058
10059         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
10060
10061 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10062
10063         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
10064         Vector4ui.
10065
10066 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
10067
10068         * assembly.c:
10069         * locales.c: remove the use of g_strdown. Fixes bug #322313.
10070
10071 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10072
10073         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
10074         for the least possible amount of time (extending the fix in r113458).
10075
10076 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10077
10078         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
10079
10080 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
10081
10082         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
10083         as possible simd intrinsic types.
10084         Optimized the test to check for the common prefix first.
10085
10086 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
10087
10088         * class.c: back out part of a broken optimization committed on
10089         May 23th (bug #433908).
10090
10091 2008-10-09  Mark Probst  <mark.probst@gmail.com>
10092
10093         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
10094         Win32.  Should fix #432388 for most cases until we have the new
10095         profiler on Win32.
10096
10097 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
10098
10099         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
10100         instead of using inst->id so the hash is stable for AOT.
10101
10102 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
10103
10104         * appdomain.c:
10105         * icall.c: create a .ini file for shadow-copied assemblies that
10106         contains the location of the original assembly. Use this to return the
10107         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
10108         Also fix the number of '/' for windows when returning the CodeBase.
10109         Fixes bug #430920.
10110
10111 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10112
10113         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
10114
10115         Code is contributed under MIT/X11 license.
10116
10117 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10118
10119         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
10120           if if the class vtable needs initialized.
10121
10122         Code is contributed under MIT/X11 license.
10123
10124 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10125
10126         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
10127           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
10128           STRING->BSTR, and CLASS->INTERFACE.
10129
10130         Code is contributed under MIT/X11 license.
10131
10132 2008-10-07  Marek Habersack  <mhabersack@novell.com>
10133
10134         * sysmath.h: changed the declaration of the
10135         ves_icall_System_Math_Round2 icall by adding an extra
10136         away_from_zero parameter.
10137
10138         * sysmath.c (ves_icall_System_Math_Round2): added support for
10139         away from zero rounding. The icall now takes an extra boolean
10140         parameter to signal that away from zero operation is requested.
10141
10142 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10143
10144         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10145         the delegate klass so it can work with full-aot.
10146         (mono_marshal_get_delegate_end_invoke): Ditto.
10147         (mono_marshal_get_delegate_invoke): Ditto.
10148
10149 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10150
10151         * gc.c, attach.h, attach.c: remove a bad pattern:
10152         add_finalizer_callback () is not implemented correctly, it can't
10153         without adding more overhead to the finalizer loop and it's not
10154         even needed, since we know exactly what we need to call, so there is
10155         no need to do so through an expensive function pointer.
10156
10157 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10158
10159         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10160         for the no-gc case.
10161         * attach.c (mono_attach_init): Remove the #ifdef.
10162
10163 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10164
10165         * attach.c (mono_attach_init): Don't use
10166         mono_gc_add_finalizer_thread_callback when compiling without GC.
10167         Fixes #432306.
10168         
10169         Code is contributed under MIT/X11 license.
10170
10171 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10172
10173         * class.c (mono_class_create_from_typedef): Remove the 
10174         #ifndef DISABLE_SIMD stuff.
10175
10176 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10177
10178         * class-internals.h (MonoClass): Added simd_type bit field.
10179
10180         * class.c (mono_class_create_from_typedef): Check if type is a simd
10181         intrinsic.
10182
10183 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10184
10185         * object.c (mono_method_add_generic_virtual_invocation): Only add
10186         instantiations to the thunk whose count is at least as large as
10187         the threshold.
10188
10189 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10190
10191         * icall.c: changed the Type of the exception thrown when trying to
10192         invoke a constructor on an abstract class. Part of the fix for bug
10193         #324185.
10194
10195 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10196
10197         * class.c, class-internals.h (mono_method_get_vtable_index): New
10198         function which returns the index into the vtable and properly
10199         handles inflated virtual generic methods.
10200
10201 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10202
10203         * object.c, domain.c, object-internals.h, domain-internals.h:
10204         Generalize IMT thunk machinery to also handle thunks for virtual
10205         generic method invokes.  When a virtual generic method is invoked
10206         more than a number of times we insert it into the thunk so that it
10207         can be called without lookup in unmanaged code.
10208
10209         * generic-sharing.c, class-internals.h: Fetching a
10210         MonoGenericInst* for a method from an (M)RGCTX.
10211
10212 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10213
10214         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10215         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10216         marshalling. Fixes #431304.
10217
10218 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10219
10220         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10221           handle when ref is specified without In or Out.
10222
10223         Code is contributed under MIT/X11 license.
10224
10225 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10226
10227         * loader.c (mono_get_method_constrained): Don't expand method with
10228         the class's context, because it's already a method of that class.
10229
10230 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10231
10232         * attach.c : should be correct build fix.
10233
10234 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10235
10236         * attach.c: Fix the previous change.
10237
10238 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10239
10240         * attach.c : quick w32 build fix.
10241
10242 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10243
10244         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10245         crashes MonoDevelop: #430455.
10246
10247 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10248
10249         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10250         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10251
10252         * domain.c: Remove initialization/cleanup of the removed fields.
10253
10254 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10255
10256         * class.c (mono_class_generic_sharing_enabled): Enable generic
10257         code sharing for PPC.
10258
10259 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10260
10261         * attach.c : Fixing the Windows builds.
10262
10263         Code is contributed under MIT/X11 license.
10264
10265 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10266
10267         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10268         the default generic sharing mode to 'all'.
10269
10270 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10271
10272         * generic-sharing.c, class-internals.h: New function for checking
10273         whether a method needs a static RGCTX invoke wrapper.  A few
10274         funtions moved from mini/generic-sharing.c.
10275
10276         * icall.c: New function used.
10277
10278 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10279
10280         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10281         Static RGCTX invoke wrapping applies to value type methods, too.
10282
10283         * class.c (mono_class_setup_vtable_general): In generic-shared
10284         value types, wrap methods with a static RGCTX invoke wrapper.
10285
10286 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10287
10288         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10289         osx build.
10290
10291 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10292
10293         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10294         register a callback which is called when the finalizer thread is woken
10295         up.
10296         (finalizer_thread): Call the callback if it exists.
10297
10298         * attach.h attach.c: New files, implementing the attach mechanism.
10299
10300         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10301         
10302         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10303         by the previous change.
10304
10305 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10306
10307         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10308         loader.c, marshal.c, metadata-internals.h, metadata.c,
10309         method-builder.c, object.c, reflection.c: introduced specific functions
10310         to allocate from the domain and image mempools and cleaned up most of
10311         the code to use them (still missing a few in reflection.c).
10312         Keep the loader bytes counter updated.
10313
10314 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10315
10316         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10317         loader-related counters.
10318
10319 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10320
10321         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10322         added more MS-compatible counters.
10323
10324 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10325
10326         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10327         class->blittable. Fixes #428217.
10328
10329 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10330
10331         * reflection.c (mono_image_get_field_on_inst_token): Call 
10332         field_encode_signature () since that handles custom modifiers too.
10333         Fixes #424663.
10334
10335 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * reflection.c (add_custom_modifiers): New helper function to merge custom
10338         modifiers stored in objects to a MonoType.
10339         (fieldref_encode_signature): Encode custom modifiers.
10340         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10341         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10342
10343 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10344
10345         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10346         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10347         64-bit IL only images because imports are not resolved for IL only images.
10348         Special thanks to Bill Holmes for finding this bug and testing the patch.
10349         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10350
10351         Contributed under MIT/X11 license.
10352
10353 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10354
10355         * mono-config.c (dllmap_start): Add support for the bits keyword
10356         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10357
10358 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10359
10360         * reflection.c (inflate_mono_method): When the class the method is
10361         to be inflated for is itself not inflated, just return the method.
10362
10363 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10364
10365         * mono-perfcounters.c: use more user friendly process instance names.
10366
10367 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10368
10369         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10370           handle "[in] ref" and "[in][out] ref" cases.
10371
10372         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10373           to mono_mb_create_method.  This was causing problems calling native to
10374           managed passing Variants by value.
10375
10376         Code is contributed under MIT/X11 license.
10377
10378 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10381         before accessing the friend_assembly_names field.
10382
10383         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10384         times.
10385         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10386         called lazily when it is needed.
10387
10388         * metadata-internals.h (struct _MonoAssembly): Add 
10389         'friend_assembly_names_inited' flag.
10390
10391 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10392
10393         * mono-perfcounters-def.h: fix the types of a few counters.
10394         * mono-perfcounters.c: implemented the instance names getter
10395         and a few bugfixes.
10396
10397 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10398
10399         * culture-info-table.h : regenerated.
10400
10401 2008-09-17  Robert Jordan  <robertj@gmx.net>
10402
10403         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10404         context bound objects. Fixes #415577.
10405
10406         Code is contributed under MIT/X11 license.
10407
10408 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10409
10410         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10411         implementation (bug #423582).
10412
10413 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10414
10415         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10416         is not set. Fixes #426309.
10417
10418 2008-09-16  Jb Evain  <jbevain@novell.com>
10419
10420         * class.c (mono_class_from_name): fix the exported type look up
10421         when the type is defined in a referenced assembly.
10422
10423 2008-09-16  Jb Evain  <jbevain@novell.com>
10424
10425         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10426         increment the next index counter on each iteration to make that work
10427         for more than one type forwarder. Unmanaged part to fix #422929.
10428
10429 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10430
10431         * object-internals.h: enum ComInterfaceType in
10432         MonoInterfaceTypeAttribute is guint32, not guint16.
10433
10434 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10435
10436         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10437         writing code.
10438
10439 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10440
10441         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10442         not gboolean.
10443
10444 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10445
10446         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10447         Endianness fixes for MonoSymbolFileOffsetTable.
10448
10449 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10450
10451         * process.c (complete_path) : Removing quotes from the 
10452           input path.  The glib file routines do not handle file paths
10453           that have quotes around them.
10454
10455         Code is contributed under MIT/X11 license.
10456
10457 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10458
10459         * socket-io.h : Adding a comment to provide locations where 
10460           changes to MonoSocketAsyncResult need to be synced.
10461
10462         Code is contributed under MIT/X11 license.
10463
10464 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10465
10466         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10467         parameters as well. Fixes #425001.
10468
10469 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10470
10471         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10472         windows build.
10473
10474 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10475
10476         * console-io.c: Add support for tracking the window size if it
10477         changes.
10478
10479         The setup is very simple: the TtySetup function will now return a
10480         pointer to a location in memory that tracks the current console
10481         size.  The managed code checks its current value every time its
10482         queried against the last value set, and updates accordingly.
10483
10484         With this setup we can work with multiple consoles, and we do not
10485         require to poke into managed code from a signal handler.
10486
10487         Additionally, the environment for COLUMNS and LINES is now handled
10488         in unmanaged code.
10489
10490         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10491
10492 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10493
10494         * marshal.c (mono_type_native_stack_size): Treat
10495         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10496
10497 2008-09-04  Jb Evain  <jbevain@novell.com>
10498
10499         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10500         to nullables.
10501
10502 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10503
10504         * verify.c (verify_type_compatibility_full): Revert change
10505         to allow converting a native int to unmanaged pointer be verifiable
10506         under non-strict mode.
10507         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10508
10509         * verify.c: Added some TODOs.
10510
10511 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10512
10513         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10514           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10515           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10516
10517         Code is contributed under MIT/X11 license.
10518
10519 2008-09-02  Jb Evain  <jbevain@novell.com>
10520
10521         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10522
10523 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10524
10525         reflection.c (typebuilder_setup_fields): Handle classes with
10526         explicit size.
10527
10528 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10529
10530         class.c (mono_class_setup_events): Add memory barrier due to
10531         double checked locking.
10532         
10533         class.c (mono_class_setup_properties): Same.
10534
10535 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10536
10537         * class.c (mono_class_is_assignable_from): Fix the build.
10538         
10539         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10540         before accessing klass->interface_bitmap. Fixes #421744.
10541
10542 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10543
10544         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10545         the runtime into no-exec mode, useful when running the AOT compiler.
10546
10547         * appdomain.c gc.c object.c: Avoid executing managed code when running
10548         in no-exec mode.
10549         
10550         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10551
10552         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10553         special case when the mono_assembly_loaded () returns NULL because the 
10554         search hook is not installed.
10555
10556 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10557
10558         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10559         crashes in bstr marshalling on linux.
10560
10561 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10562
10563         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10564         with more than one parameter.
10565
10566 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10567
10568         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10569         start/stop flow control as well when turning off ICANON (allows
10570         C-s and C-q to be read by Console.ReadKey).
10571
10572 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10573
10574         * class.c (mono_class_init): Move the initialization of nested classes
10575         into mono_class_get_nested_types (). Fixes #418433.
10576
10577         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10578         flag.
10579
10580         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10581         iterating tough the nested classes of a class.
10582
10583 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10584
10585         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10586         on arm.
10587
10588 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10589
10590         * console-io.c (sigcont_handler): Support signal chaining for
10591         SIGCONT.
10592
10593         (console_set_signal_handlers): Use best practices with sigaction,
10594         clear the structure before using it. 
10595
10596 2008-08-22  Robert Jordan  <robertj@gmx.net>
10597
10598         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10599         Fix the Windows build.
10600
10601 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10602
10603         * class.c (mono_class_generic_sharing_enabled): Make the default
10604         sharing mode 'corlib'.
10605
10606 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10607
10608         * console-io.c (console_set_signal_handlers): Fix a warning.
10609
10610         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10611         method normally, the JIT will take care of avoiding recursion.
10612
10613 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10614
10615         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10616
10617         Code is contributed under MIT/X11 license.
10618
10619 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10620
10621         * console-io.c (sigcont_handler): We need to restore the entire
10622         termios state, not only the original settings, as things like echo
10623         can be controlled after this (Booish exposes this issue with its
10624         own ReadLine implementation).
10625
10626         Additionally, we need to set the terminal back into keypad_xmit
10627         mode.
10628         
10629         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10630         string as a paramter as well.   Otherwise we get different
10631         keyboard sequences.
10632
10633 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10634
10635         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10636         delegates with byref out parameter passing. Fixes #351520.
10637
10638         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10639         a generic context.
10640         (mono_type_get_desc): Add the type arguments for GENERICINST.
10641         (mono_method_full_name): Stringify the class name using mono_type_full_name
10642         so it picks up generic arguments.
10643
10644 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10645
10646         * console-io.c: Removed debug output.
10647
10648 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10649
10650         reflection.c (mono_reflection_create_runtime_class): Alloc
10651         the nested classes linked list using the dynamic image mempool.
10652         Fixes leak in corlib compilation.
10653
10654 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10655
10656         * console-io.c: Fix incredibly annoying behavior on the console
10657         after resuming execution after control-z.   This affected every
10658         console application.
10659
10660 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10661
10662         * mempool-internals.h: Header for mono private mempool functions. The first
10663         two function are for allocating glib linked lists using pools.
10664
10665         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10666
10667         * Makefile.am: Added mempool-internals.h.
10668
10669 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10670
10671         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10672         (mono_domain_free): Ditto.
10673
10674         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10675         be used by the JIT to store its domain-specific information, instead of putting
10676         it directly into MonoDomain.
10677
10678         * domain.c (mono_install_create_domain_hook): New helper function to install
10679         a hook which initializes domain->runtime_info.
10680
10681         * domain.c (mono_install_free_domain_hook): Ditto.
10682         
10683 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10684
10685         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10686         asserting if the ares parameter is null.
10687
10688         * mono-perfcounters.c: Fix warnings.
10689
10690         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10691         is not needed, don't check for interruptions either.
10692         (mono_marshal_get_delegate_end_invoke): Ditto.
10693
10694 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10695
10696         * mono-perfcounters.c (predef_readonly_counter): added support for
10697         reading the ASP.NET Requests Queued counter from another process.
10698
10699 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10700
10701         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10702         MonoImage to simplify the AOT code.
10703
10704 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10705
10706         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10707         marshalling. Fixes #416078.
10708
10709 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10710         
10711         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10712         it is set, looking up the icall address is deferred to the JIT, since 
10713         in embedded scenarios, the icall might not be registered in the runtime
10714         doing the AOT compilation. Backported from the 2.0 branch.
10715
10716 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10717
10718         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10719         Fixes #415621.
10720
10721 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10722
10723         * Makefile.am: added support for cross-compilation.
10724
10725 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10726
10727         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10728
10729 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10730
10731         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10732
10733 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10734
10735         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10736         mono-perfcounters.c: performance counters implementation.
10737
10738 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10739
10740         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10741         to gpointer, letting the AOT code decide what to store in it.
10742
10743 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10744
10745         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10746           mono_class_setup_methods if the methods are not initialized.
10747
10748         Code is contributed under MIT/X11 license.
10749
10750 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10751
10752         * verify.c: Remove some debug code I commited by accident.
10753
10754         * verify.c (mono_method_is_valid_in_context): Change the return value
10755         to make possible to distinguish between invalid and unverifiable.
10756
10757         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10758         methods.
10759
10760 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10761
10762         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10763         constraints. Fixes regression in gtest-253.
10764
10765 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10766
10767         * verify.c (mono_verifier_verify_class): Don't allow generic types
10768         with explicit layout.
10769
10770         * verify.c (mono_method_verify): Check locals and argument types.
10771
10772 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10773
10774         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10775         wait if the thread is in StopRequested state.
10776
10777         * class.c (mono_class_from_name): Refactor the module searching code into
10778         a separate function so it can be reused in the AOT case too.
10779
10780 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10781
10782         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10783         Check both the type and it's generic type definition for loader errors.
10784         
10785         * verify.c (mono_method_is_valid_in_context): Don't generate another
10786         error when a type errors occur, this leads to the wrong exception been
10787         thrown.
10788
10789 2008-07-28  Dick Porter  <dick@ximian.com>
10790
10791         * icall-def.h
10792         * process.c
10793         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10794         New internal calls to duplicate and close a process handle.
10795
10796 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10797
10798         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10799
10800 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10803
10804 2008-07-27  Robert Jordan  <robertj@gmx.net>
10805
10806         * class.c (mono_class_init): Don't compute class.has_finalize for
10807         valuetypes. Fixes #412477.
10808
10809 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10810
10811         * verify.c: Implement constraint equivalence checking.
10812         This is required when a generic parameter is used as
10813         argument to a constrained one.
10814
10815         Fixes #410637.
10816
10817 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10818
10819         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10820
10821         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10822
10823         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10824         synch with managed object layout.
10825
10826 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10827
10828         * verify.c (do_branch_op): Handle valuetypes and generic
10829         arguments properly.
10830
10831         * verify.c (do_cmp_op): Same.
10832
10833         Fixes #410383.
10834
10835 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10836
10837         * generic-sharing.c: Fix memory leaks.
10838
10839         * class.c, class-internals.h: Make
10840         mono_class_inflate_generic_type_with_mempool() non-static.
10841
10842 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10843
10844         * pedump.c (dump_verify_info): Dump full class name.
10845
10846 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10847
10848         * generic-sharing.c: Removed some old code that didn't do anything.
10849
10850 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10851         * profiler.c: Added runtime_initialized_event,
10852         mono_profiler_install_runtime_initialized and
10853         mono_profiler_runtime_initialized. This new hook tells the profiler
10854         when the runtime is sufficiently initialized to be able to call
10855         mono_thread_attach on the root appdomain.
10856         * profiler.h, profiler-private.h: Likewise.
10857
10858 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10859
10860         * verify.c (do_cast): Do boxing for generic arguments as well.
10861
10862         * class.c (is_nesting_type): Drop generic instantiations before
10863         checking for nesting.
10864
10865         * class.c (can_access_instantiation): Allow access to generic
10866         arguments.
10867
10868 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10869
10870         * verify.c (verify_class_for_overlapping_reference_fields):
10871         On some cases, the field size might be zero, guard against that.
10872         Fix the explicit layout check to work as expected.
10873
10874 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10875
10876         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10877         mono_thread_resume () during shutdown, since the thread we want to abort
10878         might be suspended.
10879
10880 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10881
10882         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10883         warning.
10884
10885         * debug-mono-symfile.c: Fix a warning.
10886
10887         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10888
10889         * object.c (mono_class_vtable): Check if exception_type is set, and return
10890         NULL as defined by the function comments.
10891
10892 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10893
10894         * mempool.c: Use malloc for every single mempool allocation if the
10895         configure option is set.  This makes it easier to track mempool
10896         allocations with tools like Valgrind.
10897
10898 2008-07-22  Jb Evain  <jbevain@novell.com>
10899
10900         * reflection.c (create_dynamic_mono_image): emit the same
10901         metadata version that SL2 does when creating a SL2 image.
10902
10903 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10904
10905         * icall-def.h:
10906         * icall.c: New icall System.Enum:get_hashcode. This function
10907         avoids the overhead of boxing the enum to the underlying type.
10908
10909 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10910
10911         * reflection.c (mono_method_get_object): Don't let static RGCTX
10912         invoke wrappers get into MonoReflectionMethods.
10913
10914 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10915
10916         * object-internals.h:
10917         * object.c: New mono_runtime_class_init_full function
10918         that makes throwing the exception optinal.
10919
10920         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10921         for the case where the exception object is supplied.
10922
10923 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10924
10925         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10926         old ld versions.
10927
10928         Contributed under MIT/X11 license.
10929
10930 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10931
10932         * string-icalls.c (ves_icall_System_String_InternalSplit):
10933         Optimize array allocation by caching the MonoClass of the
10934         array type.
10935
10936         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10937
10938         * reflection.c (mono_param_get_objects): Same.
10939
10940 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10941
10942         * icall-def.h:
10943         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10944         It inflates the given type using the class context.
10945
10946 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10947
10948         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10949         the vtable if it already exists.
10950
10951         * object-internals.h: Add mono_class_try_get_vtable as part of the
10952         internal API.
10953
10954         * reflection.c (mono_type_get_object): Use the MonoObject from the
10955         vtable when possible. Reduces locking contention on reflection heavy
10956         code.
10957
10958 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10959
10960         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10961         g_bit_nth_msf () since that macro is not implemented in eglib.
10962
10963 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10966         on platforms which do not support it.
10967
10968 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10969
10970         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10971
10972 2008-07-11  Martin Baulig  <martin@ximian.com>
10973
10974         * mono-debug-debugger.h
10975         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10976
10977         * mono-debug-debugger.c
10978         (_mono_debugger_interruption_request): New global volatile variable.
10979         (mono_debugger_check_interruption): New public function.
10980
10981         * threads.c
10982         (mono_thread_current_check_pending_interrupt): Call
10983         mono_debugger_check_interruption().
10984         (mono_thread_interruption_checkpoint_request): Likewise.
10985
10986 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10987
10988         * verify.c: Add more type checks for loaded types. Verify the result
10989         handle from ldtoken.
10990
10991 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10992
10993         * loader.c (field_from_memberref): Don't crash if the field
10994         wasn't found.
10995
10996 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10997
10998         * verify.c: Verify if type and method instantiations
10999         don't have invalid VAR or MVAR arguments.
11000
11001 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11002
11003         * verify.c: Fix double free of function pointer list.
11004
11005 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11006
11007         * object.c (mono_string_to_utf8): Comment the new code as it
11008         breaks under eglib.
11009
11010 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
11011
11012         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
11013
11014 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11015
11016         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
11017           is not throw too many times.
11018
11019         Code is contributed under MIT/X11 license.
11020
11021 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11022
11023         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
11024         debugging is turned off.
11025
11026 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11027
11028         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
11029
11030 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11031
11032         * class-internals.h, class.c: Added new generic sharing option:
11033         Share only stuff in System.Collections.Generic, which is now the
11034         default.
11035
11036 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11037
11038         * generic-sharing.c, class-internals.h: New function for getting a
11039         generic method in a generic class given the corresponding method
11040         for a different instantiation of the class.  Partly refactored
11041         from mini-trampolines.c.
11042
11043         * class.c: Make sure generic methods have a class_inst if they are
11044         part of a generic class.
11045
11046         * metadata.c (mono_type_stack_size_internal): Handle type
11047         variables.
11048
11049 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11050
11051         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
11052         Signifies whether information on the this/vtable/mrgctx variable
11053         is available.
11054
11055 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11056
11057         * object.c, object-internals.h, icall.c: New function
11058         mono_delegate_ctor_with_method(), which does the same as
11059         mono_delegate_ctor(), but takes an explicit method argument
11060         instead of taking the method from the jit info.
11061
11062         * marshal.c: When creating a delegate with an inflated method take
11063         the "this" argument as the target class for the castclass.
11064
11065 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11066
11067         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
11068         mono_jit_info_table_find() to perform very badly in some cases.
11069
11070 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * icall.c (type_from_typename): Handle 'string'.
11073
11074         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
11075         wrappers into the wrapper_hash, since the key is not a MonoMethod.
11076
11077 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11078
11079         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
11080
11081         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
11082         number of available managed allocator types.
11083
11084         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
11085         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
11086
11087 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
11090         which is a low level lock protecting just the 'jit_code_hash' hash table.
11091
11092         * domain.c: Initialize+cleanup jit_code_hash_lock.
11093         
11094 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11095
11096         * coree.c (mono_load_coree): Set coree_module_handle global variable only
11097         after initialization.
11098
11099         * coree.h: Make MonoFixupExe internal.
11100
11101         Contributed under MIT/X11 license.
11102
11103 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11104
11105         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
11106         because that is platform independent. Check NumberOfRvaAndSizes in PE32
11107         as well.
11108         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
11109         image being loaded is a CLI image and _CorValidateImage gets called.
11110
11111         * coree.h: Add MonoLoadImage.
11112
11113         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
11114         instead of LoadLibrary.
11115
11116         Contributed under MIT/X11 license.
11117
11118 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
11119
11120         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
11121         for any primitive type.
11122
11123 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11124
11125         * object.c (mono_array_new_specific): Optimize this and the other allocation
11126         functions a bit.
11127         
11128         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
11129         domains too if mono_dont_free_domains is set.
11130
11131         * domain-internals.h (mono_dont_free_domains): New internal option controlling
11132         whenever to free appdomain data after it has been unloaded.
11133
11134         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11135         
11136 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11137
11138         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11139         (mono_method_get_equivalent_method): Fix a warning.
11140
11141         * object.c (mono_message_init): Avoid looking up array types for each call.
11142
11143 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11144
11145         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11146         call.
11147
11148         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11149         even more.
11150
11151         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11152         each iteration.
11153
11154         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11155         fields of an enum.
11156
11157 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11158
11159         * object.c (mono_value_box): Fix boxing of nullables.
11160
11161 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11162
11163         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11164         mono_module_handle that is defined by the linker; no initialization required.
11165         * coree.h: Remove mono_module_handle, add __ImageBase, update
11166         mono_image_open_from_module_handle.
11167         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11168         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11169         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11170         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11171         to 4 GB away from image base address. IA64 version is not tested but was very
11172         easy to implement and should work if we ever need it.
11173         * domain.c (mono_init_internal): Avoid system error message boxes.
11174         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11175         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11176         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11177         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11178         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11179
11180         Contributed under MIT/X11 license.
11181
11182 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11183
11184         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11185         as part of the private mono API.
11186         
11187         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11188         Do proper argument checking for methods that belong to generic classes.
11189         Do proper type resolution for GMFH/2.
11190         Fixes #377324.
11191         
11192 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11193
11194         * verify.c (do_switch): Fix a memory corruption bug with
11195         the jump index is out of bound.
11196
11197 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11198
11199         * verify.c: Disable debug code.
11200
11201 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11202
11203         * reflection.c (mono_image_get_methodbuilder_token): Use
11204         mono_image_get_methodspec_token_for_generic_method_definition
11205         instead of mono_image_get_memberref_token. We cache more memberef
11206         entries now.
11207
11208 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11209
11210         * verify.c: Inflate exception clause types.
11211         Fixes #402606.
11212         
11213 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11214
11215         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11216         name.
11217
11218         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11219
11220         * reflection.c (mono_image_create_method_token): Same.
11221
11222 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11223
11224         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11225         It does the same as mono_image_get_methodref_token but works on
11226         MethodBuilder.
11227
11228         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11229         and always generate a methodspec. This follows the old behavior and fixes
11230         the regressions in System.Core. 
11231
11232 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11233
11234         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11235         don't event mono_class_get () succeeds. Fixes #402182.
11236
11237 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11238
11239         * metadata-internals.h: Added MonoDynamicImage::methodspec
11240         hashtable to store methodspec tokens created for MethodBuilders.
11241
11242         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11243         MethodBuilders as open instantiations if a methodspec was requested.
11244
11245         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11246
11247         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11248
11249         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11250
11251         Fixes bug #349190.
11252
11253 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11254
11255         * loader.c (method_from_methodspec): Avoid crashing if the
11256         method lookup fails.
11257
11258 2008-06-20  Dick Porter  <dick@ximian.com>
11259
11260         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11261         classes being in a different assembly.  Fixes bug 399184.
11262
11263 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * loader.c (mono_loader_init): Make this callable multiple times.
11266         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11267         the runtime is initialized. Fixes #401755.
11268
11269 2008-06-19  Dick Porter  <dick@ximian.com>
11270
11271         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11272         Fixes bug 349688.
11273
11274 2008-06-19  Dick Porter  <dick@ximian.com>
11275
11276         * socket-io.c:
11277         * icall-def.h: Implement Socket generic Send() and Receive()
11278         methods.  Fixes bug 395168.
11279
11280 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11281
11282         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11283
11284         Contributed under MIT/X11 license.
11285
11286 2008-06-18  Martin Baulig  <martin@ximian.com>
11287
11288         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11289         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11290         set to 80.0.  The debugger <-> runtime interface is now frozen as
11291         well.   
11292
11293         * mono-debug.c
11294         (mono_debug_debugger_version): Bump to 4.
11295
11296 2008-06-18  Martin Baulig  <martin@ximian.com>
11297
11298         * debug-mono-symfile.c
11299         (load_symfile): Don't check the minor version.
11300
11301         * debug-mono-symfile.h: Bump the version number to 50.0.
11302
11303 2008-06-18  Martin Baulig  <martin@ximian.com>
11304
11305         * debug-mono-symfile.c
11306         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11307         minimum required version.
11308
11309 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11310
11311         * reflection.c (mono_custom_attrs_from_property): Fix support for
11312         retriveving cattrs of dynamic inflated generic types.
11313
11314         * reflection.c (mono_custom_attrs_from_event): Same.
11315
11316         * reflection.c (mono_custom_attrs_from_field): Same;
11317
11318         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11319
11320         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11321         Moved to metadata.c.
11322
11323         * metadata.c: New functions to retrive the equivalent field, event
11324         of property from the generic type definition.
11325
11326         * metadata-internals.h: Added new functions from metadata.c.
11327
11328 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11329
11330         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11331         to cached in a mempool is used.
11332
11333         * metadata.c (free_generic_class): In some situations field generic_info type
11334         is not properly dup'ed and leads to double free'ing.
11335
11336         Fixes #400643.
11337
11338 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11339
11340         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11341         this arguments (will be needed later for generic methods).
11342         Collect stats.
11343
11344 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11345
11346         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11347         Create a static RGCTX invoke wrapper for methods which require it.
11348
11349 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11350
11351         * object.c, class-internals.h: New function for checking whether
11352         an individual field is special static.
11353
11354 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11355
11356         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11357         linear search since the table is sorted.
11358
11359         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11360         Fixes #324180.
11361
11362 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11363
11364         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11365         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11366
11367         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11368
11369         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11370         
11371         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11372         InterlockedCompareExchange to query and modify 
11373         thread->interruption_requested.
11374
11375         * object-internals.h (struct _MonoThread): Change interruption_requested
11376         to a gint32 so it can be modified by atomic operations. Add 
11377         'critical_region_level' from the managed side, change small_id to a guint32,
11378         add new set of 'unused' fields.
11379
11380         * appdomain.c: Bump corlib version.
11381
11382 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11383
11384         * class.c (mono_class_from_name): Search modules as well. Fixes
11385         #322332.
11386
11387 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11388
11389         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11390         templates.  Templates are generalized with an additional type_argc
11391         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11392         have type_argc>0.
11393
11394         * domain-internals.h, domain.c: New hash table for looking up
11395         MRGCTXs.
11396
11397         * metadata.c, metadata-internals.h: Rename hash and equal
11398         functions for MonoGenericInst's and make them public.
11399
11400         * class-internals.h: New data structures for the MRGCTX.  Macros
11401         for distinguishing slots in the RGCTX and the MRGCTX.
11402
11403 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11404
11405         * object.c (mono_method_get_imt_slot): Put the same methods of
11406         different instantiations of the same generic interface in the same
11407         IMT slots, to make generic sharing simpler.
11408
11409 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11410
11411         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11412
11413         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11414         This function works just like mono_metadata_field_info, but
11415         accept a mempool as argument to be used allocating memory.
11416
11417         * marshal.c (mono_marshal_load_type_info): Use new function
11418         to load marshal data into image mempool.
11419
11420 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11421
11422         * class.c (mono_class_inflate_generic_type_with_mempool):
11423         This function allows to inflate a generic type using
11424         a mempool.
11425
11426         * class.c (inflate_generic_type): Take a mempool as argument
11427         and use it to do type dup'ing.
11428
11429         * class.c (mono_class_setup_fields): Field type for generic
11430         generic classes are allocated from the image mempool.
11431
11432         * metadata.c (free_generic_class): Inflated field type is
11433         now allocated in the image mempool.
11434
11435 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11436
11437         * threads.c (thread_cleanup): Free MonoThread::name.
11438
11439 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11440
11441         * appdomain.c (ensure_directory_exists): avoid unnecessary
11442         mkdir(2) calls when the shadow directory already exists.
11443         (mono_make_shadow_copy): copy also satellite assemblies from the
11444         private bin directories.
11445
11446 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11447
11448         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11449         
11450         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11451         a page boundary. Fixes #396219.
11452
11453 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11454
11455         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11456         due to double-checked locking.
11457
11458 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11459
11460         * assembly.c (build_assembly_name): Release memory on failure.
11461
11462         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11463
11464 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11465
11466         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11467         memory on failure.
11468
11469 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11470
11471         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11472         memory on failure.
11473
11474 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11475
11476         * loader.c (field_from_memberref): Check if field signature type is equal
11477         to the non-inflated type of the field. Fixes #398980.
11478
11479 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11480
11481         * assembly.c (mono_assembly_load_from_full): Call 
11482         mono_assembly_load_friends () outside the assemblies lock, since it can
11483         acquire the loader lock. Fixes #323696.
11484
11485         * reflection.c (resolve_object): Inflate the inst with the context for
11486         FieldOnTypeBuilderInst. Fixes #399010.
11487
11488 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11489
11490         * reflection.c (mono_image_get_field_on_inst_token): Don't
11491         inflate the field to encode it's signature. If it's a
11492         VAR or MVAR it should stay that way in the signature.
11493         Fixes #399047.
11494
11495 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11496
11497         * reflection.c (resolve_object): Release memory of inflated types.
11498
11499 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11500
11501         * loader.c (mono_method_get_signature_full): Remove assert about
11502         loading a methodspec to a generic method. We have such methods, such as
11503         System.Threading.Interlocked::CompareExchange<T>.
11504         This assert was removed since it crashes the verifier when it checks
11505         methods calling CompareExchange<T>.
11506
11507 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11508
11509         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11510         of Type array and not MonoType.
11511
11512 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11513
11514         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11515         <lupus@ximian.com>
11516
11517 2008-06-10  Martin Baulig  <martin@ximian.com>
11518
11519         * debug-mono-symfile.h
11520         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11521         changes to the file format, but we were generating incorrect
11522         source file indices in the line number table due to a bug, which
11523         made backtraces report an incorrect source file.
11524
11525 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11526
11527         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11528         mini/debug-mini.c to here.
11529
11530         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11531
11532         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11533         use it to release structs returned by mono_debug_find_method.
11534
11535 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11536
11537         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11538         since it needs to set method->slot for all interface methods.
11539
11540 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11541
11542         * class-internals.h: Forgot to add.
11543
11544 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11545
11546         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11547
11548         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11549         Lookup the custom attributes from property_hash.
11550
11551         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11552         in property_hash. Allocate all data using the image mempool.
11553
11554         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11555         for dynamic_custom_attrs to checks if the image is dynamic.
11556
11557 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11560         assemblies array.
11561         
11562         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11563         runtime functions while holding the domain assemblies lock.
11564
11565 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11566
11567         * verify.c: Reapplied the last bit of the reverted changes.
11568
11569 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11570
11571         * verify.c: Reapplied more of the reverted changes.
11572
11573 2008-06-09  Martin Baulig  <martin@ximian.com>
11574
11575         * debug-mono-symfile.c (load_symfile): Check the major version
11576         first; if it's wrong, don't print the minor version in the error message.
11577
11578 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11579
11580         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11581         lock instead of the domain lock to avoid deadlocks, since the thread might
11582         already hold the loader lock.
11583
11584         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11585         (mono_thread_attach): Ditto.
11586
11587         * monitor.c: Use a TLS variable for holding the current thread id instead
11588         of calling pthread_self ().
11589         (mono_monitor_init_tls): New internal function to initialize the TLS
11590         variable.
11591         (mono_monitor_try_enter_internal): Put the owner == id check after the
11592         owner == 0 check.
11593
11594         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11595         missed optimizations when using gcc-4.3.
11596
11597 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11598
11599         * reflection.c (mono_dynamic_image_free): Free the memory
11600         used by MonoGenericParam in MonoDynamicImage::gen_param.
11601
11602         * reflection.c (mono_reflection_setup_generic_class): Allocate
11603         container from mempool.
11604
11605         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11606         container from mempool.
11607
11608 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11609
11610         * threads.c (mono_set_pending_exception): New internal function to set the
11611         pending exception of the current thread.
11612         (mono_thread_get_and_clear_pending_exception): Check for 
11613         thread->pending_exception as well.
11614
11615         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11616
11617         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11618         it can trigger a collection.
11619
11620 2008-06-06  Martin Baulig  <martin@ximian.com>
11621
11622         Merged the `debugger-kahalo' branch.
11623
11624         * mono-debug.h
11625         (MONO_DEBUGGER_VERSION): Bumped to 72.
11626
11627         * debug-mono-symfile.h
11628         (MonoSymbolFileMethodIndexEntry): Removed.
11629         (MonoSymbolFileMethodEntry): New public typedef.
11630         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11631         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11632         `data_offset'.
11633         (MonoSymbolFileMethodEntry): Removed.
11634         (MonoSymbolFileLexicalBlockEntry): Removed.
11635         (MonoSymbolFileLineNumberEntry): Removed.
11636         (MonoDebugLexicalBlockEntry): Removed.
11637         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11638         removed `num_il_offsets' and `il_offsets'.
11639         (MonoSymbolFile): Replace `version' with `major_version' and
11640         `minor_version'.
11641         (MONO_SYMBOL_FILE_VERSION): Replace with
11642         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11643         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11644
11645         * debug-mono-symfile.c
11646         (mono_debug_symfile_lookup_location): Add support for the new line
11647         number table format.
11648
11649 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11650
11651         * metadata.c (free_generic_class): Release the inflated
11652         MonoClass of dynamic generic classes if it's not a generic
11653         type definition.
11654
11655 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11656
11657         * verify.c: Reapplied more of the reverted changes.
11658
11659 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11660
11661         * reflection.c (lookup_custom_attr): Clean the cached flag or
11662         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11663         for SRE types.
11664
11665 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11666
11667         * verify.c: Reapplied a small part of the reverted changes.
11668
11669 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11672
11673         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11674         previously in managed code.
11675         (mono_monitor_exit): Ditto.
11676         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11677
11678         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11679         the managed definition.
11680
11681 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11682
11683         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11684
11685 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11686
11687         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11688         
11689         * monitor.c: Add some micro optimizations.
11690
11691         * icall.c (type_from_typename): Handle 'bool'.
11692
11693 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11694
11695         * verify.c: Implement constructor verification per P III 1.8.1.4.
11696         Fixes #396716.
11697
11698 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11699
11700         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11701         holding the assemblies lock here too.
11702
11703 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11704
11705         * verify.c: Kill stack_top function.
11706
11707 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11708
11709         * verify.c: Kill stack_get function.
11710
11711 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11712
11713         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11714
11715 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11716
11717         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11718         more reliable.
11719
11720         * verify.c (mono_method_verify): Inflate params and locals to avoid
11721         mismatch when checking for compatibility.
11722
11723 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11724
11725         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11726         Length prefix should be size in bytes. Fix bug #339530.
11727         
11728         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11729         Length prefix should be size in bytes. Fix bug #339530.
11730
11731         Code is contributed under MIT/X11 license.
11732
11733 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11734
11735         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11736
11737         Contributed under MIT/X11 license.
11738
11739 2008-06-05  Martin Baulig  <martin@ximian.com>
11740
11741         * mono-debug-debugger.c
11742         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11743
11744 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11745
11746         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11747         while holding the assemblies lock to prevent deadlocks. Handle the case
11748         where the search hook returns NULL but the assembly was still loaded.
11749         Fixes #323696.
11750
11751         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11752         modify domain state.
11753
11754 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11755
11756         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11757         * Makefile.am (pedump_LDADD): Post-process object files and
11758         add dtrace-generated object file, if necessary.
11759
11760         Code is contributed under MIT/X11 license.
11761
11762 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11763
11764         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11765
11766 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11767
11768         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11769
11770 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11771
11772         * threads.c: Try to free everything from the delayed free table
11773         when shutting down threads, and set the variable to NULL after the
11774         table is freed so that calling
11775         mono_thread_hazardous_try_free_all() when shutting down the root
11776         domain doesn't crash.
11777
11778 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11779
11780         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11781         the caller if resulting type was inflated.
11782
11783         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11784         was inflated.
11785
11786         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11787
11788
11789 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11790
11791         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11792         class library tests.
11793
11794         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11795         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11796         #396989.
11797
11798 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11799
11800         * domain.c, domain-internals.h: The JIT infos are now freed by the
11801         JIT info table code.  They are freed immediately if there only a
11802         single JIT info table in circulation.  If there is more, the free
11803         is delayed via a queue.
11804
11805         * threads.c, threads-types.h: New hazard pointer function for
11806         freeing all freeable delayed items in one sitting.
11807
11808 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11809
11810         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11811
11812         * reflection.c (typebuilder_setup_properties): Same.
11813
11814         * reflection.c (typebuilder_setup_events): Same.
11815
11816 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11817
11818         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11819         and use it for allocating memory.
11820
11821         * reflection.c (mono_marshal_spec_from_builder): Same.
11822
11823         * reflection.c: Change code to use new signatures.
11824
11825         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11826
11827 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11828
11829         * decimal.c (rescale128): Put back one line which was accidently commented
11830         out.
11831         
11832         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11833         to cause crashes.
11834
11835 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11836
11837         * reflection.c (mono_reflection_generic_class_initialize): Name must
11838         be always malloc'ed so we can free it later on. Do this for field, property
11839         and event.
11840
11841         * metadata.c (free_generic_class): Free field, property and event names.
11842
11843 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11844
11845         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11846         instead of g_memdup.
11847
11848         * reflection.c (typebuilder_setup_fields): Same.
11849
11850 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11851
11852         * decimal.c (rescale128): Optimize this function a bit more.
11853
11854 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11855
11856         * metadata.c (free_generic_class): Release some memory from
11857         SRE generic classes.
11858
11859 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11860
11861         * reflection.c (mono_image_get_generic_field_token): No reference
11862         to name is kept, free it.
11863
11864         * reflection.c (mono_reflection_generic_class_initialize): Free
11865         more memory of the inflated field.
11866
11867 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11868
11869         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11870         code.
11871
11872 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11873
11874         * reflection.c (mono_dynamic_image_free): Release memory used by
11875         MonoDynamicImage::array_methods elements.
11876
11877         * reflection.c (assembly_add_win32_resources): Release memory after
11878         encoding.
11879
11880 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11881
11882         * decimal.c (log2_32): Use an optimized version for this function too.
11883         
11884         * decimal.c (log2_64): Fix this on 32 bit machines.
11885
11886 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11887
11888         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11889
11890         * class.c (mono_metadata_signature_deep_dup): Same.
11891
11892         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11893         a mempool.
11894
11895         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11896
11897         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11898
11899         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11900
11901         * class-internals.h: Update signatures to take a MonoMemPool.
11902
11903 2008-06-02  Dick Porter  <dick@ximian.com>
11904
11905         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11906         * icall-def.h: Add
11907         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11908         FormatMessage API to get the error text.  Fixes bug 321827.
11909
11910 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11911
11912         * decimal.c: Add some micro optimizations to make decimal operations faster.
11913
11914 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11915
11916         * reflection.c (method_encode_clauses): Take a mempool
11917         as parameter and use it to allocate the clause array.
11918
11919         * reflection.c (mono_image_get_field_on_inst_token): Free
11920         the inflated type after encoding it.
11921
11922         * reflection.c (mono_dynamic_image_free): Free each element
11923         of MonoDynamicImage::gen_params.
11924
11925         * reflection.c (reflection_methodbuilder_to_mono_method):
11926         Allocate the generic param array from the mempool.
11927         Allocate signature params from the mempool.
11928
11929         * reflection.c (mono_reflection_generic_class_initialize):
11930         Free inflated fields after been used.
11931
11932 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11933
11934         * icall.c: Reapply the memory leak fixes as they no
11935         longer make mono crash.
11936
11937 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11938
11939         * reflection.c (mono_type_get_object): Don't store the suplied
11940         MonoType with type_hash. A caller which pass a type that
11941         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11942         might end with a pointer to freed memory.
11943         The solution is to use byval_arg or this_arg from the associated
11944         MonoClass of the supplied type.
11945
11946 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11947
11948         * icall.c: Revert the rest of the last change as it breaks the build too.
11949
11950 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11951
11952         * icall.c: Revert a leak fix as it's breaking the build.
11953
11954 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11955
11956         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11957
11958 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11959
11960         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11961
11962 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11963
11964         * icall.c: Fix some memory leaks.
11965
11966 2008-05-29  Dick Porter  <dick@ximian.com>
11967
11968         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11969         async socket operations from the pending list when a socket
11970         closes.  Leaving it until the threadpool services the event
11971         exposes a race condition when a socket descriptor is reused.
11972         Fixes bug 377589.
11973
11974 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11975
11976         * object.c: Fix negative index check for array alocation.
11977
11978 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11979
11980         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11981         This check is performed by the verifier for IL created delegates
11982         and by Delegate::CreateDelegate for programatically created ones.
11983         Fixes #372406.
11984
11985 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11986
11987         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11988         Fix code to use mono_array_size_t instead of int.
11989
11990         Based on patch by Luis F. Ortiz.
11991         Contributed under X11 license.
11992         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11993
11994 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11995
11996         * icall.c: Added ves_icall_System_Array_GetLongLength and
11997         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11998         arrays.
11999
12000         * icall.h: Export both new functions.
12001
12002         Based on patch by Luis F. Ortiz.
12003         Contributed under X11 license.
12004         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12005
12006 2008-05-28  Martin Baulig  <martin@ximian.com>
12007
12008         The debugger now requires exactly r103463.
12009
12010         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
12011         This version is not supported by the debugger, wait for 72.
12012
12013 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12014
12015         * object.h: Changed array related functions to use
12016         mono_array_size_t instead of guint32. Forgot to commit this file.
12017
12018         Patch by Luis F. Ortiz.
12019         Contributed under X11 license.
12020         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12021
12022
12023 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12024
12025         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
12026         don't define it. Use the number literal instead.
12027
12028 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12029
12030         * icall.c: Changed array related functions to use
12031         mono_array_size_t instead of guint32.
12032
12033         * icall.c (ves_icall_System_Array_GetLength): Check for length
12034         overflow under MONO_BIG_ARRAYS.
12035
12036         Based on patch by Luis F. Ortiz.
12037         Contributed under X11 license.
12038         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12039
12040 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12041
12042         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
12043
12044         Based on patch by Luis F. Ortiz.
12045         Contributed under X11 license.
12046         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12047
12048 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12049
12050         * object.c, object.h: Changed array related functions to use
12051         mono_array_size_t instead of guint32.
12052
12053         Patch by Luis F. Ortiz.
12054         Contributed under X11 license.
12055         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12056
12057 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12058
12059         * object.h: Introduced mono_array_size_t typedef. This must be used
12060         in all places an array length is expected. This is 64bits wide if
12061         MONO_BIG_ARRAYS is enabled.
12062
12063         Patch by Luis F. Ortiz.
12064         Contributed under X11 license.
12065         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12066
12067 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12068
12069         * security-manager.c class.c: Set the class exception info by calling
12070         mono_class_set_failure ().
12071
12072         * class.c (mono_class_get_exception_data): New accessor function.
12073         (mono_class_set_failure): Store exception_data in the property hash.
12074
12075         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
12076         the struct as a property.
12077
12078         * loader.c (mono_get_method_full): Store the lookup result for method
12079         tokens in method_cache, the others in methodref_cache to decrease the memory
12080         usage of hash tables.
12081
12082         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
12083         (mono_image_init): method_cache is lazy inited now.
12084
12085         * metadata-internals.h (struct _MonoImage): Change method_cache to
12086         a MonoValueHashTable, add a separate methodref_cache.
12087
12088 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
12089
12090         * number-formatter.h: Fix tables to avoid arithemtic overflow in
12091           Double.ToString as exposed by Bug #383531.
12092
12093 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12094
12095         * number-formatter.h: Make some tables static.
12096
12097         * class.c (mono_method_set_generic_container): New accessor function.
12098         (mono_method_get_generic_container): Ditto.
12099
12100         * class-internals.h (struct _MonoMethod): Remove rarely used 
12101         'generic_container' field, store it in the property hash instead. Add 
12102         'is_generic' boolean field instead.
12103
12104         * image.c (mono_image_init): Initialize property_hash.
12105         (mono_image_close): Destroy property_hash.
12106
12107         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
12108         hold rarely used fields of runtime structures belonging to this image.
12109
12110         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
12111         to get/set method->generic_container.
12112
12113         * loader.c (mono_get_method_from_token): Avoid loading the method header for
12114         generic methods.
12115
12116 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
12117
12118         * class.c (mono_class_inflate_generic_method_full): Don't increase
12119         mono_stats.inflated_method_count for methods found in the cache.
12120
12121         * threads.c (mono_thread_request_interruption): Add a comment about 
12122         QueueUserAPC ().
12123
12124 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12125
12126         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
12127         interface_offsets_packed table.
12128         
12129         * class.c (mono_class_init): Remove some dead code.
12130
12131         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
12132         mono_class_setup_vtable () when CAS is active to detect security problems.
12133
12134 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12135
12136         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12137
12138         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12139         parameters as it's irrelevant for delegate checking.
12140
12141 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12144
12145         * class.c (mono_class_init): Control the creation of a generic vtable using
12146         a global which is true by default, but set to false by the runtime startup code.
12147         
12148         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12149         Disabled for now since it breaks the embedding API.
12150         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12151         (mono_class_setup_methods): Add a memory barrier.
12152
12153         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12154         when mono_class_init () doesn't compute the generic vtable.
12155         
12156 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12157         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12158         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12159         to support call chains (backtrace) in the stat profiler.
12160         * profiler.c, profiler-private.h: Likewise.
12161
12162 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12163
12164         * generic-sharing.c: Init generic class when a method of it is
12165         requested via a runtime generic context.
12166
12167 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12170
12171         * reflection.c (mono_type_get_object): Add a FIXME.
12172
12173         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12174
12175         * class.c (mono_class_get_method_by_index): New helper function, returning an
12176         entry in the class->methods array.
12177
12178 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12179
12180         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12181         Avoid creating a generic vtable for generic instances as well.
12182         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12183         generic instances.
12184
12185 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12186
12187         * loader.c (mono_get_method_constrained): Inflate the signature
12188         with class context. Fix #325283.
12189
12190 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12191
12192         * object.c (mono_class_create_runtime_vtable): Add a comment.
12193
12194         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12195         where needed.
12196         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12197         (mono_class_setup_vtable_general): Add an assert.
12198         (mono_class_init): Avoid creating a generic vtable for arrays.
12199
12200         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12201         here, let mono_class_init () do that.
12202
12203         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12204         interfaces in mscorlib.
12205
12206         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12207         interfaces. Add some comments.
12208         (mono_class_init): Call mono_class_setup_methods () here since it is no
12209         longer called by mono_class_setup_vtable ().
12210
12211         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12212         not set in class->vtable.
12213         (mono_class_create_runtime_vtable): Reenable the disabled code.
12214
12215         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12216         now as it causes some test failures.
12217
12218         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12219         if using the vtable trampoline. Also remove some strange code which put the
12220         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12221         stuff as it is no longer needed.
12222
12223 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12224
12225         * pedump.c: Give make --verify all option check code as well.
12226         Using --verify code won't check for metadata now.
12227
12228 2008-05-19  Martin Baulig  <martin@ximian.com>
12229
12230         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12231
12232         * mono-debug.c
12233         (_mono_debug_using_mono_debugger): New global variable; it's set
12234         directly by the debugger, so mono_debug_using_mono_debugger() also
12235         works after attaching.
12236
12237 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12238
12239         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12240         as we do double checked locking on MonoClass::runtime_info and
12241         MonoClassRuntimeInfo::domain_vtables.
12242
12243 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12244
12245         * debug-helpers.c (print_field_value): Fix a warning.
12246
12247 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12248
12249         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12250         set in the AOT case.
12251
12252 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12253
12254         * class.c (mono_class_setup_vtable_general): Use memory barriers
12255         as we do double checked locking on MonoClass::vtable.
12256
12257 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12258
12259         * reflection.c (resolve_object): Inflate only if the generic context
12260         is not null. Fixes #389886.
12261
12262 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12263
12264         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12265         instead of g_free.
12266
12267         Code is contributed under MIT/X11 license.
12268
12269 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12270
12271         * class.c: Revert unrelated change.
12272
12273 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12274
12275         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12276         a generic instantiation, use mono_class_from_mono_type instead of playing
12277         with MonoType directly.
12278
12279 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12280
12281         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12282         checks must ignore generic instantiations, so mono_class_has_parent is not
12283         suitable. Fixes #390128.
12284
12285 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12286
12287         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12288         it to avoid registering tokens during metadata generation. Fixes #390023.
12289
12290 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12291
12292         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12293         consistent.
12294
12295         Contributed under MIT/X11 license.
12296
12297 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12298
12299         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12300         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12301         to fixup the EXE image.
12302         (mono_cleanup): Use mono_close_exe_image.
12303         (mono_close_exe_image): New function.
12304         * image.c: Include "marshal.h".
12305         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12306         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12307         counting when the image is loaded outside of mono_image_open_full. Set status
12308         based on GetLastError.
12309         * coree.c: Include required headers. Add init_from_coree.
12310         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12311         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12312         (_CorExeMain): Set init_from_coree.
12313         (CorExitProcess): Only call ExitProcess for now.
12314         (CorBindToRuntimeEx): New stub implementation.
12315         (CorBindToRuntime): New function.
12316         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12317         (MonoFixupExe): ILONLY executables require no fixups.
12318         (mono_set_act_ctx): New function to set activation context.
12319         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12320         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12321         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12322         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12323         as MONO_INTERNAL.
12324         * domain-internals.h: Add mono_close_exe_image.
12325
12326         Contributed under MIT/X11 license.
12327
12328 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12329
12330         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12331         size for generic param and event tables. Fixes #388977.
12332
12333 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12334
12335         * loader.c (mono_method_signature): Use memory barriers because of the double
12336         checked locking pattern.
12337
12338         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12339         aborting or aborted as well. Fixes #376391.
12340         
12341         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12342         existing runtime state in the Suspend handler during shutdown.
12343
12344 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12345
12346         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12347
12348         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12349         which are starting up or shutting down.
12350
12351         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12352         this function never returns if the runtime is already shutting down.
12353
12354         * icall.c (ves_icall_System_Environment_Exit): Update after 
12355         mono_threads_set_shutting_down () signature change.
12356         
12357 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12358
12359         * class.c: Added can_access_instantiation to verify if the instantiation
12360         is visible. Fix access check for nested types as they returned TRUE
12361         before doing type and generic instantiation visibility checks.
12362
12363 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12364
12365         * reflection.c (mono_reflection_create_generic_class): The created type
12366         must have a different container from its TypeBuilder. Otherwise they
12367         will end sharing generic arguments, which is wrong.
12368
12369         Due to the sharing, making a generic instance of the created type using
12370         the TypeBuider generic arguments resulted in the generic type definition
12371         been returned, which is wrong as well.
12372
12373         As a bonus the code was leaking the type_params array. This memory should
12374         be allocated from the image mempool.
12375
12376         This fixes bug #354047.
12377
12378 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12379
12380         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12381         to here         as they are now used in assembly.c new code.
12382         Added a skipverification flag to MonoAssembly.
12383         New internal function mono_assembly_has_skip_verification.
12384
12385         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12386         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12387         part of #387274.
12388
12389 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12390
12391         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12392         needed. Fixes #387034.
12393
12394         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12395
12396 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12397
12398         * assembly.c (mono_assembly_load_reference): Prevent crash while
12399         disassembling Silverlight 2.0 executables while we still do not
12400         have GACed libraries.
12401
12402 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12403
12404         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12405
12406 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12407
12408         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12409         of the dynamic case. Fixes #387404.
12410
12411 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12412
12413         *verify.c (mono_verifier_is_class_full_trust): If under
12414         verify_all and the verifier mode was not set, only
12415         gac and corlib types are fulltrust. This makes --verify-all
12416         usable to detect unverifiable code, which is the expected
12417         use case.
12418
12419 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12420
12421         * verify.h: Ops, commited the header with debug
12422         enabled.
12423
12424 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12425
12426         * verify.c (merge_stack): Use the new value on unverifiable
12427         stack merges.
12428
12429         * verify.c (verify_type_compatibility_full): Comparison
12430         of nullable types can't use mono_class_is_assignable_from.
12431
12432         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12433         that makes all verification errors be reported.
12434
12435         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12436         mono_method_verify.
12437
12438 2008-05-05  Robert Jordan  <robertj@gmx.net>
12439
12440         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12441         support for value types. See #386415.
12442
12443         * object.c: comments.
12444
12445         Code is contributed under MIT/X11 license.
12446
12447 2008-05-05  Martin Baulig  <martin@ximian.com>
12448
12449         * debug-mono-symfile.h
12450         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12451         for old pre-terrania symbol files.
12452
12453 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12454
12455         * mono-config.c: Add ppc64 architecture.
12456
12457         Code is contributed under MIT/X11 license.
12458
12459 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12460
12461         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12462           PPC64 uses function descriptors as well.
12463
12464         Code is contributed under MIT/X11 license.
12465
12466 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * object.c (compute_class_bitmap): Ignore literal static fields.
12469
12470         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12471         var has an invalid format.
12472         (describe_ptr): Add some sanity checks for the vtable.
12473         (add_nursery_frag): Clear unused nursery fragments.
12474         (major_collection): Clear all remaining nursery fragments.
12475
12476 2008-05-03  Robert Jordan  <robertj@gmx.net>
12477
12478         * image.c, metadata-internals.h: add thunk_invoke_cache.
12479
12480         * marshal.c, marshal.h: implement
12481         mono_marshal_get_thunk_invoke_wrapper ().
12482
12483         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12484
12485         Code is contributed under MIT/X11 license.
12486
12487 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12488
12489         * verify.c (do_leave): Empty the stack.
12490
12491 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12492
12493         * class.c (mono_class_is_assignable_from): Variance
12494         doesn't work between reference and value types. For example,
12495         given type C<T+>, C<int32> is not assignable to C<object>.
12496         Break the argument checking loop on first error. 
12497
12498 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12499
12500         * icall.c : base64_to_byte_array() needs some more strict
12501           check for sequence of '=' characters. Patch by Santa
12502           Marta (http://deee.g.hatena.ne.jp/santamarta).
12503
12504           Contributed under MIT/X11 license.
12505           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12506
12507 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12508
12509         * domain.c: Disable LoadLibrary support to fix Win32 build.
12510
12511         Code is contributed under MIT/X11 license.
12512
12513 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12514
12515         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12516         to help with cache behaviour.
12517
12518 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12519
12520         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12521         method. 
12522
12523 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12524
12525         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12526
12527 2008-05-01  Dick Porter  <dick@ximian.com>
12528
12529         * process.c (process_get_fileversion): Only pass 16 bits of
12530         language ID to VerLanguageName.  Fixes bug 381204.
12531
12532 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12533
12534         * verify.c (mono_method_verify): Fix the comparison
12535         operator for code bounds check.
12536
12537 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12538
12539         * verify.c (mono_method_verify): Check the bounds of
12540         all access of the code array.
12541
12542 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12543
12544         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12545
12546 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12547
12548         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12549         not valid.
12550
12551 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12552
12553         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12554         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12555         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12556         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12557         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12558         mono_runtime_load.
12559         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12560         runtime initialization from metadata.
12561         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12562         (mono_set_rootdir): Use mono_get_module_file_name.
12563         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12564         handles.
12565         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12566         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12567         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12568         MonoCLIImageInfo. Add support for module handles.
12569         (load_cli_header): Update mono_cli_rva_image_map signature.
12570         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12571         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12572         (mono_image_rva_map): Add support for module handles.
12573         (mono_image_ensure_section_idx): Add support for module handles.
12574         (mono_image_close): Add support for module handles.
12575         (do_load_header): Add support for module handles.
12576         (mono_image_open_from_module_handle): New function for internal use.
12577         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12578         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12579         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12580         handles.
12581         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12582         * image.h: Add mono_image_fixup_vtable.
12583         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12584         support.
12585         * coree.h: New file.
12586         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12587         unsupported native code.
12588         (mono_marshal_set_callconv_from_modopt): New function splitted from
12589         mono_marshal_get_managed_wrapper.
12590         (mono_marshal_get_managed_wrapper): Use
12591         mono_marshal_set_callconv_from_modopt.
12592         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12593         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12594         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12595         that results in a deadlock when the runtime is loaded in _CorDllMain.
12596         * Makefile.am: Add coree.c and coree.h.
12597
12598         Contributed under MIT/X11 license.
12599
12600 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12601
12602         * generic-sharing.c: Search for type arguments in array element
12603         types as well.
12604
12605 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12606
12607         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12608
12609         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12610
12611         * object.c: Don't setup the RGCTX when the vtable is created,
12612         because we're setting it up lazily now.
12613
12614 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12615
12616         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12617         64 bit support.
12618
12619 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12620
12621         * verify.c (verify_class_for_overlapping_reference_fields): 
12622         If class is under fulltrust allow reference types to overllap
12623         if they have the same RVA.
12624
12625 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12626
12627         * pedump.c: Added new flag valid-only, that makes the verifier
12628         behaves just like --security=validil. It won't fail type load
12629         due to unverifiable restrictions.
12630
12631 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12632
12633         * class-internals.h (struct MonoMethod): Added a verification_success
12634         field to cache verifier executions. Reduced MonoMethod:slot size by
12635         one bit.
12636
12637 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12638
12639         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12640         instead of a 'vt' argument to save an indirection and to allow these to be used
12641         for valuetypes.
12642         (scan_vtype): New helper function to scan an area using a gc descriptor.
12643         (mono_gc_wbarrier_value_copy): Implement this.
12644         (handle_remset): Add support for REMSET_VTYPE.
12645         (find_in_remset_loc): Ditto.
12646         (mono_gc_base_init): Allow some debugging options to be controlled through the
12647         use of the MONO_GC_DEBUG env variable.
12648         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12649         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12650
12651 2008-04-23  Martin Baulig  <martin@ximian.com>
12652
12653         * domain.c (mono_domain_create): Move the call to
12654         mono_debug_domain_create() down, after allocating the domain id.
12655
12656 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12657
12658         verify.c (verify_class_for_overlapping_reference_fields): Skip
12659         static fields while verifying for overlapping fields as they
12660         don't matter at all.
12661
12662 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12663
12664         * domain-internals.h: added a declaration of
12665         mono_make_shadow_copy.
12666
12667         * assembly.c (mono_assembly_open_full): shadow copying of
12668         assemblies moved to here, so that all the assemblies within the
12669         application domain's private binary directories can be
12670         processed. Fixes bug #380546
12671
12672         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12673         mono_make_shadow_copy and made non-static. The decision whether
12674         to shadow-copy an assembly is made based on its location - it's
12675         copied if it's in one of the private application domain binary
12676         directories and its different to the target file in the shadow
12677         directory. Fixes bug #380546
12678
12679 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12680
12681         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12682
12683         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12684         types.
12685
12686         * reflection.c (mono_image_create_token): Handle 
12687         Method/ConstructorOnTypeBuilderInst.
12688         (resolve_object): Ditto.
12689         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12690         so it can be called from resolve_object. Also handle the case when the inflated
12691         class already has its methods setup.
12692
12693 2008-04-21  Martin Baulig  <martin@ximian.com>
12694
12695         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12696
12697 2008-04-20  Geoff Norton  <gnorton@novell.com>
12698
12699         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12700         pointer dereference.
12701
12702 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12703
12704         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12705         portability API to look up the assembly file. Fixes behavior in
12706         situations when the application has a bin/ directory, but the
12707         assembly search patch refers to Bin/ (and thus the requested file
12708         name is Bin/SomeLibrary.dll). Fixes bug #379888
12709
12710 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12711
12712         verify.c (mono_type_is_generic_argument): Extracted this check
12713         from a dozen places to here.
12714
12715         verify.c: Fixed all issues related to boxing generic arguments
12716         and their constraints.
12717
12718 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12719
12720         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12721
12722 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12723
12724         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12725         isn't finished yet. Fixes #363447.
12726
12727 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12728
12729         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12730         Fixes #346419.
12731
12732 2008-04-13  Jb Evain  <jbevain@novell.com>
12733
12734         * domain.c: update the 2.1 profile versions.
12735         Merged from the Moonlight 2 branch.
12736
12737 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12738
12739         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12740         mscorlibs for the non-refonly case as well.
12741
12742         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12743         in mono_assembly_load_from_full (). Fixes #378924.
12744
12745 2008-04-11  Geoff Norton  <gnorton@novell.com>
12746
12747         * icall.c: The global extern environ doesn't exist on Mac.  We
12748         need to call NSGetEnviron instead.
12749
12750 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12751
12752         verify.c: Add generic method constraint verification.
12753
12754 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12755
12756         class.c (mono_class_inflate_generic_method_full): Add a long
12757         explanation to the is_mb_open hack. Remove the FIXME.
12758
12759 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12760
12761         * verify.c (mono_method_verify): Mark all unknown opcodes
12762         as invalid. Mark jmp as unverifiable.
12763
12764 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12765
12766         * verify.c: Add code to do type constraint verification on class instances.
12767
12768         * verify.c (mono_verifier_verify_class): Use the type constraint 
12769         verification code.
12770
12771 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12772
12773         * class.c (mono_class_get_field_default_value): Don't pass cindex
12774         as hint to mono_metadata_get_constant_index. The local is not initialized
12775         and should contain garbage most of the time. This could only work
12776         with a lot of luck.
12777
12778 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12779
12780         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12781
12782 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12783
12784         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12785
12786         * class.c (mono_class_from_generic_parameter): Save the token of the
12787         generic param in MonoClass::sizes.generic_param_token.
12788
12789         * reflection.c (mono_custom_attrs_from_class): If the class type is
12790         VAR or MVAR retrieve the attributes of the generic param.
12791
12792 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12793
12794         * class.c (mono_class_init): Do class verification if the verifier
12795         is enabled.
12796
12797 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12798
12799         * verify-internal.h: Added mono_verifier_verify_class.
12800
12801         * verify.c: Added mono_verifier_verify_class. It checks for
12802         classes with explicit layout that have overlapping reference fields.
12803
12804         * pedump.c: Init the verifier state prior to verification. Fixed
12805         command line arguments.
12806
12807 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12808
12809         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12810
12811 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12812
12813         * verify-internals.h: Fix a warning.
12814
12815 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12816
12817         * verify-internals.h: New header with the verifier configuration
12818         extracted from mini.c.
12819
12820         * verify.c: Implemented the new functions exported by verify-internals.h.
12821
12822 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12823
12824         * verify.c: Add proper verification of ckfinite.
12825
12826 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12827
12828         * verify.c (do_conversion): Improved error message to something
12829         more meanfull.
12830
12831         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12832         with primitive types.
12833
12834 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12835
12836         * verify.c: Added tail prefix checking. Marked icall
12837         as unverifible.
12838
12839 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12840
12841         * verify.c: Fix the detection of branches to the middle
12842         of an instruction.
12843
12844 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12845
12846         * verify.c: Implemented verification of volatile. and
12847         unaligned. prefix. Check if a type is valid after retrieving it.
12848
12849 2008-04-01  Dick Porter  <dick@ximian.com>
12850
12851         * process.c (process_get_fileversion): If there's no string block,
12852         set the file language to en_US.  Fixes the other new part of bug
12853         374600.
12854
12855 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12856
12857         * class.c: New functions mono_method_can_access_field_full and
12858         mono_method_can_access_method_full. They perform type visibility
12859         and type site check.
12860
12861         * class-internal.h: Added exported functions.
12862
12863         * verify.c: Use new functions to implement proper visibility checks.
12864
12865 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12866
12867         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12868
12869 2008-03-28  Dick Porter  <dick@ximian.com>
12870
12871         * process.c (process_get_fileversion): Use the first language ID
12872         we see, rather than insisting on an invariant language.  Fixes bug
12873         374600.
12874
12875 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12876
12877         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12878         the streams to fix reading of invalid memory later.
12879
12880         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12881         to ease debugging.
12882
12883 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12884
12885         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12886         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12887
12888 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12889         * threads.h: Added MonoThreadManageCallback type and
12890         mono_thread_set_manage_callback prototype
12891         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12892         (used to store the mono_thread_manage callback).
12893         * threads.c: Added mono_thread_set_manage_callback, and handle
12894         "MonoThread->manage_callback" in build_wait_tids.
12895
12896 2008-03-26  Dick Porter  <dick@ximian.com>
12897
12898         * process.c (process_get_fileversion): Set FileVersionInfo strings
12899         to Empty when the resource doesn't have the particular info.
12900         Fixes bug 355717.
12901
12902 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12903
12904         * verify.c (mono_method_verify): Proper prefix validation.
12905
12906 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12907
12908         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12909         itself in a separate argument instead of throwing them. Fixes #373448.
12910
12911         * appdomain.c: Bump corlib version.
12912
12913 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12914
12915         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12916
12917 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12918
12919         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12920         version macros.
12921
12922 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12923
12924         * generic-sharing.c, class-internals.h: Code for putting
12925         reflection types into the runtime generic context.
12926
12927 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12928
12929         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12930         Fixes #340662. 
12931
12932
12933 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12934
12935         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12936
12937         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12938
12939         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12940
12941         * verify.c (do_cast): Let the result value keep the boxed status.
12942
12943         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12944
12945 2008-03-17  Jb Evain  <jbevain@novell.com>
12946
12947         * reflection.c: when running on a 2.0 runtime, emit
12948         unconditionally the #~ header version as 2.0, and the
12949         CLI header version as 2.5, for symmetry's sake with csc.
12950
12951 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12952
12953         * class.c: Remove the unused cache_interface_offsets stuff.
12954
12955         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12956         profiler.c: Fix warnings.
12957
12958 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12959
12960         * generic-sharing.c, class-internals.h: Support for putting
12961         methods into the runtime generic context.
12962
12963 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12964
12965         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12966         classes which are generic instances of not-yet finished typebuilders. Fixes
12967         #351172.
12968
12969         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12970
12971 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12972
12973         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12974
12975         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12976         field, replace it with a hash table in MonoDynamicImage.
12977
12978         * reflection.c (inflate_mono_method): Access the generic definition object from
12979         image->generic_def_objects instead of imethod->reflection_info.
12980
12981         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12982
12983         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12984         
12985         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12986         function in reflection.c so it is easier to keep in sync with the dynamic image
12987         creation code.
12988
12989         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12990         mono_image_close ().
12991
12992 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12993
12994         * class.c (mono_class_generic_sharing_enabled): Disable generic
12995         sharing for all architectures except AMD64 and x86 to fix build.
12996
12997 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12998
12999         * verify.c: Use the generic definition MonoGenericContext when available.
13000         Remove code for checking generics instance compatibility in favor of
13001         mono_class_is_assignable_from.
13002
13003 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13004
13005         * marshal.c, marshal.h, metadata-internals.h, image.c,
13006         wrapper-types.h: New wrapper for invoking a shared static method
13007         without having to pass the runtime generic context argument.
13008
13009 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13010
13011         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
13012
13013 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13014
13015         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
13016         
13017         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
13018         create a token from a FieldOnTypeBuilderInst.
13019         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
13020         (resolve_object): Ditto.
13021
13022         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
13023         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
13024
13025 2008-03-14  Martin Baulig  <martin@ximian.com>
13026
13027         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
13028
13029         * debug-mono-symfile.h
13030         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
13031         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
13032
13033 2008-03-10  Martin Baulig  <martin@ximian.com>
13034
13035         * debug-mono-symfile.h
13036         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
13037         `lexical_block_table_offset'.
13038         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
13039         `lexical_blocks'.
13040         (MonoSymbolFile): Added `version'.
13041
13042         * mono-debug.h
13043         (MonoDebugLexicalBlockEntry): Removed.
13044         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
13045         `lexical_blocks'.
13046
13047         * mono-debug.c (mono_debug_add_method): Don't compute lexical
13048         blocks here; the debugger now does this internally.
13049
13050 2008-02-27  Martin Baulig  <martin@ximian.com>
13051
13052         * object.c (mono_runtime_exec_main): Call
13053         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
13054         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
13055
13056 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13057
13058         * verify.c (verify_type_compatibility_full): Allow native int to be converted
13059         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
13060
13061 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13062
13063         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
13064         ldftn with a virtual method.
13065
13066 2008-03-13  Geoff Norton  <gnorton@novell.com>
13067
13068         * decimal.c:  Only include memory.h if the platform has it.
13069
13070 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
13071
13072         * assembly.c, class.c, metadata-internals.h: make sure public key
13073         tokesns are compared in a case-insensitive way. Also, all
13074         the lookups in the GAC use a lowercase public key token
13075         (gaacutil already does the lowercasing on install). Fixes
13076         bug #369541.
13077
13078 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
13079
13080         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
13081         and return value.
13082
13083 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
13084
13085         * image.c: when someone loads a mscorlib from a file, return the
13086         currently loaded mscorlib (fixes bug #369253).
13087
13088 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13089
13090         * class.c: handle types with no parents by forcing them to have
13091         System.Object as a parent and marking them as broken (this currently
13092         allows the first part of bug #369173 to work as well, likely because
13093         we don't check for typeload exceptions everywhere yet).
13094
13095 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
13096
13097         * class.c: more complete check that types belong to corlib
13098         (fixes second part of bug #369173).
13099
13100 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
13101
13102         * generic-sharing.c:  Including glib.h for the MSVC builds to define
13103           "inline" to "__inline" before including mono-membar.h.
13104           
13105         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
13106           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
13107           MSVC builds.
13108
13109         Contributed under MIT/X11 license.
13110
13111 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13112
13113         * verify.c (do_invoke_method): Remove return type validation.
13114
13115         * verify.c (do_ret): Do return type validation at return site instead of
13116         call site.
13117
13118 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13119
13120         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
13121
13122         * verify.c: Some todos cleaned and improved a few error messages.
13123
13124 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
13125
13126         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
13127
13128 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
13131         system types correctly.
13132
13133         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13134         function.
13135
13136 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13137
13138         * assembly.c (build_assembly_name): Fix a warning.
13139
13140 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13141
13142         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13143         the called function takes an object type argument. Fixes storing or
13144         valuetypes across remoting as well as reducing memory usage.
13145         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13146         stfld_remote wrapper caches.
13147
13148 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13149
13150         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13151         is not found.
13152
13153         * reflection.c (mono_image_register_token): New helper function to save
13154         a token->object mapping.        
13155
13156         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13157         managed code.
13158
13159         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13160         one dimension arrays. Fixes #367670.
13161         (mono_reflection_get_type_internal): Ditto.
13162
13163 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13164
13165         * marshal.c: mono_load_remote_field_new() always returns object.
13166         so use the proper signature (fixes bug #366445).
13167
13168 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13169         
13170         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13171         add an 'inline_failure' flag instead.
13172
13173 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13174
13175         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13176         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13177         contains the location of "this", used for exception handling.
13178
13179 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13180
13181         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13182         their size on all platforms for perf reasons.
13183
13184 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13185
13186         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13187         object-internal.h
13188
13189         * object-internal.h: Same.
13190
13191 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13192
13193         * reflection.h: Fix the build I just broke.
13194
13195 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13196
13197         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13198         Test if a token is valid, this remove explicit usage of 
13199         MonoDynamicImage::tokens from the verifier code.
13200
13201         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13202
13203         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13204         instead of direct access to MonoDynamicImage::tokens.
13205
13206 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13207
13208         * verify.c (token_bounds_check): Fix the build I just broke.
13209
13210 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13211
13212         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13213
13214         * verify.c (verifier_load_method): Fixed the errors message.
13215
13216         * verify.c (mono_method_verify): Fixed a debug message.
13217
13218 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13219
13220         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13221         mono-perfcounters.h, class-internals.h: support for predefined
13222         writable counters, query of categories and counters, bugfixes.
13223
13224 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13225
13226         * verify.c (do_refanytype): Verify the refanytype opcode.
13227
13228         * verify.c (mono_method_verify): Use do_refanytype.
13229
13230 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13231
13232         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13233
13234         * verify.c (mono_method_verify): Use do_mkrefany.
13235
13236 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13237
13238         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13239         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13240         implementation.
13241
13242 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13243
13244         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13245         the type load exception.
13246
13247 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13248
13249         * verify.c: Added a few FIXME for method signatures
13250
13251         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13252         of mono_method_get_signature and get vararg call working. Removed unused
13253         checks for return value.
13254
13255         * verify.c (do_refanyval): Verify the refanyval opcode.
13256
13257         * verify.c (mono_method_verify): Implemented verification of arglist and
13258         use do_refanyval.
13259
13260 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13261
13262         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13263         vtypes to marshal.c.
13264
13265         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13266         it works for AOT as well.
13267
13268 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13269
13270         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13271         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13272         the system time is adjusted.
13273
13274 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13275
13276         * icall.c, icall-def.h: use the new time functions (fixes the
13277         non-monotonic behaviour of TickCount).
13278
13279 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13280
13281         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13282         it breaks the build.
13283         
13284         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13285         cattr is not finished yet.
13286
13287 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13288
13289         * verify.c: Proper token validation for field, method and type.
13290
13291 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13292
13293         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13294
13295         * loader.c (method_from_memberref): Generate type load error instead of method missing
13296         if the type is not found.
13297
13298 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13299
13300         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13301         some of the conversions caused the generation of a marshal directive exception.
13302
13303 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13304
13305         verify.c: Report which exception should be thrown by the JIT.
13306         Added a lot of FIXME notes.
13307
13308 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13309
13310         * generic-sharing.c: Runtime generic context slots are not
13311         instantiated on init anymore.  Instead, provide function to do the
13312         instantiating on demand.
13313
13314         * class-internals.h: Added vtable to runtime generic context.
13315         Macros for encoding direct and indirect slot offsets in one
13316         guint32.
13317
13318 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13319
13320         * object.c, generic-sharing.c: Moved some generic sharing code
13321         from object.c to generic-sharing.c.
13322
13323         * generic-sharing.c: Added support for extensible runtime generic
13324         context.
13325
13326         * metadata-internals.h: Two new hash tables in MonoImage for
13327         extensible runtime generic context support.
13328
13329         * domain.c: Unregister generic vtables upon domain unloading.
13330
13331         * image.c: Destroy new hash tables upon image unloading.
13332
13333         * metadata.c: Unregister generic subclasses upon image unloading.
13334
13335         * class-internals.h: New data structure for runtime generic
13336         context template.  New fields in the runtime generic context for
13337         extensible part.
13338
13339         * Makefile.am: Added generic-sharing.c.
13340
13341 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13342
13343         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13344         there is a pending loader exception, raise it.
13345
13346         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13347         same.
13348
13349         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13350         same.
13351
13352         Fixes #363450.
13353
13354 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13355
13356         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13357
13358         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13359         
13360         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13361         ref-only requests for compatibility with MS.
13362
13363 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13364
13365         * reflection.c (mono_custom_attrs_from_method): Don't silently
13366         return an empty list for generic method instances.
13367         (mono_custom_attrs_from_param): Likewise.
13368
13369 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13370             Raja R Harinath  <harinath@hurrynot.org>
13371
13372         Fix #354757
13373         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13374         * class.c (mono_class_inflate_generic_method_full): Initialize it
13375         when a fully-open method is instantiated.
13376         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13377         to new field.
13378         * reflection.c (inflate_mono_method): Don't create a temporary context.
13379
13380 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13381
13382         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13383         Compute correct value, to prepare for imethod->reflection_info going away.
13384
13385 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13386
13387         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13388
13389 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13390
13391         * verify.c: Implement skip visibility flag.
13392
13393 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13394
13395         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13396         which contains an extra field to tell the kind of exception that should be thrown.
13397
13398         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13399
13400 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13401
13402         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13403         'method' is updated.
13404
13405 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13406
13407         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13408         explicit layout as well. Fixes #360375.
13409
13410 2008-02-11  Geoff Norton  <gnorton@novell.com>
13411
13412         * loader.c: Guard and dereference against inflated generic methods
13413
13414 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13415
13416         * class.c: Include Retargetable spec in assembly name.
13417         * assembly.c: Always include PublicKeyToken spec in assembly name
13418         (with value "null" if assembly is not signed), and include
13419         Retargetable spec.
13420         * icall-def.h: Added icall for Assembly.get_fullname.
13421         * icall.c: Added icall returning the fullname of an assembly.
13422
13423 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * class.c (mono_class_setup_vtable_general): Add a missing call to
13426         mono_class_setup_methods () which is needed in the AOT case.
13427
13428 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13429
13430         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13431         stack type of the given MonoType.
13432
13433         * verify.c (verify_type_compatibility_full): Handle the void type.
13434
13435         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13436         way stack merging works.
13437
13438         * verify.c (store_local): Improved verification message.
13439
13440         * verify.c (do_branch_op): If the merging is invalid, the method
13441         is unverifiable and not invalid. Improved error message.
13442
13443         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13444         a reference type diferent than System.Object. Improved error
13445         message.
13446
13447 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13448
13449         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13450
13451         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13452         type of an enum even if the argument is byref.
13453
13454         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13455         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13456
13457         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13458
13459         *verify.c (verify_type_compatibility_full): Make enum types
13460         compatible with their base types.
13461
13462         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13463         types are compatible for the special case of a boxed valuetype and
13464         System.Object.
13465
13466         * verify.c (verify_stack_type_compatibility): The function
13467         is_compatible_boxed_valuetype was extracted from here.
13468
13469         * verify.c (push_arg): Only set ctx->has_this_store if the method
13470         is not static.
13471
13472         * verify.c (do_ldelem): Fixed a typo in an error message and added
13473         strict check for mixing int32 and native int as the array type
13474         and ldelem type.
13475
13476         * verify.c (merge_stacks): Consider boxed valuetypes in the
13477         compatibility checks.
13478
13479 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13480         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13481
13482 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13483         *class.c: use_new_interface_vtable_code: renamed the env var to have
13484         a "MONO_" prefix, and fix the logic to enable it by default.
13485
13486 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13487         *class.c:
13488         mono_class_setup_vtable_general: rewrote the way in which interface
13489         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13490         makes the code more maintainable.
13491         For now the old code is still there, and can be activated setting
13492         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13493
13494 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13495
13496         * verify.c: guarded some debug functions around and #ifdef.
13497
13498         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13499
13500 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13501
13502         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13503         changes for now since they seem to break too many things.
13504
13505 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13506
13507         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13508         mono_marshal_find_nonzero_bit_offset): Added macro and function
13509         for finding the byte- and bit-offset of a bitfield within a
13510         struct.
13511
13512 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13513
13514         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13515         (mono_marshal_get_struct_to_ptr): Ditto.
13516
13517         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13518         cctor_signature.
13519
13520 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13521
13522         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13523         between methods for non-corlib types.
13524
13525 2008-02-02  Geoff Norton  <gnorton@novell.com>
13526
13527         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13528         generic parameters as well. (Fixes #342536)
13529
13530 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13531
13532         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13533
13534         * verify.c (do_invoke_method): Fix for calling with byref structs.
13535
13536         * verify.c (do_cast): push a boxed value type based on the type token and not
13537         the type of stack.
13538
13539 2008-01-31  William Holmes  <billholmes54@gmail.com>
13540
13541         * process.c (process_module_string_read): Check the size returned form 
13542           VerQueryValue to avoid out of memory exception. 
13543
13544 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13545
13546         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13547         Handle properly modules which are not in the moduleref table. Fixes
13548         #356938.
13549
13550 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13551
13552         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13553         the dynamic case which is now in managed code.
13554         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13555
13556         * marshal.c (mono_string_to_bstr): Fix a warning.
13557         (init_com_provider_ms): Ditto.
13558
13559         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13560
13561         * exception.c (mono_get_exception_out_of_memory): New helper function.
13562
13563 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13564
13565         * marshal.c: Add support for BSTR marshalling
13566         using other COM systems.
13567
13568         Code is contributed under MIT/X11 license.
13569
13570 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13571
13572         * object.c (mono_runtime_invoke_array): reverted previous
13573         commit as it breaks the build.
13574
13575 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13576
13577         * object.c (mono_runtime_invoke_array): Verify arguments for
13578         invalid types. Fixes #348522.
13579
13580 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13581
13582         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13583         non-final virtual calls using call. 
13584
13585         * verify.c (do_invoke): fixed some TODOs.
13586
13587         * verify.c (push_arg): set has_this_store for "ldarga 0".
13588
13589 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13590
13591         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13592         which belong to an inflated class. Fixes #356531.
13593
13594 2008-01-26  Robert Jordan  <robertj@gmx.net>
13595
13596         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13597         which resort to FindFirstFile when a certain error condition
13598         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13599         Code is contributed under MIT/X11 license.
13600
13601 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13602
13603         * marshal.c (emit_marshal_string): Fix out string marshalling
13604         to use specified encoding. Fixes #323900.
13605
13606         Code is contributed under MIT/X11 license.
13607
13608 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13609
13610         * class.c (mono_class_inflate_generic_method_full): Don't modify
13611         iresult->context after cache check.
13612
13613 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13614
13615         * class.c (mono_class_inflate_generic_method_full): Change the
13616         struct assignments to memcpy for better visibility and add some comments.
13617
13618 2008-01-23  Dick Porter  <dick@ximian.com>
13619
13620         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13621         procedure, and make it work on windows.
13622
13623 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13626         a MonoReflectionTypeBuilder since it is always of that type.
13627
13628         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13629
13630         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13631
13632         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13633         
13634         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13635
13636         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13637
13638         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13639         instantiations from the type cache.
13640
13641 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13642
13643         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13644
13645         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13646
13647 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13648
13649         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13650
13651         * verify.c (mono_method_verify): removed old TODO
13652
13653 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13654
13655         * verify.c (do_newobj): add visibility check.
13656
13657 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13658
13659         * verify.c (do_load_function_ptr): add visibility check.
13660
13661 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13662         *class.c:
13663         mono_generic_class_get_class: hook profiler events.
13664         mono_field_get_offset: added to support heap-shot in the new profiler.
13665         *class.h: exported mono_field_get_offset.
13666         * reflection.c:
13667         mono_reflection_setup_internal_class: hook profiler events.
13668
13669 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13670
13671         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13672         argument here too and use it to avoid checking for pending exceptions if 
13673         possible.
13674
13675 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13676
13677         * assembly.c (build_assembly_name): add arg for passing the assembly
13678         flags. Do not consider a PublicKey with value "null" valid.
13679         (mono_assembly_name_parse_full): added boolean argument that will be
13680         set if the assembly name contains a PublicKeyToken spec. Added support
13681         for the Retargetable spec for which only Yes or No are allowed as valid
13682         value. Consider assembly name invalid if Retargetable spec is set, but
13683         either version, culture or public key (token) are not specified.
13684         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13685         with implementation in assembly.c.
13686         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13687         from MonoAssemblyName.
13688         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13689         introduced argument for mono_assembly_name_parse_full to know if the
13690         assembly name has a PublicKeyToken spec, and if it has instruct
13691         fill_reflection_assembly_name to use default value for keyToken (if
13692         PublicKeyToken is null).
13693
13694 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13695
13696         * verify.c (mono_method_verify): fixed ovf ops with
13697         float values. They are unverifiable now.
13698
13699 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13700
13701         * class.c (set_failure_from_loader_error): add BadImageException to the
13702         list of exceptions that can cause a type to fail to load.
13703
13704         * class.c (mono_class_get_exception_for_failure): same.
13705
13706 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13707
13708         * verify.c (in_any_exception_block): added, check if offset
13709         is part of any exception handling clause.
13710
13711         * verify.c (get_stack_type): added VAR and MVAR types.
13712
13713         * verify.c (do_stobj): better error messages.
13714
13715         * verify.c (do_cpobj): added, check cpobj.
13716
13717         * verify.c (do_initobj): added, check initobj.
13718
13719         * verify.c (do_sizeof): added, check sizeof.
13720
13721         * verify.c (do_localloc): added, check localloc.
13722
13723         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13724
13725 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13726
13727         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13728         save_lmf/restore_lmf opcodes.
13729
13730         * threads.c (mono_threads_install_notify_pending_exc): New function to
13731         install a callback notifying the JIT there is a pending exception on a thread.
13732         (mono_thread_request_interruption): Call the new callback.
13733         (mono_thread_get_and_clear_pending_exception): New function to return the
13734         exception pending on a thread.
13735
13736         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13737         to turn off checking for pending exceptions.
13738         (mono_marshal_get_native_wrapper): Ditto.
13739
13740 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13741
13742         * threads-types.h: Get rid of the unnecessary extern declarations.
13743
13744 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13745
13746         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13747         return field from parent class if not private.
13748         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13749         returns fields from parent class if they are not private.
13750         (method_nonpublic): added function to determine if a given method
13751         should be considered non-public. Returns false for private methods
13752         on parent class, and internal methods from parent on the 1.0 profile.
13753         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13754         use method_nonpublic function to determine whether method should be
13755         returned.
13756         (property_accessor_public): use newly introduced method_nonpublic
13757         function to determine whether accessor is non-public. 
13758         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13759         event from parent class if not private. Only return static event if
13760         Static flag is set, and only return static event from parent class if
13761         FlattenHierarchy flag is set.
13762         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13763         include non-private events from parent class.
13764
13765 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13766
13767         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13768         warning.
13769
13770 2008-01-16  Wade Berrier <wberrier@novell.com>
13771
13772         * security.c: Add assembly.h header to appease some warnings
13773
13774 2008-01-16  Dick Porter  <dick@ximian.com>
13775
13776         * process.c (process_module_string_read): Remove trailing null
13777         when saving string.
13778
13779 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13780
13781         * class-internals.h: A new data structure describing the layout of
13782         a runtime generic context (MonoRuntimeGenericContextTemplate).
13783
13784         * metadata-internals.h: Added a hash table to MonoDomain that maps
13785         from open generic classes to their runtime generic context
13786         templates.
13787
13788         * object.c: Building of the runtime generic context, including
13789         proper handling of generic type arguments of superclasses.
13790         Building of the runtime generic context according to the template.
13791
13792 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13793
13794         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13795         Fixes #350856.
13796
13797         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13798         mono_portability_find_file (). Fixes #325466.
13799         (mono_image_get_public_key): Fix a warning.
13800
13801 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13802
13803         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13804         Fixes #353550.
13805         (mono_class_from_name_case): Ditto.
13806
13807 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13808
13809         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13810           common storage for the tables used in the System/NumberFormatter class.
13811
13812 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13813
13814         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13815
13816 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13817
13818         * verify.c (get_boxable_mono_type): check if the token is valid.
13819
13820         * verify.c (set_stack_value): changed to add an error if an
13821         invalid type is set on stack. Changed all callers due to signature change.
13822
13823         * verify.c (do_stobj): implement stobj validation.
13824
13825 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13826
13827         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13828         set container->is_method, it was set earlier.
13829
13830         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13831         generic methods.
13832
13833         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13834         is_method of the generic container to TRUE for methods.
13835
13836 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13837
13838         * metadata.c (type_in_image): Handle type parameters properly.
13839
13840         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13841         memory ownership of this structure.
13842
13843 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13844
13845         * verify.c (get_boxable_mono_type): make typedref types been just
13846         unverifiable. check for void type.
13847
13848         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13849
13850         * verify.c (do_load_function_ptr): accept method spec tokens.
13851
13852 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13853
13854         * marshal.c (mono_class_native_size): Always set *align even if this is called
13855         recursively.
13856
13857 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13858
13859         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13860         out-of-date.
13861
13862 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13863
13864         * verify.c: removed some old unused tables. A huge bunch of small fixes
13865         to things found while testing the verifier with mono basic.
13866
13867         * verify.c (dump_stack_value): dump null literal flag to.
13868
13869         * verify.c (verify_type_compatibility_full): fix comparison
13870         for types that have a generic super type.
13871
13872         * verify.c (verify_stack_type_compatibility): fix compatibility
13873         between null literals and reference types. fix compatibility between
13874         boxed valuetypes and object. fix corner case test for enums.
13875
13876         * verify.c (do_cmp_op): proper verification of cgt.un in case
13877         of reference types.
13878
13879         * verify.c (do_invoke_method): fix error message.
13880
13881         * verify.c (do_store_indirect
13882
13883         * verify.c (check_is_valid_type_for_field_ops): proper verification
13884         of managed pointers to valuetypes and boxed valuetypes. proper verification
13885         of null literals.
13886
13887         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13888         allow token to be a reference type.
13889
13890         * verify.c (do_cast): proper handling of boxes valuetypes.
13891
13892         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13893         in object[].
13894
13895         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13896         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13897         fixed the decoding of unbox_any
13898
13899 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13900
13901         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13902
13903 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13904
13905         * verify.c (do_newobj): do delegate verification.
13906
13907         * verify.c (verify_delegate_compatibility): perform delegate
13908         verification.
13909
13910         * verify.c (verify_ldftn_delegate): perform tests related to
13911         ldftn delegates.
13912
13913         * verify.c (mono_delegate_signature_equal): perform the
13914         slightly diferent signature comparison required by delegates.
13915
13916         * metadata.c (mono_metadata_type_equal_full): added and exported
13917         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13918         allows signature only comparison.
13919
13920         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13921         as MONO_INTERNAL.
13922
13923 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13924
13925         * verify.c: added a bunch of stack_slot_* functions to
13926         make access to stack slot type easier. This is required to
13927         allow optional flags, like null literal, boxed value and
13928         this pointer.
13929         All access paths to IlStackDesc::stype have been changed 
13930         to use these new funcions.
13931         Removed a bunch of unused functions and cleared all warnings.
13932         This patch introduces the usage of the this pointer and 
13933         boxed value flags.
13934
13935 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13936
13937         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13938
13939 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13940
13941         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13942         match managed version.
13943
13944         * appdomain.c: Bump corlib version.
13945         
13946         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13947         argument.
13948
13949 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13950
13951         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13952         Set public key token to zero-length byte array if assembly is not
13953         strongnamed.
13954
13955 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13956
13957         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13958         writing a vtype array elem.
13959
13960 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13961
13962         * assembly.c (build_assembly_name): return FALSE if length of token is
13963         not 16 (if not "null").
13964         (mono_assembly_name_parse_full): return FALSE if value of version,
13965         culture, token or key is 0.
13966         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13967         specify whether public key and public key token must be set to default
13968         value (zero-length byte array) if not available. Set versioncompat to
13969         SameMachine. If public key is available or the default is set, then
13970         set PublicKey flag.
13971         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13972         is available, use empty byte array as default value. On the 2.0
13973         profile, use default value for public key token if not set.
13974         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13975         profile, use default value for public key if not set. On the 2.0
13976         profile, use default value for public key token if not set.
13977         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13978         default values for public key and public key token.
13979
13980 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13981
13982         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13983         field to keep it in synch with the managed object.
13984
13985         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13986         delegates. Fixes #351520.
13987
13988         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13989         contains defined memory.
13990         
13991         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13992
13993         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13994         
13995         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13996         of the GC data structures.
13997
13998         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13999
14000         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
14001         
14002         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
14003         barrier.
14004         (mono_array_clone_in_domain): Ditto.
14005         (mono_array_clone_in_domain): Ditto.
14006
14007         * threads.c (start_wrapper): Register the thread start argument as a GC root.
14008         (cache_culture): Use a write barrier.
14009
14010         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
14011         (ves_icall_get_property_info): Ditto.
14012
14013         * object.h (MONO_STRUCT_SETREF): New macro.
14014
14015         * class-internals.h (MonoStats): Add some GC statistics.
14016
14017         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
14018
14019 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
14020
14021         * exception.c (mono_exception_from_name_two_strings):
14022         Break from loop after method is found.
14023
14024 2008-01-04  Dick Porter  <dick@ximian.com>
14025
14026         * process.c (process_module_string_read): Rename variable to
14027         reflect correct usage, after fixing bug 345972.
14028
14029 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
14030
14031         * verify.c (mono_type_create_fnptr_from_mono_method): 
14032         created a MonoType function pointer instance to be used during
14033         verification. The verifier releases this memory at end.
14034
14035         * verify.c (mono_method_is_constructor): extracted repeated
14036         checks for constructor into a single class.
14037
14038         * verify.c (do_push_field): use new extracted method
14039         for constructor check.
14040
14041         * verify.c (do_newobj): same.
14042
14043         * verify.c (do_ldftn): renamed to do_load_function_ptr
14044         and make it verify ldvirtftn too.
14045
14046         * verify.c (mono_method_verify: proper verification
14047         of ldvirtftn. release created MonoMethod instances.
14048
14049 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14050
14051         * verify.c (token_bounds_check): added.
14052
14053         * verify.c (do_ldftn): added.
14054
14055         * verify.c (mono_method_verify): proper verificartion of ldftn.
14056
14057 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14058
14059         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
14060         than the table row count. It's the resposibility of the caller to
14061         make the bounds check and raise the correct error.
14062
14063         * metadata.c (mono_metadata_decode_row_col): Same.
14064
14065         * loader.c (mono_get_method_from_token): perform bounds check
14066         on token for methoddef table.
14067
14068 2007-12-29  Miguel de Icaza  <miguel@novell.com>
14069
14070         * icall.c
14071         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
14072         assert into a negative result, the managed code already coped with
14073         that.
14074
14075         Some folks on Windows reported this error. 
14076
14077 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
14078
14079         * appdomain.c: Bump corlib version.
14080         * icall.c:
14081         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
14082         CultureInfo.CreateCulture to create CultureInfo for name.
14083         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
14084         create CultureInfo for name. Fixes bug #347174.
14085
14086 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14087
14088         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
14089         flags.
14090
14091         * verify.c (is_valid_branch_instruction): allow branching to the
14092         first instruction of the protected block.
14093
14094         * verify.c (is_valid_cmp_branch_instruction): same.
14095
14096         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
14097         avoid double initialization.
14098
14099         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
14100         detect which cases the eval stack should just be copied.
14101
14102         * verify.c (mono_method_verify): check if the eval stack
14103         is empty when entering a protected block.
14104
14105 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14106
14107         * verify.c: added is_clause_in_range, is_clause_inside_range,
14108         is_clause_nested and verify_clause_relationship. They perform
14109         the verifications stated in P1 12.4.2.7.
14110
14111         * verify.c (mono_method_verify): remove some unused variables,
14112         add the new exception clause checks, add instruction border
14113         checks for protected block start/end, improved some error 
14114         messages and fixed a bug in the way invalid instruction access
14115         is detected.
14116
14117 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14118
14119         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
14120         from GC 7.0 if available.
14121
14122         * object.c: Remove an unused define.
14123         
14124         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
14125
14126         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
14127
14128         * null-gc.c (mono_gc_make_descr_for_array): Implement.
14129
14130         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
14131
14132         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
14133         to take the same arguments as the other make_descr functions.
14134
14135         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14136
14137         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14138         directly.
14139
14140         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14141         mini.c.
14142
14143         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14144         call to boehm-gc.c.
14145
14146         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14147
14148         * null-gc.c (mono_gc_register_root): Fix a warning.
14149
14150         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14151
14152         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14153         (mono_gc_base_init): Call GC_init ().
14154
14155         * null-gc.c: Define mono_gc_register_root () as a no-op.
14156
14157         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14158
14159 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14160
14161         * verify.c: add prototype for merge_stacks at top
14162
14163         * verify.c (do_switch): added.
14164
14165         * verify.c (merge_stacks): on some cases the stack merging
14166         was not happening properly. Unequal stack sizes at merge
14167         points should be invalid.
14168
14169         * verify.c (mono_method_verify): added more debug info on stack state.
14170         verify switch properly.
14171
14172 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14173
14174         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14175         marshal.h.
14176
14177         * boehm-gc.c marshal.c: Include method-builder.h.
14178
14179         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14180
14181         * marshal.c: Remove some code which is now in method-builder.c.
14182
14183 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * method-builder.c: New file, extraction of the method builder functionality 
14186         from marshal.c.
14187
14188         * marshal.c: Move the mb functions into method-builder.c.
14189
14190         * marshal.h marshal.c: Export some mono_mb_... functions.
14191
14192         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14193
14194         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14195         the caller.
14196
14197         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14198
14199         * loader.c (mono_field_from_token): Ditto.      
14200
14201         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14202         type as well.
14203         
14204         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14205         Fixes #342565.
14206
14207         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14208         a helper function for setting it.
14209
14210         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14211
14212         
14213         * assembly.c: Significally simplify code now that referenced assemblies are 
14214         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14215
14216         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14217         #349952.
14218
14219 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14220
14221         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14222         instructions that were target of branches or are at protected block boundaries.
14223
14224         * verify.c (in_same_block): handle filter clauses.
14225
14226         * verify.c (is_valid_branch_instruction): added. checks the target of
14227         instructions br or brtrue/false.
14228
14229         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14230         binary branch instructions such as beq and bge.
14231
14232         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14233         and made it pin the instruction as been part of the exception block.
14234
14235         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14236         of in_same_block.
14237
14238         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14239         of in_same_block.
14240
14241         * verify.c (do_ret): ret from a protected block is unverifiable and
14242         not invalid.
14243
14244         * verify.c (do_static_branch): verify br and br.s instructions.
14245
14246         * verify.c (merge_stacks): add extra param to support detection
14247         of branches in the middle of instructions.
14248         
14249         * verify.c (mono_method_verify): verify branches and exception blocks
14250         that target the middle of instructions. Proper verification of br and br.s.
14251
14252 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14253
14254         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14255         skip_visibility field.
14256         (reflection_methodbuilder_from_dynamic_method): Ditto.
14257
14258         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14259         registrations. Fixes #348193.
14260
14261         * threads.h: Move the internal mono_thread_get_pending_exception () to
14262         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14263
14264 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14265
14266         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14267         icall registration. Fixes #348193.
14268
14269         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14270         for corlib classes into object. Fixes #349621.
14271
14272 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14273
14274         * icall.c (property_accessor_nonpublic): new function to determine
14275         whether an accessor allows a property to be considered non-public.
14276         Returns false for private accessor(s) from parent class, and internal
14277         accessor(s) from parent on 2.0 profile (and higher).
14278         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14279         to determine whether property should be included if NonPublic flag
14280         is set. Fixes bug #349078.
14281
14282 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14283
14284         * verify.c (init_stack_with_value): added.
14285
14286         * verify.c (mono_method_verify): extracted common
14287         code for exception initialization into init_stack_with_value.
14288
14289         * verify.c (mono_method_verify): initialize the exception
14290         for handler clauses as well.
14291
14292         * verify.c (mono_method_verify): fix the exception clause
14293         ordering rules, it should use handler end offset and not
14294         start offset.
14295
14296 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14297
14298         * rawbuffer.c: remove useless warning.
14299
14300 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14301
14302         * threads.h, threads-types.h: move functions to the correct header
14303         (fixes bug#349952).
14304
14305 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14306
14307         * verify.c (mono_method_verify): proper verification
14308         of exception handling clauses ranges and fallthru in
14309         and out of protected blocks.
14310
14311 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14312
14313         * verify.c (mono_method_verify): fixed compilation issue.
14314
14315 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14316
14317         * verify.c (mono_method_verify): a printf slipped in, changed
14318         to use verifier debug macro.
14319
14320 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14321
14322         * verify.c (is_correct_leave): check for filter clauses.
14323
14324         * verify.c (do_filter): added.
14325
14326         * verify.c (mono_method_verify): property verification of leave.
14327
14328
14329 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14330
14331         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14332         Win32 build, until we figure out how to do the proper thing on
14333         Win32.
14334
14335 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14336
14337         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14338         by the previous patch.
14339         
14340         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14341         the assembly resolve handler for refonly assemblies.
14342
14343 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14344
14345         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14346         Make sure only one thread is allowed to commence shutdown, and
14347         don't allow new threads to be started once shutdown is in
14348         progress.
14349
14350 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14351
14352         * verify.c (is_correct_endfilter): added.
14353
14354         * verify.c (is_unverifiable_endfilter): added.
14355
14356         * verify.c (do_endfilter): added.
14357
14358         * verify.c (mono_method_verify): property verification of endfilter
14359         and fixed a corner case or endfinally.
14360
14361 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14362
14363         * verify.h: new flags to support fail fast of unverifiable code and
14364         do non-strict verification. Non-strict verification is required to
14365         have MS runtime compatibility. There are a huge amount of unverifiable
14366         code that it accepts as verifiable. The strict mode verifies the code
14367         as the specs says.
14368         Non-strict mode will be required in cases where code needs to be
14369         accepted as verifiable but fails under strict mode.
14370
14371         * pedump.c: added support to fail fast and non-strict verification.
14372
14373         * verify.c: added support for both fail fast and non-strict verification.
14374
14375 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14376
14377         * verify.c (is_correct_endfinally): added.
14378
14379         * verify.c (mono_method_verify): property verification of endfinally.
14380
14381 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14382
14383         * verify.c (in_any_block): check for filter clauses.
14384
14385         * verify.c (is_correct_rethrow): added.
14386
14387         * verify.c (mono_method_verify): property verification of rethrow.
14388
14389         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14390
14391 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14392
14393         * verify.c (do_throw): added.
14394
14395         * verify.c (mono_method_verify): property verification of throw
14396
14397 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14398
14399         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14400         assemblies. Fixes #346425.
14401
14402 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14403
14404         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14405         FieldBuilders.
14406
14407         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14408
14409         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14410         prevent asserts when this is called with a token which might not be valid.
14411
14412         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14413         lookup_dynamic_token_class with valid_token == FALSE.
14414
14415         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14416
14417         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14418
14419         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14420         
14421 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14422
14423         * gc.c: Don't delay threadpool thread finalization unless Mono is
14424         shutting down.
14425
14426 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14427
14428         * threads.c: turn an assert into a non-fatal warning.
14429
14430 2007-12-09  Robert Jordan  <robertj@gmx.net>
14431
14432         * icall.c (GetVirtualMethod): Add missing argument validation.
14433
14434 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14435
14436         * verify.c (do_cast): added.
14437
14438         * verify.c (mono_method_verify): property verification of castclass and isinst.
14439
14440
14441 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14442
14443         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14444
14445         * verify.c (do_stelem): added.
14446
14447         * verify.c (mono_method_verify): property verification of stelem.X.
14448
14449 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14450
14451         * class.c, class-internals.h: Introduce an environment variable
14452         (MONO_GENERIC_SHARING) through which the extent of generic code
14453         sharing can be controlled (share all classes, share only corlib
14454         classes, or share nothing).
14455
14456         * object.c: Only create runtime generic context for classes for
14457         which sharing is enabled.
14458
14459 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14460
14461         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14462
14463         * verify.c (mono_method_verify): property verification of ldelem.any.
14464
14465 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14466
14467         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14468         added ldelem.X opcodes.
14469
14470         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14471
14472         * verify.c: proper verification of ldelem.X 
14473
14474 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14475
14476         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14477
14478 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14479
14480         * verify.c (mono_method_verify): null literal requires special handling,
14481         the value pushed on stack need to be flagged as so.
14482
14483         * verify.c (do_ldelema): Verify ldelema properly.
14484
14485 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14486
14487         * verify.c: Verify ldlen properly.
14488
14489 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14490
14491         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14492         to the target object's type. Fixes #346160.
14493
14494 2007-12-05  Dick Porter  <dick@ximian.com>
14495
14496         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14497         Solaris needs the same workaround as BSD-derived systems.  Fixes
14498         bug 323524, patch by Burkhard Linke
14499         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14500
14501 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14502
14503         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14504         handle to use when error dialog is shown; otherwise, update mask
14505         to show no error dialog when an error occurs.
14506
14507 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14508
14509         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14510
14511         * class.c (mono_class_get_field_default_value): New helper function to initialize
14512         field->def_type and field->data.
14513
14514 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14515
14516         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14517         the general one.
14518
14519         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14520
14521         * marshal.c: Avoid depending on delegate->method_info being set.
14522
14523         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14524         
14525         * object.c (mono_delegate_ctor): Set delegate->method.
14526
14527         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14528
14529         * appdomain.c: Bump corlib version.
14530
14531 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14532
14533         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14534         equality check if we're comparing canonicalized MonoGenericInsts.
14535
14536 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14537
14538         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14539         accessing class->methods.
14540
14541 2007-11-22  Dick Porter  <dick@ximian.com>
14542
14543         * threads.c: Ensure that the synch_cs is set before trying to use
14544         it.
14545
14546 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14547
14548         * profiler.c: r89126 broke the statistial profiler, unbreak.
14549
14550 2007-11-22  Martin Baulig  <martin@ximian.com>
14551
14552         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14553
14554         * mono-debug.c
14555         (mono_debug_debugger_version): Bump to 3.
14556         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14557         -> mono_debugger_class_initialized().
14558
14559         * mono-debug-debugger.c
14560         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14561
14562         * class.c
14563         (mono_debugger_start_class_init_func): Removed.
14564         (mono_debugger_class_loaded_methods_func): Added.
14565         (mono_class_setup_methods): Call it here.
14566
14567 2007-11-22  Martin Baulig  <martin@ximian.com>
14568
14569         * mono-debug.c
14570         (mono_debug_add_delegate_trampoline): New public method.
14571         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14572
14573         * mono-debug.h
14574         (MonoSymbolTable): Added `global_data_table'.
14575         (MonoDebuggerTypeKind): Removed.
14576
14577 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14578
14579         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14580         these methods.
14581
14582         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14583         
14584 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14585
14586         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14587
14588 2007-11-20  Martin Baulig  <martin@ximian.com>
14589
14590         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14591
14592         * mono-debug-debugger.c
14593         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14594         (mono_debugger_remove_breakpoint): Likewise.
14595         (mono_debugger_check_breakpoints): Likewise.
14596         (mono_debugger_register_class_init_callback): New public method.
14597         (mono_debugger_remove_class_init_callback): Likewise.
14598         (mono_debugger_add_type): Likewise.
14599
14600         * mono-debug-debugger.h
14601         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14602
14603 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14604
14605         * class.c: more interface implementations needed for the
14606         array enumerator (fixes bug #341112).
14607
14608 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14609
14610         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14611         fix ParamName of ArgumentNullExceptions.
14612
14613 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14614
14615         * reflection.c (mono_reflection_encode_sighelper): Generate the
14616         modopts and modreqs.   I have a useless test that crashes monodis,
14617         but that shows the code working.
14618
14619 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14620
14621         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14622         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14623
14624 2007-11-15  Dick Porter  <dick@ximian.com>
14625
14626         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14627         When joining a thread, it's the thread that's calling Join that
14628         gets WaitSleepJoin state not the target.  Fixes the standalone
14629         test case in bug 334740, and hopefully the whole bug too.
14630
14631 2007-11-15  Dick Porter  <dick@ximian.com>
14632
14633         * process.c: Read file version info from the files pointed at by
14634         process modules, not the current process.  Fixes bug 315969.
14635
14636         Use windows typedef names in some places to fix warnings on the
14637         windows build.
14638
14639 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14640
14641         * image.c, metadata-internals.h: Added a generic_class_cache hash
14642         to MonoImage for looking up generic classes when sharing generics.
14643
14644 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14645
14646         * sgen-gc.c: warning cleanups.
14647
14648 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14649
14650         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14651         inherited properties.
14652
14653 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14654
14655         * object.c, class-internals.h: Added more information to the
14656         runtime generic context.
14657
14658 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14659
14660         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14661         instead of just the target method. Generalize the abstract method handling to
14662         handle any non-static method.
14663
14664         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14665         mono_marshal_get_delegate_invoke () signature change.
14666
14667 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14668
14669         * class.c, class-internals.h: Made
14670         mono_type_get_basic_type_from_generic () public.  Fixed member
14671         access check for shared generics.
14672
14673         * loader.c: Don't insert field into field cache if it's part of a
14674         non-inflated generic class.
14675
14676         * domain.c, domain-internals.h: The generic sharing context is now
14677         part of the jit info data structure.  Added two accessor
14678         functions.
14679
14680 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14681
14682         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14683         the array Get/Set/Address methods, since the JIT inlines them.
14684
14685         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14686
14687         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14688         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14689
14690         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14691         mono_marshal_get_delegate_invoke signature change.
14692
14693         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14694         an additional argument. Add support for invoking abstract methods.
14695
14696         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14697
14698         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14699
14700 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14701
14702         * class.c: Do field layout for open generic classes as well.
14703
14704 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14705
14706         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14707         other objects, because the threadpool is still around.  Put them
14708         in a list instead and after finalizing all other objects in the
14709         root domain shut down the thread pool and then finalize the
14710         threads.  Fixes bug #337383.
14711
14712         * threads.c, thread-types.h: New mono_thread_create_internal()
14713         function for marking a thread with the threadpool flag before it
14714         started.  Set synch_cs to NULL after freeing it.
14715
14716         * threadpool.c: Mark threadpool threads before they start.
14717
14718 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14719
14720         * reflection.h, reflection.c: don't export random functions
14721         and lazy load dbnull and missing objects.
14722
14723 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14724
14725         * class.c: Initialize COM types if COM interfaces
14726         are present (not just COM classes).
14727         
14728         Code is contributed under MIT/X11 license.
14729
14730 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14731         * reflection.c:
14732         create_dynamic_mono_image: hook module profiler events (dynamic case).
14733         mono_image_basic_init: hook assembly profiler events (dynamic case).
14734
14735 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14736         * profiler.c:
14737         simple_appdomain_unload: completely terminate the profiler
14738         instead of only processing the statistical samples.
14739         simple_shutdown: make sure this is really called exactly once,
14740         even in multithreaded applications, and always listen to
14741         appdomain events.
14742         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14743         here, the "[un]load" functions will do it.
14744         Fixes bugs #333791 and #325261.
14745
14746 2007-11-07  Geoff Norton  <gnorton@novell.com>
14747
14748         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14749         rather than depend on __APPLE__.
14750
14751 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14752
14753         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14754
14755 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14756
14757         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14758         UTF16 MonoString. Fix the crash from bug #335488
14759
14760 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14761
14762         * marshal.c: Correct (for non-Win32 OS) length != size in 
14763         mono_string_from_bstr. Fix #339530.
14764
14765 2007-11-06  Geoff Norton  <gnorton@novell.com>
14766
14767         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14768         to succeed
14769
14770 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14771
14772         * process.c: Added run-time GetProcessId API detection for Windows.
14773
14774 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14775
14776         * reflection.c  (mono_param_get_objects): If a parameter has the
14777         attribute [System.Runtime.InteropServices.Optional] we should
14778         set the DefaultValue of the ParameterInfo to be
14779         System.Reflection.Missing instead of DBNull.
14780
14781         See bug #339013.
14782
14783         (mono_get_reflection_missing_object): New method,
14784         returns the System.Reflection.Missing.Value singleton instance.
14785
14786 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14787
14788         * culture-info-table.h : regenerated.
14789
14790 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14791
14792         * icall.c: Use GetEnvironmentStrings on windows
14793         so we are using the same environment block as 
14794         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14795         #333740.
14796         
14797         Code is contributed under MIT/X11 license.
14798
14799 2007-10-31  Martin Baulig  <martin@ximian.com>
14800
14801         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14802
14803         * mono-debug-debugger.h
14804         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14805
14806 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14807
14808         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14809         classes.
14810
14811 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14812
14813         * culture-info-table.h : regenerated.
14814
14815 2007-10-30  Robert Jordan  <robertj@gmx.net>
14816
14817         * icall-def.h, icall.c:
14818         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14819
14820         Code is contributed under MIT/X11 license.
14821
14822 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14823
14824         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14825         inflated class instead of inflating them again.
14826         
14827         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14828         dynamic case.
14829
14830         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14831         Call setup_supertypes () after klass->parent is set.
14832         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14833
14834         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14835         for inflated instances of not yet created dynamic generic classes.
14836         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14837         times from inflated_method.
14838         (methodbuilder_to_mono_method): Ditto.
14839
14840 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14841
14842         * gc.c: code cleanup and removed old untested option of not creating the
14843         finalizer thread.
14844
14845 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14846
14847         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14848         creating a jump trampoline for dynamic methods.
14849
14850 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14851
14852         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14853         generic TypeBuilders when called from another method of the same type (bug #335131).
14854
14855
14856 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14857
14858         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14859         doesn't seem to work perfectly.
14860         
14861         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14862         called multiple times.
14863         (methodbuilder_to_mono_method): Ditto.
14864         (resolve_object): Inflate FieldBuilder's.
14865
14866 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14867
14868         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14869         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14870         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14871
14872 2007-10-26  Dick Porter  <dick@ximian.com>
14873
14874         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14875         Thread initialisation changes
14876
14877 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14878
14879         * verify.c: fix compatibility check between arrays and System.Array
14880
14881 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14882
14883         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14884         too. Fixes #336999.
14885
14886 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14887
14888         * object.c (mono_value_box): Use typed allocation here.
14889
14890 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14891
14892         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14893         trampoline instead of compiling the method right away.
14894
14895         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14896
14897 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14898
14899         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14900         related fields for dynamic classes. Fixes #334493.
14901
14902 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14903
14904         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14905         
14906         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14907
14908         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14909         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14910
14911         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14912
14913         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14914         if needed.
14915         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14916
14917 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14918
14919         * marshal.c: Use correct key when removing item
14920         from ccw_hash.
14921         
14922         Code is contributed under MIT/X11 license.
14923
14924 2007-10-17  William Holmes  <billholmes54@gmail.com>
14925
14926         *marshal.c: Adding a case to marshal booleans to U1
14927
14928         Code is contributed under MIT/X11 license.
14929
14930 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14931
14932         * class.c (mono_class_from_name): Search the modules compromising dynamic
14933         assemblies. Fixes #331601.
14934
14935 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14936
14937         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14938         exception if the type name contains an assembly component. Fixes #334203.
14939
14940         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14941         modules inside dynamic assemblies. Fixes #334200.
14942         
14943         * reflection.c: Set image->public_key and image->public_key_length;
14944
14945         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14946         fields.
14947
14948         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14949         
14950 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14951
14952         * metadata.c: Implemented correct comparing of generic classes.
14953         An inflated generic class can be equal to a non-inflated one if it
14954         is inflated with generic type variables as type arguments.  Fixes
14955         bug #333798.
14956
14957 2007-10-15  Dick Porter  <dick@ximian.com>
14958
14959         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14960         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14961         81646.
14962
14963         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14964         instead of a monitor lock.  This means that monitor_try_enter and
14965         co can set the thread state safely.
14966         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14967         thread_interrupt_requested, so interrupt actually works.
14968
14969         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14970         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14971         state accessor function
14972
14973 2007-10-15  Martin Baulig  <martin@ximian.com>
14974
14975         * mono-debug.h
14976         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14977         the debugger with the current runtime.
14978
14979 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14980
14981         * object.c, object-internals.h: added the ability to set a single
14982         trampoline for all the slots in a vtable.
14983
14984 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14985
14986         * marshal.c: deal with a possible race condition during multicast
14987         delegate invocation.
14988
14989 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14990
14991         * class.c: ensure value type methods don't have the synchronized
14992         flag set.
14993
14994 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14995
14996         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14997         breaks the build.
14998
14999 2007-10-11  Joel Reed  <joelwreed@comcast.com>
15000
15001         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
15002         to take an options parameter so that empty entries can be removed during
15003         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
15004
15005 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15006
15007         * marshal.c: make sure we don't store the signature from a dynamic
15008         method into the runtime invoke cache (bug #327189).
15009
15010 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15011
15012         * marshal.c: make sure the wrapper methods are properly initialized.
15013
15014 2007-10-11  Mark Probst  <mark.probst@gmail.com>
15015
15016         * metadata.c, metadata-internals.h: Generalized
15017         mono_type_stack_size() to mono_type_stack_size_internal() which
15018         takes an additional argument specifying whether it allows open
15019         types.
15020
15021 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
15022
15023         * verify.c (do_invoke_method): handle typedbyref params
15024         correctly and check for unverifiable return values.
15025
15026         * verify.c (do_newobj): fix a warning.
15027
15028 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15029
15030         * verify.c: don't tread typedbyref as allways unverifable,
15031         so uses, like (ld/st)loc.0 are valid. verify for the cases
15032         that it matters, like boxing related operations.
15033
15034 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15035
15036         * verify.c: add verification of the newobj opcode. verification
15037         of delegate instantation still missing due ldftn and virldftn not
15038         pushing the function type on stack
15039
15040 2007-10-08  Mark Probst  <mark.probst@gmail.com>
15041
15042         * class-internals.h: Runtime generic context data structure
15043         definition.
15044
15045         * object.c: Initialization of runtime generic context at runtime
15046         vtable creation time.
15047
15048 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
15049         * class.c (mono_class_create_from_typedef,
15050         mono_class_from_generic_parameter, mono_ptr_class_get,
15051         mono_fnptr_class_get, mono_bounded_array_class_get)
15052         * domain.c (mono_domain_create, mono_domain_free)
15053         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
15054         * image.c (do_mono_image_load, mono_image_close):
15055         Hooked up load-unload profiler events.
15056
15057 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15058
15059         * domain.c: track statistics about the actual amount of native code
15060         allocated.
15061
15062 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15063
15064         * class.c: the valuetype enumerators don't have the additional
15065         supertypes interfaces.
15066
15067 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15068
15069         * class.c: need more interfaces setup for the IEnumerator<T>
15070         object created for arrays (tests/ienumerator-interfaces.2.cs).
15071
15072 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
15075
15076 2007-10-05  Alp Toker  <alp@atoker.com>
15077
15078         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
15079         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
15080         #315863.
15081
15082 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15083
15084         * verify.c (verify_type_compatibility_full): verification of
15085         compatibility improved, validates correctly non-strict checks between
15086         native int and I4 types different than (unsigned)int32.
15087
15088         * verify.c (do_store_indirect): added, do all verification of
15089         ldind.X opcodes. 
15090
15091         * verify.c (get_load_indirect_mono_type): renamed to
15092         get_indirect_op_mono_type, as it now returns the MonoType for 
15093         ldind.X and stind.X opcodes.
15094
15095 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15096
15097         * reflection.c: Fix the encoding of generic type definition for
15098         TypeBuilders.
15099
15100         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
15101         mono_image_typedef_or_ref but allows to specify if typespec lookups should
15102         be made. Typespec check is done prior to typeref cache lookup.
15103
15104         * reflection.c (mono_image_typedef_or_ref): now just delegate to
15105         mono_image_typedef_or_ref_full.
15106
15107         * reflection.c (encode_generic_class): encode the generic class
15108         directly instead of calling encode_type.
15109
15110         * reflection.c (encode_type): encode the generic type definition
15111         MonoClass as a generic instantiation.
15112
15113         * reflection.c (create_typespec): cache typespec tokens in
15114         the assembly->typespec cache. Don't create typespec for a generic
15115         instance MonoClass. Create typespec for the generic type defintion.
15116
15117         * reflection.c (create_generic_typespec): encode the generic
15118         class directly instead of calling encode_type.
15119
15120         * reflection.c (mono_image_create_token): encode the generic
15121         type definition not using a typespec for MonoType instances.
15122
15123
15124 2007-10-04  Raja R Harinath  <rharinath@novell.com>
15125
15126         Fix #328812
15127         * class.c (mono_image_init_name_cache): Don't return nested
15128         'protected internal' classes.
15129         (mono_class_from_name_case): Likewise.
15130
15131 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15132
15133         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15134           common function used by both DefaultConfig in System.dll and
15135           InternalConfigurationHost in System.Configuration.dll.
15136
15137 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15138
15139         * class.c: automatically add to vectors only a few essential explicit
15140         generic interfaces. The rest of the interfaces that arrays should
15141         provide are currently implicitly added (but still not lazily, see the
15142         design in the discussion of bug#325495 for the details of what is
15143         needed for that). Additionally, implicit interfaces are assigned the
15144         same vtable slot as the explicit interfaces (as they are compatible):
15145         this enables huge memory savings since we don't need to instantiate
15146         as many memthods and as large vtables anymore. Also, Since
15147         GetEnumerator<T> returns an instance of a type that is required to
15148         support a similarly large set of interfaces as arrays, we add
15149         implicit interfaces and interface offset sharing support to those
15150         types, too. This change adds all the required interfaces so that
15151         the anonarray.cs test case in the bug report works (we don't add
15152         all the interfaces to arrays of arrays 3-level deep and more because
15153         of the memory requirements explained in the bug and since they are much
15154         less common: the lazy-loading support will enabled them to work, too).
15155
15156 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15157
15158         * verify.c (merge_stacks): major clean up, all type compatibility
15159         checks are done by verify_type_compatibility. This fix my earlier lack
15160         of understanding of the CLR type system and merge_stacks no longer looks
15161         scary.
15162
15163         * verify.c: fixed some bad spelling.
15164
15165 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15166
15167         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15168         a given stack slock.
15169         
15170         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15171         verify_type_compatibility_full. This removed a near indentical function and fixed
15172         handling of Int32 and IntPtr across all opcodes.
15173
15174 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15175
15176         * class.c: only vectors have the additional generic interfaces.
15177
15178 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15179
15180         * mono-config.c: Use g_strcasecmp instead of
15181         strcasecmp like everywhere else to fix
15182         compilation with MSVC.
15183         
15184         Code is contributed under MIT/X11 license.
15185
15186 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15187
15188         * object.c, object-internals.h: refactored the IMT code to enable
15189         building a single slot at a time and lazily creating the IMT trampolines
15190         and thunks.
15191
15192 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15193
15194         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15195
15196         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15197         Fixes #328501.
15198         
15199 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15200
15201         * loader.c (method_from_methodspec): Rearrange to avoid
15202         un-necessary exposition.  Don't assert out if the method's
15203         declaring type is a generic type definition.
15204
15205 2007-09-28  Martin Baulig  <martin@ximian.com>
15206
15207         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15208
15209 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15210
15211         * class-internals.h: optimize field layout of MonoClass to
15212         requires less cachelines at runtime and save a few bytes on 64 bit
15213         systems.
15214
15215 2007-09-28  Jb Evain  <jbevain@novell.com>
15216
15217         * reflection.c: when encoding type names in custom attributes,
15218         if the type is a closed generic type, its generic arguments
15219         have to be serialized as AssemblyQualifiedName, so that when
15220         they are deserialized, it's possible to re-create them properly.
15221         Fixes #329450.
15222
15223
15224 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15225
15226         * object.c, class-internals.h: added delegate-creation counter.
15227
15228 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15229
15230         * class.c: cleanup of the code that synthetizes interfaces for
15231         arrays in 2.0: saves quit a bit of corlib mempool memory.
15232         Code to fix bug #325495 ifdeffed out for now until the issues
15233         with memory usage and O(n^2) behaviour are fixed.
15234
15235 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15236
15237         * marshal.c: when possible, do not duplicate the name of the methods
15238         in the method builder and in the generated MonoMethod.
15239
15240 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15241         * verify.c: added support for type checking ldind_* opcodes.
15242
15243 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15244
15245         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15246         which is used to distinguish the fully open instantiation of a TypeBuilder
15247         with the rest. This temporary hack is required to restore the property that
15248         the fully open instantiation is the same type of the generic type definition.
15249
15250         * class-internals.h (mono_generic_class_is_generic_type_definition):
15251         new function as part of the internal API.
15252
15253         * class.c (inflate_generic_type): return NULL when the generic inst is
15254         fully open. The fully open generic type is now the same as the generic type
15255         definition for non TypeBuilder types.
15256
15257         * class.c (mono_generic_class_get_class): removed assert since it is
15258         no longer valid, gklass->cached_class can point to the generic type definition.
15259
15260         * class.c (mono_generic_class_is_generic_type_definition): new.
15261
15262         * metadata.c (mono_generic_class_hash): added is_tb_open field
15263         to the hash calculation.
15264
15265         * metadata.c (free_generic_class): if the generic class is associated
15266         with the generic type definition, its field will come from the mempool and
15267         must not be freed.
15268
15269         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15270         new, this function identifies the corner case of a TypeBuilder fully open
15271         instantiation.
15272
15273         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15274         for lookup. Set gclass->cached_class to be the container class in case of
15275         the fully open instantiation of non TypeBuilder types.
15276
15277         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15278         to compare generic classes.
15279
15280         * reflection.c (method_encode_methodspec): remove assert that
15281         no longer is valid.
15282
15283         * reflection.c (mono_reflection_generic_class_initialize): add
15284         an aditional assert to ensure the proper type is used.
15285
15286 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15287
15288         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15289         to enjoy it.
15290
15291 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15292
15293         * verify.c (push_arg): Fixed support for ldarga
15294         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15295         MonoType used as first arg in case of instance calls.
15296
15297 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15298
15299         * verify.c: Support for verifying VAR and MVAR types, 
15300
15301 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15302
15303         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15304         accessors correctly.
15305
15306 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15307
15308         * threads.c: support OSX and other systems in
15309         mono_thread_get_stack_bounds (bug #328026).
15310
15311 2007-09-25  Martin Baulig  <martin@ximian.com>
15312
15313         * mono-debug.h
15314         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15315
15316 2007-09-24  Martin Baulig  <martin@ximian.com>
15317
15318         * mono-debug.h
15319         (MonoDebugClassEntry): Moved the definition of this struct into
15320         mono-debug.c to make it private.
15321
15322         * mono-debug.c
15323         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15324         type table per symbol file, we don't need to store the symfile id
15325         any longer.
15326
15327 2007-09-24  Martin Baulig  <martin@ximian.com>
15328
15329         Create one type table per symbol file, since a `MonoClass *' gets
15330         invalid when its image is unloaded.
15331
15332         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15333         (MonoDebugHandle): Added `type_table'.
15334
15335 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15336
15337         * mempool.c, mempool.h: added mono_mempool_new_size () API
15338         to be able to specify a smaller initial size for the pool.
15339         Adjusted the code to slowly increase pool size before using
15340         the previous default size.
15341         * image.c: use a small initial size for image mempools.
15342
15343 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15344
15345         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15346         Fixes ##320990.
15347
15348         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15349         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15350
15351 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15352
15353         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15354         free. Fixes #327438.
15355
15356 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15357
15358         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15359         generic instantiations, etc.
15360         <MONO_TYPE_ARRAY>: Likewise.
15361
15362 2007-09-21  Martin Baulig  <martin@ximian.com>
15363
15364         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15365         these structs were never defined.
15366         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15367
15368 2007-09-21  Martin Baulig  <martin@ximian.com>
15369
15370         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15371
15372 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15373
15374         * image.c: removed the guid hash tables: we can get the same info
15375         without the additional memory usage hit (partially fixes also bug #327052).
15376
15377 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15378
15379         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15380         event to handle unloading methods. After the event is called, the
15381         corresponding MonoMethod* must be considered invalid.
15382         * loader.c (mono_free_method): call the new mono_profiler_method_free
15383         event.
15384
15385 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15386
15387         * domain-internals.h: New flag in MonoJitInfo which marks shared
15388         generic methods.  New hash table (shared_generics_hash) in
15389         MonoDomain to keep track of shared generic methods.  Prototypes
15390         for functions to register and lookup shared generic methods.
15391
15392         * domain.c: Support for registering and looking up shared generic
15393         methods via a hash table (shared_generics_hash) in MonoDomain.
15394
15395         * class-internals.h: New exception to signal failure of shared
15396         compilation of a generic method.  New counters for generics
15397         sharing in MonoStats.
15398
15399 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15400
15401         * image.c, metadata-internals.h: don't keep a file descriptor open
15402         for loaded assemblies (bug#325988).
15403
15404 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15405
15406         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15407         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15408         use the corresponding datatypes.
15409         (type_in_image): Update to changes.
15410         (CleanForImageUserData): Simplify.
15411         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15412         Avoid quadratic behaviour in handling the "stolen" list by
15413         separating the filter predicate out, and by prepending the stolen
15414         items rather than appending them.
15415         (steal_ginst_in_image): Likewise.
15416         (mono_metadata_clean_for_image): Update to changes.
15417
15418 2007-09-19  Martin Baulig  <martin@ximian.com>
15419
15420         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15421
15422 2007-09-19  Martin Baulig  <martin@ximian.com>
15423
15424         * mono-debug.c (mono_debug_cleanup): Don't call
15425         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15426
15427 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15428
15429         Fix crash on 'make run-test' in mcs/errors
15430         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15431         Avoid more potential allocations in mono_class_from_mono_type.
15432         (ginst_in_image): Update to changes.
15433         (gclass_in_image): Rearrange slightly.
15434
15435 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * class.c (mono_class_init): Move the code that sets up class->methods to 
15438         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15439
15440         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15441         canonical instance of an inflated generic signature.
15442         (mono_type_create_from_typespec): Remove an invalid free.
15443
15444         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15445
15446 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15447
15448         * domain-internals.h: added a declaration of the
15449         mono_assembly_load_full_nosearch internal function.
15450
15451         * assembly.c (mono_assembly_load_with_partial_name): use
15452         mono_try_assembly_resolve return value properly.
15453         (mono_assembly_load_full_nosearch): copied the function body from
15454         mono_assembly_load_full, without the code to invoke assembly
15455         search hooks.
15456         (mono_assembly_load_full): calls the above new function and if the
15457         assembly is not resolved, invokes the search hooks.
15458
15459         * appdomain.c (mono_runtime_init): restore the global postload
15460         assembly search handlers.
15461
15462 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15463
15464         * class.c (mono_class_init): Make sure class->methods and class->properties
15465         are never NULL in the generics case.
15466
15467         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15468
15469 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15470
15471         * metadata.c (free_generic_class): Disable some code to fix the build.
15472
15473         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15474
15475         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15476         from the image mempool.
15477
15478         * metadata.c (free_generic_class): Free more data from the inflated class.
15479
15480         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15481
15482         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15483         mempool.
15484         (mono_type_create_from_typespec): Ditto.
15485
15486         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15487         MonoImage to the caller.
15488         (mono_init_internal): Save the opened image in a global variable.
15489         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15490
15491         * reflection.c (resolve_object): Fix a leak.
15492
15493         * metadata.c: Fix the freeing of data in the generics caches.
15494         
15495         * metadata.c (free_generic_inst): Comment this out to fix the build.
15496         (free_generic_class): Ditto.
15497
15498         * metadata.c: Free cached generic methods, instantinations and classes when
15499         they are removed from the caches.
15500         (mono_metadata_free_type): Free the type itself.
15501
15502         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15503         places.
15504
15505 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15506
15507         * boehm-gc.c: restrict managed allocs to __thread supporting
15508         architectures.
15509
15510 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15511
15512         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15513         (mono_generic_class_get_class): Fix a leak.
15514
15515         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15516         mono_metadata_free_type ().
15517         (mono_metadata_inflate_generic_inst): Fix a leak.
15518
15519 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15520
15521         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15522
15523         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15524         mempool.
15525
15526         * mono-debug.c (mono_debug_close_image): Fix call to 
15527         g_hash_table_remove ().
15528
15529 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15530
15531         * icall-def.h: redirect all the string ctor to the managed
15532         CreateString () methods.
15533         * string-icalls.c, string-icalls.h: removed dead code for string
15534         ctors and icalls.
15535
15536 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15537
15538         * mono-debug.c: Fix memory leaks.
15539
15540 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15541
15542         * threads-types.h: Implement mono_hazard_pointer_set and 
15543         mono_hazard_pointer_clear macros using do/while(0) to fix
15544         compilation with MSVC.
15545         
15546         Code is contributed under MIT/X11 license.
15547
15548 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15549
15550         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15551         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15552
15553 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15554
15555         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15556         icalls.
15557
15558 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15559
15560         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15561         managed-code allocated as well.
15562
15563 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15564
15565         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15566
15567 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15568
15569         * boehm-gc.c: fixed the build after the AOT changes.
15570
15571 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15572
15573         * wrapper-types.h: Add an ALLOC wrapper type.
15574
15575         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15576         reference managed allocator methods.
15577
15578 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15579
15580         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15581         of Type array and not MonoType, a fix suggested by Hari.
15582         
15583 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15584
15585         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15586         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15587         
15588         Code is contributed under MIT/X11 license.
15589
15590 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15591
15592         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15593
15594 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15595
15596         * image.c (do_mono_image_open): if assembly file fails to open and
15597         MONO_IOMAP is in effect, try to find the path in a
15598         case-insensitive way.
15599
15600         * appdomain.c (mono_runtime_init): do not install postload hooks -
15601         tests show that MS.NET doesn't use anything of that sort to
15602         trigger the AppDomain.AssemblyResolve event.
15603         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15604         made non-static.
15605         (mono_runtime_init): init portability helpers here.
15606
15607         * assembly.c (mono_assembly_load_with_partial_name): if other   
15608         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15609         to resolve the assembly.
15610
15611         * domain-internals.h: added mono_try_assembly_resolve and marked
15612         it as internal.
15613
15614 2007-09-11  Jb Evain  <jbevain@novell.com>
15615
15616         * object-internals.h (MonoReflectionDynamicMethod): add
15617         a `MonoReflectionType *owner` field. The owner is used
15618         * reflection.c:
15619         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15620         method as the class declaring the dynamic method.
15621         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15622         dynamic method to the declaring type of the methodbuilder.
15623
15624 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15625
15626         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15627         rules for calling methods via reflection.
15628
15629 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15630
15631         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15632         Inflate MonoType's.
15633
15634 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15635
15636         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15637         provide a managed method that does fast allocations without needing
15638         a managed->unmanaged transition. Boehm GC implementation currently
15639         enabled for ptrfree objects on sane architectures.
15640
15641 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15642
15643         * marshal.c, marshal.h: exported a couple of useful functions and
15644         added mono_mb_get_label () to easily handle backward branches.
15645
15646 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15647
15648         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15649
15650 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15651
15652         * loader.c (find_method): Fixed the regression introduced while
15653         fixing bug #81466.
15654
15655 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15656
15657         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15658         well.
15659         
15660         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15661         icall.c reflection.c: Pass a MonoGenericContext argument to 
15662         mono_lookup_dynamic_token ().
15663
15664         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15665         #82744.
15666         
15667 2007-09-09  Robert Jordan  <robertj@gmx.net>
15668
15669         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15670         for generic methods.
15671
15672         * object.c (mono_object_get_virtual_method): Handle generic methods.
15673         Fixes bug #78882.
15674
15675         Code is contributed under MIT/X11 license.
15676
15677 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15678
15679         * image.c: fix locking in mono_image_load_file_for_image ().
15680
15681 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15682
15683         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15684         used only as a cache: added an icall to fill it.
15685
15686 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15687
15688         * reflection.h: exposed mono_reflection_free_type_info
15689         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15690         since mono_reflection_bind_generic_parameters makes a copy of it.
15691         * reflection.c (free_type_info): subinfos should be freed.
15692         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15693         made non static.
15694         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15695         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15696         this fixes #82695 and #81726.
15697    
15698
15699 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15700
15701         * process.h, process.c:  added support for user profile/info in
15702           ProcessStartInfo. For now only Windows works.
15703
15704 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15705
15706         * metadata.c: consider the generic arguments when comparing
15707         signatures (bug #82614).
15708
15709 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15710
15711         * cil-coff.h, image.c: updated assembly loader to cope with the
15712         PE32+ 64 bit file format.
15713
15714 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15715
15716         * assembly.c, class.c, domain.c, loader.c: remove useless
15717         inclusion of cil-coff.h.
15718
15719 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15720
15721         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15722         if interface is marked with CoClassAttribute. 
15723    
15724         Code is contributed under MIT/X11 license.
15725
15726 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15727
15728         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15729         if it's seen twice in major collections.
15730
15731 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15732
15733         * sgen-gc.c: big objects are not copied to the gray area, but they
15734         need to be considered for scanning, too, if they are brought alive
15735         by an object ready for finalizations or a survived one.
15736
15737 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15738
15739         * sgen-gc.c: properly account the number of disappearing links when
15740         they are nullified.
15741
15742 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15743
15744         * sgen-gc.c: share the code to scan the registered roots between the
15745         different types of collections.
15746
15747 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15748
15749         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15750
15751 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15752
15753         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15754         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15755
15756 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15757
15758         * security-manager.c (mono_security_manager_get_methods):
15759         LinkDemandSecurityException now has 2 arguments instead of 3.
15760
15761 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15762
15763         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15764         platforms which need it.
15765
15766 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15767
15768         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15769         dtor.
15770
15771 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15772
15773         * threads.c: free the thread static data on thread exit.
15774
15775 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15776
15777         * class.c: walk the hierarchy to find the generic definition for
15778         a class (fixes runtime part of bug #82498).
15779
15780 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15781
15782         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15783         ...
15784
15785         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15786
15787 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15788
15789         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15790
15791 2007-08-24  Robert Jordan  <robertj@gmx.net>
15792
15793         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15794
15795 2007-08-24  Jb Evain  <jbevain@novell.com>
15796
15797         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15798         for byref types.
15799
15800 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15801
15802         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15803         #82286.
15804
15805 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15806
15807         * assembly.c: Fix a warning.
15808         
15809 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15810
15811         * appdomain.c: parse the <runtime> section looking for the probing
15812         element with the 'privatePath' attribute, which sets additional
15813         directories in which the runtime should look for assemblies.
15814
15815 2007-08-23  Robert Jordan  <robertj@gmx.net>
15816
15817         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15818         Fixes #82499.
15819
15820 2007-08-23  Martin Baulig  <martin@ximian.com>
15821
15822         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15823         _mono_debug_init_corlib() and remove it from the header file.
15824
15825 2007-08-23  Martin Baulig  <martin@ximian.com>
15826
15827         * mono-debug-debugger.c
15828         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15829         don't notify the debugger about it.
15830
15831         * mono-debug-debugger.h
15832         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15833
15834 2007-08-23  Robert Jordan  <robertj@gmx.net>
15835
15836         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15837         Code is contributed under MIT/X11 license.
15838
15839 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15840
15841         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15842
15843 2007-08-22  Martin Baulig  <martin@ximian.com>
15844
15845         * mono-debug.c: Store debugging info on a per-domain basis and
15846         free it on domain unload.  Add support for unloading symbol files.
15847
15848         * mono-debug.h
15849         (MonoDebugList): New typedef.
15850         (MonoSymbolTable):
15851         - add `data_tables and `type_table'.
15852         - replace 'symbol_files' and `num_symbol_files' with a
15853           `MonoDebugList *'.
15854         (mono_debug_data_table): Removed.
15855         (mono_debug_list_add): New public function.
15856         (mono_debug_list_remove): New public function.
15857         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15858         (mono_debug_init_2_memory): Renamed into
15859         mono_debug_open_image_from_memory().
15860         (mono_debug_close_image): New public function.
15861         (mono_debug_domain_create): Likewise.
15862         (mono_debug_domain_unload): Likewise.
15863         (MONO_DEBUGGER_VERSION): Bump to 60.
15864
15865         * mono-debug-debugger.h
15866         (MonoDebuggerEvent):
15867         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15868         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15869         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15870         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15871           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15872         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15873           meaning.
15874         (mono_debugger_add_symbol_file): Removed.
15875         (mono_debugger_add_type): Removed.
15876         (mono_debugger_lookup_type): Removed.
15877         (mono_debugger_lookup_assembly): Removed.
15878
15879         * domain.c
15880         (mono_domain_create): Call mono_debug_domain_create().
15881         (mono_init_internal): Call mono_debug_init_corlib().
15882
15883         * assembly.c
15884         (mono_assembly_close): Call mono_debug_close_image().
15885
15886 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15887
15888         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15889         mmap call.
15890
15891 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15892
15893         * sgen-gc.c: ensure section->pin_queue_end is initialized
15894         correctly when non pinning objects in the section have been found.
15895
15896 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15897
15898         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15899         containing a list of directories separated by ':'. MSDN docs say
15900         the directories should be separated with ';'. Part of a bugfix for
15901         bug #81446
15902
15903 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15904
15905         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15906         it should MonoType and not MonoClass.
15907
15908 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15909
15910         * culture-info-table.h : regenerated.
15911
15912 2007-08-20  William Holmes  <billholmes54@gmail.com>
15913
15914         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15915          to call ReplaceFile Kernel32 on windows or in io-layer.
15916         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15917         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15918          as an internal call.
15919
15920         Code is contributed under MIT/X11 license.
15921
15922 2007-08-20  Jb Evain  <jbevain@novell.com>
15923
15924         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15925         and MONO_EXCEPTION_FIELD_ACCESS.
15926
15927         * debug-helpers.[c|h]: new mono_field_full_name function.
15928
15929 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15930
15931         * class.c: Removed class_security_level() and moved it to
15932         security-core-clr.c.
15933
15934         * security-core-clr.c, security-core-clr.h: class_security_level()
15935         is now public and renamed to mono_security_core_clr_class_level().
15936         It also looks for security attributes in the classes a class is
15937         nested in.
15938
15939 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15940
15941         * security-core-clr.c, security-core-clr.h: CoreCLR security
15942         utility functions.
15943
15944         * Makefile.am: Added security-core-clr.[ch].
15945
15946         * security-manager.c, security-manager.h: Functions and enum for
15947         setting and getting the security mode.
15948
15949         * class.c: CoreCLR security checks.
15950
15951 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15952
15953         * icall-def.h, process.c, process.h: implemented icall to get
15954         user/system processor times.
15955
15956 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15957
15958         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15959         reader-lock-free jit_info_table.
15960
15961 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15962
15963         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15964
15965         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15966
15967         * object-internals.h (MonoException): Add missing _data member.
15968
15969 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15970
15971         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15972         checking that only methods with matching qname or fqname are picked
15973         from implemented interfaces.
15974
15975 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15976
15977         * verify.c (do_newarr):added, do type verification of
15978         newarr ops, push the right value on the eval stack.
15979         * verify.c (mono_method_verify): use do_newarr
15980
15981
15982 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15983
15984         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15985         factored the common code into get_boxable_mono_type, which
15986         is now using mono_type_get_full, this fixed byref related tests.
15987
15988 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15989
15990         * class.c: added mono_type_get_full, this function has the same
15991         behavior of mono_class_get_full but the returned MonoType has
15992         all metadata of the associated token in case of a typespec token.
15993         * class.c: added mono_type_retrieve_from_typespec, used by 
15994         mono_type_get_full to retrieve the token type.
15995         * class.c (mono_class_create_from_typespec): changed to use
15996         mono_type_retrieve_from_typespec.
15997         * class.c (mono_ldtoken): changed to use mono_type_get_full
15998         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15999         * class-internals.h: exported mono_type_get_full for internal use.
16000
16001 2007-08-16  Jb Evain  <jbevain@novell.com>
16002
16003         * domain.c (supported_runtimes): add entry for
16004         the 'moonlight' runtime version.
16005
16006 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16007
16008         * verify.c (mono_method_verify): small typo sliped in.  
16009
16010 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16011
16012         * verify.c (do_unbox_value): added, do type verification of
16013         unboxing ops
16014         * verify.c (mono_method_verify): use do_unbox_value
16015
16016
16017 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16018
16019         * verify.c (dump_stack_value): fixed typo, was printing string
16020         instead of object on stack.
16021         * verify.c (do_box_value): moved the byref check up as it leads
16022         to invalid code and should be done earlier.
16023         * verify.c: improved error messages for and ldobj
16024
16025 2007-08-15  William Holmes  <billholmes54@gmail.com>
16026
16027         * marshal.c (emit_marshal_custom): Omit the call to 
16028           marshal_native_to_managed when calling native to managed 
16029           and the argument is specified as an out argument.
16030
16031         Code is contributed under MIT/X11 license.
16032
16033 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16034
16035         * verify.c: fixed the type checks for generics, function pointers and vectors.
16036         Added type verification for ldobj and ldtoken. The verifier
16037         would segfault if header or signature of a method contained references
16038         to non-existant types.
16039
16040 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16041
16042         * marshal.c (cominterop_get_ccw): Patch from
16043         Bill Holmes to no walk up interface hierarchy. 
16044         All parent methods should be present in the interface for COM.
16045    
16046         Code is contributed under MIT/X11 license.
16047
16048 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16049
16050         * marshal.c (emit_marshal_com_interface): Patch from
16051         Bill Holmes to handle COM Interfaces as return values
16052         for native->managed calls.
16053    
16054         Code is contributed under MIT/X11 license.
16055
16056 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
16057
16058         * marshal.c (cominterop_get_idispatch_for_object): Implement
16059         for runtime callable wrappers.
16060    
16061         Code is contributed under MIT/X11 license.
16062
16063 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
16064
16065         * pedump.c (main): changed from mono_init to mono_init_from_assembly
16066         so 2.0 types are accessible
16067
16068
16069 2007-08-13  Miguel de Icaza  <miguel@novell.com>
16070
16071         * domain.c (mono_init_internal): Call mono_assembly_load_friends
16072         once we load mscorlib.   Due to the order in which we initialize,
16073         the mono_assembly_load_full routine that loads mscorlib did not
16074         load friends.   We now load it once we load the
16075         mono_defaults.internals_visible_class class. 
16076
16077         * assembly.c: Expose the mono_load_friend_assemblies method.
16078
16079 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
16080
16081         * verify.c: improved the handling of boxing, better
16082         type checking for unary ops and conversion. Fix bug
16083         regarding managed pointer compatibility checking
16084
16085 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
16086
16087         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
16088
16089         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
16090
16091 2007-08-09  Raja R Harinath  <rharinath@novell.com>
16092
16093         * reflection.c (dup_type): Remove.
16094         * class.c (dup_type): Remove.
16095         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
16096         instead of the dodgy 'dup_type'.
16097         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
16098         handle the case where 'dup_type' needed the second argument.
16099
16100 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
16101
16102         * domain.c: Fix a warning.
16103
16104 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16105
16106         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
16107         checking that methods with the same fqname are not overridden
16108         with a method from an ancestor.
16109
16110 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
16111
16112         * threads.c (free_thread_static_data_helper): Avoid a crash if
16113         thread->static_data is not yet set.
16114
16115 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
16116
16117         * marshal.c: Use correct image when emitting
16118         native wrapper for COM calls.
16119    
16120         Code is contributed under MIT/X11 license.
16121
16122 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
16123
16124         * icall-def.h, security.c, security.h :
16125           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
16126
16127 2007-08-07  Martin Baulig  <martin@ximian.com>
16128
16129         * mono-debug-debugger.h
16130         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
16131
16132         * domain.c (mono_domain_free): Call
16133         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16134
16135 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16136
16137         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16138         * verify.c (in_same_block): code should test if either offset is inside the clauses
16139         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16140         and filter blocks
16141
16142 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16143
16144         * image.c (mono_image_close): Fix a leak.
16145
16146         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16147
16148         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16149
16150 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16151
16152         * domain.c, threads.c, threads-types.h: fix memory retention issue
16153         with thread static variables not being cleared on domain unload.
16154         Reuse thread static slots after domain unload.
16155
16156 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16157
16158         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16159         nullable type.
16160
16161         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16162         now done in mono_runtime_invoke_array.
16163
16164         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16165         receiver is a nullable type.
16166
16167         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16168         generic parameter.
16169
16170 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16171
16172         * marshal.c: Implement COM Objects as return type for 
16173         managed->unmanaged calls. Added Release calls for COM Object
16174         out/return values in managed->unmanaged calls.
16175
16176         Code is contributed under MIT/X11 license.
16177
16178 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16179
16180         * threads.h, threads-type.h: move the hazard pointer declarations
16181         to the private header.
16182
16183 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16184
16185         * file-io.c, appdomain.c: memory leak fixes.
16186
16187 2007-08-02  Dick Porter  <dick@ximian.com>
16188
16189         * socket-io.c
16190         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16191         SO_REUSEADDR setting into io-layer/sockets.c.
16192
16193 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16194
16195         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16196         from Object when called on a generic parameter. Fixes #82211.
16197
16198 2007-08-01  Dick Porter  <dick@ximian.com>
16199
16200         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16201         Fixes bug 79250 yet again.
16202
16203 2007-07-30  Martin Baulig  <martin@ximian.com>
16204
16205         Merged the `debugger-dublin' branch.
16206
16207         * mono-debug.h
16208         (MonoDebugDataTable): New typedef.
16209         (MonoDebugMethodAddressList): New typedef.
16210         (MonoDebugWrapperData): Removed.
16211         (MonoDebugSymbolTable): Removed `current_data_table',
16212         `current_data_table_size', `current_data_table_offset'.
16213         (MonoDebugDataItemType): Moved into mono-debug.c.
16214         (MonoDebugMethodJitInfo): Remove `address'.
16215         (mono_debug_data_table): New global variable.
16216         (mono_debug_lookup_method_addresses): New public function.
16217         (mono_debug_find_method): Take a `MonoMethod *', not a
16218         `MonoDebugMethodInfo *'.
16219
16220         * mono-debug.c: Drop support for the old symbol tables.
16221
16222 2007-06-28  Martin Baulig  <martin@ximian.com>
16223
16224         * mono-debug.c (mono_debug_debugger_version): New public variable.
16225
16226 2007-07-31  William Holmes  <billholmes54@gmail.com>
16227
16228         * metadata.c Changed mono_type_create_from_typespec to not insert
16229           the type into the hash map until after
16230           do_mono_metadata_parse_type has completed.
16231         Fixes Bug #82194
16232         Code is contributed under MIT/X11 license.
16233
16234 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16235
16236         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16237         generic parameter. Fixes #82211.
16238
16239 2007-07-27  Jb Evain  <jbevain@novell.com>
16240
16241         * pedump.c (dump_metadata, dump_metadata_header): dump
16242         versions contained in the metadata header.
16243
16244 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16245
16246         * threads.c: register small_id_table with the GC.
16247
16248 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16249
16250         * threads.c, threads.h, class-internals.h, object-internals.h:
16251         Hazard pointers, to be used by lock-free parallel algorithms.
16252
16253 2007-07-26  Dick Porter  <dick@ximian.com>
16254
16255         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16256         routine on non-windows platforms, as I've not managed to think of
16257         a non-kludgy way of doing this.  Finishes off bug 78739.
16258
16259 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16260
16261         * object.c: properly setup interface_bitmap in proxy vtables.
16262
16263 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16264
16265         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16266         to create unique shadow copy target directories, use the domain's
16267         serial number instead. Each domain gets a unique target directory
16268         that way.
16269
16270         * domain.c (mono_domain_create): added code to increment domain
16271         shadow copy serial number and cache the value in the current
16272         domain structure.
16273
16274         * domain-internals.h (struct _MonoDomain): added a new field -
16275         shadow_serial to hold the serial number used in generation of
16276         shadow-copy directories. This is to make sure that the directory
16277         name is unique for each and every domain created. We avoid a race
16278         condition with overriding assemblies already in use by other app
16279         domains.
16280
16281 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16282
16283         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16284         binding generic parameters.
16285
16286 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16287
16288         * metadata.c (do_mono_metadata_parse_generic_class): Use
16289         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16290         error.
16291
16292 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16293
16294         * loader.c, class-internals.h, reflection.c: removed the per-method
16295         generics hashtable: we use the global one through the call of
16296         mono_class_inflate_generic_method ().
16297
16298 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16299
16300         * class.c, metadata.c, class-internals.h: introduce yet another
16301         generics global cache for inflated methods (fixes 98% of the perf
16302         issue in bug #81806).
16303
16304 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16305
16306         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16307         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16308         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16309         return a MonoGenericInst containing (a copy) of those types.
16310         (mono_metadata_inflate_generic_inst): Update to changes.
16311         (mono_metadata_parse_generic_inst): Likewise.
16312         (mono_get_shared_generic_inst): Likewise.
16313         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16314         (mono_reflection_bind_generic_method_parameters): Likewise.
16315         * metadata-internals.h: Likewise.
16316         * icall.c (free_generic_context): Kill.
16317         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16318
16319         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16320         mono_metadata_type_dup.
16321         * marshal.c (mono_mb_create_method): Likewise.
16322
16323         * metadata.c (mono_metadata_type_dup): Rename from
16324         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16325         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16326         * marshal.c, metadata-internals.h: Update to changes.
16327
16328 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16329
16330         * class.c: fixed a small leak for array classes and removed warning.
16331
16332 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16333
16334         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16335         Return 0x8000000 for return parameters. Fixes #82161.
16336
16337 2007-07-21  Marek Habersack  <grendello@gmail.com>
16338
16339         * appdomain.c (get_shadow_assembly_location): append the current
16340         ticks value to the path. Avoids overwriting the same assemblies by
16341         several threads at the same time.
16342
16343 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16344         and Raja R Harinath  <rharinath@novell.com>
16345
16346         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16347         Simplify slightly.
16348         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16349         property for testing if a method is a generic method definition.
16350
16351 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16352
16353         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16354
16355 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16356
16357         * verify.c: used function from private branch, reverted to the one in class.h 
16358
16359 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16360
16361         * verify.c: a typo slipped in and the code wont compile
16362
16363 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16364
16365         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16366         disabled box instruction as it is doing the wrong thing
16367         improved stack dump messages, now it is easier to debug type related issues
16368
16369
16370 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16371
16372         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16373
16374 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16375
16376         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16377         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16378         grouped with class and valuetype. This change will simply 
16379         the code as it should be handled just like unmanaged pointers.
16380
16381 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16382
16383         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16384
16385 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16386
16387         * verify.c: several stack merge issues fixed, reference comparisons now
16388         check the type size. strict type check now works correctly.
16389         added more uses of IS_MANAGED_POINTER macro.
16390         fixed issues pointed by running the test suite against .net.
16391         
16392
16393 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16394
16395         * class.c, loader.c, class-internals.h: Removed the
16396         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16397         defines.
16398
16399         * icall.c: Better error checking in some internal reflection
16400         methods.
16401
16402 2007-07-18  William Holmes  <billholmes54@gmail.com>
16403
16404         * filewatcher.c : removed unused variable 'filename' in 
16405           ves_icall_System_IO_FSW_SupportsFSW
16406
16407 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16408
16409         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16410         obsolete, removed.
16411
16412 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16413
16414         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16415         
16416         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16417
16418 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16419
16420         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16421         Implement generics support.
16422         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16423
16424         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16425         type_args and method_args arguments.
16426         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16427         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16428         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16429
16430 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16431
16432         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16433           It adds a rootimage parameter to mono_reflection_get_type_internal,
16434           adds new function mono_reflection_get_type_with_rootimage and use
16435           the rootimage to resolve the types instead of the current image
16436
16437 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16438
16439         * culture-info-table.h: Forgot to update after r78304.
16440
16441 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16442
16443         * class.c (mono_class_is_open_constructed_type)
16444         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16445
16446 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16447
16448         * class.c (mono_bounded_array_class_get):  method fails if used with
16449         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16450         avoiding calculating the size for such array as it cannot be instantiated.
16451         Fix bug #82015
16452
16453 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16454
16455         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16456         field.
16457         * metadata.c, reflection.c: Update to changes.
16458
16459 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16460
16461         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16462         mono_class_is_valid_enum, they are used to valide a enum when loading.
16463         * reflection.c: used new functions to throw TypeLoadException when and
16464         invalid enum is build with TypeBuilder. Fixes #82018
16465   
16466 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16467
16468         * object.c: forgot commit of mono_class_setup_methods () to access
16469         iface->methods.
16470         * object-internals.h: added a few more handy fields to
16471         MonoIMTCheckItem.
16472
16473 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16474
16475         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16476         iface->methods.
16477
16478 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16479
16480         * class-internals.h, object-internals.h, object.c: IMT-based
16481         interface invocation core from Massimiliano Mantione
16482         (massi@ximian.com) with a reworked arch-specific interface,
16483         bsearch implementation and a few bugfixes and memory savings by me.
16484
16485 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16486
16487         * class.c (mono_class_create_from_typedef): mono would segfault if 
16488         an enum did not have a __value field. It now throws a TypeLoadException
16489         for such cases. Fix bug #82022
16490
16491 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16492
16493         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16494
16495 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16496
16497         * class.c (mono_class_init): If a class is already inited but has
16498         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16499
16500 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16501
16502         * class.c: Properly handle the case of an unimplemented interface
16503         method.  Fixes: 81673.
16504
16505 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16506
16507         * class-internals.h, object.c: cleanup patch from massi: use
16508         MonoVTable->interface_bitmap since the vtable interfaces offset array
16509         is going away.
16510
16511 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16512
16513         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16514         GetMDStreamVersion icall instead.
16515
16516 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16517
16518         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16519         not use mono_dl_build_path() with a full library name: makes
16520         fallbacks to libgaim and libfam work.
16521
16522 2007-07-06  William Holmes  <billholmes54@gmail.com>
16523
16524         * assembly.c: Added a continue statement in probe_for_partial_name when
16525          parse_assembly_directory_name fails.  Fixes : 82002
16526
16527 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16528
16529         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16530         and added a verification  for TYPEDBYREF.
16531         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16532         make native int interchangeable with int32 and some small cleanup and formating.
16533         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16534         handle byref of byref.
16535         * verify.c (push_local): handle byref of byref.
16536         * verify.c (do_binop): invalid mix of values is unverifiable
16537         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16538         added visibility checks
16539         * verify.c (field related method): added visibility checks
16540         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16541
16542 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16543
16544         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16545         string.
16546
16547 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16548
16549         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16550
16551         * marshal.c (emit_marshal_string): When returning a string from managed code,
16552         allways make a copy even for unicode strings. Fixes #81990.
16553
16554 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16555
16556         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16557         of byref generic inst types (bug #81997).
16558
16559 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16560
16561         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16562         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16563
16564 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16565
16566         * marshal.c (emit_marshal_string): Add support for unicode strings in
16567         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16568
16569 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16570
16571         * verify.c: field load/store are now verified, missing only access checks now
16572
16573 2007-06-28  Martin Baulig  <martin@ximian.com>
16574
16575         * mono-debug.c (mono_debug_debugger_version): New public variable.
16576
16577 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16578
16579         * locales.c: When constructing DateTimeFormat or NumberFormat for
16580         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16581         MonoCultureInfo contructed from the current locale is always
16582         read-only and has UseUserOverride set to true. All MonoCultureInfo
16583         instances returned for GetCultures have both IsReadOnly and
16584         UseUserOverride set to true. Fixes part of bug #81930.
16585
16586 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16587
16588        * icall-def.h: Update System.__ComObject icalls
16589        * marshal.c: Avoid managed transition (and object creation)
16590        when looking up COM interface in RCW.
16591        * marshal.h: Ditto.
16592        
16593        Code is contributed under MIT/X11 license.
16594
16595 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16596
16597         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16598         to avoid crashes during assembly unloading.
16599
16600 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16601
16602         Fix MethodInfo.IsGenericMethodDefinition
16603         * reflection.c (mono_reflection_bind_generic_method_parameters):
16604         Rearrange code to ensure we always uses a generic method definition.
16605         * class.c (mono_class_inflate_generic_method_full): Set
16606         'generic_container' field only for generic method definitions.
16607         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16608         Use presense of 'generic_container' field as indication of being a
16609         generic method definition.
16610
16611 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16612
16613         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16614
16615         * object-internals.h: Reflect changes in the layout of the managed Delegate
16616         class.
16617         
16618         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16619         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16620         runtime memory used by the dynamic method. Fixes #77146.
16621
16622 2007-06-21  Dick Porter  <dick@ximian.com>
16623
16624         * file-io.h: 
16625         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16626         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16627         81767.
16628
16629 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16630
16631         * reflection.c (method_encode_methodspec): Add a tripwire.
16632         * class.c (inflate_generic_type): The fully open generic type is
16633         not the same as the generic type definition.
16634
16635 2007-06-21  Martin Baulig  <martin@ximian.com>
16636
16637         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16638
16639         * mono-debug-debugger.h
16640         (MonoDebuggerBreakpointInfo): Removed.
16641         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16642         (mono_debugger_remove_breakpoint): Likewise.
16643         (mono_debugger_breakpoint_callback): Likewise.
16644         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16645
16646 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16647
16648         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16649         generic type is not the same as the generic type definition.
16650         * class.c (mono_generic_class_get_class): Likewise.
16651
16652 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16653
16654         * icall.c: The second argument to 
16655         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16656         is a MonoType not a MonoClass.
16657
16658 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16659
16660         * verify.c: support for function pointers in the verifier
16661
16662 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16663
16664         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16665
16666 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16667
16668         * assembly.c: removed Mono.Data.SqliteClient from the list of
16669         forward-compatible assemblies as it breaks the ABI (bug #81899).
16670
16671 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16672
16673         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16674         lookup/update with the loader lock.
16675         * reflection.c (mono_class_bind_generic_parameters): No need to
16676         protect mono_metadata_lookup_* with the loader lock.
16677         * class.c (inflate_generic_type): Likewise.
16678         
16679         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16680         on a generic instantiated type.
16681
16682 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16683
16684         *verify.c: produce meanfull error messages on verification error
16685         *verify.c: fixed some cases of verification errors reported as validation errors
16686         *pedump.c: fixed the error name array, now it shows validation errors properly
16687         *verify.h: fixed the contant that should be used for verification errors
16688
16689 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16690
16691         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16692         for bug #77596, 81858 and 80743 (generics data structures on domain
16693         unload).
16694
16695 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16696
16697         Avoid allocating 'MonoGenericContext' on the heap.
16698         * class-internals (_MonoMethodInflated::context): Make field
16699         inline, not a pointer.
16700         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16701         stack.  Use the context embedded within the inflated method as the
16702         hash key, rather than 'new_context'.
16703         * class.c (inflate_generic_context): Simplify.  Return a struct
16704         rather than allocating on the heap.
16705         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16706         doesn't salt away a copy of the context -- simplifying the
16707         lifetime rules of a 'MonoGenericContext *'.
16708         (mono_method_get_context): Return pointer to embedded context.
16709         (setup_generic_array_ifaces): Allocate temporary context on stack.
16710         * reflection.c (inflate_mono_method): Likewise.
16711         (mono_reflection_bind_generic_method_parameters): Likewise.
16712         Use the context embedded within the inflated method as the hash key.
16713
16714         Avoid a source of allocation of 'MonoGenericContext'.
16715         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16716         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16717         * class.c: Update to changes.
16718         (mono_generic_class_get_context): Simplify drastically.  Now just
16719         returns a pointer to the field.
16720         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16721         argument as a const pointer.
16722         (mono_metadata_generic_context_equal): Likewise.
16723         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16724         Update to changes.
16725
16726 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16727
16728         * verify.c improved the handling of brtrue/brfalse, factored out common code
16729
16730 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16731
16732         Kill MonoGenericMethod.
16733         * class-internals.h (MonoGenericContext::method_inst): Rename from
16734         'gmethod' and convert to a MonoGenericInst.
16735         (MonoGenericMethod): Remove.
16736         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16737         * loader.c (method_from_methodspec): Update to changes.  Use a
16738         MonoGenericContext as the key to the hashtable.
16739         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16740         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16741         (mono_metadata_generic_context_hash): Likewise from
16742         'mono_metadata_generic_method_hash'.  Change hash function.
16743         (mono_metadata_load_generic_params): Update to changes.
16744         (mono_get_shared_generic_method): Remove.
16745         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16746         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16747         (inflate_generic_context): Likewise.
16748         (mono_class_inflate_generic_method_full): Likewise.
16749         (setup_generic_array_ifaces): Likewise.
16750         (mono_class_create_from_typespec): Likewise.
16751         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16752         (method_encode_methodspec): Update callsite.
16753         (reflection_methodbuilder_to_mono_method): Update to changes.
16754         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16755         MonoGenericContext as the key to the hashtable.
16756         (inflate_mono_method): Update to changes.
16757
16758         * class-internals.h (MonoGenericMethod::container): Remove.
16759         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16760
16761 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16762
16763         * profiler-private.h, profiler.c, profiler.h: added API to profile
16764         exception events.
16765
16766 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16767
16768         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16769
16770 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16771
16772         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16773         Fixed overflow and underflow not aborting the verification process.
16774
16775 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16776
16777         * class-internals.h (MonoStats): Added stats entries for dynamic
16778         code allocations.
16779
16780 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16781
16782         * loader.c (mono_free_method): Free header->locals and header->clauses.
16783
16784         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16785         dynamic case.
16786
16787         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16788
16789         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16790
16791 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16792
16793         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16794         the tables.
16795
16796 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16797
16798         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16799
16800 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16801
16802         MonoGenericMethod on a diet
16803         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16804         here ...
16805         (_MonoGenericMethod::reflection_info): ... from here.
16806         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16807         Update to changes.
16808         * reflection.c (inflate_mono_method): Likewise.
16809         (mono_reflection_bind_generic_method_parameters): Likewise.
16810
16811 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16812
16813         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16814         *verify.c: factored long ldarg forms to share code with short forms
16815
16816 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16817
16818         *verify.c: fixed code formating factored some duplicate code
16819         into a new function
16820
16821         *verify.h: fixed binary incompatibility introduced earlier
16822
16823         *pedump.c: fixed formating
16824
16825 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16826
16827         Fix assertion when disassembling Mono.C5.dll
16828         * loader.c (method_from_methodspec): Avoid inflating a method
16829         twice with the same context.  If the methodref is inflated, use
16830         the declaring method instead.
16831
16832         * class.c (mono_class_from_generic_parameter): Fix case similar to
16833         bug #81830 handled below, but for method containers.
16834
16835 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16836
16837         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16838         get_shared_generic_class.  Directly inflate the instance.
16839         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16840         (inflate_generic_class): Delete.
16841         (get_shared_generic_class): Delete.  Move setting of
16842         'cached_class' and 'cached_context' ...
16843         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16844
16845         * metadata.c (mono_metadata_lookup_generic_class): Change
16846         signature to take the components of a MonoGenericClass rather than
16847         an allocated MonoGenericClass.  Change semantics to be intern-like.
16848         * reflection.c (mono_class_bind_generic_parameters): Update to
16849         changes.  Make locking region tighter.
16850         * class.c (inflate_generic_class): Update to changes.
16851         (get_shared_generic_class): Likewise.
16852         * metadata-internals.h: Likewise.
16853
16854         * reflection.c (mono_class_bind_generic_parameters): Take and
16855         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16856         (mono_reflection_bind_generic_parameters): Use
16857         'mono_class_bind_generic_parameters' rather than duplicate the code.
16858         * class.c (mono_bounded_array_class_get): Update to changes.
16859         * object-internals.h: Likewise.
16860
16861         * reflection.c (mono_class_bind_generic_parameters): Only support
16862         parameterizing generic type definitions.  Remove support for other
16863         open types.
16864
16865 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16866
16867         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16868
16869         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16870         in the dynamic case.
16871
16872 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16873
16874         * threads.c: When cleaning up thread, reset the Background bit.
16875         Fixes bug #81720.
16876
16877 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16878
16879        * metadata.c: Move variable declarations to top of scope.
16880        * verify.c: Move variable declarations to top of scope.
16881
16882        Code is contributed under MIT/X11 license.
16883
16884 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16885
16886         * reflection.c (mono_class_bind_generic_parameters): Replace
16887         open-coded loop with mono_metadata_inflate_generic_inst.
16888
16889         * class.c (get_shared_generic_class): Don't call
16890         mono_get_shared_generic_inst.  Use the container's own
16891         'class_inst'.
16892
16893         * metadata.c (mono_metadata_load_generic_params): Move
16894         initialization of 'context' field here from ...
16895         * class.c (mono_class_create_from_typedef): ... here, and ...
16896         * loader.c (mono_get_method_from_token): ... here.
16897
16898         * class.c (get_shared_generic_class): Rename from
16899         mono_get_shared_generic_class and make static.
16900         (mono_get_shared_generic_inst): Move to metadata.c.
16901         * loader.c (mono_get_shared_generic_method): Likewise.
16902         * class-internals.h, metadata-internals.h: Update to changes.
16903
16904         Fix #81830
16905         * class.c (mono_class_from_generic_parameter): Don't assume a
16906         generic container owner exists.  Generic containers from monodis
16907         don't have any.
16908
16909 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16910
16911         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16912         * verify.h: new typedefs to returns the non-verifiable status
16913         * verify.c: initial implementation of generics, stack merging and object compatibility check
16914
16915 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16916
16917         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16918         a MonoInternalHashTable again (fixed bug in internal hash table
16919         code).
16920
16921 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16922
16923         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16924         MonoInternalHashTable again (fixed bug in internal hash table
16925         code).
16926
16927 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16928
16929         * class.c, image.c, class-internals.h, domain.c,
16930         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16931         changes.  Have to figure out what makes them break the SWF
16932         regression.
16933
16934 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16935
16936         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16937         a MonoInternalHashTable now.
16938
16939 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16940
16941         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16942         MonoInternalHashTable now.
16943
16944 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16945
16946         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16947         invoke_impl code.
16948
16949         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16950
16951         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16952         dependent trampoline.
16953
16954         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16955
16956         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16957
16958 2007-05-29  Robert Jordan  <robertj@gmx.net>
16959
16960         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16961
16962 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16963
16964         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16965
16966 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16967
16968        * marshal.c: Fix interface lookup loops for
16969        cominterop_get_com_slot_for_method and 
16970        cominterop_get_method_interface. Only need to lookup
16971        if type is a class, else use interface type method is on.
16972
16973        Code is contributed under MIT/X11 license.
16974
16975 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16976
16977         * reflection.c: HasSecurity can be present even if no specially 
16978         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16979         SecurityAttribute). Fix CAS regression tests on buildbot.
16980
16981 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16982
16983        * appdomain.c: Add configure checks for header files.
16984        * image.c: Add configure checks for header files.
16985        * file-io.c: Add configure checks for header files.
16986        * debug-mono-symfile.c: Add configure checks for header files.
16987        * threadpool.c: Add configure checks for header files.
16988        * console-io.c: Add configure checks for header files.
16989        * profiler.c: Add configure checks for header files.
16990        * rawbuffer.c: Add configure checks for header files.
16991        * icall.c: Add configure checks for header files.
16992        * rand.c: Add configure checks for header files.
16993        * socket-io.c: Add configure checks for header files.
16994
16995        Code is contributed under MIT/X11 license.
16996
16997 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16998
16999         * reflection.c (mono_custom_attrs_from_builders): Remove the 
17000         assertion as it breaks the build.
17001         
17002         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
17003
17004         * reflection.c (lookup_custom_attr): Make a copy here too.
17005
17006         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
17007         dynamic images.
17008
17009         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
17010         images.
17011
17012         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
17013         info.
17014
17015 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
17016
17017         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
17018         (load_cattr_value): Ditto.
17019
17020 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
17021
17022         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
17023
17024 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
17025
17026         * threads.c: In "start_wrapper", set apartment_state to MTA if
17027         apartment_state is Unknown and we're running on 2.0 profile or
17028         higher.
17029         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
17030         to main method, then set apartment_state to Unknown on 1.0 profile,
17031         and MTA on 2.0 profile.
17032
17033 2007-05-16  Jb Evain  <jb@nurv.fr>
17034
17035         * class-internals.h (MonoDefaults): Add an attribute_class and
17036           customattribute_data_class.
17037         * domain.c (mono_init_internal): Populate them.
17038         * reflection.c: Use them to remove duplicates. Make a vew
17039         MonoClass variables `static'.
17040
17041 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
17042
17043         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
17044         step in implementing IMT, so that all isinst checks now can go
17045         through the bitmap.
17046         This was needed because vtables for TransparentProxy need to look
17047         like the vtable of the "target" class, so they need to point to
17048         its interface bitmap directly.
17049
17050         * object.c: inside "mono_class_create_runtime_vtable" and
17051         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
17052
17053 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
17054
17055         * object-internals.h
17056           culture-info.h : added territory field in MonoCulture and
17057           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
17058         * locales.c : fill territory field above too.
17059         * culture-info-table.h : regenerated.
17060
17061 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
17062
17063         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
17064         Fixes #81599.
17065
17066 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
17067
17068         * object.c: Always initialize apartment, even if 
17069         there is no custom attributes on entry point.
17070         
17071         Code is contributed under MIT/X11 license.
17072
17073 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
17074
17075         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
17076         * metadata.c: If no encoding is set, check for unicode
17077         on class.
17078         
17079         Code is contributed under MIT/X11 license.
17080
17081 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17082
17083         * threads.c: Handle if mono_thread_current returns NULL 
17084         
17085         Code is contributed under MIT/X11 license.
17086
17087 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17088
17089         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
17090         in start_wrapper. Added mono_thread_init_apartment_state and
17091         mono_thread_cleanup_apartment_state.
17092         * object.c: Initialize thread apartment state on main thread
17093         by checking for STAThreadAttribute on entry point.
17094         * object-internals.h: Add apartment_state field to MonoThread.
17095         * threads-types.h: Add unmanaged definition of 
17096         System.Threading.ApartmentState, MonoThreadApartmentState.
17097         
17098         Code is contributed under MIT/X11 license.
17099         
17100 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
17101
17102         * class.c: Fix windows build.
17103         * class-internals.h: Fix windows build.
17104         
17105         Code is contributed under MIT/X11 license.
17106
17107 2007-05-08  Robert Jordan  <robertj@gmx.net>
17108
17109         * process.c (CreateProcess_internal):
17110         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
17111         .CreateNoWindow was specified. Fixes #81496.
17112
17113 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17114
17115         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
17116         step in implementing IMT, replaced it with two compact arrays
17117         (interfaces_packed and interface_offsets_packed) and a bitmap that
17118         is used for isinst checks (interface_bitmap).
17119
17120         * class.c: (compare_interface_ids): compare function to pass to
17121         bsearch when looking for an interface with a given id.
17122         (mono_class_interface_offset): reimplemented using bsearch on
17123         interfaces_packed, getting the offset from interface_offsets_packed.
17124         (print_implemented_interfaces): utility debugging function.
17125         (setup_interface_offsets): reworked to initialize interfaces_packed,
17126         interface_offsets_packed and interface_bitmap.
17127
17128         * object.c: replaced all accesses to "MonoClass.interface_offsets"
17129         with uses of interfaces_packed and interface_offsets_packed.
17130
17131 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17132
17133         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17134         mono_class_interface_offset prototype to wrap all accesses to
17135         "MonoClass.interface_offsets".
17136
17137         * class.c: Implemented mono_class_interface_offset, and wrapped all
17138         accesses to "MonoClass.interface_offsets".
17139
17140         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17141         "MonoClass.interface_offsets".
17142
17143 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17144
17145         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17146         GetMethodFromHandle overloads (bug #78637).
17147
17148 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17149
17150         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17151         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17152
17153 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17154
17155         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17156         #81498.
17157
17158         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17159         gracefully.
17160         (mono_custom_attrs_from_index): Ditto.
17161
17162         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17163         Fixes #81501.
17164
17165 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17166
17167         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17168         is now allocated from a mempool.
17169
17170 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17171
17172         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17173         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17174
17175 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17176
17177         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17178         mono_loader_clear_error () too late. Fixes #81463.
17179
17180 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17181
17182         * culture-info-table.h : regenerated.
17183
17184 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17185
17186         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17187         is missing.
17188
17189 2007-04-25  Dick Porter  <dick@ximian.com>
17190
17191         * Makefile.am: Put the mingw enforced-optimisation back into the
17192         PLATFORM_WIN32 section.
17193
17194 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17195
17196         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17197         patch.
17198
17199         * image.c (mono_image_load_module): New API function to load a module reference.
17200
17201         * image.c (load_modules): Load modules lazily. Fixes #80812.
17202
17203         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17204         
17205         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17206
17207         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17208         to mono_image_load_module_dynamic.
17209
17210 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17211
17212         * marshal.c: Fix calling convention for CCW on non-windows
17213         platforms. STDCALL on windows, CDECL everywhere else to work 
17214         with XPCOM and MainWin COM.
17215         
17216         Code is contributed under MIT/X11 license.
17217
17218 2007-04-23  Martin Baulig  <martin@ximian.com>
17219
17220         Fix #80969.
17221
17222         * loader.c
17223         (method_from_memberref): Added `gboolean *used_context' argument.
17224         (mono_get_method_from_token): Likewise.
17225         (mono_get_method_full): Don't insert the method in the cache when
17226         `used_context' is true.
17227
17228 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17229
17230         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17231
17232         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17233         create new MonoTypes for returned types.
17234         * class.c (mono_generic_class_get_class): Export mono-internal.
17235         * class-internals.h: Update to changes.
17236
17237 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17238
17239         * threadpool.c, threadpool.h, icall-def.h: patch from
17240         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17241
17242 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17243
17244         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17245         
17246         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17247
17248         * threads.c (mono_thread_get_stack_bounds): New helper function.
17249
17250         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17251         Correctly compute stack bounds when attaching. Fixes #81394.
17252
17253 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17254
17255         * reflection.c: fix handling of doubles in custom attributes
17256         for the arm-fpa format (bug #81368).
17257
17258 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17259
17260         * reflection.c (assembly_add_win32_resources): Mildly relax an
17261         bounds check to let the end pointer point just past the end of the
17262         allocated buffer.  (may fix #81384)
17263
17264 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17265
17266         * culture-info-table.h : regenerated.
17267
17268 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17269
17270         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17271         the thread is aborted early.
17272
17273 2007-04-05  Dick Porter  <dick@ximian.com>
17274
17275         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17276         FindFirstFile()/FindNextFile() to find entries.  This lets the
17277         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17278         81038.
17279
17280         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17281         the parameters of
17282         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17283
17284 2007-04-04  Martin Baulig  <martin@ximian.com>
17285
17286         * debug-helpers.c
17287         (mono_method_desc_full_match): Add support for nested classes.
17288
17289 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17290
17291         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17292
17293 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17294
17295         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17296         waiting for too many threads.
17297
17298 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17299
17300         * environment.c: Fix return value check on uname so we can get the 
17301         executing version on Solaris operating systems.
17302
17303 2007-03-28  Jb Evain  <jbevain@gmail.com>
17304
17305         * class.c (mono_type_get_name_recurse): Complete the
17306         fix for the creation of assembly qualified names for
17307         pointer types. Fixes #81208.
17308
17309 2007-03-27  Dick Porter  <dick@ximian.com>
17310
17311         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17312         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17313         changed.
17314
17315         * threads.c
17316         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17317         the value of ReleaseMutex().
17318
17319 2007-03-27  Dick Porter  <dick@ximian.com>
17320
17321         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17322         in little-endian order, not network endian, so must be converted
17323         to host endian here.  Fixes bug 80593.
17324
17325 2007-03-22  Jb Evain  <jbevain@gmail.com>
17326
17327         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17328         qualified names for pointer types. Fixes #81208.
17329
17330 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17331
17332         * marshal.c: Add support for PreserveSigAttribute. 
17333         
17334         Code is contributed under MIT/X11 license.
17335
17336 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17337
17338         * process.c: Fix endianness issues. Fixes #81126.
17339
17340         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17341         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17342
17343         * image.c (mono_image_lookup_resource): Make this work on big-endian
17344         machines.Change API contract so the caller needs to free the return value.
17345         
17346         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17347         API change.
17348         
17349 2007-03-14  Martin Baulig  <martin@ximian.com>
17350
17351         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17352         mono_type_get_desc() as well.
17353
17354 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17355
17356         * icall.c:  Fix environ access in VS.  
17357         
17358 2007-03-13  Alp Toker  <alp@atoker.com>
17359
17360         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17361         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17362         #63841.
17363
17364 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17365
17366         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17367         circular references among dynamic methods. Fixes #81091.
17368
17369         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17370
17371 2007-03-09  Martin Baulig  <martin@ximian.com>
17372
17373         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17374
17375 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17376
17377         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17378         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17379         
17380         Code is contributed under MIT/X11 license.
17381         
17382 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17383
17384         * loader.c: Reapply patch for bug #79424.
17385
17386 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17387
17388         * metadata.c (mono_type_to_unmanaged): Only convert object to
17389         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17390
17391 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17392
17393         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17394         (and incorrectly set) is_reference field from MonoGenericInst.
17395
17396 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17397
17398         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17399         a little earlier.
17400
17401         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17402
17403         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17404
17405 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17406
17407         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17408         FileOptions.1 value to mean "temporary", map that to
17409         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17410
17411         Fixes 80688
17412
17413 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17414
17415         * appdomain.c: implement MS .Net style shadow copying. Copies of
17416         the assemblies are made in a subdirectory of the dynamic base
17417         directory, the assembly names are preserved.
17418         Copy .mdb and .config files along with the assemblies being shadowed.
17419
17420 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17421
17422         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17423         (emit_marshal_handleref): Ditto.
17424
17425         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17426         on Visual C++. Fixes #80671.
17427
17428 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17429
17430         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17431         for clone operations.
17432
17433 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17434
17435         * marshal.c: Fix warnings.
17436
17437 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17438
17439         * loader.c: allow case-insensitive matching of the dll name
17440         in dllmap handling when prefixed with "i:".
17441
17442 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17443
17444         * threads.c: Fix #ifdef for dummy_apc function for VS.
17445
17446 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17447
17448         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17449
17450 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17451         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17452         giving precedence to the methods with a fully qualified name
17453         (InterfaceName.MethodName) when building the interface sections
17454         of the vtable.
17455
17456 2007-02-16  Dick Porter  <dick@ximian.com>
17457
17458         * threadpool.c (append_job): Fix fast-path array handling, so it's
17459         less likely the array will grow exponentially when the load is
17460         heavy.
17461
17462 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17463
17464         * metadata-internals.h, loader.c: fix dllmap lookup order
17465         for non-function maps, too, and prepare for fallback code.
17466
17467 2007-02-12  Robert Jordan  <robertj@gmx.net>
17468
17469         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17470         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17471         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17472         GlobalFree. Fixes a part of bug #77075.
17473
17474 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17475
17476         * loader.c: implemented typedef parent in field memberref.
17477
17478 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17479
17480         * marshal.c: Fix warnings and remember to call Release on
17481         IUnknown of RCW.
17482         
17483         Code is contributed under MIT/X11 license.
17484
17485 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17486
17487         * class-internals.h: Add MonoHandleRef definition, and
17488         handleref_class to mono_defaults. 
17489
17490         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17491         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17492
17493         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17494         (do nothing on this stage)
17495         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17496         (emit_marshal_handleref): New method, used for argument handling
17497         of HandleRefs. 
17498
17499 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17500
17501         * class.c (mono_class_setup_parent): Lazily init com types.
17502         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17503         init com types.
17504         * object.c (mono_remote_class_vtable): Lazily init com types.
17505         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17506         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17507         * domain-internals.h: Expose mono_init_com_types.
17508         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17509         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17510         Add support for COM Callable Wrapper marshalling.
17511         * marshal.h: Add icall definitions.
17512         * gc.c: Handle freeing of CCWs in finalizer code.
17513         
17514         Code is contributed under MIT/X11 license.
17515
17516 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17517
17518         * reflection.c: changed all the signature encoding code to use
17519         a variable-sized buffer.
17520
17521 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17522
17523         * marshal.c: locking fixes: never take the loader lock
17524         or other runtime locks when holding the marshal lock
17525         (fixes bug#80664).
17526
17527 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17528
17529         * marshal.c: make the delegate function pointer mapping
17530         work for the moving GC.
17531
17532 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17533
17534         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17535         for bug #80618.
17536
17537 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17538
17539         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17540         gmodule.
17541
17542 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17543
17544         * threadpool.c: made the code moving-GC safe.
17545
17546 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17547
17548         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17549         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17550         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17551         warning cleanup.
17552         * reflection.c: warning cleanup, some threading and moving GC fixes.
17553
17554 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17555
17556         * class.c, loader.c: create the needed Set/Get/Address array methods
17557         as well as the .ctors in mono_class_init (), fixes bug #80567.
17558
17559 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17560
17561         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17562         we doesn't decrease its alignment. Should fix the sparc build.
17563
17564 2007-01-24  Dick Porter  <dick@ximian.com>
17565
17566         * socket-io.c
17567         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17568         Create the returned object if we need to ignore an unsupported
17569         socket option.  Fixes a segfault reported by Atsushi.
17570
17571 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17572
17573         * class.c, object.c: restrict GC-tracked fields to
17574         UIntPtr fields used inside corlib, so we provide better
17575         type info to the GC and also allow broken packing as in
17576         bug #80580.
17577
17578 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17579
17580         * sgen-gc.c: removed duplicated function.
17581
17582 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17583
17584         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17585         value that means that the value is not supported, but that we
17586         should not return a failure, but instead report this as a
17587         successful operation.
17588
17589 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17590
17591         Fix tests/bug79956.2.il
17592         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17593         (mono_generic_class_get_class): If the generic definition in an
17594         enum, copy over other fields related to it.
17595
17596 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17597
17598         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17599         genericinst enums (bug #79215).
17600
17601 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17602         * class.c: Fix bug 80307.
17603
17604 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17605
17606         * image.c: if the file table is not present, try to load
17607         all the modules, since we don't have info about them
17608         having or not metadata (bug #80517).
17609         * assembly.c: allow mono_assembly_load_references () to
17610         work for netmodules.
17611
17612 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17613
17614         * image.c, metadata-internals.h, object.c: execute module
17615         cctors when running on the 2 runtime if present (bug #80487).
17616
17617 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17618
17619         * icall.c: optimized InitializeArray() on bigendian.
17620
17621 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17622
17623         * icall.c: fix for the broken ARM FPA double format.
17624
17625 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17626
17627         * icall.c: handle endian issues for r4 and r8 types, too, in
17628         the InitializeArray() icall.
17629
17630 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17631
17632         * loader.c (mono_loader_error_prepare_exception): Clear the error
17633         once we have extracted the information from it, do this before we
17634         call into the JIT's class loading mechanisms.
17635
17636         * object.c (mono_class_create_runtime_vtable): Do not clear the
17637         loader error before calling mono_class_get_exception_for_failure
17638         as the loader error is needed inside
17639         mono_class_get_exception_for_failure to throw the error (thinko).
17640
17641         Fixes #80521
17642         
17643 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17644
17645         * reflection.c: align fields rva data so it's faster to load at
17646         runtime.
17647
17648 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17649
17650         Prepare to simplify GenericMethod handling.
17651         * class-internals.h (mono_method_get_context): New accessor function.
17652         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17653         rather than directly accessing '->context' field.
17654
17655         * class-internals.h (_MonoGenericParam.method): Move ...
17656         (_MonoGenericContainer): ... here.  Add into union with klass field.
17657         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17658         Update to changes.
17659
17660 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17661
17662         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17663         the wrapper type enum and reduce relocations.
17664
17665 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17666
17667         * reflection.c (inflate_mono_method): Reuse method instantiation
17668         from the generic method, if available.
17669
17670 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17671
17672         * marshal.c (emit_marshal_variant): Fix conv_arg
17673         type in last commit, based on whether parameter is byref.
17674         
17675 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17676
17677         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17678         marshalling.
17679         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17680         MONO_TYPE_OBJECT back for VARIANT support.
17681
17682 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17683
17684         * marshal.c, marshal.h, icall-def.h: Implement 
17685         Marshal.ReAllocCoTaskMem.
17686
17687 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17688
17689         * marshal.c: memory retention fixes: use the proper
17690         image cache for runtime_invoke method lookups.
17691
17692 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17693
17694         * mempool.c: added code to help debug mempool allocations.
17695
17696 2007-01-11  Dick Porter  <dick@ximian.com>
17697
17698         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17699         support (experimenting with faking it with IP_MTU_DISCOVER for
17700         systems that don't have IP_DONTFRAGMENT.)
17701         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17702         icall.
17703
17704         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17705
17706         * socket-io.h: Add new fields to MonoSocketAsyncResult
17707         corresponding to the new ones in Socket.cs.
17708
17709 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17710
17711         Fix IronPython regression mentioned in #80249
17712         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17713         'cached_context' field, since it may have been initialized as a
17714         side-effect of metadata parsing.
17715
17716         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17717         (_MonoGenericClass.cached_class): Move here and rename from lone
17718         remaining field of ...
17719         (_MonoInflatedGenericClass): ... this.  Remove.
17720         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17721         to changes.
17722
17723         Fix mcs/tests/test-128.cs regression.
17724         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17725         2007-01-10 change below.
17726         [MONO_TYPE_OBJECT]: Recurse into array case.
17727
17728 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17729
17730         * class-internals.h (mono_get_inflated_generic_class): Remove.
17731         * class.c (mono_get_inflated_generic_class): Remove.
17732         (mono_generic_class_get_class): Rename from
17733         mono_class_create_generic.
17734         (mono_class_from_mono_type) [GENERICINST]: Use it.
17735         * reflection.c, metadata.c: Update to changes.  Use
17736         'mono_class_from_mono_type'.
17737
17738 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17739
17740         * reflection.c: use passed type when encoding an array element
17741         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17742
17743 2007-01-09  Robert Jordan  <robertj@gmx.net>
17744
17745         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17746         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17747         Fixes bug #80392.
17748
17749 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17750
17751         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17752
17753         * object.c (set_value): Avoid aliasing between type->data.klass
17754         and type->data.generic_class.
17755
17756         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17757
17758 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17759
17760         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17761         between type->data.klass and type->data.generic_class.
17762
17763 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17764
17765         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17766         value in out parameters.
17767
17768 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17769
17770         Simplify invariant for MonoGenericClass::klass field.
17771         * class.c (mono_class_create_generic): Verify 'klass' is null.
17772         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17773         initialize 'klass' field.
17774
17775 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17776
17777         Ongoing work to avoid redundant data and simplify invariants.
17778         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17779         'generic_class', and change type to a GenericInst.
17780         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17781         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17782
17783 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17784
17785         * class.c : skip io-layer under PLATFORM_WIN32.
17786
17787 2007-01-03  Tor Lillqvist  <tml@novell.com>
17788
17789         Fix #80305: In a bundled executable, look in the bundled exe
17790         assembly to determine the runtime version. Add the possibility to
17791         bundle also the machine.config file.
17792         
17793         * assembly.c (mono_assembly_open_from_bundle): Make
17794         non-static. Allow being called even if we have no bundled
17795         assemblies, and return NULL right away in that case.
17796
17797         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17798         here.
17799
17800         * domain.c (app_config_parse): Take an assembly exe file name as
17801         parameter instead of a config file name. Check for a bundled
17802         config file for that assembly by calling
17803         mono_config_string_for_assembly_file() (see below) before looking
17804         for one in the file system.
17805         (get_runtimes_from_exe): Corrsponding change to call of
17806         app_config_parse().
17807         (get_runtimes_from_exe): Check for bundled assembly exe file first
17808         by calling mono_assembly_open_from_bundle(). If no bundled
17809         assembly exe file is found, call mono_image_open() as before to
17810         look it up in the file system.
17811
17812         * mono-config.c: Add variable bundled_machinec_onfig.
17813         (mono_config_string_for_assembly_file): New function.
17814         (mono_config_for_assembly): Move code snippet that looks for a
17815         bundled assembly .config file into the above new function. Call
17816         it.
17817         (mono_register_machine_config, mono_get_machine_config): New
17818         functions to set and retrieve
17819
17820         * assembly.h: Declare mono_register_machine_config().
17821
17822         * mono-config.h: Declare mono_get_machine_config() and
17823         mono_config_string_for_assembly_file().
17824
17825         * icall.c: No declaration of environ necessary on Win32. It is
17826         declared (as a macro expanding to a function call) in stdlib.h.
17827         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17828         New internal mono function. Returns the value of
17829         mono_get_machine_config() as a Mono string.
17830
17831         * icall-def.h: Add get_bundled_machine_config().
17832
17833 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17834
17835         Remove redundant field
17836         * class-internals.h (_MonoGenericContext.container): Remove field.
17837         * loader.c (mono_method_get_signature_full): Don't parse a
17838         "container" for a signature parse when the signature is inflated
17839         immediately.
17840         (method_from_methodspec): Likewise, for a generic_inst.
17841         * class.c, metadata.c, reflection.c: Update to changes.
17842
17843 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17844
17845         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17846         'cached_context', and change semantics -- it starts off NULL, and
17847         is initialized on demand.
17848         * class.c (mono_generic_class_get_context): New accessor to
17849         replace 'context' field accesses.
17850         (mono_class_get_context): New helper.
17851         (*): Update to changes.
17852         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17853
17854 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17855
17856         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17857         before the memcpy.   Fixes Marshal2 regression.
17858
17859 2007-01-02  Jb Evain  <jbevain@gmail.com>
17860
17861         * blob.h: add a MONO_TYPE_ENUM definition
17862         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17863         fix the encoding of arrays of enums in custom attributes.
17864
17865         Fixes #79666.
17866
17867 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17868
17869         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17870         string is null terminated, but only cut the string short if it
17871         overflows the buffer.   
17872         
17873         (mono_string_to_byvalstr): Also fix this routine.   The code here
17874         was not properly terminating a string (it was only terminated
17875         because of the previous catch-all memset). 
17876
17877         I left the memset, because I do not know if applications expect
17878         the runtime to clear this region. 
17879
17880         Fixes #79944.
17881
17882         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17883         Clear the error before returning to unmanaged code to prevent the
17884         runtime from being confused later on (fixes  80420).
17885         (ves_icall_type_from_name): Always call mono_loader_clear_error
17886         after parsing a type that could have failed.
17887         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17888
17889         * loader.c (mono_loader_clear_error): Fix indentation.
17890
17891 2006-12-28  Martin Baulig  <martin@ximian.com>
17892
17893         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17894
17895 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17896
17897         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17898         getting a token for an EnumBuilder.
17899
17900 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17901
17902         * reflection.c: be more careful in case resource generation
17903         fails to create the data array.
17904
17905 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17906
17907         * sgen-gc.c: write barrier for clone and fix unregister handles.
17908
17909 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17910
17911         * reflection.c: some fixes needed in the generics code for the moving GC.
17912
17913 2006-12-22  Robert Jordan  <robertj@gmx.net>
17914
17915         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17916         account. Fixes bug #80299.
17917
17918 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17919
17920         Fix WaitHandle usage in delegates.
17921         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17922         * object.c (mono_wait_handle_new): Use the property set method to
17923         initialize the handle.
17924         (mono_wait_handle_get_handle): New.
17925         * threadpool.c (mono_async_invoke): Use it.
17926         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17927         Likewise.
17928         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17929
17930 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17931
17932         * marshal.c (emit_marshal): Call emit_marshal_variant and
17933         emit_marshal_com_interface when applicable.
17934         (emit_marshal_variant, emit_marshal_com_interface): Add
17935         methods for this case and remove if's from emit_marshal_object.
17936         
17937 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17938
17939         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17940
17941 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17942
17943         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17944         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17945         and GlobalFree on Windows. Remove FIXME.
17946
17947 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17948
17949         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17950         implementation for managed objects.
17951
17952 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17953
17954         * object.c: implemented code to be used for checking
17955         that no reference field overlaps with non-references.
17956
17957 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17958
17959         * threadpool.c: fix queue code to be compatible with the
17960         moving GC.
17961
17962 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17963
17964         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17965         in structures by throwing ArgumentNullException.
17966
17967         (emit_marshal_safehandle): Also when they are null parameters.
17968
17969         (emit_marshal_safehandle): Add support for ref
17970         SafeHandles parameters
17971
17972 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17973
17974         * profiler.c: updated to use the mono-dl API instead of
17975         gmodule.
17976
17977 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17978
17979         * profiler.c: updated to use the mono-dl dynamic loading
17980         API instead of gmodule.
17981
17982 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17983
17984         * profiler.c: use readlink, older versions of glib don't have
17985         g_file_read_link ().
17986
17987 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17988
17989         * profiler.c: try to detect the path to mono if libc fails to provide
17990         a useful name (bug #80286).
17991
17992 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17993
17994         Fix #80242
17995         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17996         instance, use the generic type definition instead.
17997         (ves_icall_Type_GetNestedTypes): Likewise.
17998         * class.c (mono_class_create_generic): Always set the
17999         nested_classes of a generic instance to NULL, even if the generic
18000         type definition has nested types.
18001
18002 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
18003
18004         * marshal.c (mono_string_from_bstr): Revert previous Windows change
18005         and fix on Linux.
18006         
18007 2006-12-15  Miguel de Icaza  <miguel@novell.com>
18008
18009         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
18010         my arguments were in the wrong order.   I also fixed the Windows
18011         version which seems to have had the same issue.
18012
18013         (mono_free_bstr): On Unix, this is g_free.
18014         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
18015         conversions (for the tests in corlib to pass).
18016
18017 2006-12-14  Miguel de Icaza  <miguel@novell.com>
18018
18019         * marshal.c (emit_ptr_to_object_conv): For now, ignore
18020         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
18021         exception if a ref SafeHandle in a struct has changed).
18022         
18023         (emit_struct_conv): Do not perform layout checks for classes
18024         derived from SafeHandle, as those are specially handled. 
18025
18026         (emit_object_to_ptr_conv): Add support for
18027         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
18028
18029         (emit_marshal_safehandle): Implement conversion of return values
18030         of safehandles (MARSHAL_ACTION_CONV_RESULT).
18031         
18032         * threads.c: WaitHandle now is compiled with two different handles
18033         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
18034         for 2.0.
18035         
18036         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
18037         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
18038         these routines to cope with both kinds of fields.
18039
18040 2006-12-12  Miguel de Icaza  <miguel@novell.com>
18041
18042         * metadata.c (mono_type_to_unmanaged): Handle the case where
18043         type->data.klass is a SafeHandle, and in that case, return the
18044         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
18045         MONO_MARSHAL_CONV_SAFEHANDLE. 
18046
18047 2006-12-11  Miguel de Icaza  <miguel@novell.com>
18048
18049         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
18050         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
18051         calling emit_marshal_object.
18052
18053         (emit_marshal_safehandle): Implement marshalling of
18054         SafeHandle parameters (no ref support yet).
18055
18056         (MarshalAction): Document the defines as I implement
18057         them for SafeHandle.
18058
18059         (emit_marshal_object): indentation police.
18060
18061         * class-internals.h: Define MonoSafeHandle.
18062         Add safehandle_class to MonoDefaults type.
18063
18064         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
18065         list of classes to check for fields. 
18066
18067         * domain.c (mono_init_internal): Add SafeHandle to the list of
18068         mono_defaults loaded.
18069
18070 2006-12-15  Raja R Harinath  <rharinath@novell.com>
18071
18072         Fix #80253
18073         * reflection.c (mono_reflection_bind_generic_parameters): If the
18074         generic type definition is a type builder, ensure that it is fully
18075         initialized before instantiating it.  Kill some dead code.
18076
18077 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18078
18079         * object.c: clear the loader_error () before loading
18080         more metadata stuff (bug #80258).
18081
18082 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
18083
18084         * icall.c, icall-defs.h: type modifiers icalls for
18085         parameters and properties.
18086
18087 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
18088
18089         * object.c, icall.c: fixed warnings.
18090
18091 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18092
18093         * marshal.c: fixed a couple of leaks and coding style in a few places.
18094
18095 2006-12-08  Dick Porter  <dick@ximian.com>
18096
18097         * process.c: Cope with NULL ProcessStartInfo arguments on windows
18098         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
18099         80173.
18100
18101 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18102
18103         * process.c: ProcessStartInfo may have only filename set and
18104         arguments can be NULL.
18105
18106 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18107
18108         * icall.c: fix leak found by Robert Jordan.
18109
18110 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18111
18112         * marshal.c, marshal.h: generate managed method to access an element
18113         of a multi-dimensional array.
18114
18115 2006-11-30  Paolo Molaro (lupus@ximian.com)
18116
18117         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
18118
18119 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18120
18121         * icall.c: back out GetFields () fix until the serialization code is
18122         fixed to not depend on the incorrect behaviour.
18123
18124 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18125
18126         * profiler.c: provide defaults if none are set.
18127
18128 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18129
18130         * Makefile.am, attrdefs.h: new public header file with
18131         constants for attributes for use by embedders.
18132
18133 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18134
18135         * icall.c: GetFields () fix for bug #80064.
18136
18137 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18138
18139         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18140         removed long unused icalls.
18141
18142 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18143   
18144         * marshal.c: 
18145                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18146                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18147                 can be generated without a delegate class.
18148                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18149         
18150         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18151
18152 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18153
18154         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18155         #80069.
18156
18157 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18158
18159         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18160         icall-def.h: added icalls needed by System.GC.
18161
18162 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18163
18164         * loader.c: ensure the class in catch clauses is handled
18165         correctly for generics methods (fixes bug#79980).
18166
18167 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18168
18169         * monitor.h, monitor.c: added mono_locks_dump () function
18170         to help debug deadlocks involving managed locks.
18171
18172 2006-11-13  Dick Porter  <dick@ximian.com>
18173
18174         * file-io.c (get_file_attributes): If the file is a symlink try
18175         and get the stat data for the target, but also add the
18176         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18177         the specs for the windows symlink support, but will probably have
18178         to be reworked when I have test data from a vista machine.  Fixes
18179         bug 79887.
18180
18181 2006-11-13  Dick Porter  <dick@ximian.com>
18182
18183         * gc.c (mono_domain_finalize): 
18184         * marshal.c (mono_delegate_begin_invoke): 
18185         * threadpool.c (socket_io_init, mono_thread_pool_init)
18186         (mono_thread_pool_finish): 
18187         * monitor.c (mono_monitor_try_enter_internal): 
18188         * threads.c (mono_thread_resume, mono_thread_init)
18189         (mono_thread_suspend_all_other_threads)
18190         (mono_thread_execute_interruption): 
18191         * appdomain.c (mono_domain_unload): Check for NULL error returns
18192         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18193         75733.
18194
18195 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18196
18197         * process.c
18198         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18199         Only close the handle if the value of the handle is not
18200         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18201         robust.
18202
18203         Improvement for #75733, so that we do not run into this problem. 
18204
18205         
18206         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18207         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18208         internal variables.  Fixes #79462 
18209         
18210
18211 2006-11-09  Dick Porter  <dick@ximian.com>
18212
18213         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18214         Use poll() not select().  Fixes bug 79397.
18215
18216 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18217
18218         Fix #79872
18219         * assembly.c (mono_assembly_load_from_full): Check that the given
18220         image has an assembly manifest.
18221
18222 2006-11-09  Ankit Jain  <jankit@novell.com>
18223
18224         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18225         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18226         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18227
18228 2006-11-07  Dick Porter  <dick@ximian.com>
18229
18230         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18231         Put the old resolver behaviour back for pre-2.0 profiles.
18232
18233 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18234
18235         * threadpool.c: precise GC and locking fixes.
18236
18237 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18238
18239         * class.c: don't load types that have an explicit unaligned
18240         managed reference. Provide better info in the TypeLoad exception.
18241         Part of the fix for bug #79744.
18242         * object.c: use the correct check for class type load issues.
18243
18244 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18245
18246         * class.c: enforce alignment of fields with managed references
18247         even when Pack=1 is forced by the user (bug #77788).
18248
18249 2006-11-03  Dick Porter  <dick@ximian.com>
18250
18251         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18252         If the address reverse lookup fails, return it as the hostname
18253         anyway.  Fixes bug 79721.
18254
18255 2006-11-03  Dick Porter  <dick@ximian.com>
18256
18257         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18258         Fix build on Windows.
18259
18260 2006-11-02  Dick Porter  <dick@ximian.com>
18261
18262         * icall-def.h: 
18263         * object-internals.h: 
18264         * exception.c (mono_get_exception_thread_interrupted): 
18265         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18266         Fixes bug 74525.
18267
18268         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18269         Check for pending Thread.Interrupt.
18270
18271 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18272         * loader.c: Fixed bug 79684.
18273
18274 2006-10-27  Dick Porter  <dick@ximian.com>
18275
18276         * file-io.c (get_file_attributes): Force symlinks to directories
18277         to be returned as a regular file.  Fixes bug 79733.
18278 2006-10-26  Dick Porter  <dick@ximian.com>
18279
18280         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18281         CreateFile to open a directory then we need to set the
18282         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18283
18284 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18285
18286         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18287         friends.
18288
18289 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18290
18291         * sgengc.c: small cleanup of timer code.
18292
18293 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18294
18295         * sgen-gc.c: fix some warnings and start adding support for
18296         complete object removal on domain unload.
18297
18298 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18299
18300         * assembly.c: build_assembly_name should not consider a version
18301         number without build or revision number invalid. Fixes bug #79715.
18302
18303 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18304
18305         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18306         call kernel32 function OutputDebugString directly.
18307         
18308         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18309         
18310 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18311
18312         * reflection.c: small cleanup, using a function to insert a MonoString
18313         in the string heap.
18314
18315 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18316
18317         * reflection.c: moving GC fixes.
18318
18319 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18320
18321         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18322         all the objects with finalizers belonging to an unloading appdomain.
18323
18324 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18325
18326         * sgen-gc.c: added ability to allocate even when the nursery is fully
18327         pinned and fixed a couple of bugs.
18328
18329 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18330
18331         * threads.h: Revert the last change for now.
18332
18333         * threads.h (mono_thread_get_pending_exception): Rename this to
18334         mono_thread_get_undeniable_exception ().
18335
18336 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18337
18338         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18339         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18340         when fname does not refer to valid assembly. This result in a more
18341         meaningful error message.
18342         * exception.c: added mono_get_exception_bad_image_format2 which 
18343         constructs a BadImageFormatException using the ctor taking a custom
18344         message and the file name. Passing in a NULL msg results in a default
18345         message.
18346         * exception.h: define mono_get_exception_bad_image_format2 function.
18347         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18348         when file name pointed to an invalid IL image. Use 
18349         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18350         as this results in a more meaningful error message.
18351
18352 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18353
18354         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18355         #79465.
18356
18357 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18358
18359         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18360         consistency with the other _size functions.
18361         (mono_type_stack_size): Ditto.
18362
18363         * class.c object.c icall.c: Fix warnings caused by the above change.
18364
18365         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18366
18367         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18368
18369         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18370
18371 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18372
18373         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18374         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18375         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18376         threadpool.h, threads-types.h: mark more internal functions.
18377
18378 2006-10-11  Dick Porter  <dick@ximian.com>
18379
18380         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18381         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18382         reproduce the bug even before applying the fix.)
18383
18384 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18385
18386         * reflection.c: allow retrieving attributes for arguments in generic
18387         methods (bug #79241).
18388
18389 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18390
18391         * debug-mono-symfile.c: properly check fopen () result (found by
18392         coverity).
18393
18394 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18395
18396         * reflection.c: make error message clearer and fixed two
18397         issuelets found by Coverity.
18398
18399 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18400
18401         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18402
18403 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18404
18405         * object-internals.h, gc-internal.h, profiler-private.h:
18406         mark internal functions.
18407
18408 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18409
18410         * reflection.c: put data in the text section.
18411         * icall.c: recognize more types in type_from_typename ().
18412         * process.c, marshal.c: added some GC FIXMEs.
18413
18414 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18415
18416         * loader.c: check for NULL before initializing.
18417
18418 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18419
18420         * gc.c (finalizer_thread): Use a non-alertable wait here.
18421
18422         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18423         until the correct solution is found.
18424
18425 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18426
18427         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18428         modules with no metadata. Fixes #79596.
18429
18430         * image.c (load_metadata_ptrs): Put back the error message when
18431         the #- heap is encountered since the support is not complete yet.
18432
18433 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18434
18435         * gc.c: do not allow the user to SuppressFinalize () a
18436         delegate because it would leak the trampoline if present.
18437
18438 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18439
18440         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18441         PropertyPtr table.
18442
18443 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18444
18445         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18446
18447         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18448
18449         * row-indexes.h: Add definitions for *Ptr tables.
18450
18451         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18452
18453         * metadata.c (mono_metadata_translate_token_index): New helper function to
18454         translate table indexes used in uncompressed metadata.
18455         (mono_metadata_decode_table_row): Ditto.
18456         (mono_metadata_decode_table_row_col): Ditto.
18457
18458         * metadata.c: Add table schema for *Ptr tables.
18459
18460         * class.c loader.c: Use the new helper function to access the affected metadata
18461         tables.
18462         
18463         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18464         #38532.
18465         
18466 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18467
18468         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18469         sequences which can be unbounded in size. Fixes #79583.
18470
18471 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18472
18473         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18474         static initialization.
18475
18476         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18477
18478         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18479
18480         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18481
18482         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18483         ctor fails, i.e. throw the same exception on subsequent accesses.
18484         
18485 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18486
18487         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18488         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18489         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18490         Handle marshalling of interfaces and VARIANTs contained in structs.
18491         
18492         Code is contributed under MIT/X11 license.
18493         
18494 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18495
18496         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18497         
18498         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18499         mempool.
18500
18501 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18502
18503         * console-io.c: ignore previous SIGINT handler.
18504
18505 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18506
18507         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18508         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18509         #79460, #79461, #79485.
18510
18511         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18512
18513         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18514         #79217.
18515
18516 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18517
18518         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18519         could be generated from it.
18520
18521 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18522
18523         * rand.c: fix read loop to correctly handle EINTR.
18524
18525 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18526
18527         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18528         internal calls are defined to keep methods closer to the declaring
18529         type and allow a significant reduction in runtime relocations and
18530         memory usage.
18531
18532 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18533
18534         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18535         exception message to have FileNotFoundException use the default
18536         assembly load error message. Fixes bug #79426.
18537         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18538
18539 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18540
18541         * threadpool.c: (start_thread_or_queue) use the root domain when
18542         creating the thread instead of the async object one.
18543
18544 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18545
18546         * class.c, object.c, class-internals.h, reflection.c:
18547         for arrays, store element_size inside MonoClass (speedup
18548         for array object creation).
18549
18550 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18551
18552         * icall.c: fixed CodeBase to use the file name and not the module
18553         name (bug #79365).
18554
18555 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18556
18557         * mono-debug.c, mono-debug.h: export find_method as
18558         mono_debug_find_method ().
18559
18560 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18561
18562         * debug-helpers.c, class-internals.h: added a few functions useful
18563         when debugging under gdb.
18564
18565 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18566
18567         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18568         characters that need special handling.
18569
18570 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18571
18572         * mono-config.c: make the os/cpu specification more flexible,
18573         allowing lists and negation.
18574
18575 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18576
18577         * marshal.c: COM Interop fixes. Handle case where method->klass.
18578         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18579         calling convention on non-windows platforms. This is for
18580         compatibility with XPCOM and MainWin COM.
18581         
18582         Code is contributed under MIT/X11 license.
18583         
18584
18585 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18586
18587         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18588         correctly. Fixes #79217.
18589
18590         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18591
18592 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18593
18594         * mono-config.c: allow both an os and cpu attribute for dllmap
18595         and dllentry elemnets to enable a single config file to be used
18596         for multiple architectures.
18597
18598 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18599
18600         * loader.c: MonoLoaderError was cleared too soon on load failure.
18601         Fixes bug #79424.
18602
18603 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18604
18605         * icall.c: use the defining class vtable when accessing a
18606         static field, not a pobblibly derived class.
18607
18608 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18609
18610         * icall.c string-icalls.c: Remove references to unicode.h.
18611
18612         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18613
18614         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18615
18616         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18617         indicating the image where custom marshaller types should be looked up.
18618         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18619         custom marshallers, instead of corlib. Fixes #79425.
18620
18621 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18622
18623         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18624
18625 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18626
18627         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18628         Implement Environment.ProcessorCount.
18629         
18630         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18631         Implement Environment.ProcessorCount.
18632         
18633         * icall.c: 
18634         Add Environment.ProcessorCount icall.
18635         
18636         Patch by Jason McFall.
18637
18638 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18639
18640         * assembly.c: don't append .exe/.dll when the filename already contains
18641         one of those extensions.
18642
18643 2006-09-12  Martin Baulig  <martin@ximian.com>
18644
18645         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18646         to array interfaces.
18647
18648 2006-09-11  Martin Baulig  <martin@ximian.com>
18649
18650         * reflection.c (mono_image_build_metadata): Create the
18651         MethodImpl's after emitting all types and methods, so we don't
18652         need another fixup pass for them.
18653
18654 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18655
18656         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18657         change.
18658
18659 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18660
18661         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18662         unload.
18663
18664 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18665
18666         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18667         args is not set. Fixes #78926.
18668
18669 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18670
18671         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18672
18673         * image.c (load_class_names): Move this to class.c, and rename it to 
18674         'mono_image_init_name_cache'.
18675         (load_modules): Fix a warning.
18676
18677         * class.c icall.c image.c: Initialize image->name_cache lazily.
18678
18679         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18680         on its name using information in the AOT file.
18681
18682         * class.c (mono_class_from_name): Use the new hook function.
18683
18684 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18685
18686         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18687         correctly.
18688
18689         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18690         Fixes #79289.
18691         
18692 2006-09-06  Martin Baulig  <martin@ximian.com>
18693
18694         * icall.c (mono_lookup_internal_call): Small fix.
18695
18696 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18697
18698         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18699         double g_free.
18700
18701 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18702
18703         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18704         when --debug is specified.
18705
18706 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18707
18708         * class.c (setup_generic_array_ifaces): Fix a warning.
18709
18710 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18711
18712         * Temporarily remove the patch to assemly.c that checks the
18713         assembly versions as it breaks our gacutil.
18714
18715 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18716
18717         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18718
18719         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18720         a net 1.0 runtime.
18721
18722         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18723         created using the default ctor. Fixes #79152.
18724         (mono_string_builder_to_utf16): Ditto.
18725
18726 2006-09-01  Martin Baulig  <martin@ximian.com>
18727
18728         Fix handling of the generic array interfaces.
18729
18730         * class-internals.h
18731         (MonoDefaults): Removed `generic_array_class' and added
18732         `generic_ilist' class.
18733
18734         * class.c
18735         (mono_bounded_array_class_get): Add the new generic array interfaces.
18736         (setup_generic_array_ifaces): New static method; create vtable
18737         entries for each method in the generic array interfaces.
18738
18739         * metadata.c
18740         (select_container): Allow "parent-less" generic methods.
18741
18742         * marshal.c
18743         (mono_marshal_get_generic_array_helper): New public method.
18744
18745         * icall.c
18746         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18747         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18748         moved the interncall into System.Array.
18749
18750 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18751
18752         A few more cases of avoiding work on types with ->byref set.
18753         Has the real fix for #79238
18754         * icall.c (is_generic_parameter): New helper.
18755         (ves_icall_Type_GetGenericParameterPosition): Use it.
18756         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18757         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18758         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18759         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18760         reference types.
18761         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18762         reference types.
18763         (ves_icall_Type_get_IsGenericInstance): Likewise.
18764         (ves_icall_Type_get_IsGenericType): Likewise.
18765
18766 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18767
18768         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18769         class if possible.
18770
18771         * mempool.h (mono_mempool_get_allocated): New helper function.
18772
18773         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18774         change.
18775
18776         * mempool.c: Fix warnings and the calculation of stats.
18777
18778         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18779
18780         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18781
18782         * loader.c (mono_get_method_from_token): Update method_count stat.
18783
18784         * class-internals.h (MonoStats): Add some stats.
18785
18786 2006-08-31 Robert Jordan  <robertj@gmx.net>
18787
18788         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18789         with managed variants.
18790         All code is contributed under the MIT/X11 license.
18791         
18792 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18793
18794         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18795         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18796
18797         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18798
18799         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18800         with cycles in classes.
18801
18802         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18803
18804         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18805         missing a [MarshalAs] directive. Fixes #79203.
18806
18807         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18808         klass->marshal_info. Fixes #79217.
18809
18810 2006-08-30  Martin Baulig  <martin@ximian.com>
18811
18812         Committing a patch from Joachim Ante <joe@otee.dk>:
18813         Add support for binary data symbol stores.
18814
18815         * debug-mono-symfile.c
18816         (mono_debug_open_mono_symbol_file): Renamed into
18817         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18818         arguments.
18819
18820         * mono-debug.c
18821         (mono_debug_open_image): Added `raw_contents' and `size' args.
18822         (mono_debug_init_2_memory): New public function.
18823
18824 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18825
18826         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18827
18828 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18829
18830         * appdomain.c: implement support for ShadowCopyFiles.
18831
18832 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18833
18834         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18835         when value is NULL (and should remove CID #51).
18836
18837 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18838
18839         * image.c: moved 2 functions to ../utils.
18840
18841 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18842
18843         * gc.c: cope with the target object of a GC handle being NULL
18844         (bug #78877).
18845
18846 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18847
18848         * class.c: recursively check parent's explicit implementations
18849         of interface methods (fixes bug #79125).
18850
18851 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18852
18853         * filewatcher.c: Avoid warnings when building, do not redefine
18854         constants that are defined.
18855
18856         Remove warnings.
18857
18858 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18859
18860         * image.c: don't fail when the link points to an absolute path.
18861
18862 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18863
18864         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18865         Fix CID #3.
18866
18867 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18868
18869         * image.c (full_path): A new method used to obtain the actual path
18870         of an assembly even in the presence of symbolic links.  
18871
18872         This is necessary for the case where we are running a binary that
18873         has been GACed, but we are using the "published" path name
18874         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18875         file in the GAC.
18876
18877         This was the source of the failure for the `xsp' command with the
18878         recent AppDomain changes, as far as the runtime was concerned,
18879         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18880         $prefix/mono/gac/blah/version/blah.exe.
18881
18882         (do_mono_image_open): use full path
18883
18884 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18885
18886         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18887
18888 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18889
18890         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18891         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18892
18893 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18894
18895         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18896         small structures. Fixes #78990.
18897
18898 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18899
18900         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18901
18902         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18903
18904 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18905
18906         * appdomain.c:
18907         * marshal.c: don't load all the assemblies from a domain into newly
18908         created ones. The new domains might have different rules and load
18909         assemblies from different locations. Fixes bug #76757.
18910
18911         Patch by Lluis. Conflicts resolved by Brian Crowell.
18912
18913 2006-08-16  Alp Toker  <alp@atoker.com>
18914
18915         * socket-io.c: First half of the fix for #79084.
18916         Set sa_size to the length of the content, not that of the struct.
18917         Don't add NULL suffix to the content, this should be done in
18918         managed code if needed.
18919
18920 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18921
18922         Fix part of #79012
18923         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18924         mono_metadata_parse_type returns NULL.
18925
18926 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18927
18928         * normalization-tables.h : new file for string normalization data.
18929         * locales.c, locales.h, icall.c :
18930           added load_normalization_resource() for string normalization,
18931           and icall as well.
18932         * Makefile.am : added normalization-tables.h to the sources.
18933
18934 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18935
18936         * marshal.c: Add more helper functions to reduce code duplication and use them
18937         everywhere.
18938
18939 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18940
18941         * marshal.c: Fix non-x86 stdcall warnings.
18942         
18943         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18944         them everywhere.
18945
18946 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18947
18948         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18949         type check on multi-dimensional arrays. Fixes #79000.
18950
18951 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18952
18953         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18954         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18955         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18956         * class-internals.h: add is_com_object to class structure.
18957         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18958         null checks to COM object marshalling. Fix .ctor call on RCW.
18959         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18960         
18961         All code is contributed under the MIT/X11 license.
18962
18963 2006-08-09  Dick Porter  <dick@ximian.com>
18964
18965         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18966         racing mono_monitor_allocator_lock() somewhere, so don't delete
18967         the critical section for now.  Found by running and exiting
18968         monodevelop.
18969
18970 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18971
18972         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18973         (ves_icall_System_ComObject_FindInterface): Ditto.
18974         (ves_icall_System_ComObject_CacheInterface): Ditto.
18975
18976         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18977         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18978
18979 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18980
18981         * threadpool.c: treat pipes from process asynchronous reads as sockets
18982         when reading from them, so we get select/poll or epoll to wait for
18983         data.
18984
18985 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18986
18987         * loader.c: Fix a typo (CID #233) in the null check.
18988
18989 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18990
18991         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18992         Hopefully fixes #78949.
18993         
18994         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18995         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18996         bytes. Fixes #78972.
18997
18998 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18999
19000         * filewatcher.c: we need to set errno here.
19001
19002 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19003
19004         * filewatcher.c: let Win32Exception get the error value.
19005
19006 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19007
19008         * filewatcher.c: translate errno into win32 errors for Win32Exception
19009         to know what happened.
19010
19011 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
19012
19013         * threadpool.c: Fix more warnings.
19014
19015         * assembly.c (search_loaded): Fix warnings.
19016
19017         * threadpool.c (mono_thread_pool_finish): Fix warnings.
19018         (mono_async_invoke): Ditto.
19019
19020 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
19021
19022         * object.c (mono_remote_class_vtable): Need to create proxy vtable
19023         entries for __ComObject type in addition to ComImport types.
19024         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
19025         about hash table.
19026         
19027         All code is contributed under the MIT/X11 license.
19028
19029 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
19030
19031         * image.c: avoid tentative loading of modulerefs that contain
19032         no metadata (P/Invoke library names).
19033
19034 2006-07-28  Dick Porter  <dick@ximian.com>
19035
19036         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
19037         mono_loader_lock() somewhere, so don't delete the critical section
19038         for now.  Found by running and exiting monodevelop.
19039
19040 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19041
19042         * filewatcher.c: define the inotify syscalls when we're building on
19043         linux and have sys/syscall.h. The build system might not have support
19044         for inotify but the target system might have it.
19045
19046 2006-07-26  Miguel de Icaza  <miguel@novell.com>
19047
19048         * domain.c: Documentation updates.
19049
19050         * loader.c (mono_free_method): Do not release the method
19051         information if we are being profiled, as profilers will use this
19052         information at shut down to present some data to the user.
19053
19054         This is needed so that the profiler does not crash, as the
19055         profiler tends to keep MonoMethods around, and they might become
19056         invalid if we free these.
19057
19058         (mono_get_method_constrained): Return the original CIL stream
19059         method as well, so verification can be performed against it.
19060
19061 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19062
19063         * filewatcher.[ch]: support for inotify file system watcher.
19064         * icall.c: add new internal calls for the inotify file system watcher.
19065
19066 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19067
19068         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
19069         #78888.
19070
19071 2006-07-20  Dick Porter  <dick@ximian.com>
19072
19073         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
19074         warning.
19075
19076 2006-07-20  Dick Porter  <dick@ximian.com>
19077
19078         * threads.c (start_wrapper): Do the thread cleanup while we still
19079         hold a reference to its object.  Fixes bug 78123.
19080
19081 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
19082
19083         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
19084         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
19085           "managed-to-managed".
19086         * icall.c: Redirect string constructors that take sbyte* to
19087           ves_icall_System_String_ctor_RedirectToCreateString.
19088         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
19089           to CreateString () methods with matching signature.
19090         * reflection.c: Use original security informations for
19091           MONO_WRAPPER_MANAGED_TO_MANAGED.
19092         * security-manager.c: Use original security informations for
19093           MONO_WRAPPER_MANAGED_TO_MANAGED.
19094         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
19095           that is a placeholder and only its address should be used.
19096         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
19097           that is a placeholder and only its address should be used.
19098
19099 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
19100
19101         Begin implementing COM Interop.
19102         * appdomain.c: Increment corlib version.
19103         * class.c: Set ComImport classes' parent to __ComObject.
19104         * loader.c: Mark cominterop methods as such.
19105         * domain.c: Add __ComObject class to MonoDefaults structure.
19106         * image.c: Add 2 hashtables to the image for COM Interop related methods
19107         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
19108         using the mempool allocator
19109         
19110         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
19111         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
19112         declaration for mono_metadata_type_dup_mp.
19113         
19114         * debug-helpers.c: Added strings for two additional wrapper types
19115         * object.c: Create proxy objects for ComImport classes
19116         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
19117         and added __ComObject class to MonoDefaults structure.
19118         
19119         * object-internals.h: Finish MonoRealProxy definition, and add definition of
19120         MonoComInteropProxy and MonoComObject.
19121         
19122         * marshal.c: Added support for COM Interop
19123         (signature_cominterop): Converts managed signature to corresponding
19124         unmanaged COM signature.
19125         (cominterop_get_function_pointer): gets unmanaged function pointer via
19126         COM object vtable
19127         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
19128         (cominterop_get_method_interface): returns interface type that method is defined on
19129         (mono_mb_emit_cominterop_call): emits native call to function pointer
19130         gotten from vtable
19131         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
19132         that matches signature of unmanaged function.
19133         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19134         (cominterop_get_invoke): forwards call from proxy to __ComObject
19135         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19136         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19137         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19138         
19139         * marshal.h: Added Marshal icall declarations.
19140         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19141         so we can access them in finalizer
19142         
19143 2006-07-14  Dick Porter  <dick@ximian.com>
19144
19145         * object.c (mono_type_initialization_cleanup): Fix a race
19146         condition by temporarily commenting out the critical section
19147         deletion.
19148
19149 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19150
19151         * reflection.c (create_custom_attr): Fix some warnings.
19152         (create_custom_attr_data): Ditto.
19153         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19154         types. Fixes #78855.
19155
19156 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19157
19158         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19159
19160         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19161
19162 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19163
19164         * reflection.c (resolve_object): Add support for DynamicMethod.
19165
19166         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19167         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19168
19169 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19170
19171         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19172         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19173
19174 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19175
19176         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19177         Fixes #77888.
19178
19179 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19180
19181         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19182         slightly: remove a shadow local variable.
19183
19184 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19185
19186         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19187         definition that introduces the virtual function slot.
19188         Also fix Coverity #105.
19189
19190 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19191
19192         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19193         for dynamic assemblies. Fixes #78724.
19194
19195 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19196
19197         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19198         Fixes #78722.
19199
19200 2006-06-21  Martin Baulig  <martin@ximian.com>
19201
19202         * reflection.c
19203         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19204         fixes #76484.
19205
19206 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19207
19208         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19209
19210 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19211
19212         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19213         nor TYPEREFs.
19214         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19215         Inflate result if necessary.
19216         (mono_class_get_full): Remove old version.  Rename from
19217         'mono_class_get' and add 'context' argument.  Pass it to
19218         ..._create_from_typespec.
19219         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19220         (mono_ldtoken): Revert change below.
19221
19222 2006-06-20  Martin Baulig  <martin@ximian.com>
19223
19224         * class.c (mono_ldtoken): Don't pass the generic context to
19225         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19226
19227 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19228
19229         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19230         and later freeing it. Fixes #78638.
19231
19232 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19233
19234         * icall.c (mono_class_get_throw): Revert over-zealous error
19235         throwing, the caller for mono_class_get_throw will cope with
19236         errors when classes are not properly initialized already.
19237
19238         The code still copes with loader exceptions though.
19239
19240         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19241         
19242 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19243
19244         Fixes the `make run1' version of RuntimeAbort (to be commited,
19245         source is in Bugzilla).
19246         
19247         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19248         FALSE on class loading failure instead of returning true.
19249
19250         * class.c (mono_class_create_from_typedef): It is possible for
19251         mono_metadata_interfaces_from_typedef_full to fail if a class is
19252         not found, cope with this.
19253         
19254
19255 2006-06-14  Dick Porter  <dick@ximian.com>
19256
19257         * socket-io.c: 
19258         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19259         4.1.1
19260
19261 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19262
19263         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19264
19265 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19266
19267         * icall.c: Another fix for building mono in Visual Studio.
19268
19269 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19270
19271         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19272         
19273 2006-06-09  Martin Baulig  <martin@ximian.com>
19274
19275         * debug-mono-symfile.c: Put this back and really fix it this
19276         time. Sorry for all the trouble.
19277
19278 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19279
19280         * icall.c (mono_class_get_throw): Fix a warning.
19281         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19282         ReflectionTypeLoadException if needed. Fixes #78606.
19283
19284         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19285         (mono_class_init): Ditto.
19286
19287         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19288         ref_only exceptions.
19289         (mono_loader_clear_error): Make this work even if there is no error.
19290
19291 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19292
19293         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19294         Marshal.GetComSlotForMethodInfo using internal call.
19295
19296 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19297
19298         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19299         a function for signalling it.
19300
19301         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19302         a referenced assembly is not found.
19303
19304         * loader.c (mono_loader_error_prepare_exception): Add support for 
19305         LOADER_ERROR_ASSEMBLY. Fix formatting.
19306
19307 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19308
19309         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19310         for VARIANT marshalling on windows and increment corlib version
19311         since Variant struct was added.
19312
19313 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19314
19315         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19316         stack trace line information:
19317
19318         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19319         (Martin) when looking up B which is between A and C, return A not C.
19320
19321         Bug is #78573.
19322
19323         Thanks to Alexander Olk for tracking this down.
19324
19325 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19326
19327         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19328         
19329         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19330         avoid clobbering its value.
19331         (mono_string_to_lpstr): Fix a warning on windows.
19332
19333 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19334
19335         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19336
19337         * reflection.c loader.c: Removed references to 'dummy' flag.
19338
19339         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19340
19341         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19342         it gets GC tracking.
19343
19344         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19345         GC tracking.
19346         
19347         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19348
19349         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19350
19351         * appdomain.c: Bump corlib version.
19352
19353 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19354
19355         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19356         CEE_STIND_REF when working with object references.
19357
19358 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19359
19360         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19361         Fixes #78539.
19362
19363 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19364
19365         * loader.c (method_from_memberref): Fix argument value for
19366         mono_loader_set_error_method_load (I was passing the MonoClass
19367         instead of the class name char *).
19368
19369 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19370
19371         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19372         CEE_STIND_REF when working with object references.
19373
19374 2006-05-30  Martin Baulig  <martin@ximian.com>
19375
19376         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19377         mono_method_full_name() change and replace the ':' with a '.'
19378         here.
19379
19380 2006-05-30  Martin Baulig  <martin@ximian.com>
19381
19382         * debug-mono-symfile.c
19383         (mono_debug_symfile_lookup_location): Fix the algorithm:
19384         when looking up B which is between A and C, return A not C.
19385
19386 2006-05-29  Martin Baulig  <martin@ximian.com>
19387
19388         * mono-debug.h
19389         (MonoDebugMethodInfo): Make the typedef public.
19390         (MonoDebugSourceLocation): New public struct.
19391
19392         * mono-debug.c
19393         (mono_debug_source_location_from_address): Removed.
19394         (mono_debug_source_location_from_il_offset): Removed.
19395         (mono_debug_il_offset_from_address): Removed.
19396         (mono_debug_address_from_il_offset): Removed.
19397         (mono_debug_lookup_method): New public function.
19398         (mono_debug_lookup_source_location): New public function; replaces
19399         the old mono_debug_source_location_from_*() functions; see the
19400         inline documentation.
19401         (mono_debug_free_source_location): New public function.
19402         (mono_debug_print_stack_frame): New public function; see the
19403         inline documentation.
19404
19405         * debug-mono-symfile.c
19406         (mono_debug_find_source_location): Renamed into
19407         mono_debug_symfile_lookup_location(); only take a
19408         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19409         documentation.
19410         (mono_debug_find_method): Renamed into
19411         mono_debug_symfile_lookup_method().
19412
19413 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19414
19415         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19416         returned by mono_image_open_full ().
19417
19418         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19419         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19420         #78517.
19421
19422         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19423         #78518.
19424
19425 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19426
19427         * class.c (mono_class_from_typeref): handle missing images
19428         earlier, deals with bug #78418.   Refactor code; 
19429
19430         Fix a warning introduced in my previous commit (some stale code
19431         from before I revisited my patch).
19432
19433         * class.c (mono_class_create_from_typedef): On failure, remove the
19434         class from the MonoImage->class_cache as the class is not
19435         initialized;   Fixes the leak pointed out by Paolo.
19436
19437 2006-05-25  Dick Porter  <dick@ximian.com>
19438
19439         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19440         DeleteCriticalSections until I figure out which one may still be
19441         sometimes locked when mono_thread_cleanup is called.
19442
19443 2006-05-24  Dick Porter  <dick@ximian.com>
19444
19445         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19446         of mono_thread_manage and back into its own function, so it can be
19447         called after the finalizer thread has finished.
19448
19449         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19450
19451 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19452
19453         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19454         Fixes #78495.
19455
19456         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19457         with non-blittable elements.
19458         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19459
19460 2006-05-24  Martin Baulig  <martin@ximian.com>
19461
19462         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19463         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19464
19465         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19466         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19467         `mono_debugger_event_handler' to NULL.
19468
19469 2006-05-24  Martin Baulig  <martin@ximian.com>
19470
19471         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19472
19473 2006-05-24  Martin Baulig  <martin@ximian.com>
19474
19475         * mono-debug-debugger.h
19476         (mono_debugger_create_notification_function): Added
19477         `MonoCodeManager *' argument.
19478
19479 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19480
19481         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19482
19483 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19484
19485         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19486         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19487         implementation.
19488
19489 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19490
19491         * icall.c: precise GC support: objects can't be stored in unmanaged
19492         memory anymore, even if they are kept alive by other references: since
19493         they can move the GC needs to be able to always find them.
19494
19495 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19496
19497         * object.c: precise GC support for static fields. Support
19498         for moving GCs: write barriers and pinned allocation for interned
19499         strings.
19500
19501 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19502
19503         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19504         structure.
19505
19506 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19507
19508         * class.c, gc.c: sgen and precise GC updates.
19509
19510 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19511
19512         * marshal.h, marshal.c: added write barrier wrapper and precise type
19513         fixes.
19514
19515 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19516
19517         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19518         support.
19519
19520 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19521
19522         * reflection.c: precise and sgen GC updates.
19523
19524 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19525
19526         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19527
19528 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19529
19530         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19531
19532 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19533
19534         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19535         MONO_TYPE_OBJECT. Fixes #78462.
19536
19537 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19538
19539         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19540         and blittable types.
19541
19542 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19543
19544         * class.c (mono_class_get_exception_for_failure): Implement parts
19545         of a TODO: if the loader error is set (instead of the class
19546         error), we return a Loader exception that can be properly thrown
19547         elsewhere.
19548
19549         This was exposed by some Winforms 2.0 code that I tried to run
19550         (Atsushi pointed me to it).
19551
19552 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19553
19554         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19555         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19556         
19557         * marshal.c (emit_marshal_vtype): Add limited support for 
19558         UnmanagedType.LPStruct. Fixes #78427.
19559
19560         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19561         Applied a patch from kangaroo to fix #77523.
19562
19563 2006-05-17  Martin Baulig  <martin@ximian.com>
19564
19565         * threads.c
19566         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19567         (debugger_thread_created): Removed.
19568         (debugger_thread_exited): Removed.
19569
19570 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19571
19572         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19573
19574         * object-internals.h (MonoReflectionResource): Sync with managed version.
19575
19576 2006-05-12  Wade Berrier <wberrier@novell.com>
19577
19578         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19579
19580 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19581
19582         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19583         functions try to allocate from the image mempool.
19584
19585 2006-05-12  Dick Porter  <dick@ximian.com>
19586
19587         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19588
19589 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19590
19591         * object.c: The FieldGetter and FieldSetter methods require the full
19592         name of the class, not only the name. Fixes bug #78277.
19593
19594 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19595
19596         * loader.c (method_from_memberref): Do not pass the NULL klass to
19597         mono_loader_set_error_() methods.  Pass the non-NULL value
19598         (class). 
19599
19600 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19601
19602         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19603         (mono_assembly_close): Null out assembly->image->references after freeing it.
19604
19605         * image.c (mono_image_close): Free image->references.
19606         
19607         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19608
19609 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19610
19611         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19612         before checking if it's NULL (g_assert).
19613
19614 2006-05-10  Martin Baulig  <martin@ximian.com>
19615
19616         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19617         I thought I already killed that two months ago, but now it somehow reappeared.
19618
19619 2006-05-10  Martin Baulig  <martin@ximian.com>
19620
19621         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19622
19623 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19624
19625         * reflection.c: Allocate memory for dynamically created methods in the image
19626         mempools.
19627
19628 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19629
19630         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19631         don't use the ad pointer before checking if it's NULL (g_assert).
19632
19633 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19634
19635         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19636         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19637
19638         * marshal.c: Allocate all signatures from mempools.
19639
19640         * marshal.c: Allocate some more signatures from mempools.
19641
19642 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19643
19644         * object.c (mono_load_remote_field): The code used to provide a
19645         temporary variable for returning results if the user did not
19646         provide a result pointer.  But our temporary variable was allocted
19647         on the satck.
19648
19649         Fix calling code to always pass a result area.   Coverity ID 103.
19650
19651 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19652
19653         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19654         value, not the old. Fixes #78312.
19655         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19656
19657         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19658         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19659         per-image cache.
19660
19661         * assembly.c (mono_assembly_close): Free image->references.
19662
19663         * assembly.c (mono_assembly_names_equal): Fix a warning.
19664         (mono_assemblies_cleanup): Cleanup more global data.
19665
19666         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19667
19668         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19669         ptr_cache and image->modules.
19670
19671         * image.c (mono_image_init): Allocate array_cache lazily.
19672         
19673 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19674
19675         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19676         behavior was changed recently and has bad side effects.
19677
19678 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19679
19680         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19681         
19682         * assembly.c (mono_assembly_close): Remove a debug printf.
19683
19684         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19685
19686         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19687         to also allow for temporary references between mono_image_open ()/close ().
19688
19689         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19690
19691 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19692
19693         * marshal.c: Fix support for dynamic methods.
19694
19695         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19696
19697         * marshal.c (mono_marshal_cleanup): New cleanup function.
19698
19699         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19700         image mempools.
19701
19702         * class.c (mono_class_init): Fix leaking class->nested_classes.
19703
19704         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19705
19706         * image.c (mono_image_init): Initialize the new cashes.
19707
19708         * image.c (mono_image_close): Destroy the new cashes.
19709
19710         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19711
19712         * mempool.c (mono_mempool_strdup): New helper function.
19713
19714         * class-internals.h: Add prototype for mono_loader_unlock ().
19715
19716         * domain.c (mono_jit_info_table_find): Fix a warning.
19717         (mono_debugger_check_runtime_version): Ditto.
19718
19719         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19720         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19721         functions to these modules.
19722
19723         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19724         metadata modules.
19725         
19726         * marshal.c (mono_free_bstr): Fix a warning.
19727
19728         * assembly.c (mono_assembly_open_full): Fix another small leak.
19729
19730         * object.c: Fix some unload leaks in the remoting code.
19731
19732         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19733         function.
19734
19735         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19736
19737         * reflection.c: Fix some unload leaks in dynamic assemblies.
19738
19739 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19740
19741         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19742         * marshal.h: Add BSTR support on Win32
19743         * icall.c: Add BSTR icalls
19744         * metadata.h: Add BSTR enums
19745
19746 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19747
19748         Work to catch the crash from #76795 and turn it into an
19749         exception.   As I stubbed out pieces of the VisualBasic support,
19750         I found a number of places where the code was failing and I added
19751         checks to those places. 
19752         
19753         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19754         function return a status code.  If we fail to parse the signature
19755         from mono_metadata_parse_generic_inst, return FALSE.
19756
19757         * loader.c (mono_get_method_from_token): If we fail to load the
19758         method (mono_class_get) return NULL.   
19759
19760         * (method_from_memberref): Return NULL if we are unable to parse
19761         the method signature
19762
19763         (mono_loader_error_prepare_exception): Since we now use the
19764         loader_error flag internally to stop processing, and obtaining
19765         exceptions that might be thrown will walk this code path the
19766         proper way of going from a MonoLoaderError into a
19767         MonoException was convoluted.   This new routine encapsulates the
19768         process of turning the error into an exception and *clearing* the
19769         error afterwards.
19770         
19771 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19772
19773         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19774         with missing assemblies), and to cope with:
19775
19776                 * Missing fieldref from a non-existing assembly.
19777                 * Missing methodref from a non-existing assembly.
19778
19779         The first batch of work to address *some* of the issues from 76661.
19780         
19781         * object.c (mono_class_create_runtime_vtable): If we fail to
19782         initialize the class raise the exception here. 
19783
19784         * metadata.c (mono_class_get_overrides_full): If any methods fail
19785         to load return the failure to the caller.
19786
19787         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19788         flagging assemblies that failed to load.   
19789
19790         Do not crash if we are unable to load the assembly.
19791
19792         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19793         assemblies. 
19794
19795         * loader.c (mono_loader_set_error_type_load): Change the
19796         convention to always pass unallocated strings, so we make our own
19797         copies (I know our own code had duplicated strings before, but
19798         this keeps the normal conventions).
19799         (method_from_memberref): Call mono_loader_set_error_method_load
19800         for all possible failures of loading the class. 
19801         Remove assert, turn into a loader error.
19802
19803         (mono_loader_error_to_exception): Move this routine from mini
19804         (mini_loader_error_to_exception) there was no need to have that in
19805         mini. 
19806
19807         * class.c (mono_class_from_typeref): If we were not able to load
19808         the assembly with mono_assembly_load_reference, call the
19809         mono_loader_set_error_type_load to register the problem.
19810
19811         (mono_class_setup_fields): If we fail to load the type from
19812         mono_metadata_parse_type_full, call mono_class_set_failure and
19813         break from the loop.
19814
19815         If class->exception_type is set, we do not layout the fields as
19816         that might crash the runtime, and instead return (from breaking
19817         from the previous loop).
19818
19819         (mono_class_setup_vtable): This now returns a boolean indicating
19820         whether the table was properly setup.   The decision is driven by
19821         mono_class_get_overrides_full which might run into non-existing
19822         methods. 
19823         
19824         (mono_class_init): Returns TRUE on success or FALSE if there was a
19825         problem in loading the type (incorrect assemblies, missing
19826         assemblies, methods, etc).
19827
19828         When we call mono_class_setup_fields we also check for a potential
19829         error inside this call (either a class exception or a general
19830         loader exception).
19831
19832         (mono_class_create_from_typedef): If the parent fails to load
19833         (calling mono_class_get_full) return NULL.
19834         
19835         ** Important **
19836
19837         calls to mono_metadata_parse_type_full should be checked
19838         everywhere and set the mono_class_set_failure
19839         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19840
19841         The current patch checks the places where my manually constructed
19842         tests show the errors are showing up, but we should do it
19843         everywhere. 
19844
19845         ** Important2 **
19846
19847         mono_class_init return values should be tested everywhere, like
19848         the previous case this is something that we should audit
19849         everywhere and not only on the cases exposed by the tests I
19850         created. 
19851
19852 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19853
19854         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19855         boolean parameter and instead pass the information on `options'
19856         parameter (FileOptions).
19857
19858         * icall.c: Register the new signature for MonoIO.Open.
19859
19860         * debug-helpers.c (dis_one): Trying to understand how coverity
19861         works.  Fix Run 5, item 78.
19862
19863 2006-04-26  Dick Porter  <dick@ximian.com>
19864
19865         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19866         dereference.
19867
19868 2006-04-25  Martin Baulig  <martin@ximian.com>
19869
19870         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19871
19872         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19873         debugger_thread_created().
19874         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19875         special way.
19876         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19877         (mono_debugger_finalize_threads): New function; undo the effects
19878         of mono_debugger_init_threads().
19879         (mono_debugger_create_all_threads): Removed.
19880
19881 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19882
19883         * image.c (mono_image_close): Tidy up trace messages.
19884
19885         * assembly.c (mono_assembly_close): Ditto.
19886
19887         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19888         no longer references an already freed assembly. Fixes #78168.
19889
19890 2006-04-21  Dick Porter  <dick@ximian.com>
19891
19892         * threads.c (mono_thread_detach): Fix reference counting when
19893         detaching threads.
19894
19895 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19896
19897         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19898         #78155.
19899
19900 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19901
19902         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19903         (mono_type_to_stind): Ditto.
19904
19905         * marshal.c: Use the new helper functions to simplify code.
19906
19907         * image.c (mono_image_close): Add some code for help debug assembly unloading
19908         problems.
19909
19910         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19911         image mempool.
19912
19913         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19914         assembly was already loaded in another appdomain. Fixes #78083.
19915
19916 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19917
19918         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19919         referenced assemblies.
19920         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19921
19922         * domain.c (mono_domain_free): Add a trace message.
19923
19924         * appdomain.c (add_assemblies_to_domain): Ditto.        
19925
19926         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19927         field.  
19928
19929 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19930
19931         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19932
19933 2006-04-12  Martin Baulig  <martin@ximian.com>
19934
19935         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19936         `USE_INCLUDED_LIBGC'.   
19937
19938 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19939
19940         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19941         the patch contains ../ and a small directory name later. Hopefully fixes
19942         #78035.
19943
19944 2006-04-10  Martin Baulig  <martin@ximian.com>
19945
19946         Clean up the debugger's thread-handling code.
19947
19948         The debugger's thread-handling code has been moved from
19949         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19950         over the `threads' hash, keep track of exiting threads and also
19951         use proper locking.
19952
19953         We can now debug XSP and XSP based applications with the debugger.
19954
19955         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19956
19957         * threads.h
19958         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19959         (mono_install_thread_callbacks): Likewise.      
19960
19961         * threads.c (mono_thread_callbacks): Removed.
19962         (debugger_thread_created, debugger_thread_exited): New static functions.
19963         (start_wrapper): Call debugger_thread_created().
19964         (thread_cleanup): Call debugger_thread_exited().
19965         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19966         (mono_debugger_init_threads): New public function.
19967         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19968         iterate directly over the `threads' hash and also use proper locking.
19969
19970         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19971
19972         * mono-debug-debugger.h
19973         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19974
19975 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19976
19977         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19978         argument type=array. Fixes #78057.
19979
19980 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19981
19982         * culture-info-table.h : regenerated. Fixed bug #69652.
19983
19984 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19985
19986         * loader.c metadata.c: Reapply a variant r59116.
19987         
19988         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19989
19990         * class.c (mono_class_setup_interface_offsets): New internal function.
19991
19992         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19993         interfaces too. Fixes #77398.
19994
19995         * reflection.c (encode_cattr_value): Add support for 
19996         parameter type=object, argument type=array.
19997         (load_cattr_value): Ditto. Fixes #77916.
19998
19999         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
20000         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
20001
20002         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
20003         a byval char array and CharSet is Ansi.
20004
20005         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
20006
20007 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
20008
20009         * metadata.c: Add some locking comments.
20010         
20011         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
20012         mempool.
20013         (mono_metadata_free_method_signature): Don't free the signature itself.
20014
20015         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
20016
20017         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
20018         reference the same MonoImage.
20019         (mono_assembly_load_from_full): Add an assert.
20020
20021 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
20022
20023         * image.c (mono_image_close): Don't put the image we are about to free into the
20024         loaded_images_guid_hash.
20025
20026         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
20027         to reduce code duplication.
20028
20029         * marshal.c: Register the native functions called by this module as icalls, to
20030         somewhat centralize the creation of MonoMethodSignature's.
20031
20032         * loader.c (mono_method_signature): Add a cache for method signatures.
20033
20034         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
20035         the parameter attributes of a method.
20036         (mono_metadata_parse_method_signature_full): Refactored the computation of
20037         parameter attributes into a separate function. Also avoid one allocation in
20038         most cases.
20039
20040         * assembly.c (mono_assembly_close): Ditto.
20041
20042         * image.c (mono_image_close): Log trace messages with INFO level.
20043
20044         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
20045
20046         * image.c reflection.c: Correct reference counting of image modules.
20047         
20048         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
20049         of this function from the image mempool.
20050         
20051         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
20052         to allow more cached types to be used.
20053
20054         * mono-debug.c (mono_debug_add_method): Appled patch from
20055         David S. Miller  <davem@sunset.davemloft.net>: Access 
20056         minfo->lexical_blocks[] entry elements using read32().
20057
20058 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
20059
20060         * loader.c (mono_free_method): No longer free the method header for non-dynamic
20061         methods as it is allocated from the mempool.
20062
20063         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
20064         image mempool.
20065
20066         * metadata-internals.h: Add comments describing the reference counting scheme
20067         used for MonoImage and MonoAssembly.
20068
20069         * image.c assembly.c reflection.c: Rework reference counting of images and 
20070         assemblies so they are freed when the runtime is shut down. Free some 
20071         additional memory structures when an image is unloaded.
20072         
20073 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
20074
20075         * class.c loader.c reflection.c: Allocate more data structures in
20076         the image mempool.
20077
20078 2006-03-31  Miguel de Icaza  <miguel@novell.com>
20079
20080         * icall.c
20081         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
20082         build on pre glib 2.4 systems.
20083
20084 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
20085
20086         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
20087
20088         * icall.c: Fix some warnings.
20089
20090 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
20091
20092         * culture-info-table.h : regenerated.
20093
20094 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
20095
20096         * threads.c, object-internals.h, verify.c: changed the culture caching
20097         code to use a normal MonoArray for storage so the GC can keep track of
20098         them easily. Fixed bits of the cache logic, too and simplified the
20099         code.
20100
20101 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
20102
20103         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
20104         thread for non-Boehm GCs.
20105
20106 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
20107
20108         * domain.c, object.c, domain-internals.h: reduce the amount of memory
20109         needed to keep track of the data for static fields.
20110
20111 2006-03-29  Raja R Harinath  <rharinath@novell.com>
20112
20113         Fix #75172
20114         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
20115         for interface classes.  Use 'num_methods' instead.
20116         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
20117         before using '->vtable_size' field.
20118
20119 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
20120
20121         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
20122         doesn't contain managed pointers, so use a normal hashtable.
20123
20124 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
20125
20126         * reflection.c, class-internals.h, domain.c: fixed handling of types
20127         used as values for objects in custom attributes (bug #77915):
20128
20129 2006-03-24  Martin Baulig  <martin@ximian.com>
20130
20131         * class.c (mono_class_setup_fields): Added support for generic
20132         instances; fixes #77580.
20133
20134 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20135
20136         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20137
20138 2006-03-24  Dick Porter  <dick@ximian.com>
20139
20140         * file-io.c (get_file_attributes): More stat macro breakage.
20141         Fixes bug 77759.
20142
20143 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20144
20145         * profiler.c: added the file=filename option in the default profiler
20146         to output the profile data to filename.
20147
20148 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20149
20150         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20151         bug #77877.
20152
20153 2006-03-22  Martin Baulig  <martin@ximian.com>
20154
20155         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20156         allocated `MonoClassField *' in `fb->handle'.
20157
20158 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20159
20160         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20161         allocate interface ID to save memory and allow better ID reuse on
20162         appdomain unload. setup_generic_vtable () removal from Martin.
20163
20164 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20165
20166         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20167         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20168         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20169         write barriers for reference stores with managed objects accessed with
20170         C structures in the runtime and in embedding programs.
20171
20172 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20173
20174         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20175         'interface_id' and 'max_interface_id' fields of MonoClasses
20176         representing open generic types.
20177
20178 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20179
20180         * object.h, object.c, icall.c: added functions to deal with
20181         storing valuetypes that contain references in managed objects.
20182         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20183         fixes and comments around uses of mono_array_addr ().
20184
20185 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20186
20187         * object.h, icall.c, monitor.c: object.GetHashCode ()
20188         implementation that supports the moving garbage collector.
20189
20190 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20191
20192         * icall.c, threads-types.h, threads.c: implemented finalizer for
20193         LocalDataStoreSlot.
20194
20195 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20196
20197         * metadata.c (mono_type_size): Add a fixme.
20198         (mono_type_stack_size): Ditto.
20199
20200         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20201         'type_forwarders' field.
20202
20203         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20204         attribute from net 2.0.
20205
20206         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20207         from class.c.
20208
20209         * class.c (mono_class_setup_fields): Fix a warning.
20210         
20211         * class.c (mono_class_from_name): Add support for assemblyref entries
20212         in the EXPORTEDTYPE table.
20213
20214         * reflection.c: Add support for handling type forwarders under net 2.0.
20215
20216         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20217         
20218 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20219
20220         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20221         overwriting entries in ModuleBuild->types, also clean up the code
20222         a little. Fixes #77774.
20223
20224 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20225
20226         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20227         load friend assembly info when present.
20228
20229 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20230
20231         Fix crasher on gtest-158.cs.
20232         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20233         the return value if the MonoClass we want is yet in an
20234         inconsistent state.
20235         * class.c (mono_class_create_from_typedef): Add an comment
20236         explaining an order dependency between mono_class_setup_parent and
20237         mono_class_setup_mono_type.
20238
20239 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20240
20241         * class.c: documentation updates and events bug fix.
20242
20243 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20244
20245         * class.c: some cleanup, locking fixes.
20246
20247 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20248
20249         * class.c: fix the generics code to setup nested
20250         type info to the instantiated type (bug #77770).
20251
20252 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20253
20254         * marshal.c: fixed a few type correctness issues.
20255
20256 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20257
20258         * loader.c: the Set/Get/Addrtess array methods should be public.
20259
20260 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20261
20262         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20263         
20264         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20265         info->wrapper.
20266
20267 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20268
20269         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20270
20271         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20272
20273         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20274         (mono_mempool_alloc0): Ditto.
20275
20276 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20277
20278         * socket-io.c:
20279         (create_object_from_sockaddr): it was allocating 4 extra bytes
20280         for the AF_UNIX data. Fixes bug #77747.
20281
20282 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20283
20284         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20285
20286 2006-03-09  Dick Porter  <dick@ximian.com>
20287
20288         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20289         Fixes bug 76966 again.
20290
20291 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20292
20293         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20294         names from r57532
20295         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20296
20297 2006-03-07  Martin Baulig  <martin@ximian.com>
20298
20299         * object.c
20300         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20301
20302 2006-03-07  Martin Baulig  <martin@ximian.com>
20303
20304         * class.c
20305         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20306         regression introduced in r56970; see gtest-252.cs.
20307
20308         * loader.c (mono_get_method_constrained): Correctly handle generic
20309         methods; see gtest-253.cs.
20310
20311 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20312
20313         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20314
20315 2006-03-04  Martin Baulig  <martin@ximian.com>
20316
20317         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20318         compute the parent type at runtime, just like we're already doing
20319         it for interfaces.
20320
20321         * reflection.c
20322         (mono_reflection_bind_generic_parameters): Don't compute the
20323         parent type anymore.
20324
20325         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20326
20327 2006-03-04  Martin Baulig  <martin@ximian.com>
20328
20329         * mono-debug-debugger.h
20330         (mono_debugger_create_notification_function): Allocate memory at
20331         runtime and return a pointer to it.
20332
20333 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20334
20335         * assembly.c: Fix windows build.
20336         
20337         * assembly.c: Fix build.
20338
20339         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20340
20341         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20342         
20343 2006-03-03  Dick Porter  <dick@ximian.com>
20344
20345         * process.c
20346         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20347         Check parameters before dereferencing them.  Fixes Aaron's part of
20348         bug 77393.
20349
20350 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20351
20352         Fix performance regression.
20353         * loader.c (find_method_in_class): Add 'from_class' argument.
20354         Rename 'klass' argument to 'in_class'.  The signature is compared
20355         against the method in 'in_class', and the corresponding method is
20356         returned from 'from_class'.
20357         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20358         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20359         type definition and generic instantiation in parallel.
20360         (mono_get_method_constrained): Update to changes.
20361
20362 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20363
20364         * threads.c: make sure the domain is correct, too when doing
20365         mono_thread_attach ().
20366
20367 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20368
20369         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20370         windows. Fixes #77683.
20371
20372 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20373
20374         * object.h, *: introduced specific way to set elements of an array
20375         of references to be used as write barrier. Still need to audit the
20376         uses of mono_array_addr.
20377
20378 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20379
20380         * object-internals.h: New field to cache the assmebly name, patch
20381         from Tambet Ingo (tambet@ximian.com)
20382
20383 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20384
20385         * decimal.h, class-internals.h, metadata-internals.h,
20386         file-io.h: mark a few function declarations as internal, to
20387         reduce the number of PLT entries.
20388
20389 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20390
20391         * file-io.c: fix typo in warning message.
20392
20393 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20394
20395         * loader.c: on unix, lookup the "*A" version of a function
20396         if charset is auto as a second option before failing.
20397
20398 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20399
20400         * class.h (mono_class_inflate_generic_method): Revert to two
20401         argument version.
20402         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20403         (mono_class_inflate_generic_method_full): Add.
20404         * class.c (mono_class_inflate_generic_method_full): Rename from
20405         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20406         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20407         * loader.c, reflection.c: Update to changes.
20408
20409 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20410
20411         * icall.c: const fixes and small improvements.
20412
20413 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20414
20415         * threadpool.c: for asynchronous connect(), enable the same workaround
20416         for BSD 6 as for the Mac. Fixes bug #77637.
20417
20418 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20419
20420         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20421         formatted classes. Fixes #77524.
20422
20423 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20424
20425         * class.c (inflate_generic_type): Add a couple more
20426         micro-optimizations.
20427         (inflate_generic_context): Don't use the 'gmethod' from
20428         'inflate_with'.
20429         (mono_class_inflate_generic_method): If the method has generic
20430         parameters, but the passed-in context doesn't have a 'gmethod',
20431         create one.  Use the possibly simplified generic instantiation
20432         from the declaring class instead of the one passed in.
20433
20434 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20435
20436         Make generic method signature and method header handling lazy.
20437         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20438         (inflate_generic_header): Likewise.
20439         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20440         parameter to avoid inflating types.
20441         (mono_get_inflated_method): Empty out.
20442         * class.h (mono_class_inflate_generic_method): Update to changes.
20443         * loader.c (mono_get_method_from_token): Don't parse signature for
20444         generic methods, nor methods of generic classes.
20445         (mono_method_signature): Rename from 'mono_method_signature'.
20446         Inflate signature on demand.
20447         (mono_method_get_header): Inflate method header on demand.
20448         * reflection.c: Update to changes.
20449
20450 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20451
20452         * metadata.c (mono_metadata_inflate_generic_inst): If the
20453         instantiation is closed, don't bother expanding it in the new
20454         context.
20455         * class.c (inflate_generic_class): If the generic instantiation
20456         doesn't change after inflation, return the argument itself.
20457         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20458         Add bounds checks.
20459         (inflate_generic_context): If neither the generic class nor the
20460         generic method instantiations change, return the original context.
20461         * reflection.c (mono_method_get_object): Do
20462         'mono_get_inflated_method' before accessing the ->klass field.
20463         (inflate_mono_method): Don't create a MonoGenericMethod unless
20464         necessary.
20465         (inflate_method): Don't pass a constructed type as the declaring
20466         type of a methodbuilder.
20467
20468 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20469
20470         * object.c: fix memory overwrite.
20471
20472 2006-02-22  Dick Porter  <dick@ximian.com>
20473
20474         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20475         it doesn't work any more.
20476         (mono_threads_request_thread_dump): Fix unused variable warnings.
20477
20478 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20479
20480         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20481         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20482         the public header file.
20483
20484 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20485
20486         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20487
20488 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20489
20490         * class-internals.h, object.c: reduce the size of MonoVTable
20491         and store the interface_offsets array at negative offsets.
20492
20493 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20494
20495         * metadata.c: tweak table descriptors data structures to reduce
20496         size and runtime relocations.
20497
20498 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20499
20500         * marshal.c: fix some types and opcodes to be type-safe
20501         in marshaling wrappers.
20502
20503 2006-02-21  Ankit Jain  <jankit@novell.com>
20504
20505         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20506
20507 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20508
20509         * metadata.c (get_constraints): Relax debugging checks for monodis.
20510
20511 2006-02-21  Ankit Jain  <jankit@novell.com>
20512
20513         * metadata.c (mono_metadata_load_generic_params): Move the code
20514         checking for ambiguous generic params from here to mono/dis/get.c
20515         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20516
20517 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20518
20519         Fix assertion triggered when compiling nemerle.
20520         * class.c (mono_get_shared_generic_inst): Rename from
20521         get_shared_inst and make non-static.
20522         * loader.c (mono_get_shared_generic_method): New.  Used to create
20523         the MonoGenericContext-equivalent of a MonoGenericContainer.
20524         (mono_get_method_from_token): Initialize the 'context' field of
20525         the created MonoGenericContainer.
20526         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20527         * metadata.c (get_constraints): Add sanity check.
20528         * class-internals.h: Add new internal methods.
20529
20530         * reflection.c (verify_safe_for_managed_space): New sanity check.
20531         Currently checks that owner-less generic parameters aren't allowed
20532         in managed space.
20533         (mono_type_get_object): Use it.
20534         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20535         that are now in mono_type_get_object.
20536         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20537
20538 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20539
20540         * metadata.c (mono_type_create_from_typespec): Rename from
20541         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20542         argument and caching of types in the generic container.
20543         (unwrap_arrays, find_generic_param): Remove.
20544         * metadata-internals.h: Update.
20545         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20546
20547 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20548
20549         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20550
20551         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20552         return values. Fixes #77581.
20553
20554         * class.c (mono_fnptr_class_get): Switch name and name_space.
20555
20556         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20557         classes and add support for [In, Out] attributes.
20558         (mono_marshal_free_asany): Ditto. Fixes #77524.
20559
20560 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20561
20562         * class.c (mono_class_from_generic_parameter): Make more robust to
20563         incomplete MonoGenericContainers from monodis.
20564
20565 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20566
20567         * class-internals.h: added some more exception types.
20568         * class.c, metadata.c: added a few checks to handle missing
20569         types.
20570
20571 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20572
20573         Use owner-less generic-params some more.
20574         * class.c (my_mono_class_from_generic_parameter): Remove.
20575         (mono_class_from_generic_parameter): Handle null image,
20576         param->name and param->owner.
20577         (mono_class_from_mono_type): Update.
20578         (mono_class_create_from_typespec): Remove 'container' parameter.
20579         If that parameter is non-null, the result is always inflated by
20580         'mono_class_get_full' anyway.
20581         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20582         parameter.
20583         (mono_class_get_full): Update.
20584
20585         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20586         instance is not open, don't bother inflating.
20587         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20588         parse metadata for inflated classes.
20589         (_mono_class_get): Change GenericContext* parameter to
20590         GenericContainer*.
20591         (mono_class_create_from_typespec): Likewise.  Simplify, and
20592         implement trivially.  All the cases are handled in
20593         mono_class_from_mono_type.  Don't inflate returned class.
20594         (mono_class_get_full): Delegate GENERICINST optimization to
20595         inflate_generic_type.
20596         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20597
20598 2006-02-16  Dick Porter  <dick@ximian.com>
20599
20600         * socket-io.c (create_object_from_sockaddr): Fix typo.
20601         (create_sockaddr_from_object): Check array lengths before
20602         potentially accessing items off the end.
20603         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20604         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20605         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20606         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20607         length checks to avoid wraparound overflows.
20608         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20609         contents of the array of sockets
20610         (hostent_to_IPHostEntry2)
20611         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20612         Check return value of inet_ntop ().
20613         (addrinfo_to_IPHostEntry): Fix typo
20614
20615 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20616
20617         Type metadata parsing doesn't use generic-instantiation information.
20618         * metadata.c (mono_metadata_parse_array_full): Change
20619         MonoGenericContext* parameter to MonoGenericContainer*.
20620         (mono_metadata_parse_type_full): Likewise.
20621         (mono_type_create_from_typespec_full): Likewise.
20622         (mono_metadata_parse_mh_full): Likewise.
20623         (mono_metadata_parse_generic_inst): Likewise.
20624         (do_mono_metadata_parse_generic_class): Likewise.
20625         (do_mono_metadata_parse_type): Likewise.
20626         * metadata-internals.h: Update to changes.
20627         * class.c (mono_class_find_enum_basetype): Likewise.
20628         (mono_class_setup_fields): Likewise.
20629         (mono_class_create_from_typespec): Likewise.
20630         * loader.c (method_from_methodspec): Likewise.
20631         (mono_get_method_from_token): Likewise.
20632         (mono_method_get_header): Likewise.
20633
20634 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20635
20636         * marshal.c: handle additional GENERICINST case (patch from
20637         Thong Nguyen <tum@veridicus.com>).
20638         Fix a few cases where LDIND_I/STIND_I was used for references.
20639
20640 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20641
20642         * reflection.c (mono_reflection_get_token): Remove unused variable.
20643
20644 2006-02-16  Martin Baulig  <martin@ximian.com>
20645
20646         * reflection.c (mono_reflection_get_token): Add support for fields
20647         in instantiated generic types.
20648
20649         * icall.c
20650         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20651
20652 2006-02-15  Martin Baulig  <martin@ximian.com>
20653
20654         * icall.c
20655         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20656         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20657         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20658         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20659
20660 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20661
20662         * class.c, metadata.c, metadata.h, object.c, icall.c,
20663         marshal.c: changed mono_type_get_underlying_type () to do
20664         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20665         Fixed handling of instantiated generic valuetypes (bug #75479).
20666
20667 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20668
20669         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20670         Delegate to mono_metadata_decode_value, and work on the returned value.
20671
20672         * icall.c (ves_icall_MonoType_GetGenericArguments):
20673         Add consistency check here too.
20674         
20675 2006-02-15  Ankit Jain  <jankit@novell.com>
20676
20677         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20678         char/short etc.
20679
20680 2006-02-15  Ankit Jain  <jankit@novell.com>
20681
20682         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20683         signed values, used only for representing lower bounds of arrays.
20684         (mono_metadata_parse_array_full): Use new
20685         mono_metadata_decode_signed_value to decode lower bounds.
20686
20687 2006-02-14  Martin Baulig  <martin@ximian.com>
20688
20689         * reflection.c
20690         (mono_reflection_get_token): Support "MonoGenericMethod" and
20691         "MonoGenericCMethod" and allow generic instances / methods.
20692
20693 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20694
20695         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20696         to obtain the terminal size using an ioctl.
20697
20698         * object.c (mono_nullable_init): Revert this as nullable reference
20699         types are not valid.
20700         (mono_nullable_box): Ditto.
20701
20702 2006-02-09  Dick Porter  <dick@ximian.com>
20703
20704         * threads.c (mono_thread_detach): Drop a reference to the thread
20705         we're detaching.
20706
20707 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20708
20709         * object.c (mono_nullable_init): Handle nullable reference types.
20710         (mono_nullable_box): Ditto. Fixes #77446.
20711
20712 2006-02-07  Martin Baulig  <martin@ximian.com>
20713
20714         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20715
20716 2006-02-07  Ankit Jain  <jankit@novell.com>
20717
20718         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20719         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20720         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20721         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20722         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20723         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20724
20725 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20726
20727         * class.c (mono_class_create_generic): Set type_token as well.
20728
20729         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20730         compatible with MS.
20731
20732 2006-02-02  Martin Baulig  <martin@ximian.com>
20733
20734         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20735         has never been used so far.
20736
20737 2006-02-02  Martin Baulig  <martin@ximian.com>
20738
20739         * mono-debug-debugger.h: Changed comment at the top of this file;
20740         the header is not installed, but it's safe to #include it from
20741         within the JIT.
20742
20743         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20744         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20745
20746 2006-02-02  Martin Baulig  <martin@ximian.com>
20747
20748         * mono-debug.h
20749         (MonoSymbolTable): Removed the `metadata_info' field.
20750
20751         * mono-debug.c
20752         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20753
20754         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20755         (mono_debugger_add_builtin_types): Removed.
20756         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20757         (mono_debugger_create_notification_function): We now operate on a
20758         pre-allocated area; take a `gpointer' and return `void'.
20759
20760         * mono-debug-debugger.c
20761         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20762         (mono_debugger_add_builtin_types): Removed.
20763
20764 2006-02-02  Martin Baulig  <martin@ximian.com>
20765
20766         * threads.c (mono_debugger_create_all_threads): New public method.
20767
20768 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20769
20770         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20771         breaks on several platforms.
20772
20773 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20774
20775         * assembly.c: the VS.NET build doesn't supply default values for
20776         MONO_ASSEMBLIES and MONO_CFG_DIR.
20777
20778 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20779
20780         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20781         helper function.
20782
20783         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20784
20785         * loader.c (method_from_memberref): Fix a warning.
20786
20787         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20788
20789         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20790         with explicit layout. Fixes #77433.
20791
20792 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20793
20794         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20795         max_interface_id is initialized before using it. Fixes #77398.
20796         (ves_icall_Type_GetInterfaces): Ditto.
20797
20798 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20799
20800         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20801         allocate memory for parameter attributes when parsing memberref
20802         signatures.
20803         * loader.c (mono_loader_set_error_method_load): Don't warn.
20804         (method_from_memberref): Ensure MissingMethodException gets thrown
20805         if method is not found.  Make warning more informative.
20806
20807 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20808
20809         Fix #77397
20810         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20811         return true if is byref.
20812         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20813         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20814         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20815
20816 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20817
20818         Fix tests/find-method.2.il
20819         * loader.c (find_method, find_method_in_class): Remove is_inflated
20820         argument.  Revert 2006-01-18 change.
20821         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20822         is generic, search for method in its generic definition.
20823         * class.c (mono_class_setup_vtable_general): Print generic
20824         arguments of generic types in debugging printf.
20825
20826 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20827
20828         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20829
20830         * threads.c (mono_threads_request_thread_dump): New helper function.
20831
20832 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20833
20834         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20835
20836 2006-01-25  Ankit Jain  <jankit@novell.com>
20837
20838         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20839         move definition to ..
20840         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20841         
20842 2006-01-25  Ankit Jain  <jankit@novell.com>
20843             Raja R Harinath  <rharinath@novell.com>
20844
20845         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20846         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20847         as necessary.
20848
20849 2006-01-25  Martin Baulig  <martin@ximian.com>
20850
20851         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20852         `MonoDebuggerThread' into debug-debugger.c.
20853
20854 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20855
20856         * profiler.c: fix printing of data.
20857
20858 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20859
20860         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20861           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20862
20863 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20864
20865         * object.c: fix deadlock related to string interning.
20866
20867 2006-01-23  Martin Baulig  <martin@ximian.com>
20868
20869         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20870
20871         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20872
20873 2006-01-23  Martin Baulig  <martin@ximian.com>
20874
20875         * mono-debug.h: Moved the prototypes of some functions which are
20876         used by the JIT here from mono-debug-debugger.h.
20877
20878 2006-01-21  Martin Baulig  <martin@ximian.com>
20879
20880         * Makefile.am: Don't install mono-debug-debugger.h.
20881
20882 2006-01-21  Martin Baulig  <martin@ximian.com>
20883
20884         * mono-debug-debugger.h: Enforce the private status of this header
20885         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20886         Moved some stuff from mono-debugger-jit-wrapper.h here.
20887
20888 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20889
20890         * class.c (mono_class_from_typeref): Add a sanity test to help
20891         catch lack of assembly load/search hooks.
20892
20893 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20894
20895         * marshal.c (emit_struct_conv): Relax the fields with same offset
20896         check even more. Fixes #77230.
20897
20898 2006-01-18  Martin Baulig  <martin@ximian.com>
20899
20900         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20901         argument; if false, we compare the uninstantiated signatures.
20902         (method_from_memberref): Compare the uninstantiated signatures;
20903         fixes #76417.
20904
20905 2006-01-18  Robert Jordan  <robertj@gmx.net>
20906
20907         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20908         Clear the weak link. Fixes bug #77170.
20909
20910         * gc.c (mono_gchandle_free):
20911         Reflect *-gc.c changes (tiny optimization).
20912
20913 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20914
20915         * metadata.c (mono_metadata_signature_dup): Applied patch from
20916         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20917         Fixes #77288.
20918
20919 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20920
20921         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20922         marshalling from native to managed code. Fixes #77230.
20923
20924 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20925
20926         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20927         connect. Fixes bug #77020.
20928
20929 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20930
20931         * class.c: fixed id assignement for nested interfaces (bug #77275).
20932         Added also better info for --print-vtable debugging.
20933
20934 2006-01-12  Martin Baulig  <martin@ximian.com>
20935
20936         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20937         interfaces on-the-fly; fixes #76625.
20938
20939         * class-internals.h
20940         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20941         don't need that anymore.
20942
20943 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20944
20945         * socket-io.c
20946         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20947         To avoid initing the nested_classes when not needed I turned the
20948         PeerCredData as a toplevel internal class, as it has to be shared
20949         anyways. 
20950
20951         Fixes the CASA issue.
20952
20953 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20954
20955         * domain.c: Accessors for MonoJitInfo
20956
20957         * profiler-private.h: Add jitinfo to the end jit hook
20958
20959         * profiler.[ch]: Define new hooks, called after jitting which give
20960         the MonoJitInfo that was compiled
20961
20962 2006-01-10  Martin Baulig  <martin@ximian.com>
20963
20964         * class.c (mono_class_setup_events): Add support for generic
20965         classes; fixes #76440.
20966
20967 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20968
20969         Fix #77160.
20970         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20971         on passed-in method.
20972
20973 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20974
20975         * object.c (mono_runtime_invoke_array): Add Nullable support.
20976
20977         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20978
20979 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20980
20981         * file-io.c: Don't consider sockets as directory and avoid an endless
20982         loop. Fix bug #76966.
20983
20984 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20985
20986         * object.c (mono_nullable_init): New helper function.
20987         (mono_nullable_box): Ditto.
20988
20989         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20990
20991         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20992
20993         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20994         
20995 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20996
20997         * class.c (mono_class_is_assignable_from): Make T assignable to 
20998         Nullable<T>.
20999
21000 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
21001
21002         * appdomain.c: Bump corlib version to 46.
21003         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
21004         serialization purpose) and changed ves_icall_System_Reflection_
21005         Assembly_get_code_base signature to accept a boolean (to escape, or 
21006         not, the assembly code base).
21007
21008 2005-12-23  Dick Porter  <dick@ximian.com>
21009
21010         * icall.c: 
21011         * threads-types.h: 
21012         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
21013         CreateEvent icall now returns "created" boolean parameter.
21014
21015 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
21016
21017         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
21018         #76967.
21019
21020         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
21021         when attr_klass is an interface. Fixes #77045.
21022
21023 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
21024
21025         * marshal.c (emit_struct_conv): Fix previous patch.
21026         
21027         * marshal.c (emit_struct_conv): Add a check for fields with the same
21028         offset.
21029
21030 2005-12-20  Raja R Harinath  <rharinath@novell.com>
21031
21032         Fix regression in Mono.C5.
21033         * class.c (mono_class_create_generic): If 'klass' is an interface
21034         set up the interface offsets.
21035         (mono_class_is_assignable_from): Don't throw away generic arguments.
21036
21037 2005-12-19  Raja R Harinath  <rharinath@novell.com>
21038
21039         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
21040         type parameters.
21041
21042 2005-12-15  Raja R Harinath  <rharinath@novell.com>
21043
21044         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
21045         dead store.
21046         (do_mono_metadata_parse_generic_class): Don't pass the current
21047         generic context when parsing the type being instantiated: it
21048         cannot use it, anyway.
21049
21050         * loader.c (method_from_memberref): Don't inflate a signature if
21051         it doesn't contain any type parameters.
21052
21053 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
21054
21055         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
21056
21057 2005-12-14  Martin Baulig  <martin@ximian.com>
21058
21059         * class.c
21060         (mono_type_get_name_recurse): Don't return null for type
21061         parameters and open generic classes.
21062         (mono_class_setup_methods): Don't exclude generic instances.
21063         (mono_get_unique_iid): Use different IDs for different
21064         instantiations of the same generic type.
21065         (mono_class_setup_vtable): Only use setup_generic_vtable() for
21066         open generic instances; create a normal vtable for closed generic
21067         instances.
21068         (mono_class_setup_vtable_general): We're now also called for
21069         closed generic instances.
21070
21071         * reflection.c
21072         (mono_reflection_bind_generic_parameters): Correctly use
21073         mono_metadata_lookup_generic_inst() everywhere.
21074
21075 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
21076
21077         * object.c (mono_class_create_runtime_vtable): Call 
21078         mono_class_setup_vtable ().
21079
21080         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
21081         function.
21082         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
21083         #76959.
21084
21085         * loader.c (mono_loader_set_error_type_load): Print the type load
21086         warnings to the console so they are more visible to the user.
21087         (mono_loader_set_error_method_load): Ditto.
21088
21089         * reflection.c (ensure_runtime_vtable): Revert the last change as it
21090         is still broken.
21091         
21092         * reflection.c (ensure_runtime_vtable): Fix build.
21093
21094         * reflection.c (ensure_runtime_vtable): Disable an optimization which
21095         doesn't work in all cases.
21096
21097 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
21098
21099         * object.c (mono_array_new_full): Treat a single dimensional array
21100         with 0 lower bounds as an szarray. Fixes #76973.
21101
21102         * reflection.c (custom_attr_visible): Really fix this.
21103
21104 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
21105
21106         * reflection.c (custom_attr_visible): Allow nested public attributes
21107         as well.
21108
21109         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
21110         interface check.
21111
21112 2005-12-12  Raja R Harinath  <harinath@gmail.com>
21113
21114         * class.c (set_generic_param_owner): Delete.
21115         (mono_class_create_from_typedef): Don't set ->owner field of
21116         generic parameters to "param containers" of enclosing classes.
21117         * reflection.c (mono_reflection_initialize_generic_parameter):
21118         Likewise.
21119
21120 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
21121
21122         * reflection.c (custom_attr_visible): Fix build.
21123
21124 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
21125
21126         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
21127         private attributes.
21128         
21129         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
21130         handling of null parameter defaults.
21131
21132 2005-12-09  Raja R Harinath  <rharinath@novell.com>
21133
21134         * class.c (mono_class_from_generic_parameter): Don't set
21135         klass->generic_container.
21136         (my_mono_class_from_generic_parameter): Likewise.
21137
21138 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21139
21140         * reflection.c (load_public_key): Fix a warning.
21141         (method_encode_code): Fix unaligned accesses.
21142
21143 2005-12-07  Martin Baulig  <martin@ximian.com>
21144
21145         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21146
21147         * reflection.c
21148         (write_generic_param_entry): Encode our custom attrs.
21149
21150         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21151
21152 2005-12-07  Martin Baulig  <martin@ximian.com>
21153
21154         * reflection.c (encode_new_constraint): Removed; we don't use the
21155         `NewConstraintAttribute' anymore.
21156
21157 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21158
21159         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21160         not fire a TypeResolve event when Assembly.GetType () is called.
21161
21162 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21163
21164         Beginning of support for nullable types in the runtime. Parts of
21165         this patch are from Martin.
21166
21167         * appdomain.c (MONO_CORLIB_VERSION): Bump
21168
21169         * domain.c (mono_init_internal): get the nullable type
21170
21171         * class.c (mono_class_is_nullable): New method
21172         (mono_class_get_nullable_param): New mehod
21173         (mono_class_create_generic): In types T? set cast_class to T
21174
21175         * class-internals.h (MonoDefaults): new nullable default class
21176         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21177         new methods.
21178
21179 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21180
21181         * metadata.c (select_container): New.  Refactor code to select the
21182         appropriate GenericContainer given the type of generic parameter
21183         we are looking for.
21184         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21185         not a MonoGenericContext.  Use select_container.  Update parameters.
21186         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21187         and MONO_TYPE_MVAR.
21188         (unwrap_arrays): Remove duplicate tests.
21189         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21190         generic instantiated class to find any arguments that are generic
21191         parameters.
21192         (mono_type_create_from_typespec_full): Use find_generic_param to
21193         avoid evicting some generic instantiations from the typespec
21194         cache.
21195
21196 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21197
21198         * reflection.c: fixed writing of doubles on ARM FPA.
21199
21200 2005-12-02  Robert Jordan  <robertj@gmx.net>
21201
21202         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21203
21204 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21205
21206         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21207         least on SUSE 10 they are not the same (on debian, they are just the
21208         same thing).
21209
21210 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21211
21212         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21213         DeclaringType for VARs and MVARs.
21214         * class.c (set_generic_param_owner): Fix initialization of owner
21215         fields.
21216
21217 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21218
21219         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21220
21221 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21222
21223         * threadpool.c: workaround for a bug that shows up on the Mac:
21224         select()+connect() on a blocking socket is not like it should
21225         be, so we proceed to connect() in that case, wasting the I/O
21226         threadpool thread until connect succeedes. Fixes bug #75436.
21227
21228 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21229
21230         * threadpool.c: fix typo when setting file descriptor states.
21231
21232 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21233
21234         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21235         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21236         create a temporary signature container.
21237         (mono_metadata_parse_generic_param): Update to changes.
21238         (mono_type_create_from_typespec_full): Update to changes.
21239         * loader.c (method_from_memberref): Don't use a
21240         MonoGenericContainer while parsing a memberref signature.
21241         (method_from_methodspec): Remove dead-store of the 'container'
21242         variable.  It's overwritten before use.
21243
21244         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21245         checks tighter.
21246         (mono_metadata_parse_generic_param): Likewise.
21247         * loader.c (find_method_in_class): Does not need a
21248         MonoGenericContainer.  Use 'mono_method_signature' rather than
21249         'mono_method_signature_full'.
21250         (find_method, mono_get_method_constrained, method_from_memberref):
21251         Update to changes.
21252
21253         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21254         owner-less generic-parameters are never evicted from the typespec
21255         cache.
21256
21257         * loader.c (method_from_memberref): Don't use the current context
21258         when parsing signatures.
21259         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21260
21261         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21262         side-effects in g_assert.
21263         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21264         that we don't potentially lose information.
21265
21266 2005-11-26  Dick Porter  <dick@ximian.com>
21267
21268         * icall.c:
21269         * threads.c: icalls to implement basic (ie, not named)
21270         System.Threading.Semaphore.
21271
21272 2005-11-24  Dick Porter  <dick@ximian.com>
21273
21274         * process.c
21275         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21276         Use GetProcessId() if it's available.
21277
21278 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21279
21280         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21281
21282 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21283             Ankit Jain  <jankit@novell.com>
21284
21285         * loader.c (mono_get_method_from_token): Initialize 'method' field
21286         of all generic parameters before parsing the signature.  Remove
21287         code that "fixed"-up MVAR references.
21288
21289 2005-11-23  Ankit Jain  <jankit@novell.com>
21290
21291         * metadata.c (mono_metadata_has_generic_params):
21292         (mono_metadata_load_generic_param_constraints):
21293         (mono_metadata_load_generic_params): Move duplicate code ...
21294         (mono_metadata_get_generic_param_row): ... here. Returns the
21295         first row-id in GenericParam table for a given owner (token).
21296         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21297         prototype.
21298
21299 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21300             Ankit Jain  <jankit@novell.com>
21301
21302         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21303         comparing VARs too.
21304         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21305         type->data.generic_param only if the type is an MVAR.
21306         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21307         leak owner-less VARs and MVARs into managed space.
21308
21309 2005-11-21  Martin Baulig  <martin@ximian.com>
21310
21311         * class-internals.h
21312         (MonoMethod): Moved the `generic_container' here from
21313         `MonoMethodNormal' since we now also need it for
21314         `MonoMethodPInvoke';
21315         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21316         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21317         an union containing both `MonoMethodNormal' and
21318         `MonoMethodPInvoke'.
21319
21320         * loader.c
21321         (mono_get_method_from_token): Allow implementing generic methods
21322         as interncalls.
21323
21324         * threads.c
21325         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21326         icall.
21327
21328 2005-11-17  Dick Porter  <dick@ximian.com>
21329
21330         * icall.c: 
21331         * process.h: 
21332         * process.c: Split the Process Start_internal icall into
21333         ShellExecuteEx_internal and CreateProcess_internal, which are
21334         called depending on whether UseShellExecute is true.  Fixes bug
21335         76670.
21336
21337         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21338
21339 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21340
21341         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21342         'msize' parameters, use the information in 'mspec' instead.
21343         (emit_object_to_ptr_conv): Ditto.
21344
21345         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21346         fields out of order. Fixes #76733.
21347
21348 2005-11-17  Ankit Jain  <jankit@novell.com>
21349
21350         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21351
21352 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21353
21354         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21355           bug #76575.
21356
21357 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21358
21359         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21360         for types with non-auto layout. Fixes #76717.
21361
21362 2005-11-16  Ankit Jain  <jankit@novell.com>
21363
21364         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21365         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21366         if generic_context is null.
21367           (mono_metadata_generic_param_equal): param->owner can be null.
21368           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21369         null.
21370
21371 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21372
21373         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21374         the correct value.
21375
21376 2005-11-15  Martin Baulig  <martin@ximian.com>
21377
21378         * object.c (set_value): Use mono_class_from_mono_type() instead of
21379         the hack for generic instances; fixes #76136.
21380
21381 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21382
21383         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21384         fields.
21385
21386         * image.c (load_metadata_ptrs): Initialize the new fields.
21387
21388         * reflection.c (create_dynamic_mono_image): Ditto.
21389
21390         * reflection.c (build_compressed_metadata): Use the new fields.
21391
21392         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21393         icall.
21394
21395         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21396         icall.
21397         
21398 2005-11-15  Ankit Jain  <jankit@novell.com>
21399             Raja R Harinath  <harinath@gmail.com>
21400
21401         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21402         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21403         new per-generic_container cache if the cached MonoType's context matches
21404         the current context.
21405           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21406         to the expected context.
21407           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21408
21409 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21410
21411         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21412         we changed the signature of an icall.
21413         * icall.c: Modify to mono_double_ParseImpl return true/false 
21414         depending on the success, instead of throwing the exception. This will
21415         help us in Double.TryParse methods.
21416         
21417 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21418
21419         * marshal.c (emit_marshal_object): Throw an exception when
21420         marshalling 'object' instead of crashing. Fixes #76696.
21421
21422 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21423
21424         * class-internals.h: Add prototype for mono_type_get_full_name ().
21425
21426 2005-11-11  Dick Porter  <dick@ximian.com>
21427
21428         * threads.c (mono_thread_manage): Make sure the main thread has
21429         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21430
21431 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21432
21433         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21434         console about the missing type.
21435         (mono_loader_set_error_method_load): Ditto.
21436
21437 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21438
21439         * mono-config.c (mono_get_config_dir): Set the system defaults if
21440         none is specified.
21441
21442         * assembly.c (mono_set_dirs): New API entry point to set the
21443         assembly and the config directory in one call
21444
21445 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21446
21447         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21448         the ftnptr was created from a delegate in a domain other than the
21449         current domain. Fixes #75377.
21450
21451         * exception.h exception.c: Add mono_get_exception_not_supported ().
21452
21453 2005-11-08  Martin Baulig  <martin@ximian.com>
21454
21455         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21456
21457 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21458
21459         * security-manager.h: Added definitions to deal with strongname key 
21460         pairs bigger (and smaller) than 1024 bits.
21461         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21462         adjust wrt the public key length being used.
21463
21464 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21465
21466         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21467           Windows build (r51396-51397).
21468
21469 2005-11-03  Martin Baulig  <martin@ximian.com>
21470
21471         * class.c (mono_class_setup_vtable_general): Also add generic
21472         methods to the vtable; fixes #76581.
21473
21474 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21475
21476         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21477         sure that we lookup GetString method from the System.Text.Encoding
21478         class, not the derived class or we get an empty method.
21479
21480         Fixed class #76612.
21481
21482 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21483
21484         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21485         if it has been previously set (embedders). 
21486
21487         Make mono_set_rootdir available also on Unix.
21488
21489 005-10-24  Robert Jordan  <robertj@gmx.net>
21490
21491         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21492
21493 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21494
21495         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21496         only calls which are made to native code use this flag.
21497
21498         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21499
21500 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21501
21502         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21503         Add support for FieldBuilders.
21504
21505 2005-10-29  Martin Baulig  <martin@ximian.com>
21506
21507         * mono-debug.c
21508         (mono_debug_using_mono_debugger): New public method; returns
21509         whether we're running inside the debugger.
21510
21511 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21512
21513         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21514         for Method/Constructor/FieldBuilders.
21515
21516 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21517
21518         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21519         and fields as well.
21520
21521 2005-10-26  Martin Baulig  <martin@ximian.com>
21522
21523         * mono-debug-debugger.c
21524         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21525
21526 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21527
21528         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21529         integer to isspace.
21530
21531 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21532
21533         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21534         when passing valuetypes byref. Fixes #76502.
21535
21536 2005-10-19  Jackson Harper  <jackson@ximian.com>
21537
21538         * profiler.c: Don't put a . in front of types that are not in a
21539         namespace.
21540
21541 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21542
21543         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21544
21545 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21546
21547         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21548         #76436.
21549         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21550
21551 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21552
21553         * assembly.c metadata-internals.h icall.c: Define an additional
21554         parameter for mono_assembly_name_parse_full, so we can avoid creating
21555         S.R.AssemblyName.Version when no version info wasn't passed.
21556         
21557 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21558
21559         * class.c (mono_type_get_full_name): Reimplement method that was
21560         removed. 
21561
21562         * image.c: Some docs
21563
21564 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21565
21566         * profiler.c (output_newobj_profile): Fix printing of Total memory
21567         on x86.
21568
21569 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21570
21571         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21572
21573 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21574
21575         * threads.c: remove debug output.
21576
21577 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21578
21579         * threads.c (mono_thread_manage): Fix crashes if more than 64
21580         threads need to be aborted. Hopefully fixes #75899.
21581
21582         * assembly.c (mono_stringify_assembly_name): New helper function.
21583
21584         * class.c: Use mono_stringify_assembly_name instead of the similar
21585         static function.
21586
21587         * assembly.h assembly.c: Add support for calling a postload search 
21588         hook if an assembly cannot be loaded.
21589
21590         * appdomain.c: Register new search hooks which call the AssemblyResolve
21591         events in AppDomain. Fixes #75231
21592
21593 2005-10-07  Martin Baulig  <martin@ximian.com>
21594
21595         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21596         methods without debug info.
21597
21598 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21599
21600         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21601         wrappers.
21602
21603 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21604
21605         * file-io.c: now that we return symlinks, use lstat and, when the file
21606         is a symbolic link, stat, to get the file attributes. Also avoid the
21607         conversion to/from utf16/external.
21608
21609 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21610
21611         * class.c (mono_class_layout_fields): Compute klass->has_references
21612         correctly if an embedded valuetype is not yet initialized. Fixes
21613         #76331.
21614
21615 2005-10-04  Martin Baulig  <martin@ximian.com>
21616
21617         * metadata.c
21618         (mono_metadata_load_generic_param_constraints): New public
21619         function; splitted the constraints loading out from
21620         mono_metadata_load_generic_params().
21621
21622         * class.c (mono_class_create_from_typedef): Call
21623         mono_metadata_load_generic_param_constraints() after setting up
21624         the type and creating our parent; fixes #75329.
21625
21626 2005-10-04  Martin Baulig  <martin@ximian.com>
21627
21628         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21629         non-dynamic parent classes.
21630
21631 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21632
21633         * file-io.c : win32 build fix (ETXTBSY seems not found).
21634
21635 2005-10-04  Martin Baulig  <martin@ximian.com>
21636
21637         * reflection.c
21638         (mono_image_get_methodspec_token): Make the cache actually work;
21639         fixes #75974.
21640
21641 2005-10-04  Martin Baulig  <martin@ximian.com>
21642
21643         * class.c (mono_class_name_from_token): Removed the unneccessary
21644         `MonoGenericContext *' argument.
21645
21646 2005-10-04  Martin Baulig  <martin@ximian.com>
21647
21648         * loader.c
21649         (method_from_methodspec): Make the caching work again; fixes the
21650         performance regression from #76262.
21651
21652 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21653
21654         * file-io.c:
21655         * file-io.h:
21656         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21657         GetFileSystemEntries that performs the same work but without going
21658         into io-layer, locking, etc.
21659
21660 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21661
21662         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21663         ThreadState_Stopped as well. Fixes #76047.
21664
21665 2005-09-29  Martin Baulig  <martin@ximian.com>
21666
21667         * class.c
21668         (inflate_generic_context): If the new context has a `gmethod', set
21669         its `container' that that gmethod's `container'.
21670
21671         * metadata.c
21672         (mono_metadata_parse_generic_param): Simplify things;
21673         `generic_container = generic_context->container;' is just fine.
21674
21675         * loader.c (method_from_methodspec): Code cleanups.
21676
21677 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21678
21679         * decimal.c: fix warning (and let gcc generate correct
21680         code on ARM with optimizations).
21681
21682 2005-09-28  Martin Baulig  <martin@ximian.com>
21683
21684         * loader.c
21685         (method_from_memberref): Added `MonoGenericContext *class_context'
21686         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21687         (method_from_methodspec): If we're a memberref, use the enclosing
21688         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21689
21690 2005-09-28  Martin Baulig  <martin@ximian.com>
21691
21692         * object.c (mono_runtime_invoke_array): Added support for
21693         MONO_TYPE_GENERICINST; fixes #75917.
21694
21695 2005-09-27  Martin Baulig  <martin@ximian.com>
21696
21697         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21698         `k->byval_arg.type' to determine the actual type.
21699
21700         * loader.c (method_from_methodspec): Removed some hacks.
21701
21702 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21703
21704         * class-internals.h (mono_field_is_deleted): Do the test for
21705         rtspecialname before we check the actual name of the field. This
21706         prevents us from dereferencing a pointer into the string table,
21707         saving us from accessing a few pages
21708
21709         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21710         macros. This will allow a deadlock debugger to easily be plugged
21711         in.
21712
21713 2005-09-27  Martin Baulig  <martin@ximian.com>
21714
21715         * loader.c (method_from_methodspec): Create a "signature"
21716         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21717
21718 2005-09-27  Martin Baulig  <martin@ximian.com>
21719
21720         * class.c
21721         (inflate_generic_class): Correctly set the new context's
21722         container.
21723
21724         * loader.c
21725         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21726         instead of a `MonoGenericContext *'.
21727         (mono_method_signature_full): Take a `MonoGenericContainer *'
21728         instead of a `MonoGenericContext *'.
21729
21730         * metadata.c
21731         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21732         instead of a `MonoGenericContext *'.
21733         (mono_metadata_parse_method_signature_full): Likewise.
21734
21735 2005-09-26  Martin Baulig  <martin@ximian.com>
21736
21737         * class.c
21738         (mono_class_from_generic_parameter): Set `klass->generic_container'
21739         (mono_class_from_generic_parameter): Likewise.
21740         (mono_bounded_array_class_get): We inherit the generic container
21741         from the element class.
21742
21743         * loader.c
21744         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21745         argument rather than computing it here.
21746         (method_from_memberref): Correctly set the generic context before
21747         parsing the signature.  Fixes #75681.
21748
21749 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21750
21751         * object.c (mono_class_has_special_static_fields): Fix warnings.
21752
21753 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21754
21755         * assembly.c: Add parse_public_key function, to
21756         par the public keys. Also added mono_assembly_name_parse_full,
21757         to define it the parsed key should be freed or not.
21758         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21759         to parse a long format assembly name.
21760         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21761         private, since calling it to preserve the key requires
21762         freeing it manually.
21763         
21764 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21765
21766         * locales.c : removed HAVE_ICU part.
21767
21768 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21769
21770         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21771         field_is_special_static if the klass has no special static fields.
21772
21773         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21774         (MonoCachedClassInfo): Likewise.
21775
21776         * object.c (mono_class_has_special_static_fields): New helper function.
21777
21778 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21779
21780         * class.c (mono_class_create_from_typedef): Don't call 
21781         interfaces_from_typedef_full for enums.
21782         (mono_class_create_from_typedef): Compute the base types of enums directly
21783         without calling mono_class_setup_fields ().
21784         (mono_class_find_enum_basetype): New helper function.
21785
21786         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21787         one place inside the string heap.
21788         
21789 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21790
21791         * class.c: locking fixes, code cleanups, some docs added.
21792         Allocate some data structures in the image mempool.
21793
21794 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21795
21796         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21797         the example code.
21798         
21799 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21800
21801         * class-internals.h, class.c, reflection.c: reduce memory taken by
21802         MonoClass.
21803
21804 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21805
21806         * metadata.c, metadata.h, loader.h: documentation updates, code and
21807         API cleanups.
21808
21809 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21810
21811         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21812         the example code.
21813
21814         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21815         page faults caused by the runtime while reading metadata.
21816
21817 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21818
21819         * socket-io.c: the field names were changed 3 months ago and no one
21820         realized until bug #76077 got filed!
21821
21822 2005-09-20  Martin Baulig  <martin@ximian.com>
21823
21824         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21825
21826 2005-09-20  Martin Baulig  <martin@ximian.com>
21827
21828         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21829         write the rank into the class entry.
21830
21831 2005-09-20  Martin Baulig  <martin@ximian.com>
21832
21833         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21834
21835 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21836
21837         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21838
21839         * icall.c (custom_attrs_defined_internal): New icall.
21840
21841         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21842         function.
21843         (mono_custom_attrs_construct_by_type): New helper function.
21844
21845 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21846
21847         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21848         terminate the resulting string. Fixes #76123.
21849
21850 2005-09-16  Martin Baulig  <martin@ximian.com>
21851
21852         * mono-debug.c
21853         (mono_debug_add_method): Ignore inflated methods for the moment.
21854
21855 2005-09-14  Martin Baulig  <martin@ximian.com>
21856
21857         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21858
21859 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21860
21861         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21862         return a success/failure indication.
21863         (mono_metadata_interfaces_from_typedef_full): Ditto.
21864         (get_constraints): Ditto.
21865
21866 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21867
21868         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21869         
21870         * marshal.c (emit_marshal_array): Add support for returning string
21871         arrays from delegates. Fixes #76063.
21872
21873         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21874
21875 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21876
21877         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21878         icall.
21879
21880 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21881
21882         * reflection.c icall.c: Fix after mono_get_exception_type_load
21883         signature change.
21884
21885         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21886         (mono_assembly_load_reference): Use the new helper.
21887
21888         * class-internals.h (MonoLoaderError): New structure containing 
21889         information about type loading errors.
21890
21891         * class-internals.h loader.c: Add APIs to store per-thread loader
21892         error information.
21893
21894         * loader.c class.c: Set the loader error if needed.
21895
21896         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21897
21898 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21899
21900         * decimal.c: fixed to handle the broken ARM fp format.
21901
21902 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21903
21904         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21905         broken.
21906
21907 2005-09-06  Martin Baulig  <martin@ximian.com>
21908
21909         * domain.c (supported_runtimes): Added v2.0.50727.
21910
21911 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21912
21913         * culture-info.h: reduce the size of some structures.
21914
21915 2005-09-05  Martin Baulig  <martin@ximian.com>
21916
21917         Reflect latest API changes in the August CTP.
21918
21919         * icall.c
21920         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21921         ("MonoType.HasGenericArguments"): Removed.
21922         ("MonoMethod.BindGenericParameters"): Renamed to
21923         "MakeGenericMethod".
21924         ("MethodBuilder.BindGenericParameters"): Renamed to
21925         "MakeGenericMethod".    
21926
21927 2005-09-05  Martin Baulig  <martin@ximian.com>
21928
21929         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21930
21931 2005-09-05  Martin Baulig  <martin@ximian.com>
21932
21933         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21934
21935         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21936         generic_container is non-NULL.
21937
21938 2005-09-05  Martin Baulig  <martin@ximian.com>
21939
21940         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21941
21942         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21943
21944 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21945
21946         * reflection.c (encode_locals,
21947         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21948         for large generic types.
21949
21950 2005-09-05  Martin Baulig  <martin@ximian.com>
21951
21952         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21953
21954         * class.c (mono_dup_array_type): New public method.
21955         (mono_metadata_signature_deep_dup): New public method.
21956         (dup_type): Correctly duplicate array and function types.
21957
21958 2005-09-05  Martin Baulig  <martin@ximian.com>
21959
21960         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21961
21962         * reflection.c (get_default_param_value_blobs): Handle generic types
21963         and generic methods.
21964
21965 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21966
21967         * class.c: Fixed error reporting (method/class were inversed) for 
21968         inheritance demands.
21969         * security-manager.c|h: Added the AppDomain when calling the managed
21970         System.Security.SecurityManager.InheritanceDemand method.
21971
21972 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21973
21974         * reflection.c (encode_marshal_blob): 'marshaltype' and
21975         'marshaltyperef' are alternate sources for the custom marshaler
21976         name.
21977
21978 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21979
21980         * class.c: fix creation of array classes with rank == 1
21981         (patch by Ankit Jain <jankit@novell.com>).
21982
21983 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21984
21985         * object.c: fix check for creating the bound data for arrays vs
21986         szarrays.
21987
21988 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21989
21990         * object.c: configuration file name is now based on the executable name,
21991         not the image name. Fixes bug #75931.
21992
21993 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21994
21995         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21996         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21997
21998 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21999
22000         * rand.c: Use wincrypt.h instead of WinCrypt.h.
22001
22002 2005-08-24  Ankit Jain  <jankit@novell.com>
22003             Raja R Harinath  <rharinath@novell.com>
22004
22005         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
22006           called by it recursively.
22007           (mono_class_init): Remove special case in pending_init handling, since it's
22008           superseded by the fix to mono_class_from_typeref.
22009
22010 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
22011
22012         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
22013         BROKEN_THREAD_START stuff.
22014
22015 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
22016
22017         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
22018         trampoline.
22019
22020         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
22021         
22022         * object.c (mono_delegate_ctor): Replace the original function address with
22023         a delegate trampoline.
22024
22025 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
22026
22027         * icall.c: add boolean argument to base64_to_byte_array and 
22028         InternalFromBase64String to control whether a whitespace-only string
22029         is allowed (or should casue a FormatException to be thrown). We need
22030         this as the behavior has changed between MS.NET 1.x and 2.0, and we
22031         to match the MS behaviour in both profiles.
22032         * appdomain.c: Bump corlib version.
22033
22034 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22035
22036         This patch implements a big portion of publisher policy
22037         support, used to bind assembly versions and redirect
22038         one assembly from version A to version B.
22039
22040         * assembly.c:
22041         New GSList loaded_assembly_bindings, for storing the cached
22042         assembly bindings.
22043         (assembly_binding_maps_name): New static function for checking if a 
22044         assembly binding information maps an assembly name.
22045         (mono_assembly_binding_info_free): New function for freeing
22046         assembly binding information resources.
22047         (get_publisher_policy_info): New static function for retrieving 
22048         assembly binding information from a MonoImage.
22049         (compare_versions): New static function for comparing an assembly
22050         binding information data and the version of an assembly name.
22051         (check_policy_versions): New static function for checking if an
22052         assembly binding info mapping an assembly name is valid for it.
22053         (mono_assembly_load_publisher_policy): New static function for
22054         loading the 'policy.major.minor.MyAssembly' image for an assembly
22055         with an assembly name 'aname'.
22056         (mono_assembly_bind_version): New static function for updating
22057         assembly redirection.
22058         (mono_assembly_apply_binding): New static function for applying
22059         assembly binding.
22060         (search_binding_loaded): New static function for searching 
22061         loaded assembly binding infos in the cache domain.
22062         (mono_assembly_load_full): Don't apply assembly binding for
22063         reflection only assemblies.
22064
22065         * metadata-internals.h: Add MonoAssemblyBindingInfo,
22066         which contains information about assembly binding. Also
22067         declare signature for mono_config_parse_publisher_policy ()
22068         function, used to retrieve pub policy info.
22069         
22070         * mono-config.c:
22071         (publisher_policy_start): New static function used to parse publisher 
22072         policy config files.
22073         (publisher_policy_parser): New static MonoParseHandler containing 
22074         the functions used when parsing config files.
22075         (mono_config_parse_publisher_policy): New function for parsing
22076         publisher policy files.
22077         
22078 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
22079
22080         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
22081
22082         * marshal.c (mono_delegate_free_ftnptr): Ditto.
22083
22084         * object.c (mono_get_addr_from_ftnptr): New helper function.
22085
22086         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
22087
22088         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22089
22090 2005-08-19  Dick Porter  <dick@ximian.com>
22091
22092         * threads.c, threads.h, appdomain.c, appdomain.h,
22093         profiler-private.h, monitor.c, object.c, object-internals.h,
22094         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
22095         store the thread ID, so it can hold a 64 bit value if needed.
22096
22097 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
22098
22099         * reflection.c (mono_reflection_create_dynamic_method): Store the
22100         handle class into the method references as well so ldtoken works in
22101         dynamic methods.
22102
22103         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
22104         types.
22105
22106 2005-08-19  Ankit Jain <jankit@novell.com>
22107
22108         Fix #75847.
22109         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
22110           here rather than using the method signature of a arbitrary function
22111           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
22112           two arguments.
22113           Hack done with Harinath.
22114
22115 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22116
22117         * threadpool.c: disable printing stack traces when we get a exception
22118         in a threadpool thread. I need to do more testing to figure out which
22119         cases actually print this. Fixes bug #75828.
22120
22121 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22122
22123         * icall.c: there might be ignored whitespace after the last '='. This
22124         fixes length computation and bug #75840.
22125
22126 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
22127
22128         * assembly.c (mono_assembly_load_full): Consider .exe extension as
22129         well. Fixes #75809.
22130
22131         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
22132         #75784.
22133         
22134         * reflection.c (create_custom_attr_data): Ditto.
22135
22136 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22137
22138         * locales.c, culture-info.h : removed RegionLCIDMap.
22139         * culture-info-tables.h : regenerated.
22140
22141 2005-08-16  Martin Baulig  <martin@ximian.com>
22142
22143         * class.c (mono_type_get_name_recurse): Small fix.
22144
22145 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22146
22147         * locales.c : indentation fixie.
22148
22149 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22150
22151         * object-internals.h,
22152           locales.h,
22153           locales.c,
22154           culture-info.h,
22155           icall.c : added RegionInfo table support.
22156         * culture-info-table.h : regenerated for region support.
22157
22158 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22159
22160         * reflection.c (resolve_object): handle all kinds of MonoMethod
22161         including generic ones
22162
22163 2005-08-12  Ankit Jain <jankit@novell.com>
22164
22165         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22166           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22167
22168 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22169
22170         * process.c: Don't close a thread handle when it's NULL. This is a
22171         workaround for bug #75733.
22172
22173 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22176
22177 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22180
22181 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22182
22183         * threadpool.c: if a work item in the thread pool has a callback that
22184         catches a exception, don't propagate it after invoking the callback.
22185         Fixes bug #75336.
22186
22187 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22188
22189         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22190
22191         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22192
22193         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22194
22195         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22196
22197 2005-08-03  Ankit Jain  <jankit@novell.com>
22198
22199         Fix #75683.
22200         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22201           PInvoke calling convention is 0.
22202
22203 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22204
22205         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22206         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22207
22208 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22209
22210         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22211         to handle threads not started by the GC (patch by Michael Meeks
22212         <michael.meeks@novell.com>).
22213
22214 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22215
22216         * reflection.c: Make buffer used in emitting types larger for some
22217         big generic types (patch by Michal Moskal).
22218
22219 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22220
22221         * mono-debug.c: Fix some (not all) alignment problems.
22222
22223 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22224
22225         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22226         Invoke mono_image_load_from_data_full passing the refonly
22227         parameter.
22228
22229         * assembly.c
22230         (mono_assembly_open_from_bundle): Add the refonly argument, 
22231         in order to pass it to other methods it calls to.
22232         (do_mono_assembly_open): Add the refonly argument, in order 
22233         to pass it to other methods it calls to.
22234         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22235         the refonly parameter to it.
22236
22237         * image.c: Add loaded_images_refonly_hash and
22238         loaded_images_refonly_guid_hash to cache the reflection
22239         only loaded images.
22240         (mono_images_init): Initialize the hash tables used for
22241         caching the reflection only images.
22242         (load_modules): Invoke mono_image_open_full passing the refonly
22243         parameter to load the modules the correct way.
22244         (build_guid_table): Add the refonly argument, to re-build the 
22245         correct hash table.
22246         (do_mono_image_open): Added the refonly argument, in order to
22247         define it for the loaded image.
22248         (mono_image_loaded_full): New function, which receives an
22249         additional parameter to look for the image in the refonly or
22250         non-refonly section.
22251         (mono_image_loaded): Updated, using mono_image_loaded_full.
22252         (mono_image_loaded_by_guid_full): The same case that happens
22253         with mono_image_loaded_full.
22254         (mono_image_loaded_by_guid): Likewise.
22255         (register_image): Use the ref_only variable inside MonoImage
22256         to decide in which hash table store the current image.
22257         (mono_image_open_from_data_full): Rename
22258         mono_image_open_from_data to mono_image_open_from_data_full,
22259         adding the refonly argument, to define the ref_only variable 
22260         inside MonoImage.
22261         (mono_image_open_from_data): Return 
22262         mono_image_open_from_data_full.
22263         (mono_image_open_full): Rename mono_image_open to
22264         mono_image_open_full, receiving the new refonly argument,
22265         to pass it to inner methods.
22266         (mono_pe_file_open): Update this function, to open
22267         a MonoImage as a non-refonly image.
22268         (mono_image_close): Use the refonly variable inside
22269         MonoImage to remove the image from the correct caches.
22270
22271         * image.h: Add the signatures of mono_image_open_full,
22272         mono_image_open_from_data_full, mono_image_loaded_full,
22273         mono_image_loaded_by_guid_full.
22274
22275         * metadata-internals.h: Add the ref_only field to 
22276         MonoImage.
22277         
22278 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22279
22280         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22281         Fix the last behavior, which used to load the assemblies and
22282         extract MonoReflectionAssemblyName information, instead of
22283         extract it from the metadata tables. Needed for Reflection
22284         Only assemblies.
22285         
22286 2005-07-29  Martin Baulig  <martin@ximian.com>
22287
22288         * mono-debug-debugger.c
22289         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22290         not initialized.
22291
22292         * mono-debug.c
22293         (mono_debug_address_from_il_offset): Check whether we have
22294         debugging support before attempting to take the lock.
22295         (mono_debug_source_location_from_address): Likewise.
22296         (mono_debug_source_location_from_il_offset): Likewise.
22297         (mono_debug_il_offset_from_address): Likewise.
22298         (mono_debug_address_from_il_offset): Likewise.
22299
22300 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22301
22302         * class.c (mono_class_from_name_case): Add support for dynamic images.
22303         Fixes #75650.
22304
22305         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22306         for #75479.
22307
22308 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22309         
22310         * reflection.c (mono_method_get_object): Fix warning.
22311
22312 2005-07-28  Martin Baulig  <martin@ximian.com>
22313
22314         * mono-debug.c
22315         (mono_debug_add_wrapper): Also write the wrapper type.
22316
22317 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22318
22319         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22320         
22321         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22322         data indicates the class has none.
22323
22324 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22325
22326         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22327         loader lock with the debugger lock. Prevents deadlocks for beagle.
22328
22329         Beagle can now run on an smp box for a weekend without any
22330         issues. Woohoo!
22331
22332 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22333
22334         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22335         in a module. Fixes #75629.
22336
22337 2005-07-26  Martin Baulig  <martin@ximian.com>
22338
22339         * mono-debug.c (mono_debug_add_wrapper): New static method.
22340         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22341         interncall or a wrapper.
22342
22343         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22344         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22345         (MONO_DEBUGGER_VERSION): Bump to 51.
22346
22347         * mono-debug-debugger.c
22348         (mono_debugger_add_type): Removed this empty function.
22349         (mono_debugger_add_method): Likewise.
22350
22351 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22352
22353         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22354         before accessing method->slot.
22355
22356 2005-07-21  Jb Evain  <jbevain@gmail.com>
22357
22358         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22359         Fixes #75010.
22360
22361 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22362
22363         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22364         #75587.
22365
22366 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22367
22368         * image.h image.c: Add mono_image_get_guid () API function.
22369
22370 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22371
22372         There were issues when multiple threads tried to load
22373         assemblies. A deadlock was created between assemblies_mutex and
22374         mono_domain_assemblies_lock. This fixes the issue by making the
22375         assembly ref counting be lock free. See bug 75586.
22376         
22377         * image.c (mono_image_close): The add ref function here was using
22378         Interlocked operations while the unref was using a mutex and a
22379         --. I don't think this was ever a bug that would be exposed in a
22380         non-pendantic way (ie, by an embedder doing a ref on one thread
22381         and an unref on another), but for the sake of correctness, this is
22382         now Interlocked.
22383
22384         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22385         (mono_assembly_load_reference): Call mono_assembly_addref rather
22386         than touching the refcount ourselves.
22387         (mono_assembly_close): Use InterlockedDecrement to unref the
22388         assembly. Don't acquire the lock unless it is actually needed.
22389
22390 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22391
22392         * class.c (mono_class_layout_fields): Fix calculation of has_references
22393         for generic types.
22394
22395 2005-07-12  Martin Baulig  <martin@ximian.com>
22396
22397         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22398
22399         * metadata.c
22400         (mono_type_hash): Provide better hashing for generic instances.
22401         (mono_generic_inst_hash): Improve hashing.
22402         (mono_generic_class_hash): Likewise.
22403
22404         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22405         generic instances.
22406
22407 2005-07-12  Martin Baulig  <martin@ximian.com>
22408
22409         * reflection.c (mono_reflection_create_runtime_class): Remove the
22410         hack for generic type definitions and non-`Run' assemblies.
22411         (mono_reflection_bind_generic_parameters): Also use
22412         `klass->wastypebuilder' to check for TypeBuilders.
22413
22414 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22415
22416         * class.c (mono_class_layout_fields): Fix calculation of has_references
22417         for generic types.
22418
22419         * class.c (inflate_generic_class): Fix a leak.
22420         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22421         for generic types.
22422
22423 2005-07-11  Martin Baulig  <martin@ximian.com>
22424
22425         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22426         on error.
22427
22428 2005-07-11  Martin Baulig  <martin@ximian.com>
22429
22430         * loader.c (find_method): Also lookup in
22431         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22432
22433 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22434
22435         * appdomain.c (mono_domain_unload): Don't free the error message
22436         before passing it to mono_get_exception_...
22437
22438         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22439         
22440 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22441
22442         * threads.c: try to better guess an available RT signal (bug #75387).
22443
22444 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22445
22446         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22447         and CACHE_OBJECT.
22448
22449 2005-07-07  Martin Baulig  <martin@ximian.com>
22450
22451         * class.c (mono_type_get_name_full): Return NULL for
22452         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22453         fixes #75408.
22454
22455 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22456
22457         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22458         exit the appdomain as well being aborted.
22459
22460         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22461         change back to the root domain after calling managed code. This enables
22462         appdomains using threadpools to be unloaded.
22463
22464 2005-07-07  Martin Baulig  <martin@ximian.com>
22465
22466         * class-internals.h
22467         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22468         into `MonoDynamicGenericClass' since we only need it for dynamic
22469         types.
22470
22471         * reflection.c (mono_class_bind_generic_parameters): We don't need
22472         to compute the `parent' here.
22473
22474 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22475
22476         * culture-info-table.h : regenerated.
22477
22478 2005-07-06  Martin Baulig  <martin@ximian.com>
22479
22480         * icall.c
22481         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22482
22483         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22484
22485 2005-07-06  Martin Baulig  <martin@ximian.com>
22486
22487         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22488         we're doing a signature-only comparision; fixes #74945.
22489
22490 2005-07-06  Martin Baulig  <martin@ximian.com>
22491
22492         * class-internals.h (MonoGenericClass): Moved some things out into
22493         a new `MonoInflatedGenericClass' type.  
22494         (MonoInflatedGenericClass): New type; the `klass' of a
22495         `MonoGenericClass' is now computed lazyly in
22496         mono_get_inflated_generic_class().      
22497
22498         * class.c (mono_get_inflated_generic_class): New public function.
22499         (mono_class_inflate_generic_method): Removed the unused
22500         `MonoClass *' argument.
22501         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22502         all the methods.
22503         (mono_class_create_generic): Make this static and merge it with
22504         mono_class_create_generic_2(); we're now called automatically from
22505         mono_get_inflated_generic_class().
22506
22507         * loader.c (mono_method_signature): Call
22508         mono_get_inflated_method() here.
22509
22510 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22511
22512         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22513         type of fields with RVA.
22514
22515         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22516         for this pseudo class.
22517         (my_mono_class_from_generic_parameter): Likewise.
22518         (mono_class_init): Allow interfaces to have cctors.
22519
22520 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22521
22522         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22523         lazily for AOT methods.
22524
22525 2005-07-05  Martin Baulig  <martin@ximian.com>
22526
22527         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22528         returns FALSE for a successful match, not TRUE.
22529
22530 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22531
22532         * loader.c (mono_method_get_index): Optimize this a bit.
22533
22534 2005-07-04  Martin Baulig  <martin@ximian.com>
22535
22536         * class.c
22537         (class_compute_field_layout): Move the check for generic type
22538         definitions into mono_class_layout_fields().  Fixes #74684.
22539         (mono_class_from_generic_parameter): Correctly compute
22540         `klass->parent'; fixes #75457.
22541
22542         * reflection.c (register_assembly, register_module): Make sure
22543         `domain->rejobject_hash' is already created.
22544
22545 2005-07-02  Martin Baulig  <martin@ximian.com>
22546
22547         * class-internals.h
22548         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22549         `MonoDynamicGenericClass'.      
22550
22551 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22552
22553         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22554         returned by a field getter is null, since null is a valid value.
22555
22556 2005-07-01  Martin Baulig  <martin@ximian.com>
22557
22558         * reflection.c (mono_reflection_generic_class_initialize): Update
22559         the `dgclass->fields [i].parent' to the correct class.
22560         (mono_image_get_fieldref_token): Use the declaring type, not the
22561         reflected type.
22562
22563 2005-07-01  Martin Baulig  <martin@ximian.com>
22564
22565         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22566
22567 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22568
22569         * threads.c (thread_cleanup): assert that thread != NULL
22570         (wait_for_tids_or_state_change): We were using the wrong variable
22571         when accessing wait->threads. `i' was always out of the bounds of
22572         the array.
22573
22574 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22575
22576         * loader.c: map user32 and kernel32 to libMonoSupportW
22577
22578 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22579
22580         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22581
22582 2005-06-28  Martin Baulig  <martin@ximian.com>
22583
22584         * loader.c (method_from_methodspec): Fix #75334.
22585
22586 2005-06-28  Martin Baulig  <martin@ximian.com>
22587
22588         Fix #74953 - Arrays now implement the generic IList<T> interface
22589         on the 2.0 platform.
22590
22591         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22592
22593         * reflection.c (mono_class_bind_generic_parameters): New public
22594         function; similar to mono_reflection_bind_generic_parameters(),
22595         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22596
22597         * domain.c (mono_init_internal): Try to initialize.
22598         `mono_defaults.generic_array_class' here; this'll only succeed if
22599         we're using the 2.0 corlib.
22600
22601         * icall.c
22602         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22603         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22604         (mono_lookup_internal_call): Added support for nested classes.
22605
22606         * loader.c
22607         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22608         we're an interncall and have generic arguments.
22609
22610         * class.c
22611         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22612         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22613         instance of System.Array.InternalArray<T> for arrays, so they
22614         implement the generic IList<T> interface.
22615
22616 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22617
22618         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22619         (chastamar@yahoo.com). Fixes #75374.    
22620
22621 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22622
22623         * culture-info-table.h: regenerated.
22624
22625 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22626
22627         * icall.c: handle spaces correctly for base64 strings.
22628
22629 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22630
22631         * *.c: Kill some warnings.
22632
22633 2005-06-23  Duncan Mak  <duncan@novell.com>
22634
22635         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22636         that this builds on Solaris 10 (x86).
22637
22638 2005-06-23  Martin Baulig  <martin@ximian.com>
22639
22640         * class.c
22641         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22642         generic type definitions.
22643
22644 2005-06-23  Martin Baulig  <martin@ximian.com>
22645
22646         Fix #75331.
22647
22648         * metadata.c (mono_class_get_overrides): Renamed to
22649         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22650         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22651         pass it to mono_get_method_full().
22652
22653 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22654
22655         * reflection.c (mono_reflection_create_runtime_class): take the
22656         mono_domain_lock in this method. Prevents deadlocks
22657
22658 2005-06-22  Martin Baulig  <martin@ximian.com>
22659
22660         * loader.c (method_from_methodspec): Fix #75330.
22661
22662 2005-06-22  Martin Baulig  <martin@ximian.com>
22663
22664         * reflection.c (type_get_qualified_name): Use
22665         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22666         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22667         argument; use it if we don't have an assembly name.
22668
22669 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22670
22671         * object.c: In mono_message_init, set "copy out" flag for in
22672         parameters with the [Out] flag.
22673
22674 2005-06-21  Martin Baulig  <martin@ximian.com>
22675
22676         * class.c
22677         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22678         and MONO_TYPE_PTR.
22679
22680 2005-06-21  Martin Baulig  <martin@ximian.com>
22681
22682         * class.c (mono_class_init): Don't initialize `class->fields' for
22683         generic instances since they're initialized again in
22684         compute_field_layout(). 
22685         (compute_field_layout): Set the field's `generic_info' here; fix
22686         #75320. 
22687
22688 2005-06-21  Martin Baulig  <martin@ximian.com>
22689
22690         * class-internals.h
22691         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22692
22693         * metadata.c (mono_metadata_generic_method_equal): Also
22694         distinguish the `generic_class'; fixes #75334.
22695
22696 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22697
22698         * domain.c:
22699         * appdomain.c:
22700         * domain-internals.h:
22701         * reflection.c: 'domain_assemblies' field is now protected by its own
22702         lock. Don't call into managed code to run the AssemblyLoad event if we
22703         now there are no registered delegates for it.
22704
22705 2005-06-20  Martin Baulig  <martin@ximian.com>
22706
22707         * class.c (mono_class_is_assignable_from): Use a custom version of
22708         mono_class_has_parent() to make things work for generic instances;
22709         fix #75300.
22710
22711 2005-06-20  Martin Baulig  <martin@ximian.com>
22712
22713         * loader.c (method_from_methodspec): Apply a patch from
22714         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22715
22716 2005-06-20  Martin Baulig  <martin@ximian.com>
22717
22718         * class.c (mono_class_init): Reverted Zoltan's last change; it
22719         breaks generics.
22720
22721 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22722
22723         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22724
22725 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22726
22727         * socket-io.c: fix the index in the socket array for writable/error
22728         sockets. Fixes bug #75306.
22729
22730 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22731
22732         * class.c (mono_class_init): Allow interfaces to have static ctors.
22733
22734 2005-06-17  Martin Baulig  <martin@ximian.com>
22735
22736         * loader.c (method_from_methodspec): Use `context->container' when
22737         parsing the `gmethod->inst'.
22738
22739 2005-06-17  Martin Baulig  <martin@ximian.com>
22740
22741         * class.c (mono_type_get_name_recurse): Don't add the assembly
22742         name for type arguments.
22743
22744 2005-06-15  Martin Baulig  <martin@ximian.com>
22745
22746         * reflection.c (mono_image_get_inflated_method_token): Encode
22747         correct klass; fixes #75260.
22748
22749 2005-06-13 Michal Moskal <malekith@nemerle.org>
22750
22751         * icall.c: Make GetCorrespondingMethod/Constructor take
22752         MonoReflectionMethod method not MonoMethod. Removed
22753         MonoType.GetCorrespondingField, and make
22754         MonoGenericType.GetCorrespondingField take name not
22755         MonoClassField.
22756
22757 2005-06-13  Michal Moskal <malekith@nemerle.org>
22758
22759         * reflection.c (field_encode_signature, encode_locals):
22760          Make sizes of buffers for types larger (for big generic types).
22761          (create_generic_typespec,
22762          mono_reflection_sighelper_get_signature_local,
22763          mono_reflection_sighelper_get_signature_field):
22764          Add asserts for too small buffers.
22765
22766 2005-06-15  Martin Baulig  <martin@ximian.com>
22767
22768         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22769         if our parent is not a dynamic type.
22770
22771 2005-06-15  Martin Baulig  <martin@ximian.com>
22772
22773         * class-internals.h (MonoTypeNameFormat): New enum.
22774
22775         * class.c
22776         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22777         (mono_type_get_full_name): Removed.
22778         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22779         argument instead of the boolean's.
22780
22781         * icall.c (ves_icall_System_MonoType_getFullName):
22782         Added `gboolean assembly_qualified'.    
22783
22784         * reflection.h
22785         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22786
22787         * reflection.c (mono_reflection_parse_type): Parse the new type
22788         name format.
22789
22790 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22791
22792         * icall.c: no need to convert from utf16 to utf8 and then back again
22793         after the call to GetLogicalDrives.
22794
22795 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22796
22797         * icall.c: frombase64. Fix problems exposed by new tests.
22798
22799 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22800
22801         * icall.c: added internal calls for converting char [] and strings in
22802         base64 into byte [].
22803
22804 2005-06-10  Martin Baulig  <martin@ximian.com>
22805
22806         * class.c (mono_class_create_generic_2): Read the nested classes
22807         from the metadata rather than from `gklass->nested_classes' since
22808         `gklass' might not be initialized yet.
22809
22810 2005-06-09  Duncan Mak  <duncan@novell.com>
22811
22812         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22813         all public headers. Fixes #74919.
22814
22815 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22816
22817         * domain.c: The key for proxy_vtable_hash is now a pointer
22818         array. Added new GHashFunc and GCompareFunc functions for this.
22819
22820         * class.h: The list of interfaces in MonoRemoteClass is known in
22821         advance and can't grow (we create a new MonoRemoteClass if needed),
22822         so now the interface array can be allocated together with
22823         MonoRemoteClass.
22824         
22825         * object.c: Added a new method create_remote_class_key.
22826         Fixed mono_remote_class so it does not depend on
22827         mono_upgrade_remote_class.
22828         Removed extend_interface_array.
22829         Added new method clone_remote_class(), which makes a copy of a remote
22830         class and adds a new interface or class to it.
22831         mono_upgrade_remote_class() now creates a new remote class (or gets
22832         it from the cache) if an vtable upgrade is needed. In this way
22833         we make sure that other objects sharing the same remote class
22834         don't get the new vtable with unwanted interfaces.
22835         
22836         * object-internals.h:
22837         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22838         
22839         * marshal.c: Track changes in mono_upgrade_remote_class().
22840
22841 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22842         * icall.c: Add runtime methods for obtaining members of inflated
22843         class, which were created from supplied non-inflated members. It
22844         is used in internal Get{Method,Constructor,Field} methods in
22845         System.Type
22846
22847 2005-06-09  Martin Baulig  <martin@ximian.com>
22848
22849         * reflection.c
22850         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22851
22852 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22853         * reflection.c (mono_image_basic_init): Define
22854         Version in MonoDynamicAssembly. 
22855         
22856 2005-06-08  Martin Baulig  <martin@ximian.com>
22857
22858         Fix #75136.
22859
22860         * loader.c
22861         (mono_method_signature_full): New public method; takes a
22862         `MonoGenericContext *'.
22863         (find_method): Use mono_method_signature_full() and pass the
22864         klass'es context to it.
22865
22866         * class.c (mono_class_is_inflated_method): Use
22867         mono_method_signature_full() and pass the context to it.
22868
22869 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22870
22871         * object.c: add proper locking in mono_remote_class_vtable(),
22872         fixes possible memory corruption.
22873
22874 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22875
22876         * marshal.c (mono_remoting_marshal_init): set
22877         initialized after initialization.
22878
22879 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22880
22881         * locales.c : hush.
22882
22883 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22884
22885         * object.c (extend_interface_array): fix really silly
22886         memory corrupting / comparison bug.
22887
22888 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22889
22890         * reflection.c: Functions added to support the creation
22891         of CustomAttributeData, which includes Attribute data
22892         used by ReflectionOnly methods.
22893
22894         * reflection.h:  mono_reflection_get_custom_attrs_data and
22895          mono_custom_attrs_data_construct added (functions exposed).
22896
22897          * icall.c: Added mono_reflection_get_custom_attrs_data
22898          as icall.
22899         
22900 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22901
22902         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22903         lupus's request.
22904
22905 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22906
22907         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22908
22909         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22910         dynamic DllImportAttribute.
22911
22912         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22913         dynamic DllImportAttribute.
22914
22915         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22916         Fixes #75162.
22917
22918 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22919
22920         * threads.c: avoid segfault when an unstarted thread is aborted.
22921
22922 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22923
22924         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22925         Returns the name and version of the runtime for reporting.
22926
22927 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22928
22929         * appdomain.c: bump corlib version.
22930         * object-internals.h: new field in MonoReflectionAssembly.
22931
22932 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22933
22934         * object-internals.h: Carlos forgot to add this field.
22935
22936 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22937
22938         * icall.c: Added create_version to create instances
22939         of Version of MonoReflectionAssemblyName. This change helps
22940         the AssemblyName tests to keep running fine.
22941         
22942 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22943   
22944         * object.c (mono_method_return_message_restore): A somehow less
22945         intrusive fix for #75138.
22946
22947 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22948
22949         * object.c (mono_method_return_message_restore): Fix computation
22950         of expected number of out args.
22951
22952 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22953
22954         * reflection.c (mono_image_get_method_info): Fix the case when the
22955         charset is empty.
22956
22957 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22958
22959         * object.c: Added missing null check in
22960           mono_method_return_message_restore.
22961
22962 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22963
22964         * reflection.c (mono_image_get_method_info): Handle the case when
22965         dllentry is empty.
22966
22967 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22968
22969         * object.c: When creating the vtable for a proxy, take into account
22970         all inherited interfaces, not only the ones registered in
22971         iclass->interfaces. This fixs bug #74996.
22972         Also, in mono_method_return_message_restore, verify that the array
22973         of out args has the expected lengh.
22974
22975 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22976
22977         * socket-io.c: update the timeout in Poll when the call is interrupte.
22978
22979 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22980
22981         * socket-io.c: support abort/suspend in Select_internal after last
22982         change.
22983
22984 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22985
22986         * threadpool.c: remove warning.
22987
22988 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22989
22990         * icall.c:
22991         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22992         removing the 1024 limit from select(). Runtime part of the fix for
22993         bug #71203.
22994
22995 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22996
22997         * socket-io.c: when resolving the addresses for the same
22998         host returned by gethostname(), get the local IPs from the interface
22999         list. Loopback addresses are discarded if the are interfaces up with
23000         non-loopback ones. Fixes bug #63265.
23001
23002 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
23003
23004         * appdomain.c, verify.c, object-internals.h, reflection.c:
23005         bumped corlib number to 36, and added new extra_flags field
23006         to ReflectionMethodBuilder and friends.  Fixes #75060.
23007
23008 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
23009
23010         * gc.c: register a new weak link only if the object is non-null
23011         (fixes bug#75047).
23012
23013 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23014
23015         * culture-info.h : short time pattern too.
23016
23017 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23018
23019         * culture-info.h : expand long time pattern string length.
23020
23021 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23022
23023         * culture-info-table.h : update (more French date format; #72788).
23024
23025 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
23026
23027         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
23028         the method is static. Fixes #75029.
23029
23030 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
23031
23032         * reflection.c: Update the table_idx field of method builders after
23033         saving the module, since it can change. This is a workaround for
23034         bug #74914. 
23035
23036 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23037
23038         * culture-info-table.h : update (additional French date format).
23039
23040 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
23041
23042         * icall.c (ves_icall_type_Equals): Revert last change.
23043         
23044         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
23045
23046         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
23047
23048 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
23049
23050         * class-internals.h: Added executioncontext_class field to 
23051         MonoDefaults structure.
23052         * domain.c: Cache System.Threading.ExecutionContext class in 
23053         mono_defaults.
23054         * object.c: Capture the ExecutionContext for asynchroneous calls in
23055          mono_async_result_new.
23056         * object-internals.h: Added execution_context and original_context 
23057         fields to MonoAsyncResult. Added execution_context to MonoThread.
23058         * security-manager.c|.h: Added mono_get_context_capture_method to 
23059         return the capture method (if required by the security manager or by
23060         the framework version used).
23061         * threadpool.c: Apply capture (if present) ExecutionContext in 
23062         mono_async_invoke and revert to original context after it completes.
23063
23064 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
23065
23066         * culture-info-table.h : updated (real hacky solution for zh-CHT).
23067
23068 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
23069
23070         * culture-info-table.h : zh-CHT related workaround.
23071
23072 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23073
23074         * marshal.c (emit_marshal_custom): Add some error checking and call the
23075         methods in the ICustomMarshaler interface. Fixes #74875.
23076         
23077         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
23078         native->managed wrappers.
23079
23080 2005-05-12  Martin Baulig  <martin@ximian.com>
23081
23082         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
23083         here and use the loader lock.
23084
23085         * mono-debug.c: Properly lock when the debugger is not attached.
23086         (mono_debug_init): Release the initial lock if we're not running
23087         in the debugger.
23088
23089 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23090
23091         * marshal.c (emit_marshal_custom): Pass through NULL values without
23092         calling the custom marshalling routines.
23093
23094         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
23095         conversion in structures. Fixes #74882.
23096
23097 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
23098
23099         * culture-info-table.h : zh-* cultures were missing.
23100
23101 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
23102
23103         * threads.c: Added a new event background_change_event which is signaled
23104         when a thread changes its background mode.
23105         Moved here several checks previously done in managed code. The checks
23106         require the thread lock, and using the thread lock in managed code
23107         can result in deadlocks.
23108         Merged Start_internal and Thread_internal into a single method. Now 
23109         Thread_internal does all work of creating and starting a thread.
23110         Added icalls for setting and getting the state of the object. Moved from
23111         managed code to avoid locking there.
23112         Added wait_for_tids_or_state_change() which is called instad of
23113         wait_for_tids when waiting for non-backround threads to end. This method
23114         will return if one of the threads ends or the background_change_event
23115         is signaled.
23116         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
23117         the background mode. This method signals the background_change_event
23118         event.
23119         * icall.c:
23120         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
23121         removed Start_internal.
23122         
23123 2005-05-11  Martin Baulig  <martin@ximian.com>
23124
23125         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
23126         to order of some fields to get proper alignment on 64-bit machines.
23127
23128 2005-05-11  Martin Baulig  <martin@ximian.com>
23129
23130         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
23131         changes as they're broken and completely fuck up the debugger.
23132
23133         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23134
23135 2005-05-10  Martin Baulig  <martin@ximian.com>
23136
23137         * reflection.c (mono_reflection_generic_class_initialize): Don't
23138         call mono_class_setup_parent() here.
23139
23140 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23141
23142         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23143         send/receive timeout use an integer in milliseconds. We were using a
23144         struct timeval.
23145
23146 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23147
23148         * locales.c:
23149         (internal_get_cultures): reserve the first slot of the array for the
23150         InvariantCulture, which will be filled in managed code.
23151
23152 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23153
23154         * reflection.c (mono_image_fill_module_table): Initialize the
23155         GENERATION field as well.
23156
23157 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23158
23159         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23160         Monitor.Enter on the object.
23161
23162 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23163
23164         * threads.c: Enable the wait for running threads when exiting.
23165         * icall.c: Suspend all threads before exiting.
23166
23167 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23168
23169         * assembly.c (mono_assembly_load_reference): Fix warning.
23170
23171 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23172
23173         * threadpool.c: changed the default number of threads per cpu. From now
23174         on, the default will be 20 + (5 * number of cpus) instead of 50.
23175
23176 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23177
23178         * loader.c (mono_method_get_signature_full): Add locking here.
23179
23180 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23181
23182         * appdomain.c: Moved methods for parsing and freeing assembly
23183         names to assembly.c.
23184         * assembly.c, domain-internals.h: Created public methods for parsing
23185         assembly names. Fixed mono_assembly_load_with_partial_name:
23186         it now finds the best match, taking into account the version,
23187         token and culture specified in the partial name. Also return
23188         the latest version if no version information is specified.
23189
23190 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23191
23192         * threadpool.c: replace check for SocketAsyncCall class.
23193
23194 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23195
23196         * threadpool-internals.h:
23197         * Makefile.am: added threadpool-internals.h
23198
23199         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23200         that happen in threadpool threads (tested on MS).
23201         (mono_thread_pool_remove_socket): new function that dispatch any pending
23202         AIO call on a socket that is closing. By now only epoll really needs it,
23203         as select/poll wake up when the socket closes.
23204
23205
23206         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23207
23208 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23209
23210         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23211
23212 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23213
23214         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23215
23216 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23217
23218         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23219         has an abort request, convert it into a suspend request.
23220
23221 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23222
23223         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23224         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23225         is not supported yet.
23226
23227 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23228
23229         * image.c: register assemblies loaded from data (bundles) in the loaded
23230         assemblies hash. Fixes bug #74772.
23231
23232 2005-04-29  Martin Baulig  <martin@ximian.com>
23233
23234         * class.c (mono_type_get_name_recurse): Update to the new naming
23235         schema from the latest .NET 2.x beta2.
23236         (mono_class_setup_vtable_general): If we're a generic instance,
23237         copy the vtable from our generic type definition and inflate all
23238         the methods in it.
23239
23240         * loader.c (find_method): Update to the new naming schema from the
23241         latest .NET 2.x beta2.
23242
23243 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23244
23245         * class.c (mono_class_init): Add a mono_loader_unlock to the
23246         #74734 fix.
23247
23248 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23249
23250         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23251         suspend_all_other_threads () call for the time being, since it can hang.
23252
23253         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23254         the background threads to exit, since it can also hang.
23255
23256         * class.c (mono_class_init): Applied patch from Ankit Jain 
23257         (radical@gmail.com). Avoid pending init errors when a field refers
23258         to a nested class using a typeref. Fixes #74734.
23259
23260         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23261         this for dynamic modules.
23262
23263 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23264
23265         * threads.c: don't wait for threads that are in the process of aborting
23266         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23267         and waiting for background threads to finish. This makes xsp and
23268         mod-mono-server exit without random length delays and/or hangs.
23269
23270 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23271
23272         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23273
23274 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23275
23276         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23277         dynamic types to prevent infinite loops. Fixes #74727.
23278
23279         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23280         ..._is_assignable_to.
23281
23282 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23283
23284         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23285
23286 2005-04-25  Martin Baulig  <martin@ximian.com>
23287
23288         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23289
23290         * domain.c
23291         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23292
23293         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23294
23295         * reflection.c (build_compressed_metadata): Set metadata header
23296         version to 2.0.
23297
23298 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23299
23300         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23301         number into an integral and a decimal part. Fixes #70473.
23302
23303         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23304
23305 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23306
23307         * culture-info-table.h : reflected the latest locale-builder output.
23308
23309 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23310
23311         * threadpool.c: check for SuspendRequested too when deciding if
23312         mono_thread_interruption_checkpoint should be called.
23313
23314 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23315
23316         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23317         * threads.c: remove interruption_mutex and use Interlocked instead. When
23318         suspending all the threads, wait for all the suspended events at once.
23319         If we're shutting down and get an APC that is going to be queued,
23320         call mono_thread_execute_interruption immediately, as the thread might
23321         be sleeping on a pthread condition or mutex.
23322
23323         * icall.c: call mono_runtime_set_shutting_down before suspending the
23324         threads.
23325
23326         Fixes bug #74693. And now xsp is happier when exiting.
23327
23328 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23329
23330         * loader.c (mono_stack_walk): Fix #74690.
23331
23332 2005-04-22  Martin Baulig  <martin@ximian.com>
23333
23334         * mono-debug.h (MonoDebugMethodJitInfo): Added
23335         `MonoDebugMethodJitInfo *jit'.
23336
23337         * mono-debug.c (mono_debug_read_method): Cache the
23338         MonoDebugMethodJitInfo in `address->jit'.
23339         (mono_debug_free_method_jit_info): New public method.
23340
23341 2005-04-22  Martin Baulig  <martin@ximian.com>
23342
23343         * class.c (mono_class_is_assignable_from): Disallow
23344         type parameter -> interface.
23345
23346 2005-04-21  Dick Porter  <dick@ximian.com>
23347
23348         * threads.c (mono_thread_create): Turn an assertion into an error.
23349
23350 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23351
23352         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23353         
23354         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23355         Fix some gcc 4.0 warnings.
23356
23357 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23358
23359         * file-io.c: fix alt dir separator char on unix systems
23360         and cleanup (fixes bug #71214).
23361
23362 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23363
23364         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23365         a call to a remote domain, since the method may be an
23366         interface method in the client domain. This fixes bug #74192.
23367
23368 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23369
23370         * threadpool.c: recv/send are now performed before going back to managed
23371         code to save one transition.
23372
23373 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23374
23375         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23376
23377         * metadata/threadpool.c: removed hack to workaround the bug above.
23378
23379         Fixes bug #74618.
23380
23381 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23382
23383         * reflection.c reflection.h: Fix handling of parameter defaults in
23384         dynamic methods. Also fixes handling of parameter attributes.
23385         Fixes #74609.
23386
23387         * mono-debug.c (mono_debug_close_image): Fix warning.
23388
23389 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23390
23391         * socket-io.h: replaced old unused field with new 'blocking'.
23392         * threadpool.c: restore socket blocking state on windows(tm).
23393
23394 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23395
23396         * icall.c: don't return the codebase in the AssemblyName[] returned by
23397         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23398         * object-internals.h: Removed FIXME (fields were presents) and fixed
23399         versioncompat declaration.
23400
23401 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23402
23403         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23404         not closed, so don't cleanup when it happens.
23405
23406 2005-04-13  Chris Toshok  <toshok@ximian.com>
23407
23408         * mono-debug-debugger.h: change prototype for
23409         mono_debugger_lookup_type.
23410
23411         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23412         this function, although it should probably be named
23413         mono_debugger_init_type.
23414
23415 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23416
23417         * threadpool.c: fix non-AIO case.
23418
23419 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23420
23421         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23422         the built-in profiler to measure just JIT compilation times.
23423
23424 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23425
23426         * threadpool.c: the epollfd might be closed by another thread at
23427         any time, so ignore EBADF at treat it as a "we're closing" sign.
23428
23429 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23430
23431         * threadpool.c: release the semaphores with a count equals to the number
23432         of working threads in both IO and regular pools. Fixed typo that messed
23433         up the count of IO pool threads. Don't initialize the pipe handles if
23434         we're using epoll.
23435
23436 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23437
23438         * threadpool.c: some systems don't like a NULL when deleting the socket
23439         from epoll.
23440
23441 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23442
23443         * threadpool.c: fix semaphore allocation.
23444
23445 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23446
23447         * threadpool.c: added epoll() based implementation for asynchronous IO
23448         that is used instead of the default poll() when available.
23449         It can be disabled by setting MONO_DISABLE_AIO.
23450
23451 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23452
23453         * threadpool.c: windows needs 'closesocket' and instead of returning
23454         0 when the stream is closed while in select, it returns -1. Fixes bug
23455         #74573.
23456
23457 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23458
23459         * class.c (class_compute_field_layout): Fix the regression caused by
23460         the previous try.
23461
23462 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23463
23464         * threadpool.c: separate pool for socket async. IO.
23465         * threadpool.h: mono_max_worker_threads is not a global any more.
23466
23467 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23468
23469         * class.c (class_compute_field_layout): Fix #74549.
23470
23471 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23472
23473         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23474         use 2 connected sockets instead.
23475
23476 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23477
23478         * mono-config.c: Add new entry point for mkbundle
23479         mono_config_parse_memory. 
23480
23481 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23482
23483         * threadpool.c: removed another unused function.
23484
23485 2005-04-08  Ankit Jain  <radical@corewars.org>
23486
23487         * reflection.c (get_default_param_value_blobs): Add 'types'
23488         parameter to get the types encoded in the constant table.
23489         (mono_param_get_objects): Use the type from the constant table,
23490         not the type of the parameter, when creating default values.
23491         Handle null default values correctly.
23492
23493 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23494
23495         * file-io.c:
23496         * file-io.h:
23497         * threadpool.c:
23498         * threadpool.h:
23499         * icall.c:
23500         * socket-io.c: removed dead code for async IO.
23501
23502 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23503
23504         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23505
23506         * threadpool.c: intercept socket async. calls and pass them to a thread
23507         that is polling and dispatching the job items to the threadpool as
23508         socket become ready. Fixes bugs #71217, #71933.
23509
23510         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23511         between char and short/ushort arrays.
23512
23513         * socket-io.c: remove dead code.
23514
23515 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23516
23517         * locales.c,
23518           icall.c : removed InternalToUpper_Comp() and
23519           InternalToLower_Comp().
23520
23521 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23522
23523         * char-conversions.h : The tables were incorrectly generated. Should
23524           be generated against invariant culture.
23525
23526 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23527
23528         * object.c (mono_runtime_invoke_array): Fix return value when 
23529         passing pre-created valuetype objects to ctors.
23530
23531         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23532         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23533         Fixes #74338.
23534
23535 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23536
23537         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23538         only used with --security and hides the wrong corlib version error.
23539
23540 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23541
23542         * class.c: Changed mono_class_name_from_token so that types
23543         outside of a namespace don't have an initial period.  Improved
23544         the g_warning message used in _mono_class_get when loading
23545         fails.
23546         * assembly.c: In mono_assembly_load_reference, when an assembly
23547         can't be found, "No such file or directory" is misleading and
23548         unhelpful because a few paths were checked for the presence of
23549         the assembly.  When that happens (ENOENT), display a nicer
23550         message indicating the directories that were searched.  In all
23551         cases, the warning is made easier to read for non-hackers.
23552
23553 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23554
23555         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23556         project/solution.
23557         * appdomain.h|domain.c: Removed inline from functions.
23558         * appdomain.c: Reduced warnings when compiling on windows.
23559         * icall.c: Fixed output_debug declaration to gunichar2*.
23560         * mono-config.c: Reduced warnings when compiling on windows.
23561         * rand.c: Added missing "windows.h". Added missing return value.
23562         * rawbuffer.c: Added missing winsock2.h for windows.
23563         * sysmath.h: Added mono-compiler.h header to allow/ease 
23564         compilation with non-GCC compilers.
23565         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23566         Removed cast warnings.
23567
23568         Adapted from the work of J Lothian (for VC6).
23569
23570 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23573         from default_path.
23574
23575 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23576
23577         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23578         the 2.0 profile.
23579
23580 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23581
23582         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23583         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23584         stuff, and it would probably use $(prefix)/share rather than
23585         $(prefix)/lib.
23586
23587 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23588
23589         * console-io.c: added 2 includes that might be missing.
23590
23591 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23592
23593         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23594         profile.
23595
23596         * reflection.c (create_custom_attr): Allocate the params array using
23597         alloca so it gets GC tracking.
23598
23599 2005-03-23  Chris Toshok  <toshok@ximian.com>
23600
23601         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23602         out some spew.
23603
23604 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23605
23606         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23607         changes to pick up any changes in prefix, etc.
23608
23609 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23610
23611         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23612         
23613         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23614         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23615
23616 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23617
23618         * class-internals.h object-internals.h class.c reflection.c: Extend the
23619         mono_lookup_dynamic_token () function to return the class of the
23620         token as well. 
23621
23622         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23623         well. Fixes #73848.
23624
23625 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23626
23627         * security-manager.c: Skip inheritance checks for intra-corlib
23628         class inheritance and method overrides. This skips a lot of checks
23629         and (anyway) permissions cannot work until corlib is loaded.
23630
23631 2005-03-23  Martin Baulig  <martin@ximian.com>
23632
23633         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23634         MONO_TYPE_GENERICINST.  
23635
23636 2005-03-23  Martin Baulig  <martin@ximian.com>
23637
23638         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23639
23640 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23641
23642         * class.c: added locking comments to some functions.
23643         Cache the interface offsets arrays (saves about 20 KB
23644         of runtime memory in a typical app).
23645         Reduce the time overhead in mono_class_setup_supertypes ().
23646
23647 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23648
23649         * icall.c: speedup and fix leaks in GetMethodsByName and
23650         GetPropertiesByName.
23651
23652 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23653
23654         * reflection.c: some locking fixes.
23655
23656 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23657
23658         * metadata.c: added missing break in case statement.
23659
23660 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23661
23662         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23663         typedbyref return values. Fixes #73941.
23664
23665 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23666
23667         * security-manager.c|h: Added demandunmanaged method and 
23668         suppressunmanagedcodesecurity class to MonoSecurityManager.
23669         Renamed aptc class to allowpartiallytrustedcallers.
23670
23671 2005-03-17  Martin Baulig  <martin@ximian.com>
23672
23673         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23674
23675 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23676
23677         * file-io.c: disabled file async. IO using aio_*. It uses the
23678         threadpool now. Workaround for bug #73718.
23679
23680 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23681
23682         * assembly.h, mono-config.c: added code to deal with bundled configs
23683         for bundled assemblies.
23684
23685 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23686
23687         * *.c, private.h: cleanup, removing old private.h header file.
23688
23689 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23690
23691         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23692         and throw_on_unmappable_char attributes.
23693
23694 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23695
23696         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23697         _ProcessName_internal.
23698
23699 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23700
23701         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23702         #73631.
23703
23704         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23705         are no longer used.
23706
23707 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23708
23709         * object.c (compute_class_bitmap): Add support for generics. Fixes
23710         #73527.
23711
23712 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23713
23714         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23715
23716 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23717
23718         * filewatcher.c: commented out the code for windows watcher, as we don't
23719         use it (we use the managed implementation instead).
23720
23721 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23722
23723         * object-internals.h (MonoThread): Remove 'unused1' field.
23724
23725         * appdomain.c: Bump corlib version.
23726
23727         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23728
23729         * reflection.c (mono_reflection_create_runtime_class): Remove the
23730         AssemblyBuilder.Save optimization since it causes too many problems.
23731
23732 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23733
23734         * exception.c|h: Added mono_get_exception_reflection_type_load to
23735         create a ReflectionTypeLoadException object.
23736         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23737         to return NULL is a InheritanceDemand fails during reflection. Updated
23738         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23739         ReflectionTypeLoadException if an InheritanceDemand fails during 
23740         reflection. Added icall mapping for GetLinkDemandSecurity.
23741         * security-manager.c|h: Added ves_icall_System_Security_
23742         SecurityManager_GetLinkDemandSecurity internal call to return the
23743         class and methods permissions set for a LinkDemand. Removed unused
23744         fields in MonoSecurityManager.
23745
23746 2005-03-10  Martin Baulig  <martin@ximian.com>
23747
23748         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23749         it's a generic instance.
23750
23751 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23752
23753         * reflection.c (mono_get_object_from_blob): Applied patch from
23754         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23755
23756         * class.c (mono_class_is_assignable_from): Another try at fixing 
23757         #73469 without breaking anything.
23758
23759 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23760
23761         * class.c: (mono_class_is_assignable_from): Revert the last changes
23762         since they don't work with generics.
23763         
23764         * class.c (mono_class_is_assignable_from): Fix build bustage.
23765
23766         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23767         the managed IsAssignableFrom method. Fixes #73469.
23768
23769         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23770         function.
23771
23772 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23775         memory when the remoting callback does not sets the out arguments.
23776         Fixes #73007.
23777
23778         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23779         by mistake.
23780
23781         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23782
23783         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23784
23785         * appdomain.c: Bump corlib version.
23786
23787 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23788
23789         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23790         function.
23791
23792         * threads.c (mono_thread_attach): Detect threads which are not started
23793         by the GC pthread wrappers.
23794
23795 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23796
23797         * icall.c: Added new icall for RNG.
23798         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23799         single handle on Linux to access /dev/urandom and fix #73183.
23800
23801 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23802
23803         * object.c: setting the new vtable in a transparent proxy object must
23804         not change the GC descriptor.
23805
23806 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23807
23808         * object.c: fixed compilation without GCJ support.
23809         * reflection.c: for runtime-created types ensure klass->has_references
23810         is correct (bug #73215).
23811
23812 2005-03-02  Martin Baulig  <martin@ximian.com>
23813
23814         * class.c (mono_class_is_assignable_from): Make this work if
23815         `oklass' is a generic instance; fixes #72831.
23816
23817 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23818
23819         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23820         with hasthis set.
23821         
23822         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23823
23824         * marshal.c: Reorganize native->managed marshalling code to also use
23825         the emit_marshal_... functions.
23826
23827 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23828
23829         * object.c: typed allocs have issues with bitmap sizes > 30,
23830         so check for max_set >= 30.
23831
23832 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23833
23834         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23835         managed code. Fixes #73012.
23836
23837         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23838
23839         * metadata.c reflection.c: Load/Emit elem_mult as well.
23840         
23841         * metadata.h (MonoMarshalSpec): Add comment.
23842
23843         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23844
23845         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23846         num_elem to -1 if not given.
23847
23848         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23849
23850         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23851         given values.
23852
23853 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23854
23855         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23856
23857 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23858
23859         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23860
23861         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23862
23863 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23864
23865         * object.c: generalized the reference bitmap creation
23866         and added hooks for the new GC.
23867         * class-internals.c: removed the gc_bitmap field from MonoClass.
23868
23869 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23870
23871         * domain.c: help the compiler to produce better code
23872         in mono_jit_info_table_find ().
23873
23874 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23875
23876         * object.c: make all allocations look typed.
23877
23878 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23879
23880         * socket-io.c: load Mono.Posix if it's not loaded already
23881         (fixes bug#73033).
23882
23883 2005-02-24  Martin Baulig  <martin@ximian.com>
23884
23885         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23886         * reflection.c (dup_type): Likewise.
23887
23888 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23889
23890         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23891         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23892
23893 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23894
23895         * domain.c, threads.c, object-internals.h: make the critical thread
23896         local vars use the fast access mode (even when we're compiled in
23897         a lib). Provide accessors to be used by the jit during codegen.
23898
23899 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23900
23901         * appdomain.c: Changed hook functios behavior to include
23902         support for the reflection only assemblies. Some icalls were changed
23903         to support the mentioned assemblies too. Signatures of static methods
23904         try_assembly_resolve and real_load now have an additional parameter:
23905         refonly.
23906
23907         * assembly.c: General changes to mono_assembly_ methods to support
23908         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23909         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23910         suffix, to support an additional gbool parameter to specify whether
23911         the assembli is reflection only or not. Created some new hook functions 
23912         to add support for reflection only assemblies. Signatures of static 
23913         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23914         have now an additional parameter: refonly.
23915
23916         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23917         indicating whether the assembly is reflection only or not.
23918
23919         * exception.c: Add mono_get_exception_invalid_operation.
23920
23921         * icall.c: Throw an InvalidOperationException when trying to invoke
23922         a property/method/event, or trying to set/get the value of a field.
23923         Also add an icall to retrieve the ref_only flag to the
23924         MonoReflectionAssembly.
23925
23926 2005-02-23  Chris Toshok  <toshok@ximian.com>
23927
23928         Part of fix for #72827.
23929         * mono-debug.c (mono_debug_add_method): add lexical block data to
23930         the info we write.  Kind of a hack at the moment - we copy the
23931         lexical block info from the MonoDebugMethodInfo to the
23932         MonoDebugMethodJitInfo here, before writing it.
23933         (mono_debug_read_method): read the lexical block info.
23934
23935         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23936
23937         * debug-mono-symfile.h: add lexical block support.
23938
23939         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23940         support.
23941
23942 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23943
23944         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23945
23946         * object.c (mono_runtime_free_method): Call mono_free_method () and
23947         put the TODOs there.
23948
23949         * loader.c (mono_free_method): Free up most memory allocated for 
23950         dynamic methods.
23951
23952 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23953
23954         * reflection.c: properly flag a Type argument to a
23955         named custom attr value (bug #72248).
23956
23957 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23958
23959         * reflection.c: reduce code duplication in named custom
23960         attribute encoding.
23961
23962 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23963
23964         * reflection.c: properly encode custom attrs of type object
23965         (bug #72649).
23966
23967 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23968
23969         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23970
23971 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23972
23973         * socket-io.c: load System.dll if it's not loaded already
23974         (bug #72850 and #70477).
23975
23976 2005-02-21  Martin Baulig  <martin@ximian.com>
23977
23978         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23979         generic instances.
23980
23981 2005-02-21  Martin Baulig  <martin@ximian.com>
23982
23983         * reflection.c (mono_image_build_metadata): We also need to
23984         "fixup" the MethodImpl table after we computed the final method
23985         indices.  Call fixup_methodimpl() to do that.
23986         (fixup_methodimpl): New private method.
23987
23988 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23989
23990         * assembly.c: special case mscorlib.dll (bug#72536),
23991         patch from Carlos Alberto Cortez.
23992
23993 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23994
23995         * threads-types.h threads.c: Fix build bustage.
23996
23997         * threads.c: Use a union for long<->double conversions.
23998
23999         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
24000         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
24001
24002         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
24003         containing the checkpoint call with NOT_TAKEN.
24004         
24005         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
24006         checkpoint before pushing the arguments, so they won't have to be
24007         spilled to stack.
24008
24009 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24010
24011         * domain.c, assembly.c, domain-internals.h: make some data
24012         const and relocation-free.
24013
24014 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
24015
24016         * object.c, appdomain.c, class-internals.h: introduce the
24017         MonoClassRuntimeInfo structure to hold the info needed to
24018         use a class at runtime. Made mono_class_vtable() lock-free
24019         for all the appdomains.
24020
24021 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
24022
24023         * metadata-internals.h, image.c: introduce a per-image mempool to
24024         be used for memory that has the same lifetime as the image.
24025
24026 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
24027
24028         * domain.c: In mono_init_internal(), instead of selecting the first
24029         runtime version supported by an executable, get a list of all
24030         supported versions and select the one for which an mscorlib exists
24031         (since even if the runtime supports a given version, it doesn't mean
24032         that the framework for that version is installed).
24033         Modified get_runtimes_from_exe to support this behavior.
24034         In supported_runtimes, added information about additional system
24035         assembly versions.
24036         
24037         * assembly.c: Added support for more than one system assembly version
24038         per runtime version. Updated the assembly list.
24039         In mono_assembly_remap_version, removed the initial version check,
24040         since we don't know to which version we need to compare until we
24041         get the version set on which the assembly is based.
24042         Moved the code for loading corlib into the new method
24043         mono_assembly_load_corlib(), so it can be used by the initialization
24044         code.
24045         
24046         * domain-internals.h: Updated data structures and added declaration
24047         for mono_assembly_load_corlib.
24048
24049 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24050
24051         * reflection.c (resolve_object): Fix the creation of the signature in 
24052         the SignatureHelper case.
24053
24054         * assembly.c (mono_assembly_remap_version): Fix binary search.
24055         
24056 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
24057  
24058         * class.c: Added inheritance check when a method is overloaded (from a
24059         virtual method or when implementing an interface) and when a class is
24060         inherited. Added functions to set a failure for a class and to 
24061         retreive the exception from a failure.
24062         * class-internals.h: Added fields to MonoClass to keep the exception
24063         information status for inheritance (or other exceptions) to be thrown
24064         later (i.e. not at load time).
24065         * object.c: Throw the inheritance SecurityException when a type is to 
24066         be created with either class or method inheritance violations.
24067         * reflection.c|h: Fix when getting declsec from a class. Removed 
24068         unrequired code for class. Improved sanity in parameter naming.
24069         * security-manager.c|h: Added functions to check for class and method
24070         inheritance.
24071
24072 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24073
24074         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
24075         and has_finalize in dynamic types as well.
24076
24077 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
24078
24079         * culture-info-table.h : fixed currency format for en-GB (and so on).
24080
24081 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
24082
24083         * gc.c: ensure the GC handles never have 0 as a value.
24084
24085 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24086
24087         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
24088         a pointer to a struct to unmanaged code. Fixes #72625.
24089
24090 2005-02-16  Martin Baulig  <martin@ximian.com>
24091
24092         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
24093
24094 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24095
24096         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
24097
24098 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24099
24100         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
24101
24102         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
24103         UnmanagedFunctionPointerAttribute, use it for determining calling convention
24104         etc. Fixes #71471.
24105
24106         * reflection.c (mono_custom_attrs_get_attr): New helper function.
24107
24108         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
24109
24110 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
24111
24112         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
24113         changes to make the current context a field in MonoThread.
24114
24115 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24116
24117         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
24118         the last change.
24119         
24120         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
24121         extracted from mono_marshal_get_native_wrapper.
24122
24123         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
24124         to create wrappers around native functions.
24125
24126         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
24127         delegates for arbitrary function pointers. Fixes #71472.
24128
24129 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24130
24131         * threads.c: cleaned up the code a little.
24132
24133 2005-02-15  Martin Baulig  <martin@ximian.com>
24134
24135         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24136         the data table.
24137
24138         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24139         allocate larger chunks if needed.
24140
24141 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24142
24143         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24144         in by mistake.
24145
24146 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24147
24148         * domain.c: keep the domains in an array and ensure the domain ids
24149         are kept small, so they can be used as indexes to domain-specific data
24150         with a small memory overhead.
24151
24152 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24153
24154         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24155
24156 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24157
24158         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24159
24160 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24161
24162         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24163
24164         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24165         values.
24166
24167         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24168         
24169 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24170
24171         * domain-internals.h: add the hashtable here.
24172
24173         * class-internals.h: Remove `info' from MonoMethod
24174
24175         * domain.c: Add a new hashtable, jit_trampoline_hash
24176
24177 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24178
24179         * object.c: don't set the value of static fields
24180         (fixes bug#72494).
24181
24182 2005-02-11  Martin Baulig  <martin@ximian.com>
24183
24184         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24185         (mono_debug_add_method): Silently ignore the method if it's too big.
24186         (mono_debug_add_type): Likewise.
24187
24188 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24189
24190         * threads.c, appdomain.c: remove #ifdefs from the code.
24191
24192 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24193
24194         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24195         common security informations. This allows us to stay in unmanaged code
24196         when doing LinkDemand and it's special cases (except for the first 
24197         time for initialization). The flags a very much used with --security.
24198         * reflection.c|h: Added code to get declarative security attributes 
24199         for LinkDemand and InheritanceDemand. This required to refactor the
24200         existing code for Demand.
24201         * security-manager.c|h: Added new method fields for the special cases
24202         of LinkDemand.
24203
24204 2005-02-10  Martin Baulig  <martin@ximian.com>
24205
24206         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24207         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24208
24209 2005-02-10  Martin Baulig  <martin@ximian.com>
24210
24211         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24212         debugging code; this is almost a complete rewrite.
24213
24214         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24215
24216 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24217
24218         * domain.c, object.h: expose mono_string_equal () and 
24219         mono_string_hash ().
24220         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24221         it's implemented in managed code.
24222
24223 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24224
24225         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24226         lo leak objects between appdomains.
24227
24228 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24229
24230         * assembly.c: old compilers compilation fix from 
24231         robertj@gmx.net (Robert Jordan).
24232
24233 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24234
24235         * class-internals.h: Little reminder for the future.
24236
24237         * debug-helpers.c: Fix up wrapper_type_names
24238
24239 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24240
24241         * image.c, metadata-internals.h: when loading an image from a file,
24242         mmap all of it and use the same codepaths as when using a
24243         in-memory image: the code is simpler and we use less memory
24244         (both writable and readonly).
24245
24246 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24247
24248         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24249         API to alloc runtime data structures that need to be tracked by the
24250         GC and contain pointers.
24251         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24252         make the code more readable and eventually use a different GC.
24253
24254 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24255
24256         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24257         for out arguments.
24258         
24259 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24260
24261         * object.c: In release_type_locks(), don't release the cctor lock
24262         if it has already been released. This fixes a crash in the
24263         thread5 test.
24264
24265 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24266
24267         * gc.c, marshal.c, icall.c: register a delegate for finalization
24268         only when the native function pointer has been allocated for it.
24269
24270 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24271
24272         * object.c: cleaned up some code, allocate objects that are
24273         pointer free with the atomic malloc variant. Allocate memory
24274         for static data from the mempool if it's pointer-free.
24275         Allocate the bounds array at the end of the array data, when needed.
24276         * object-internals.h, object.h: move a private function in a private
24277         header.
24278         * class.c: handle missing case in tracking references in fields.
24279
24280 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24281
24282         * class.c, class-internals.h: keep track if a type has
24283         reference fields in either the instance or static fields.
24284
24285 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24286
24287         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24288         and renamed to MonoRuntimeInfo. Added fields to store the expected
24289         framework assembly version. Changed mono_get_framework_version and
24290         mono_get_runtime_version for a single mono_get_runtime_info method.
24291         
24292         * assembly.c: Added method to remap system assembly versions to the
24293         current executing runtime version. Removed old mapping code.
24294         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24295         
24296         * icall.c, reflection.c: Track api changes.
24297
24298 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24299
24300         * loader.c (method_from_memberref): Improve error reporting,
24301         produce the class name instead of the typeref/typedef index. 
24302
24303 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24304
24305         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24306
24307 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24308
24309         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24310         stdcall and charset name mangling.  Reorganize the code and add
24311         some tracing stuff.
24312
24313 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24314
24315         * monodiet.c: More iters!
24316
24317         * marshal.c: Iter usage.
24318
24319         * icall.c: Iter usage.
24320
24321         * object.c: Use iters.
24322
24323         * debug-helpers.c: More iters
24324
24325 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24326
24327         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24328         under win32.
24329
24330 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24331
24332         * mono-debug-debugger.c: use iters
24333
24334         * class.c, class-internals.h: mono_class_setup_events is static
24335         now
24336
24337         * All callers: use iters
24338
24339 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24340
24341         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24342         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24343
24344 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24345
24346         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24347
24348         * marshal.h: Add prototypes for ldfld/stfld_remote.
24349
24350         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24351         this is called during startup.
24352         
24353 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24354
24355         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24356         MonoThreadsSync struct private in monitor.c. Changed the way
24357         MonoThreadsSync is allocated so it's faster and there is no
24358         need to keep track of it with a finalizer and it uses less memory.
24359         This also finally allows us to allocate mono objects as ptrfree when
24360         there are no reference fields.
24361
24362 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24363
24364         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24365         disappearing link to the GC interface and use them to simplify
24366         the gchandles code.
24367
24368 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24369
24370         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24371         stfld_remote which call mono_load/store_field_new. This allows methods
24372         calling ldfld/stfld wrappers to be AOTed.
24373
24374         * console-io.c: Include sys/filio.h under solaris.
24375         
24376         * console-io.c: Include curses.h if needed correctly.
24377
24378 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24379         
24380         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24381         method->klass as well.
24382
24383         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24384
24385         * class.c (mono_class_init): Switch on lazy initialization of 
24386         methods.
24387
24388         * class.c (mono_class_get_finalizer): Handle the case when the 
24389         finalizer is inherited.
24390
24391 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24392
24393         * console-io.c: <curses.h> is needed by term.h on solaris.
24394
24395 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24396
24397         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24398         mono_class_setup_properties where possible. Remove this ftn from
24399         the header file, and make it static.
24400
24401 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24402
24403         * loader.c: Add missing setup_... call.
24404
24405         * class.c: Add missing setup_... calls.
24406
24407         * class.c (mono_class_init): Switch on lazy initialization of 
24408         the generic vtable.
24409         
24410         * class.c (mono_class_init): Fix generics broken by the recent changes.
24411
24412         * monodiet.c (handle_type): Add missing setup_... calls.
24413
24414         * class.c: Back out garbage in previous patch.
24415         
24416         * class.c: Add missing setup_... calls.
24417
24418         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24419         mono_class_setup_methods () if possible.
24420
24421         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24422
24423         * class-internals.h (MonoCachedClassInfo): New structure.
24424
24425         * class.c: Initialize properties and events fields of MonoClass lazily.
24426
24427         * class.c: Add infrastructure for lazily initializing the methods and
24428         vtable fields of MonoClass. Not yet used.
24429
24430         * class.c (mono_class_get_finalizer): New helper function.
24431
24432         * class.c: Add infrastructure for loading some class related data from
24433         an AOT file.
24434
24435         * object.c: Add infrastructure for initializing the vtable from data
24436         in the AOT file.
24437
24438         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24439
24440         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24441         appropriate initialization function before accessing parts of the
24442         MonoClass structure.
24443
24444         * marshal.c: Fix warnings.
24445         
24446         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24447
24448         * mono-debug-debugger.c (get_exception_message): Use 
24449         mono_class_get_method_from_name_flags ().
24450
24451 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24452
24453         * reflection.c, appdomain.c: Replace a few manual searches that
24454         Zoltan missed. (Paolo approved this part of my initial patch).
24455
24456 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24457
24458         * profiler.c: disable recording statistical events at report time.
24459
24460 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24461
24462         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24463         to byteswap arrays of enum values, too (bug #72080).
24464
24465 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24466
24467         * appdomain.c (set_domain_search_path): Allow this to be called if
24468         domain->setup is not yet set.
24469
24470         * loader.c (mono_method_get_index): New helper function.
24471
24472         * loader.c reflection.c: Use mono_method_get_index ().
24473
24474         * class.c (mono_class_get_method_from_name_flags): New helper method.
24475
24476         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24477         this.
24478
24479         * class.c (mono_class_get_cctor): New helper method.
24480
24481         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24482         mono_class_get_method () to look up methods.
24483
24484 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24485
24486         * console-io.c: Fix the build, this should work on Windows.
24487
24488 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24489
24490         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24491         be set to null to keep things valid
24492
24493 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24494
24495         * icall.c: added Console 2.0 icalls.
24496         * Makefile.am: added console-io.[ch]
24497         * console-io.[ch]: internal calls for Console 2.0 API.
24498
24499 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24500
24501         * class.c: make sure we consider all the interfaces
24502         when calculating max_interface_id (bug found by
24503         Jeroen Frijters running ikvm).
24504
24505 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24506
24507         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24508         valuetype fields to null.
24509
24510         * object.c (set_value): Ditto. Fixes #71669.    
24511
24512 2005-01-31  Martin Baulig  <martin@ximian.com>
24513
24514         * metadata.c (mono_metadata_has_generic_params): New public
24515         function; checks whether something is a generic method.
24516
24517 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24518
24519         * appdomain.c: fix infinite recursion when adding assemblies.
24520
24521 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24522
24523         * object.c: Fix small typo to return all items for Environment.
24524         GetCommandLineArgs.
24525
24526 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24527
24528         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24529         reflection.c: more domain and assembly-unload related fixes
24530         and memory leaks plugs.
24531
24532 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24533
24534         * 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.
24535
24536 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24537
24538         * loader.c (mono_method_signature): Make this method lazy
24539         (mono_get_method_from_token): Don't computate the signature here.
24540
24541         Doing this saves quite a bit of memory. I got 90 kb on starting up
24542         monodoc. It should also save some disk reads on startup.
24543
24544         * *: MonoMethod->signature might be NULL now. You *MUST* use
24545         mono_method_signature.
24546
24547 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24548
24549         * object.c (mono_runtime_get_main_args): Return an array from the
24550         current domain here. Fixes #71938.
24551
24552 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24553
24554         * monitor.c: formatting changes to comply with the
24555         mono coding style and remove #ifdefs from the code.
24556
24557 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24558
24559         * metadata.c, private.h: remove some unneeded data
24560         and use a more compact representation for table schemas.
24561
24562 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24563
24564         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24565         to get a better distribution in hash tables.
24566         * *.c: use mono_aligned_addr_hash() where appropriate.
24567         * assembly.c: make var static.
24568
24569 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24570
24571         * domain-internals.h: Put MonoJitInfo on a diet.
24572
24573         * domain.c: Fix a warning.
24574
24575 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24576
24577         * gc.c: rework the gc handles code to reuse handles
24578         when freed.
24579
24580 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24581
24582         * domain.c: fixed long standing bug in mono_string_equal() which
24583         was brought to light with the ldstr changes.
24584
24585 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24586
24587         * reflection.c: Remove warning by adding missing include for marshal.h
24588
24589 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24590
24591         * domain.c, object.c: change the ldstr_table to hold
24592         MonoString* as keys: makes the runtime isinterned lookup
24593         faster and simplifies memory management.
24594
24595 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24596  
24597         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24598         possible to add imperative security checks before calling the icall.
24599         * reflection.c: Return security attributes on the original MonoMethod
24600         (and not the wrapped one). This fix permissions on icalls.
24601
24602 2005-01-25  Dick Porter  <dick@ximian.com>
24603
24604         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24605         the check for mktime() support actually test the mktime() return
24606         value.  "Fixes" bug 71682, though the output is still different to
24607         MS.
24608
24609 2005-01-25  Martin Baulig  <martin@ximian.com>
24610
24611         * class.c (mono_class_is_assignable_from): Make this work for
24612         generic instances.
24613
24614 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24615
24616         * marshal.c (mono_string_utf8_to_builder)
24617         (mono_string_builder_to_utf16): We might not have ownership of the
24618         string. In thise case, we need to create a new buffer.
24619
24620         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24621         be null, in which case, use the default capacity.
24622
24623 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24624
24625         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24626         GC events to the profiler.
24627
24628 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24629
24630         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24631         if you don't want the GC to run.
24632
24633 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24634
24635         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24636         start providing a GC API and keeping different implementations in
24637         their own file.
24638         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24639
24640 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24641
24642         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24643         mmap rather than allocating a huge buffer.
24644         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24645         above.
24646
24647 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24648
24649         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24650         and CheckExecutionRights.
24651         * reflection.c|h: Keep the index of the declarative security to be 
24652         used, instead of the pointer, when AOT compiler is used. Also add 
24653         class initialization when requesting demands.
24654         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24655         CheckExecutionRights. Both properties are now FALSE by default, and
24656         unmodifiable, unless the --security option is used.
24657
24658 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24659
24660         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24661         reflection.c: properly refcount images and assemblies, many leaks fixed.
24662
24663 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24664
24665         * threadpool.c: increase the timeout for threads in the thread pool to
24666         10s.  Fixes bug #67159.
24667
24668 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24669
24670         * class-internals.h: Sun's compiler insists on explicit
24671         signed on bit fields to handle then correctly.
24672
24673 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24674
24675         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24676         Make the size of the array fit only the number of invalid path
24677         chars that we have.
24678
24679         * class.c (_mono_class_get): Improve the error reporting when a
24680         class referenced is not found, to assist debugging. 
24681
24682 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24683
24684         * threads.c: fix off-by-one error.
24685         * domain.c: free data allocated in the domain.
24686
24687 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24688
24689         * reflection.c (mono_method_body_get_object): Fill out exception info
24690         as well.
24691
24692         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24693         structure.
24694         
24695 2005-01-19  Martin Baulig  <martin@ximian.com>
24696
24697         * loader.c (mono_get_method_constrained): Make this work again.
24698
24699 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24700
24701         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24702         guint16 to match the managed side.
24703
24704         * reflection.c (mono_reflection_body_get_object): Fill out local
24705         variables array.
24706
24707         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24708         as well.
24709
24710         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24711         'local_var_sig_token'.
24712
24713 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24714
24715         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24716         System.Drawing.
24717
24718         * reflection.c (mono_method_body_get_object): Handle abstract and
24719         runtime methods.
24720
24721 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24722
24723         * marshal.c, loader.c, class-internals.h, reflection.c:
24724         store the emthod data for a wrapper in an array instead of a list.
24725
24726 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24727
24728         * marshal.c: change the code to allocate memory more
24729         conservatively for method wrappers.
24730
24731 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24732
24733         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24734         fields from MonoClass to the marshal info structure where they belong.
24735
24736 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24737
24738         * class.c, object.c, class-internals.h, marshal.c: rearrange
24739         some fields and tweak some types to lower memory usage.
24740
24741 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24742
24743         * threads.c (signal_thread_state_change): Handle the case when the
24744         target thread is the current thread.
24745
24746         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24747
24748         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24749         emit_ptr_to_object_conv. 
24750
24751         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24752         marshalling. Fixes #71352.
24753
24754 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24755
24756         * metadata.h, blob.h: move table enum to blob.h so it can be included
24757         in any header.
24758         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24759         cut the size of MonoImage/MonoDynamicImage.
24760
24761 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24762
24763         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24764
24765 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24766
24767         * reflection.c, reflection.h, icall.c: add a function to check
24768         if an attribute type is defined for a metadata object.
24769
24770 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24771
24772         * object-internals.h: Added some needed fields from StringBuilder class.
24773         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24774
24775 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24776
24777         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24778         threads before shutting down the runtime.
24779
24780         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24781
24782 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24783
24784         * object-internal.h, threads.c: implement stacksize and 
24785         parameterized thread start functionality (requires
24786         matching corlib). Marked broken code for later removal.
24787
24788 2005-01-12  Martin Baulig  <martin@ximian.com>
24789
24790         * class-internals.h (MonoGenericClass): Moved the `initialized'
24791         flag to MonoDynamicGenericClass, removed `init_pending'.
24792         (MonoGenericInst): Added `is_reference' flag.
24793
24794 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24795
24796         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24797         inside the MSDOS header. Fixes #71201.
24798
24799         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24800         gc thread.
24801         (mono_domain_finalize): Ditto.
24802
24803 2005-01-12  Martin Baulig  <martin@ximian.com>
24804
24805         * class.c (mono_get_shared_generic_class): Use the cache for
24806         non-dynamic generic classes.
24807
24808         * class-internals.h (mono_class_create_generic_2): Removed
24809         function prototype, this function is now static inside class.c.
24810
24811         * class.c (mono_class_create_generic_2): Made this static, only
24812         call it from mono_class_init() and mono_class_setup_parent().
24813         (collect_implemented_interfaces_aux): Call mono_class_init() on
24814         the interfaces we collect.
24815         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24816
24817 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24818
24819         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24820         it a real thread handle.
24821
24822         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24823         MonoJitExceptionInfo, since each catch clause needs its own variable.
24824         
24825 2005-01-11  Dick Porter  <dick@ximian.com>
24826
24827         * image.c (mono_pe_file_open): New variant on mono_image_open()
24828         that does not set up the CLI metadata; used for FileVersionInfo so
24829         it can get the data for windows binaries too.
24830         
24831         * process.c (process_read_string_block): Don't read off the end of
24832         the StringTable block.
24833
24834         These both fix bug 70766.
24835
24836 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24837
24838         * gc.c: set some fields to NULL at GC cleanup time.
24839         * threads.c: if we quit the main thread, call exit ().
24840
24841 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24842
24843         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24844
24845 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24846
24847         * threads.h, threads.c, object.c: added accessor and settor for
24848         main_thread. Handle it specially when exiting from it: wait
24849         for other foreground threads to exit.
24850
24851 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24852
24853         * process.c, verify.c: remove some bloat.
24854
24855 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24856
24857         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24858         the calling convention to cdecl under win32.
24859
24860 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24861
24862         * object.c (mono_object_get_size): New function to get the size of
24863         an object instance.
24864
24865         * profiler.c (simple_allocation): Use above.
24866
24867 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24868
24869         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24870         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24871         get an appdomain by it's id and we can't assume the root's id is 0).
24872         * domain-internals.h: Change the function prototype to match.
24873         * icall.c: Change the icall table for AppDomain.
24874
24875 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24876
24877         * locales.c (string_invariant_compare_char): Only compute
24878         GUnicodeTypes in the case where we need them.  Test for ordinality
24879         first and return if so.
24880
24881         From the commit:
24882
24883                 /*
24884                  * FIXME: here we must use the information from c1type and c2type
24885                  * to find out the proper collation, even on the InvariantCulture, the
24886                  * sorting is not done by computing the unicode values, but their
24887                  * actual sort order.
24888                  */
24889
24890 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24891
24892         * loader.c: for P/Invoke methods, allow the "Internal" shared
24893         library name to refer to the calling process symbol namespace.
24894
24895 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24896
24897         * Makefile.am: Add the security manager to the build.
24898         * security-manager.c|h: New. Initialization of the security manager.
24899
24900 2005-01-07  Dick Porter  <dick@ximian.com>
24901
24902         * threads.c: 
24903         * monitor.c: Update thread state during Monitor and WaitHandle
24904         waits.  Fixes bug 71031.
24905
24906 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24907
24908         * reflection.c (property_encode_signature): Correctly handle when the
24909         property has no methods.
24910
24911 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24912
24913         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24914         
24915         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24916         fields from mb, not rmb. Fixes #71017.
24917
24918         * marshal.c (emit_ptr_to_str_conv): Add support for 
24919         ByValTStr -> string conversion. Fixes #71015.
24920
24921         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24922
24923         * mempool.c (mono_mempool_contains_addr): New helper function.
24924
24925 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24926
24927         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24928         HasSematics encoded fields.
24929         
24930         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24931         invalid string marshalling.
24932
24933         * metadata.c: Fix warnings.
24934         
24935 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24936
24937         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24938         profiler support.
24939
24940 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24941
24942         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24943         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24944         tests.
24945
24946 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24947
24948         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24949         so methods containing these can be AOTed.
24950
24951 2005-01-03  Martin Baulig  <martin@ximian.com>
24952
24953         * loader.c (find_method): Removed the hack for generic instances.
24954         (method_from_memberref): If our parent is a generic instance, pass
24955         its generic type definition to find_method() and then inflate the
24956         method.
24957         (mono_get_method_constrained): Pass the generic type definition to
24958         find_method() and inflate the method later.
24959
24960         * class-internals.h (MonoStats): Added `generic_class_count'.
24961
24962         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24963         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24964
24965         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24966         generic type definitions.
24967
24968 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24969
24970         * loader.c icall.c: Fix warnings.
24971
24972 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24973
24974         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24975         blittable types. Fixes #70864.
24976
24977 2004-12-29  Martin Baulig  <martin@ximian.com>
24978
24979         * icall.c
24980         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24981
24982         * reflection.c (mono_method_get_object): Create a
24983         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24984         call mono_get_inflated_method().
24985
24986         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24987
24988 2004-12-27  Martin Baulig  <martin@ximian.com>
24989
24990         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24991         (MonoMethodInflated): Added `inflated' field.
24992
24993         * class.c (mono_class_inflate_generic_method): Don't really
24994         inflate the method here; just set the `is_inflated' flag in the
24995         MonoMethod.
24996         (mono_class_get_inflated_method): Actually inflate the method here
24997         if it's not already inflated; we use the MonoMethodInflated's new
24998         `inflated' field as a cache.
24999
25000 2004-12-26  Martin Baulig  <martin@ximian.com>
25001
25002         * class.c
25003         (inflate_generic_class): Moved some code out of inflate_generic_type().
25004         (mono_class_inflate_generic_method): If we're already inflated,
25005         inflate the context and use the declaring method; ie. make sure
25006         the declaring method of an inflated method is always the generic
25007         method definition.
25008         (mono_class_create_from_typedef): Create
25009         `class->generic_container->context->gclass'.
25010
25011 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
25012
25013         * metadata-internals.h, marshal.c, reflection.c: More
25014         MonoGHashTable->GHashTable.
25015
25016         * domain-internals.h, class.c: Change MonoGHashTable's into
25017         GHashTables for some cases where no gc stuff is used
25018
25019         All users: update apis
25020
25021 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
25022
25023         * metadata.c (builtin_types): Make this `const'. Makes this get
25024         put into the shareable section.
25025         (mono_metadata_init): Casts to make gcc happy.
25026
25027 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
25028
25029         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
25030
25031 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
25032
25033         * icall.c: Added an internal call to retrieve the position and length
25034         of assembly-level declarative security attributes (RequestMinimum, 
25035         RequestOptional and RequestRefuse). This is used by the Assembly class
25036         to re-create the corresponding permission sets.
25037
25038 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
25039
25040         * marshal.c: fix the stelemref wrapper to be type correct
25041         (and faster).
25042
25043 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
25044
25045         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
25046         to do key & 0x7fffffff. Hashtable already does this. It just
25047         results in longer code.
25048
25049 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
25050
25051         * appdomain.c: Bump corlib version.
25052         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
25053         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
25054         * reflection.c|h: Add functions to get declarative security infos
25055         (blob position and length) for assemblies, classes and methods.
25056
25057 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
25058
25059         * reflection.c: sort the constant table (bug #70693).
25060
25061 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
25062
25063         * object-internals.h, threads.c, domain.c: add accessors for
25064         the MonoThread and MonoDomain tls keys.
25065
25066 2004-12-18  Martin Baulig  <martin@ximian.com>
25067
25068         * class.c (inflate_generic_type): If we're inflating a generic
25069         instance, set `ngclass->context->container = context->container';
25070         ie. the container we inflated into.
25071
25072         * metadata.c (mono_metadata_parse_generic_param): Reflect above
25073         inflate_generic_type() changes.
25074
25075 2004-12-17  Martin Baulig  <martin@ximian.com>
25076
25077         * class-internals.h
25078         (MonoGenericClass): Replaced `MonoType *generic_type' with
25079         `MonoClass *generic_class'.  Removed `dynamic_info'; if
25080         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
25081         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
25082
25083 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
25084
25085         * exception.c (mono_exception_from_token): New helper function.
25086
25087 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
25088
25089         * assembly.c (mono_assembly_load_with_partial_name): Call 
25090         mono_assembly_loaded before invoking the preload hooks. Fixes
25091         #70564.
25092
25093         * object-internals.h (MonoThread): Change culture_info and 
25094         ui_culture_info into an array.
25095
25096         * threads.c: Cache culture info objects from more than one appdomain.
25097
25098         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
25099         current UI culture.
25100
25101 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
25102
25103         * threads.h threads.c appdomain.c: Clear the culture_info field of
25104         all threads during unloading if they point to an object in the dying
25105         appdomain.
25106
25107 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
25108
25109         * culture-info.h (TextInfoEntry): New struct
25110         * object-internals.h: sync with managed
25111         * locales.c: fill the `text_info_data' field
25112         * culture-info-tables.h: update
25113
25114 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
25115
25116         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
25117         collector.
25118
25119 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
25120
25121         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
25122         (ves_icall_ModuleBuilder_getMethodToken): Ditto
25123
25124 2004-12-12  Martin Baulig  <martin@ximian.com>
25125
25126         * mono-debug-debugger.c (write_type): If we're an enum and the
25127         builtin types have already been initialized, call mono_class_init().
25128
25129 2004-12-11  Martin Baulig  <martin@ximian.com>
25130
25131         * metadata.c (mono_metadata_load_generic_params): Added
25132         `MonoGenericContainer *parent_container' argument; automatically
25133         compute `container->is_method'; pass the correct owner to
25134         get_constraints().      
25135
25136         * reflection.c (compare_genericparam): Sort the GenericParam table
25137         according to increasing owners. 
25138
25139 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25140
25141         * profiler.c: allow disabling the default profiler.
25142
25143 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25144
25145         * decimal.c, icall.c: allow disabling System.Decimal support.
25146
25147 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25148
25149         * reflection.c: Add support for null attribute arguments.
25150
25151 2004-12-09  Martin Baulig  <martin@ximian.com>
25152
25153         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25154         names to get rid of compiler warnings.
25155
25156 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25157
25158         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25159         mono_marshal_load_type_info (). Fixes #69625.
25160         (mono_marshal_get_ptr_to_struct): Likewise.
25161
25162 2004-12-08  Martin Baulig  <martin@ximian.com>
25163
25164         * mono-debug.h: Bumped version number to 47.
25165
25166         * mono-debug-debugger.c
25167         (mono_debugger_event_handler, mono_debugger_event): Take two
25168         guint64 arguments insteed of a gpointer and a guint32.  
25169
25170 2004-12-08  Martin Baulig  <martin@ximian.com>
25171
25172         * debug-mono-symfile.h
25173         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25174         `address' to `native_offset'.
25175
25176 2004-12-08  Martin Baulig  <martin@ximian.com>
25177
25178         * class.c (mono_class_create_from_typespec): Only inflate if we
25179         either have `context->gclass' or `context->gmethod'.
25180
25181 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25182
25183         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25184
25185         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25186
25187         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25188
25189         * reflection.c (mono_assembly_get_object): Remove the workaround put
25190         in for the release.
25191         
25192         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25193
25194         * appdomain.c: Bump corlib version.
25195
25196         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25197         be visible in other appdomains.
25198
25199 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25200
25201         * threads.c: Interlocked inc and dec for longs were messed up,
25202         use a KISS based impl for this. Fixes 70234
25203
25204 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25205
25206         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25207
25208 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25209
25210         * icall.c: fix to follow policy not to allow struct
25211         arguments in icalls.
25212
25213 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25214
25215         * process.c: make the patch that handles spaces in file paths work
25216         on mono/windows too.
25217
25218 2004-12-06  Martin Baulig  <martin@ximian.com>
25219
25220         * class.c (mono_class_create_generic): Call
25221         mono_class_setup_supertypes() if we're dynamic.
25222         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25223
25224 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25225
25226         * object-internals.h: Add new fields to MonoThread.
25227
25228         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25229
25230         * icall.c threads-types.h threads.c: Add new icalls.
25231
25232         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25233
25234         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25235         managed side.
25236
25237         * appdomain.c: Bump corlib version.
25238
25239         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25240         internal assemblies. Fixes #69181.
25241
25242 2004-12-05  Martin Baulig  <martin@ximian.com>
25243
25244         * class.c (mono_class_inflate_generic_signature): Make this a
25245         no-op if `context' is NULL or we don't have any type parameters;
25246         also copy `sentinelpos'.        
25247
25248 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25249
25250         * image.c: Add unbox_wrapper_cache.
25251
25252         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25253
25254         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25255         function generator.
25256         
25257         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25258         Fixes #70173.
25259
25260         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25261         
25262 2004-12-04  Martin Baulig  <martin@ximian.com>
25263
25264         * loader.c (mono_method_get_signature_full): New public function;
25265         like mono_method_get_signature(), but with an additional
25266         `MonoGenericContext *' argument.
25267
25268         * class.c (mono_class_inflate_generic_signature): Formerly known
25269         as inflate_generic_signature(); make this public.
25270
25271 2004-12-04  Martin Baulig  <martin@ximian.com>
25272
25273         * metadata.c
25274         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25275         instead of a `MonoGenericContainer *'.  
25276         (mono_metadata_parse_array_full): Likewise.
25277         (mono_metadata_parse_signature_full): Likewise.
25278         (mono_metadata_parse_method_signature_full): Likewise.
25279         (mono_metadata_parse_generic_inst): Likewise.
25280         (mono_metadata_parse_generic_param): Likewise.
25281         (mono_metadata_parse_mh_full): Likewise.
25282         (mono_type_create_from_typespec_full): Likewise.
25283
25284 2004-12-03  Martin Baulig  <martin@ximian.com>
25285
25286         * class-internals.h (MonoGenericContainer): Replaced the
25287         `MonoGenericContext * pointer with a `MonoGenericContext'
25288         structure and made it the first element.
25289
25290 2004-12-03  Martin Baulig  <martin@ximian.com>
25291
25292         * class.c
25293         (inflate_generic_type): Set the `context->container' when creating
25294         a new MonoGenericContext.
25295         (mono_class_inflate_generic_method): Likewise.
25296         (mono_class_create_from_typespec): Just use `context->container'
25297         to get the container.
25298
25299         * loader.c (method_from_methodspec): Set `context->parent' from
25300         `context->container' - and if that's a method container, use its
25301         parent.  Also set the `context->container' when creating a new
25302         MonoGenericContext.
25303         (mono_get_method_from_token): Use just `context->container' to get
25304         the container.
25305
25306         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25307         `gclass->context->container'.
25308
25309         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25310         the `context->container' when creating a new MonoGenericContext.
25311
25312 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25313
25314         * reflection.c (compare_genericparam): Sort params with identical
25315         owner by their number. Fixes gen-111 on sparc.
25316
25317 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25318
25319         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25320         around the domain changes.
25321
25322         * appdomain.c (mono_domain_unload): Handle the case when the thread
25323         calling Unload is itself being aborted during unloading. Fixes #70022.
25324
25325         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25326
25327         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25328         checkpoint_func as an icall so it gets a wrapper.
25329         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25330         in the cross-appdomain wrappers too.
25331
25332         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25333
25334         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25335
25336         * reflection.c: Fix some memory leaks.
25337         
25338 2004-12-02  Martin Baulig  <martin@ximian.com>
25339
25340         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25341
25342         * metadata.c (generic_class_cache): New static hashtable.
25343         (mono_metadata_lookup_generic_class): New public method.
25344
25345 2004-12-02  Martin Baulig  <martin@ximian.com>
25346
25347         * class.c (mono_class_create_from_typedef): Call
25348         mono_class_setup_parent() and mono_class_create_mono_type() before
25349         parsing the interfaces.
25350
25351 2004-12-02  Martin Baulig  <martin@ximian.com>
25352
25353         * metadata.c (generic_inst_cache): New static hashtable.
25354         (mono_metadata_lookup_generic_inst): New public function.
25355         (mono_metadata_inflate_generic_inst): New public function.
25356         (mono_metadata_parse_generic_inst): New public function.
25357         (do_mono_metadata_parse_generic_class): Use the new
25358         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25359         since this'll also use the cache.
25360
25361         * reflection.c (mono_reflection_bind_generic_method_parameters):
25362         Use mono_metadata_lookup_generic_inst() to use the new cache.
25363
25364         * class.c (inflate_mono_type): Use
25365         mono_metadata_inflate_generic_inst() to inflate a generic
25366         instance; this'll also use the new cache.
25367
25368         * loader.c (method_from_methodspec): Use
25369         mono_metadata_parse_generic_inst() and
25370         mono_metadata_inflate_generic_inst() rather than parsing it
25371         manually, so we can use the new cache.
25372
25373 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25374
25375         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25376         the wait times out.
25377
25378 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25379
25380         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25381         iter->args based on whether parameters are passed in registers (i.e.
25382         MONO_ARCH_REGPARMS is defined)
25383
25384 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25385
25386         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25387         the exception message. Fixes #70070.
25388         (method_from_methodspec): Fix warnings.
25389
25390 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25391
25392         * process.c: (complete_path) return the path quoted
25393
25394 2004-12-01  Martin Baulig  <martin@ximian.com>
25395
25396         * class-internals.h (MonoGenericInst): New structure.
25397         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25398         `is_open' with `MonoGenericInst *inst'.
25399         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25400         `is_open' with `MonoGenericInst *inst'.
25401
25402 2004-11-30  Martin Baulig  <martin@ximian.com>
25403
25404         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25405
25406         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25407         to `generic_class_cache'.
25408
25409         * metadata.c
25410         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25411         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25412         (mono_generic_inst_is_valuetype): Renamed to
25413         mono_generic_class_is_valuetype().
25414
25415         * class-internals.h
25416         (MonoGenericInst): Renamed to MonoGenericClass.
25417         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25418         (MonoClass): Renamed `generic_inst' to `generic_class'.
25419         (MonoGenericContext): Renamed `ginst' to `gclass'.
25420
25421         * object-internals.h
25422         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25423
25424         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25425         mono_reflection_generic_class_initialize().
25426
25427         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25428         now known as "System.Reflection.MonoGenericClass".
25429         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25430
25431 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25432
25433         * class-internals.h: Added a flag field to MonoClass to cache the
25434         declarative security attributes actions associated with the class.
25435         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25436         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25437         applicable to the JITted method.
25438         * reflection.c|h: Added functions to extract (as flags) which security
25439         actions are available (declaratively) for a method, class or assembly.
25440         * metadata.c|h: Added functions to search the declarative security
25441         table in the metadata.
25442         
25443 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25444
25445         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25446         EXPORTEDTYPES are already in the class name cache, so there is no
25447         need to add extra code here to look at them. Just removes a bit of
25448         cruft.
25449
25450         (ves_icall_System_Environment_get_TickCount): No need for #if
25451         WINDOWS. We already have the code in io-layer.
25452
25453 2004-11-28  Martin Baulig  <martin@ximian.com>
25454
25455         * loader.c
25456         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25457         Fixes gen-112.cs.
25458
25459 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25460
25461         * assembly.c (do_mono_assembly_open): Instead of having a
25462         conditional WITH_BUNDLE, incorporate support for bundles here, by
25463         having a global `bundles' variable holding a pointer to the actual
25464         bundles. 
25465
25466         (mono_register_bundled_assemblies): New API call used by the
25467         bundle code. 
25468
25469         See mkbundle.1 for details.
25470         
25471 2004-11-27  Martin Baulig  <martin@ximian.com>
25472
25473         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25474         the vtable for generic methods.
25475
25476 2004-11-26  Martin Baulig  <martin@ximian.com>
25477
25478         * metadata.c
25479         (mono_metadata_generic_method_hash): New public function.
25480         (mono_metadata_generic_method_equal): Likewise.
25481
25482         * class-internals.h
25483         (MonoGenericContainer): Added `GHashTable *method_hash'.
25484
25485         * reflection.c (ReflectionMethodBuilder): Added
25486         `MonoGenericContainer *generic_container'.
25487         (reflection_methodbuilder_to_mono_method): Don't create a new
25488         MonoGenericContainer each time we're called.
25489         (mono_reflection_bind_generic_method_parameters): Use
25490         `container->method_hash' to cache the results so we don't create a
25491         different method if we're called several times with the same
25492         arguments.
25493
25494         * loader.c (method_from_methodspec): Use the new
25495         `container->method_hash' here, too.
25496
25497 2004-11-26  Martin Baulig  <martin@ximian.com>
25498
25499         * class.c (inflate_generic_signature): Correctly compute
25500         `res->has_type_parameters'.
25501         (mono_class_vtable): Use the `has_type_parameters' flag to
25502         determine whether we're a generic method.
25503
25504         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25505
25506 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25507
25508         * object.c (mono_runtime_run_main): Fix a small memory leak.
25509
25510 2004-11-25  Martin Baulig  <martin@ximian.com>
25511
25512         * class.c (set_generic_param_owner): Fixed the loop.
25513
25514 2004-11-25  Martin Baulig  <martin@ximian.com>
25515
25516         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25517         generic methods.
25518
25519 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25520
25521         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25522         names. Fixes #69787.
25523
25524 2004-11-24  Martin Baulig  <martin@ximian.com>
25525
25526         * class.c (mono_class_create_generic_2): If we don't have a
25527         `ginst->parent', inflate `gklass->parent' to get our parent.
25528
25529 2004-11-24  Martin Baulig  <martin@ximian.com>
25530
25531         * reflection.c (compare_genericparam): Correctly sort the
25532         GenericParam table; fixes #69779.
25533
25534 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25535
25536         * reflection.c: When writing a PE file, don't create a huge
25537         buffer in memory. Just write the arrays we have to the file.
25538         This reduces memory usage.
25539
25540         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25541         globally.
25542
25543 2004-11-17  Martin Baulig  <martin@ximian.com>
25544
25545         * class.c (mono_class_init): Don't setup `class->parent' for
25546         dynamic instances; moved this to mono_class_generic_2().
25547         (mono_class_create_generic): Also set `klass->inited' for dynamic
25548         generic instances.
25549         (mono_class_create_generic_2): Don't do anything for dynamic
25550         generic instances.  Set `klass->parent' here and also call
25551         mono_class_setup_parent() here. 
25552
25553         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25554         `MonoType *parent' argument; set `ginst->parent' before calling
25555         mono_class_create_generic_2(), so we set the correct parent.
25556
25557 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25558
25559         * reflection.c: allow getting attributes from ModuleBuilder
25560         (used by ikvm).
25561
25562 2004-11-17  Martin Baulig  <martin@ximian.com>
25563
25564         * class.c (mono_class_create_from_typedef): If a type parameter is
25565         inherited from an outer class, set its owner to that class.
25566
25567 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25568
25569         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25570           for (int*) written size. This fixes bug #69592.
25571
25572 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25573
25574         * icall.c: Added IsAuthenticodePresnet internal call.
25575         * image.c|h: New function that check a MonoImage for an Authenticode
25576         signature in the certificate PE data directory.
25577         * security.c|h: New internal call to ask the runtime if an 
25578         Authenticode signature seems referenced in the PE header.
25579
25580 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25581
25582         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25583
25584         * reflection.c (mono_image_create_pefile): Free the assembly streams
25585         after writing out the assembly file.
25586
25587         * object.c (mono_runtime_run_main): Fix small memory leak.
25588
25589         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25590         property access modifiers. Fixes #69389.
25591
25592 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25593
25594         * domain.c, object.c, object-internals.h, domain-internals.h,
25595         object.h, marshal.c: keep dynamic code info per domain.
25596
25597 2004-11-15  Martin Baulig  <martin@ximian.com>
25598
25599         * class.c (mono_type_get_name_recurse): Put type arguments in
25600         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25601         see bug #68387.
25602
25603 2004-11-15  Martin Baulig  <martin@ximian.com>
25604
25605         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25606         (mono_class_setup_vtable): When computing `the_cname' for a
25607         generic instance, don't include the namespace since we'd otherwise
25608         add it twice.
25609
25610 2004-11-15  Martin Baulig  <martin@ximian.com>
25611
25612         * class.c (mono_class_create_generic): Changed return type to void.
25613         (mono_class_create_generic_2): New public function; setup
25614         `class->method', `class->field' and `class->interfaces' here
25615         instead of in mono_class_init().
25616
25617         * class.h (mono_class_create_generic): Moved to class-internals.h.
25618
25619 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25620
25621         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25622         rather than writing to memory, write to this file. Right now,
25623         we are just writting into a buffer, and copying that. However
25624         we can avoid the buffer later.
25625
25626         (mono_dynamic_stream_reset): new function
25627
25628         * icall.c, object-internals.h: update for the above.
25629
25630 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25631
25632         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25633         have been using gc'd memory. First it is slower, unlikely
25634         the comment in the source code said, secondly, it increases
25635         our footprint to do it in the gc.
25636
25637         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25638         the method so that it does not have to copy to managed code.
25639
25640 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25641
25642         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25643
25644 2004-11-12  Martin Baulig  <martin@localhost>
25645
25646         * reflection.c (mono_image_create_token): Allow generic method
25647         definitions here, since they may appear in an `.override'; see
25648         gen-98/gen-99 for an example.
25649
25650 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25651
25652         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25653         #69365.
25654
25655         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25656         descriptive.
25657
25658 2004-11-11  Martin Baulig  <martin@ximian.com>
25659
25660         * class.c (mono_class_setup_vtable): In an explicit interface
25661         implementation, the method name now includes the arity.
25662
25663 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25664
25665         * object.c (mono_array_full_copy): Fix warning.
25666
25667 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25668
25669         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25670         mono_class_get_method_from_name() instead.
25671         
25672         * class-internals.h: Added two new types of wrappers. 
25673         Added MonoRemotingTarget enum. Added new trampoline function type, which
25674         takes an additional MonoRemotingTarget value as parameter, so it is
25675         possible to request a trampoline for a specific target.
25676         
25677         * class.c: Added new mono_class_get_method_from_name() method.
25678         
25679         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25680         general remoting sinks and one specific for cross domain calls.
25681         
25682         * debug-helpers.c: Added new wrapper names.
25683         
25684         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25685         of a remote class.
25686         
25687         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25688         
25689         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25690         with several other methods (mono_marshal_get_xappdomain_dispatch,
25691         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25692         and others) can generate a fast remoting wrapper for cross domain calls.
25693         More information can be found in docs/remoting.
25694         Other changes: Removed mono_find_method_by_name, and used
25695         mono_class_get_method_from_name instead.
25696         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25697         is stored in the remoting invoke hashtable.
25698         
25699         * marshal.h: published the new method for getting the xdomain wrapper,
25700         and also added a method for getting the adequate wrapper for a given
25701         method and target.
25702         
25703         * object-internals.h, object.c: Added a couple of methods for capying and
25704         cloning arrays.
25705         Modified mono_install_remoting_trampoline, which takes the new remoting
25706         trampoline that has a remoting target as parameter.
25707         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25708         will return the most suitable vtable for the target.
25709         Added mono_remote_class_vtable, which returns the vtable of a remote class
25710         (which can be the normal remoting vtable or the xdomain vtable).
25711         
25712         * threads.c: the xdomain invoke and dispatch wrappers must also be
25713         protected against interruptions.
25714
25715 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25716
25717         * icall.c: use memmove in BlockCopyInternal when the source and
25718         destination arrays are the same.
25719
25720 2004-11-09  Martin Baulig  <martin@ximian.com>
25721
25722         * class-internals.h (MonoGenericContainer): Removed `method' and
25723         `signature', replaced them with `is_method' and `is_signature'
25724         flags.  Added `context'.
25725
25726         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25727         instead of a `MonoGenericContainer *'.
25728
25729         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25730         for dynamic type parameters.
25731         (mono_metadata_load_generic_params): Setup `container->context'.
25732
25733         * reflection.c (mono_reflection_setup_generic_class): Setup
25734         `tb->generic_container->context'.
25735         (do_mono_reflection_bind_generic_parameters): Use
25736         mono_class_inflate_generic_type() to correctly inflate types,
25737         rather than using our own hack just for MONO_TYPE_VAR.
25738
25739 2004-11-09  Martin Baulig  <martin@ximian.com>
25740
25741         * class.c (mono_class_inflate_generic_method): Small fix; don't
25742         crash here.
25743
25744         * icall.c
25745         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25746         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25747         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25748         (ves_icall_Type_BindGenericParameters): Likewise.
25749         (ves_icall_Type_get_IsGenericInstance): Likewise.
25750         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25751         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25752         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25753         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25754
25755 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25756
25757         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25758         assembly versions and public key tokens. Fixes #69113.
25759
25760 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25761
25762         * metadata.c: fix bug introduced with the type cache changes
25763         on 2004-11-06.
25764
25765 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25766
25767         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25768         the MonoClass pointer instead of the token in exception clauses.
25769         * reflection.c: updates for the above and make the code not depend
25770         on the structure of MonoExceptionClause.
25771
25772 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25773
25774         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25775         Add support for dynamic assemblies. Fixes #69114.
25776
25777         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25778
25779 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25780
25781         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25782         since most only those methods use it. the code member of
25783         MonoMethodPInvoke was dead, so that can be removed too. Also,
25784         remove inline_count (again, not used), and move slot so that it
25785         can share bits with some other flags. This saves 8 bytes in the
25786         structure and gives us about 50 kb back for mcs helloworld.cs
25787
25788         * *.[ch]: Do naming changes for the above.
25789
25790         * loader.c (mono_method_get_header): Lazily init the header
25791         on first access.
25792         (mono_get_method_from_token): don't init the header here
25793         (mono_free_method): the header may never be allocated
25794
25795         Overall, this saves 150 kb of unmanaged allocations
25796         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25797         memory at runtime.
25798         
25799         * loader.c, loader.h (mono_method_get_header): new accessor.
25800
25801         * *.[ch]: use the above method. Prepares us to lazily load
25802         the header.
25803
25804         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25805         three warnings, which are actual bugs (see 69206).
25806
25807         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25808         unused. Saves a cool 4 bytes / method.
25809
25810 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25811
25812         * metadata.c (builtin_types): Add types for System.Object here.
25813         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25814         for a class or valuetype from klass->this_arg or klass->byval_arg.
25815
25816         On mcs for a hello world, this gets us down from 21836 MonoType's
25817         to 14560.
25818
25819         (mono_metadata_free_type): Account for the above change.
25820
25821 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25822
25823         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25824         exception instead of asserting if name is null.
25825         (ves_icall_System_AppDomain_GetData): Ditto.
25826
25827 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25828
25829         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25830         EnumBuilder.
25831
25832         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25833         Return NULL when the domain does not have entry_assembly set.
25834
25835         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25836         Add a 'resource_modules' argument.
25837         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25838
25839         * reflection.c (mono_reflection_create_runtime_class): Move setting
25840         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25841         for enums too.
25842
25843         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25844         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25845         Throw an ArgumentNullException if 'ptr' is null.
25846
25847         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25848         assemblies here. Fixes #69020.
25849
25850 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25851
25852         * reflection.c (build_compressed_metadata): Fix the previous patch for
25853         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25854         the stack.
25855
25856 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25857
25858         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25859         the cultures is false. Fixes #69090.
25860
25861         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25862         detected by valgrind.
25863         
25864         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25865         TypeResolve multiple times for the same type. Fixes #65577.
25866
25867 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25868
25869         * marshal.c: Avoid using ldftn to call managed functions. It is
25870         much slower than just a call.
25871
25872         * reflection.c (mono_module_get_object): free the basename we
25873         allocate here from glib.
25874         
25875         * reflection.c (ensure_runtime_vtable): make sure to free
25876         overrides.  Also, we were allocating an array of MonoMethod not an
25877         array of MonoMethod*.
25878
25879         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25880
25881         * image.c (mono_image_close): free image->guid here.
25882
25883 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25884
25885         * reflection.c: Fix some spec conformance issues with the PE file
25886         structures so mcs compiled apps run on the Net 2.0 beta.
25887
25888 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25889
25890         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25891         Implement this. Fixes #67264.
25892
25893         * debug-helpers.h debug-helpers.c marshal.c: Move 
25894         mono_find_method_by_name to debug-helpers.c.
25895
25896 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25897
25898         * object.c (mono_release_type_locks): type_initialization_hash is
25899         a GHashTable.
25900
25901         * reflection.c object.c object-internals.h: Fix warnings.
25902
25903         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25904         without accessors. Fixes #61561.
25905
25906         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25907         application base from the root domain if not set. Fixes #65641.
25908         (mono_runtime_init): Fix warning.
25909
25910 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25911
25912         * appdomain.c: call mono_thread_pool_init.
25913         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25914         of worker threads based on the number of CPUs and the environment
25915         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25916         for non-windows (windows) systems.
25917
25918 2004-10-27  Chris Toshok  <toshok@ximian.com>
25919
25920         * mono-debug-debugger.c (write_class): don't call mono_class_init
25921         here, as even with the check for (!klass->init_pending), we get
25922         into a situation where we're hitting cycles in class
25923         initialization.  Fixes #68816.
25924
25925 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25926
25927         * image.c: Avoid overwriting values in the loaded_images_hash when an
25928         assembly is loaded multiple times. Fixes #61152.
25929
25930         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25931         so multiple satellite assemblies for the same name can be loaded.
25932         Fixes #68259.
25933
25934         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25935         not NULL.
25936
25937         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25938         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25939
25940         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25941         pending finalizers are not invoked after the appdomain has been 
25942         unloaded. Fixes #67862.
25943
25944 2004-10-22  Martin Baulig  <martin@ximian.com>
25945
25946         * mono-debug-debugger.c
25947         (mono_debugger_runtime_invoke): Don't box valuetypes.
25948
25949 2004-10-22  Chris Toshok  <toshok@ximian.com>
25950
25951         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25952         don't hide private methods.
25953
25954 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25955
25956         * icall.c: Allows the runtime to "share" (when known) the public key
25957         token of an assembly. This avoid the need to recalculate the token 
25958         (from the public key) in managed code.
25959
25960 2004-10-21  Chris Toshok  <toshok@ximian.com>
25961
25962         * debug-helpers.c (append_class_name): argh, revert last patch.
25963         
25964 2004-10-21  Chris Toshok  <toshok@ximian.com>
25965
25966         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25967         not '/', so that it matches what the debugger uses to look up
25968         methods.
25969
25970 2004-10-21  Martin Baulig  <martin@ximian.com>
25971
25972         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25973         public method; this is called each time an exception is thrown and
25974         allows the debugger to use exception catch points.
25975
25976 2004-10-21  Martin Baulig  <martin@ximian.com>
25977
25978         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25979         the stack pointer and the exception object in some struct and pass
25980         that to the debugger.
25981
25982 2004-10-21  Chris Toshok  <toshok@ximian.com>
25983
25984         * mono-debug-debugger.c (do_write_class): add instance/static
25985         event support.  We don't expose "raise" or "other" yet.
25986         (event_is_static): new method.
25987
25988 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25989
25990         * mono-debug-debugger.c
25991         (mono_debugger_handle_exception): Remove
25992         bogus return value for fussy compilers.
25993
25994 2004-10-20  Martin Baulig  <martin@ximian.com>
25995
25996         * mono-debug-debugger.c
25997         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25998         (mono_debugger_handled_exception): Likewise.
25999
26000 2004-10-20  Martin Baulig  <martin@ximian.com>
26001
26002         * mono-debug-debugger.h (MonoDebuggerEvent): Added
26003         MONO_DEBUGGER_EVENT_EXCEPTION.
26004
26005         * mono-debug-debugger.c (mono_debugger_handle_exception): New
26006         public function to send the debugger a notification for an
26007         exception and inform it about a catch/finally clause.
26008
26009 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
26010
26011         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
26012         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
26013         fix 2.95 build. 
26014
26015         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
26016
26017 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
26018
26019         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
26020         marshalled as [In,Out]. Fixes #58325.
26021
26022 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
26023
26024         * reflection.c (mono_method_body_get_object): Implement some fields.
26025
26026 2004-10-12  Martin Baulig  <martin@ximian.com>
26027
26028         * reflection.c (mono_reflection_bind_generic_parameters): Small
26029         fix, correctly retrieve our parent from a generic instance.
26030
26031 2004-10-12  Martin Baulig  <martin@ximian.com>
26032
26033         * metadata.c (mono_metadata_generic_param_equal): We always have
26034         an owner.
26035
26036         * class.c
26037         (mono_class_from_generic_parameter): We need to have an owner.
26038         (my_mono_class_from_generic_parameter): Likewise.
26039
26040         * reflection.c (mono_reflection_setup_generic_class): Renamed to
26041         mono_reflection_create_generic_class() and added a new
26042         mono_reflection_setup_generic_class().  
26043         (mono_reflection_initialize_generic_param): If we're a nested
26044         generic type and inherited from the containing class, set our
26045         owner to the outer class.
26046
26047 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
26048
26049         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
26050
26051         * reflection.c (mono_method_body_get_object): New function to create
26052         a MethodBody object.
26053
26054         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
26055
26056 2004-10-11  Martin Baulig  <martin@ximian.com>
26057
26058         * metadata.c (_mono_metadata_type_equal): Renamed to
26059         do_mono_metadata_type_equal() and made static.
26060
26061 2004-10-11  Martin Baulig  <martin@ximian.com>
26062
26063         * appdomain.c: Bump corlib version number to 28.
26064
26065 2004-10-10  Martin Baulig  <martin@ximian.com>
26066
26067         * class-internals.h
26068         (MonoGenericInst): Added `MonoGenericContainer *container'.
26069         (MonoGenericMethod): Likewise.
26070         (MonoGenericContext): Likewise.
26071         (MonoGenericParam): Added `MonoGenericContainer *owner'.
26072
26073         * metadata.c
26074         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
26075         (do_mono_metadata_parse_generic_inst): Likewise.
26076         (mono_metadata_parse_type_full): New public method.  This is the actual
26077         mono_metadata_parse_type() implementation - with an additional
26078         `MonoGenericContainer *' argument.
26079         (mono_metadata_parse_array_full): Likewise.
26080         (mono_metadata_parse_signature_full): Likewise.
26081         (mono_metadata_parse_method_signature_full): Likewise.
26082         (mono_metadata_parse_mh_full): Likewise.
26083         (mono_type_create_from_typespec): Likewise.
26084         (mono_metadata_interfaces_from_typedef_full): New public method;
26085         this is similar to the other _full() methods, but we take a
26086         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
26087         (mono_metadata_parse_generic_param): Take an additional
26088         `MonoGenericContainer *' argument and lookup the MonoGenericParam
26089         from that container.
26090         (mono_metadata_generic_param_equal): New static method to compare
26091         two type parameters.
26092         (_mono_metadata_type_equal): New static method; takes an
26093         additional `gboolean signature_only' argument - if true, we don't
26094         compare the owners of generic parameters.
26095         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
26096         with a TRUE argument - do a signature-only comparision.
26097
26098         * loader.c: Use the new _full() methods and pass the
26099         MonoGenericContainer to them.
26100
26101         * object-internals.h (MonoReflectionTypeBuilder): Added
26102         `MonoGenericContainer *generic_container' field.
26103         (MonoReflectionMethodBuilder): Likewise.
26104
26105 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
26106
26107         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
26108         case initial images of dynamic assemblies.
26109
26110         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
26111
26112         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
26113
26114         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
26115         length of event->other array.
26116         (typebuilder_setup_events): Ditto.
26117
26118         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
26119         'assembly_by_name' and add an 'assemblies' list.
26120
26121         * assembly.h assembly.c: Add a new search hook for determining whenever
26122         an assembly is already loaded. Use this instead of searching in the
26123         loaded_assemblies list.
26124
26125         * domain.c appdomain.c: Implement the new search hook so loaded 
26126         assemblies are now scoped by appdomain. Fixes #67727.
26127
26128 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
26129
26130         * threads.c (mono_thread_attach): Initialize synch_lock field so
26131         mono_thread_detach works again.
26132
26133         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26134         'lib' too. Fixes #63130.
26135
26136 2004-10-06  Jackson Harper  <jackson@ximian.com>
26137
26138         * culture-info-tables.h: regenerated.
26139
26140 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26141
26142         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26143         implemented by other interfaces in the result. Fixes #65764.
26144         
26145         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26146         Handle unloadable modules without crashing.
26147
26148         * image.c (load_modules): Revert the previous patch since modules must
26149         have a fixed index inside the array.
26150         
26151         * image.c (load_modules): Don't include native modules in the modules
26152         array.
26153
26154 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26155
26156         * reflection.h: Add param_defaults field.
26157
26158         * reflection.c: Add support for parameter defaults in dynamic methods.
26159         Fixes #64595.
26160
26161         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26162         an empty string when a type has no namespace. Fixes #64230.
26163
26164 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26165
26166         * tabledefs.h: Added "internal" security actions to support non-CAS
26167         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26168         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26169
26170 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26171
26172         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26173         constructor of abstract class. Fixes #61689.
26174
26175 2004-10-04  Martin Baulig  <martin@ximian.com>
26176
26177         * class-internals.h (MonoGenericContainer): New type.
26178         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26179         `MonoGenericContainer *generic_container'.
26180         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26181         `MonoGenericContainer *generic_container'.
26182
26183         * metadata.c (mono_metadata_load_generic_params): Return a
26184         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26185         removed the `num' argument.
26186
26187 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26188
26189         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26190         for dynamic images.
26191
26192         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26193         machine fields.
26194
26195         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26196
26197         * reflection.c: Save pe_kind and machine values into the generated
26198         image file.
26199
26200         * appdomain.c: Bump corlib version number.
26201
26202         * object-internals.h: Reorganize layout of LocalBuilder.
26203
26204         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26205         New helper function.
26206
26207         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26208         created MonoType for dynamic types. Fixes #66180.
26209
26210 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26211
26212         * threadpool.c: the ares hashtable needs a critical section around it.
26213         this prevents some nasty segfaults
26214
26215 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26216
26217         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26218         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26219         bug 67324).
26220         
26221 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26222
26223         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26224         
26225 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26226
26227         * image.c: Always canonicalize image file names, to avoid loading
26228         the same assembly twice when referenced using a relative path.
26229
26230 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26231
26232         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26233
26234         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26235
26236         * marshal.c: Fix warnings.
26237
26238 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26239
26240         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26241         attempting to marshal the delegate_trampoline as the method_addr.
26242         This patch has a static hashtable of marshalled delegates so that 
26243         we can map delegate_trampoline addresses back to delegates.  This
26244         allows a delegate passed to managed code to be passed back into native
26245         code.  Fixes #67039
26246
26247 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26248
26249         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26250
26251         * reflection.c (method_encode_code): Align method headers properly.
26252         Fixes #66025.
26253
26254 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26255
26256         * marshal.c: In the runtime invoke wrapper, reset the abort
26257         exception if it is cached. This avoids the automatic rethrowal of 
26258         the exception after the catch of the wrapper. Also check for pending
26259         interruptions before calling the managed method. This is done using
26260         the new method emit_thread_force_interrupt_checkpoint, since the
26261         normal checkpoint method is ignored when running the invoke wrapper.
26262         * object.c: If the abort exception is rethrown, set the abort_exc
26263         field of the thread, so it will be rethrown aftere every catch.
26264         * threadpool.c: Only run an interruption checkpoint if what has been
26265         requested is a stop of the thread (aborts will be ignored).
26266         * threads.c: By default, a thread will now never be interrumped while
26267         running the runtime invoke wrapper (this ensures that runtime_invoke
26268         will always return to the caller if an exception pointer is provided).
26269         There is a new special method mono_thread_force_interruption_checkpoint()
26270         to force an interruption checkpoint even if running a protected
26271         wrapper, which is used by the same runtime invoke wrapper to do a check
26272         at a safe point.
26273
26274 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26275
26276         * object.c, object-internals.h: Implemented mono_release_type_locks,
26277         which releases the cctor locks held by a thread.
26278         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26279         by a thread. Added mono_thread_exit() method to be used to safely stop
26280         a thread.
26281
26282 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26283
26284         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26285         Move null check before dereference.  Avoid indexing beyond the end
26286         of the 'modules' array.
26287
26288 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26289
26290         * metadata-internals.h (MonoImage): Add module_count field.
26291         * image.c (load_modules): Set image->module_count.
26292         (mono_image_load_file_for_image): Use image->module_count.
26293         * reflection.c (mono_image_load_module): Append to image->modules array 
26294         of dynamic assembly.
26295         (mono_module_get_object): Fix loop to actually increment index.
26296         Use image->module_count.
26297         * assembly.c (mono_assembly_load_references): Use image->module_count.
26298         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26299         Likewise.
26300
26301 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26302
26303         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26304         Avoid assert on generic types.
26305
26306 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26307
26308         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26309
26310         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26311
26312         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26313         function to convert a MarshalSpec structure to its managed counterpart.
26314
26315         * reflection.c: Fix warnings.
26316         
26317         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26318         field.
26319
26320         * icall.c (mono_create_icall_signature): Fix build.
26321
26322 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26323
26324         * icall.c: Add MakePointType icall.
26325
26326         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26327         warnings.
26328
26329 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26330
26331         * threadpool.c: reuse allocated slots in the queue.
26332
26333 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26334
26335         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26336
26337         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26338
26339         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26340         previous change.
26341
26342         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26343         ThrowOnUnmappableChar.
26344
26345         * icall.c (ves_icall_Type_GetPacking): New icall.
26346
26347 2004-09-24  Martin Baulig  <martin@ximian.com>
26348
26349         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26350
26351 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26352
26353         * appdomain.c:
26354         (mono_domain_set): allow setting a domain that is being unloaded.
26355         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26356         being unloaded.
26357
26358 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26359
26360         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26361         the GetCustomAttributes icall.
26362
26363 2004-09-23  Martin Baulig  <martin@ximian.com>
26364
26365         * object-internals.h (MonoReflectionGenericParam): Replaced
26366         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26367         with `guint32 attrs'.
26368
26369 2004-09-23  Martin Baulig  <martin@ximian.com>
26370
26371         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26372
26373 2004-09-23  Martin Baulig  <martin@ximian.com>
26374
26375         * object-internals.h (GenericParameterAttributes): New enum.
26376
26377 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26378
26379         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26380         
26381         * class.c (init_events): Fill out event->other field.
26382
26383         * class.c: Fix warnings.
26384
26385         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26386
26387 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26388
26389         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26390         walk which doesn't supply the IL offset.
26391
26392 2004-09-22  Martin Baulig  <martin@ximian.com>
26393
26394         * reflection.c (mono_reflection_setup_internal_class): If we're
26395         System.ValueType, System.Object or System.Enum, set
26396         `klass->instance_size' and create the vtable.
26397         (mono_reflection_create_internal_class): If we're an enum type,
26398         get the base class from our current corlib.
26399
26400 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26401
26402         * reflection.h (MonoResolveTokenError): New type.
26403
26404         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26405         icall.
26406
26407         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26408
26409 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26410
26411         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26412         Support also calling constructors, but only for already allocated objects.
26413
26414 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26415
26416         * reflection.c (type_get_qualified_name): If the klass is null
26417         return the typename to avoid a NullRefEx.
26418         (encode_cattr_value): Get the qualified name of the boxed type,
26419         not the underlying enumtype.  Fixes #62984.
26420
26421 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26422
26423         * marshal.c: Fix problems with previous checkin.
26424
26425 2004-09-21    <vargaz@freemail.hu>
26426
26427         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26428         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26429
26430         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26431
26432 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26433
26434         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26435         should only return a type for pointers, arrays, and passbyref types.
26436         Fixes bug #63841.
26437
26438 2004-09-21  Martin Baulig  <martin@ximian.com>
26439
26440         * domain.c (mono_debugger_check_runtime_version): New public
26441         function.
26442
26443         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26444
26445 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26446
26447         * reflection.c: Added missing sort to the declarative security 
26448         attributes table. MS implementation stops seeing the attributes if the
26449         token number regress in the table (as shown by ildasm and permview).
26450
26451 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26452
26453         * object-internals.h (MonoReflectionModule): Add 'token' field.
26454         
26455         * reflection.c (mono_reflection_get_token): Add support for Module
26456         and Assembly.
26457         (mono_module_get_object): Set 'token' field.
26458         (mono_module_file_get_object): Set 'token' field.
26459
26460         * icall.c: Add new Assembly and Module icalls.
26461
26462         * appdomain.c: Bump corlib version.
26463
26464 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26465
26466         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26467         tokens of metadata objects.
26468
26469         * reflection.h reflection.c (mono_reflection_get_token): New function
26470         to obtain the token of a metadata object.
26471
26472         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26473
26474 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26475
26476         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26477         
26478         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26479
26480 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26481
26482         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26483         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26484         AssemblyBuilder to access the permissions set in the class lib.
26485         * reflection.c: Added security attributes encoding step in 
26486         mono_image_build_metadata.
26487         * tabledefs.h: Added new security actions defined in 2.0:
26488         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26489
26490 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26491
26492         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26493         macro parameter.
26494
26495 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26496  
26497         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26498           finalized. There where random SIGSEVs at program termination, when
26499           an object being finalized was trying to do a string comparison and
26500           the current culture was already finalized.
26501  
26502 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26503
26504         * threads.c: call thread_cleanup before finishing the thread if we get
26505         there.
26506
26507 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26508
26509         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26510         assemblies from the parent. Fixes #65665.
26511
26512 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26513
26514         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26515         modifiers.
26516
26517 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26518
26519         * reflection.h: add prototype for mono_get_dbnull_object
26520         * reflection.c: add prototypes for get_default_param_value_blobs 
26521         and mono_get_object_from_blob for fussier compilers
26522
26523 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26524  
26525         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26526         false deadlock checks in class initialization.
26527  
26528 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26529
26530         * image.c (mono_image_addref): Fix comment.
26531
26532         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26533         possible.
26534
26535 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26536
26537         * reflection.c (mono_param_get_objects): Modified to return
26538         ParameterInfo.DefaultValue object.
26539
26540         (get_default_param_value_blobs):
26541         (mono_get_object_from_blob):
26542         (mono_get_dbnull_object): New helper routines. 
26543
26544         * object.c (mono_get_constant_value_from_blob): New helper routine
26545         carved out from get_default_field_value ()
26546
26547         * object-internals.h (mono_get_constant_value_from_blob): Added
26548         function declaration.
26549
26550 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26551
26552         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26553         referenced assemblies. Fixes #62135.
26554
26555         * exception.h exception.c (mono_get_exception_file_not_found2): New
26556         helper function.
26557
26558 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26559
26560         * class.h class.c: Add mono_type_get_underlying_type ().
26561
26562 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26563
26564         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26565         Fix GetTypes() to support dynamically created assemblies.
26566
26567 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26568
26569         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26570         
26571         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26572         previous patch.
26573
26574         * reflection.h reflection.c loader.c: Allow dynamic construction of
26575         pinvoke methods. Fixes #65571.
26576         
26577         * reflection.c (mono_reflection_get_type): Revert previous change since
26578         it causes regressions.
26579
26580 2004-09-08  Martin Baulig  <martin@ximian.com>
26581
26582         * class.c (class_compute_field_layout): Don't call
26583         mono_class_layout_fields() for open generic instances.
26584
26585 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26586         * threads.c appdomain.c: fix typo in GC macro
26587
26588 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26589
26590         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26591         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26592
26593 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26594
26595         * image.c (mono_image_close): Applied patch from 
26596         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26597         assembly is loaded multiple times from data.
26598         
26599         * image.c (mono_image_open): Fix warning.
26600
26601 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26602
26603         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26604         once. Fixes #58334.
26605         
26606         * reflection.c (mono_reflection_create_runtime_class): Initialize
26607         klass->nested_classes. Fixes #61224.
26608
26609 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26610
26611         * threads.c: sched_yield() on exit, to allow threads to quit.
26612
26613 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26614
26615         * object.c (mono_unhandled_exception): Remove leftover debug code.
26616
26617 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26618
26619         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26620
26621 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26622
26623         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26624         
26625         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26626
26627 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26628
26629         * marshal.c (emit_marshal_array): Null terminate string arrays.
26630         
26631         * marshal.c (raise_auto_layout_exception): Fix warning.
26632
26633         * reflection.c (mono_param_get_objects): Initialize the default value
26634         with DBNull.Value, not null. Fixes #62123.
26635
26636 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26637
26638         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26639         throw an exception with a cute explanation.
26640
26641 2004-09-06  Dick Porter  <dick@ximian.com>
26642
26643         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26644         Close the new process's thread handle, as we don't use it.  The
26645         handle stays around forever otherwise.
26646
26647 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26648
26649         * object.c (arith_overflow): Fix warning.
26650
26651         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26652         calling conventions in method refs. Fixes #65352.
26653
26654         * reflection.c: Fix warnings.
26655
26656 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26657
26658         * icall.c: Add a new icall for Array.Clear
26659
26660 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26661
26662         * object.c: When allocating an array, we have to throw
26663         an overflow exception if any of the lengths are < 0.
26664
26665 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26666
26667         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26668         properly. Also move implementation of string array marshalling to 
26669         managed code. Fixes #42316.
26670
26671 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26672
26673         * assembly.c: provide more information when loading an assembly fails.
26674
26675 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26676
26677         * filewatcher.c: don't expect the development fam package to be
26678         installed.
26679
26680 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26681
26682         * marshal.c: Make a copy of the signature cookie since it will be
26683         freed by the caller.
26684         
26685         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26686
26687         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26688
26689         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26690         marshal specs.
26691
26692         * marshal.c: More refactoring.
26693         
26694         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26695         smaller functions.
26696
26697 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26698
26699         * object.c: In mono_message_invoke, fill the output parameter array after
26700           calling the managed method (it was done before the call). This fixes
26701           bug #59299.
26702
26703 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26704
26705         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26706         as well.
26707
26708 2004-09-02  Martin Baulig  <martin@ximian.com>
26709
26710         * class.c (mono_class_instance_size): Don't allow generic type
26711         definitions or open generic instances.
26712         (mono_class_array_element_size): If we're a value type, call
26713         mono_class_instance_size() on the original class.
26714
26715         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26716         handle generic instances.
26717
26718         * mono-debug-debugger.c (write_type): Handle generic instances
26719         like classes.
26720
26721 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26722
26723         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26724         the allocation request fails. Fixes #65089.
26725
26726         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26727         
26728         * object.c (mono_runtime_free_method): New function to free a dynamic
26729         method.
26730
26731         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26732         delegate trampoline.
26733
26734         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26735         with hasthis as dynamic,
26736
26737         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26738
26739         * domain.c (mono_jit_info_table_remove): New function to remove an
26740         entry from the jit info table.
26741
26742         * class-internals.h (MonoMethod): Add 'dynamic' field.
26743
26744         * loader.c: Fix warnings.
26745
26746 2004-09-01  Martin Baulig  <martin@ximian.com>
26747
26748         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26749         instead of mono_debugger_lock() because the latter one is a no-op
26750         unless running in the debugger.
26751
26752 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26753
26754         * class.c (class_compute_field_layout): Classes with auto-layout or
26755         reference fields are not blittable.
26756         
26757 2004-09-01  Dick Porter  <dick@ximian.com>
26758
26759         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26760         mono_image_get_filename() to get the assembly location.
26761
26762         * icall.c:
26763         * metadata.h: Fix compile warnings
26764
26765 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26766
26767         * class.c (class_compute_field_layout): System.Object is blittable.
26768
26769         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26770         as in/out. Fixes #59909.
26771
26772 2004-09-01  Martin Baulig  <martin@ximian.com>
26773
26774         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26775         mono_metadata_generic_inst_is_valuetype() if we're a generic
26776         instance to check whether our underlying type is a reference type.
26777
26778 2004-09-01  Martin Baulig  <martin@ximian.com>
26779
26780         * metadata.c (mono_type_size): If we're a generic instance, call
26781         mono_class_value_size() for value types.
26782
26783 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26784
26785         * marshal.c: Implement more custom marshalling functionality. Fixes
26786         #64915.
26787
26788 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26789
26790         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26791
26792 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26793
26794         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26795
26796         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26797
26798         * icall.c: Fix some warnings.
26799
26800         * threads.c (abort_appdomain_thread): Fix unref errors.
26801         (mono_thread_current): Fix THREAD_DEBUG define.
26802
26803 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26804
26805         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26806
26807         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26808
26809 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26810
26811         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26812         string arrays.
26813
26814 2004-08-28  Martin Baulig  <martin@ximian.com>
26815
26816         * metadata.c
26817         (mono_metadata_generic_inst_is_valuetype): New public function.
26818
26819         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26820         mono_metadata_generic_inst_is_valuetype() if we're a generic
26821         instance to check whether our underlying type is a valuetype.
26822
26823 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26824
26825         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26826         #63768.
26827
26828 2004-08-25  Martin Baulig  <martin@ximian.com>
26829
26830         * loader.c (mono_get_method_from_token): Abstract methods can also
26831         be generic and thus have type parameters.
26832
26833         * metadata-internals.h
26834         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26835
26836         * reflection.c (mono_image_get_generic_param_info): Don't create a
26837         metadata row, just add an entry to the `gen_params' array.
26838         (build_compressed_metadata): Sort the `gen_params' array and then
26839         actually create the metadata.
26840
26841 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26842
26843         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26844
26845 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26846
26847         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26848
26849 2004-08-24  Martin Baulig  <martin@ximian.com>
26850
26851         * class.cs (mono_class_is_subclass_of): Like an interface, a
26852         generic instance also derives from System.Object.
26853
26854 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26855
26856         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26857         custom modifiers to be in any order. Fixes #61990.
26858
26859 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26860
26861         * object.c: Register mono_object_new_fast icall.
26862         
26863         * object.c (mono_class_get_allocation_ftn): Return to calling
26864         mono_object_new_fast, since it seems faster to compute the object 
26865         size in unmanaged code than passing it as a parameter.
26866
26867         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26868
26869         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26870         this function with Boehm as the oom handler, so we don't have to check
26871         the result of GC_malloc.
26872
26873         * object.c: Remove checks for oom.
26874
26875         * object.h object.c (mono_class_get_allocation_ftn): New function to
26876         return the icall which can be used to allocate an instance of a given
26877         class. 
26878
26879         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26880
26881         * class-internals.h: Add 'enabled' field.
26882
26883 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26884
26885         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26886
26887 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26888         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26889         value 0x0010.
26890
26891 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26892
26893         * appdomain.c: use the Tls function for appdomain too,
26894         at Zoltan's request. Actually return in mono_context_get
26895
26896         * appdomain.c, profiler.c, threads.c: use __thread
26897
26898 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26899
26900         * appdomain.c threads.c: Call GC_CreateThread on windows.
26901
26902         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26903         multiple libraries since this don't work on windows.
26904
26905 2004-08-18  Martin Baulig  <martin@ximian.com>
26906
26907         * class-internals.h
26908         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26909         MonoMethodHeader.
26910
26911         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26912         MonoMethodNormal since we also need it for abstract and interface
26913         methods.
26914
26915         * reflection.c
26916         (build_compressed_metadata): Sort the GenericParam table.
26917         (mono_image_create_token): Added `gboolean create_methodspec'
26918         argument; this is false when generating a MethodImpl token.
26919         (reflection_methodbuilder_to_mono_method): Abstract and interface
26920         methods may also have generic parameters.
26921
26922 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26923
26924         * appdomain.c: thread local alloc
26925
26926 2004-08-17  Martin Baulig  <martin@ximian.com>
26927
26928         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26929
26930         * icall.c
26931         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26932         argument.
26933
26934         * class.c (mono_type_get_full_name): New public function.
26935         (mono_type_get_name): Don't include the type arguments.
26936
26937 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26938
26939         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26940         for inclusion into the mono executable.
26941
26942 2004-08-16  Martin Baulig  <martin@ximian.com>
26943
26944         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26945         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26946
26947 2004-08-14  Martin Baulig  <martin@ximian.com>
26948
26949         * class.c (dup_type): Also copy the `byref' field.
26950
26951 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26952
26953         * reflection.c (create_dynamic_mono_image): Revert the last change 
26954         since it breaks bootstrap.
26955
26956 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26957
26958         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26959
26960         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26961         not free them with g_free.
26962
26963 2004-08-11  Martin Baulig  <martin@ximian.com>
26964
26965         * reflection.c (mono_reflection_setup_internal_class): Also call
26966         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26967
26968 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26969
26970         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26971         called during default (first) AppDomain creation. Keep track of
26972         Evidence when loading assemblies.
26973
26974 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26975
26976         * opcodes.c, opcodes.h: reduce runtime relocations.
26977
26978 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26979
26980         * culture-info.h, locales.c: fixes and chages to sue the new
26981         optimized format of the locale data.
26982         * culture-info-tables.h: regenerated.
26983
26984 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26985         
26986         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26987
26988 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26989
26990         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26991         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26992         * domain-internals.h: icall declaration.
26993         * icall.c: icall registration.
26994         * object-internals.h: New fields in MonoAssembly for CAS.
26995
26996 2004-08-05  Duncan Mak  <duncan@ximian.com>
26997
26998         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26999         CEE_LDELEM_ANY.
27000
27001 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27002
27003         * reflection.c: fix to deal with object[] arrays in custom ctors
27004         (bug #62550).
27005
27006 2004-08-05  Martin Baulig  <martin@ximian.com>
27007
27008         * class.c (mono_class_array_element_size): Added support for
27009         generic instances and correctly handle "recursive" types.
27010
27011 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
27012
27013         * assembly.c: Fix warnings.
27014
27015 2004-08-04  Martin Baulig  <martin@ximian.com>
27016
27017         * class.c
27018         (mono_type_get_name_recurse): Added `gboolean include_arity'
27019         argument specifying whether or not we should include the generic
27020         arity in the type name.
27021         (_mono_type_get_name): New static function.
27022         (mono_class_setup_vtable): If we're a generic instance, don't
27023         include the generic arity in the names of explicit method
27024         implementations.        
27025
27026 2004-08-03  Martin Baulig  <martin@ximian.com>
27027
27028         * class.c (mono_type_get_name_recurse): Enclose the generic type
27029         arguments in `<', '>'.
27030
27031 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27032
27033         * gc.c: make GC warning messages use the trace API, they are just
27034         noise to most of the users.
27035
27036 2004-08-03  Martin Baulig  <martin@ximian.com>
27037
27038         * debug-mono-symfile.c (read_string): Correctly read the string.
27039
27040 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
27041
27042         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
27043         
27044         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
27045         icalls.
27046         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
27047
27048 2004-07-30  Martin Baulig  <martin@ximian.com>
27049
27050         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
27051         Reflect latest symbol writer changes.   
27052
27053 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27054
27055         * object.c: always create an object if null is passed
27056         to Invoke() where a valuetype is expected.
27057
27058 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
27059
27060         * marshal.c (mono_marshal_init): make managed
27061         signatures match native ones better for 64bits.
27062
27063 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27064
27065         * appdomain.c: hack to build correctly the private bin path on windows.
27066         Fixes bug #61991.
27067
27068 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
27069
27070         * assembly.c: Load mscorlib from the correct framework directory
27071           (mono/<version>/mscorlib.dll).
27072         * appdomain.h: Added prototypes for new functions.
27073         * internals.h: Added some prototypes.
27074         * domain.c: When initializing the runtime, get from the executable and
27075           the configuration files the runtime version that the app supports.
27076           Added support methods for reading app.exe.config. Added list of versions
27077           supported by the JIT. Added two new methods: mono_init_from_assembly,
27078           which initializes the runtime and determines the required version from
27079           the provided exe file, and mono_init_version, which initializes
27080           the runtime using the provided version.
27081         * icall.c: Get machine.config from version-specific directory.
27082         * reflection.c: When generating an image, embed the version number
27083           of the current runtime.
27084
27085 2004-07-28  Dick Porter  <dick@ximian.com>
27086
27087         * socket-io.c
27088         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
27089         returned sockaddr size before creating the remote address object.
27090         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
27091         61608.
27092
27093 2004-07-28  Dick Porter  <dick@ximian.com>
27094
27095         * locales.c (string_invariant_compare_char): Fix invariant char
27096         compares between upper and lower cases.  Fixes bug 61458.
27097
27098 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
27099         
27100         * marshal.c: actually cache stelem.ref wrappers.
27101         
27102 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
27103
27104         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
27105         sections and remove the mono_cli_rva_map () function.
27106
27107 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27108
27109         * debug-mono-symfile.c: fix one more endianess issue, from a patch
27110         by Geoff Norton (<gnorton@customerdna.com>).
27111
27112 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27113
27114         * class.c: fix class loads for pointer types (typeof(int) !=
27115         typeof(int*)).
27116
27117 2004-07-27  Martin Baulig  <martin@ximian.com>
27118
27119         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
27120         reading the debugging information from an external ".mdb" file.
27121
27122 2004-07-24  Martin Baulig  <martin@ximian.com>
27123
27124         * reflection.c (mono_image_get_type_info): Only write a class
27125         layout entry if we actually have a size or a packing size.
27126
27127 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27128
27129         * reflection.c (type_get_fully_qualified_name): 
27130         insert cast to get type checking of ?: with non-gcc compilers
27131
27132 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27133
27134         * rand.c: use g_getenv for both lookups of
27135         MONO_EGD_SOCKET
27136
27137 2004-07-17  Martin Baulig  <martin@ximian.com>
27138
27139         * reflection.c (mono_reflection_bind_generic_method_parameters):
27140         Set `gmethod->reflection_info'.
27141
27142 2004-07-17  Martin Baulig  <martin@ximian.com>
27143
27144         * class.c (mono_class_create_from_typedef): Insert the newly
27145         created class into the hash table before computing the interfaces
27146         since we could be called recursively.
27147
27148 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27149
27150         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27151         function to implement stelem.ref in managed code
27152         * class-internals.h, debug-helpers.c: a new wrapper type
27153         for the above.
27154
27155 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27156
27157         * gc.c: allow GC handles to work even when no GC is compiled in.
27158         Fix part of bug #61134 (GetAddrOfPinnedObject).
27159
27160 2004-07-13  Peter Williams  <peter@newton.cx>
27161  
27162         * process.c (complete_path): Make sure we don't attempt to execute
27163         directories.
27164  
27165 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27166
27167         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27168           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27169           and will add/subtract the hour if needed
27170
27171 2004-07-12  Martin Baulig  <martin@ximian.com>
27172
27173         * reflection.c (mono_field_get_object): If we have
27174         `field->generic_info', take the attributes from
27175         `field->generic_info->generic_type'.    
27176
27177 2004-07-12  Martin Baulig  <martin@ximian.com>
27178
27179         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27180         This function must be called before initializing the runtime.
27181         (mono_debug_init_1): New function; call this after initializing
27182         the runtime, but before loading the assembly.  It tells the
27183         debugger to load corlib and the builtin types.
27184
27185         * mono-debug-debugger.c: Did some larger changes in the debugging
27186         code; support recursive class declarations, make sure we actually
27187         add all classes.
27188
27189 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27190
27191         * debug-helpers.c: undo my previous patch and fixed the real issue in
27192         ../mini/exceptions-x86.c
27193
27194 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27195
27196         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27197         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27198         called from other .cctors.
27199
27200 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27201
27202         * loader.c: Removed the mono_loader_wine_init hack now that we are
27203         doing a managed version of Windows.Forms.
27204
27205 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27206
27207         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27208         threadpool.c, threads.c: remove static data from rootset.
27209
27210 2004-07-09  Dick Porter  <dick@ximian.com>
27211
27212         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27213         Don't do any more processing if the matched length was 0.  It was
27214         increasing the size of the string before.  Fixes bug 61167.
27215
27216 2004-07-09  Dick Porter  <dick@ximian.com>
27217
27218         * socket-io.h:
27219         * socket-io.c
27220         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27221         Add support for SO_PEERCRED if its available.
27222
27223 2004-07-09  Peter Bartok <pbartok@novell.com>
27224         * loader.c: winelib.exe.so error message is now only displayed if
27225         MONO_DEBUG is set. To help us avoid questions when people are trying
27226         out the new Managed.Windows.Forms.
27227
27228 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27229
27230         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27231         for isinst and castclass wrappers.
27232
27233         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27234         to libmetadata from the JIT, so they could be used by the marshalling
27235         code and the interpreter.
27236
27237         * marshal.c: Register marshalling related JIT icalls here instead of
27238         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27239         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27240
27241         * metadata.h: Remove unneeded marshalling conversions.
27242
27243         * opcodes.c: Update for new opcodes.
27244         
27245 2004-07-08  Martin Baulig  <martin@ximian.com>
27246
27247         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27248         (mono_debug_get_domain_data): Make this function static.
27249
27250 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27251
27252         * gc.c, object.h: add nice GC handle API for embedders.
27253
27254 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27255
27256         * reflection.c: more changes for the new api
27257
27258         * object.c: When we reflect on a field w/ a constant value, it
27259         will not have a memory location, so we must access metadata. Also,
27260         allow easier reading of strings so that we can read them from
27261         the constant data.
27262
27263         * class.c (mono_class_layout_fields): no need for literal fields here.
27264
27265         * class-internals.h: api changes for const fields
27266
27267         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27268
27269 2004-07-06  Martin Baulig  <martin@ximian.com>
27270
27271         * mono-debug.h: Increment version number to 44.
27272
27273         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27274         now a gpointer, rewrote this whole method.
27275
27276         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27277         function.  Add information about the wrapper in a new "misc table".
27278
27279         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27280         for the new misc table.
27281
27282 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27283
27284         * metadata-internals.h image.c: Add a cache for helper signatures.
27285
27286         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27287
27288 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27289
27290         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27291         delegates from a delegate. Fixes #61033.
27292         
27293         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27294         marshalling of stringbuilder arrays. Fixes #59900.
27295
27296 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27297
27298         * icall.c: Add EnumBuilder:setup_enum_type icall.
27299
27300 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27301
27302         * icall.c: Added a new icall for the property version of
27303         OffsetOfStringData.
27304
27305 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27306
27307         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27308         it has a constant size across platforms.
27309
27310         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27311         stack trace.
27312
27313 2004-06-29  Martin Baulig  <martin@ximian.com>
27314
27315         * mono-debug.c (mono_debug_add_method): Protect the whole function
27316         in mono_debugger_lock(), not just parts of it.
27317
27318 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27319
27320         * reflection.c: make sure padding bytes in heaps are zeroed.
27321
27322 2004-06-24  David Waite  <mass@akuma.org>
27323
27324         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27325         image.c, loader.c, locales.c, marshal.c, metadata.c,
27326         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27327         string-icalls.c, threads.c: change to C90-style comments from C99 /
27328         C++ -style
27329
27330 2004-06-24  Dick Porter  <dick@ximian.com>
27331
27332         * threads.c
27333         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27334         return createdNew.  Fixes bug 60412.
27335
27336         * threads-types.h: 
27337         * icall.c: Add createdNew parameter to CreateMutex icall
27338
27339 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27340
27341         * reflection.c, object-internals.h: save default value in params.
27342
27343 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27344
27345         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27346         no need to build a new path combining that with the application base.
27347         Fixes bug #60442.
27348
27349 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27350
27351         * reflection.c: fixed minor standard compliance issues.
27352
27353 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27354
27355         * reflection.c: fixed issue with encoding some custom attributes
27356         (arrays in properties and fields, bug #60411).
27357
27358 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27359
27360         * reflection.c: fix start address when copying the public key token.
27361
27362 2004-06-23  Martin Baulig  <martin@ximian.com>
27363
27364         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27365         the `exc' object in a static object to put it into the GC's root set.
27366
27367 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27368
27369         * reflection.c: make mono_reflection_setup_internal_class ()
27370         callable a second time to setup a new parent class.
27371
27372 2004-06-23  Dick Porter  <dick@ximian.com>
27373
27374         * threads.c: Check for WAIT_IO_COMPLETION return values.
27375
27376 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27377
27378         * appdomain.c: Removed the g_free on the public key token. Now copy 
27379         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27380         * assembly.c: Added public key token string value when loading 
27381         assemblies. Fix bug #60439.
27382         * icall.c: Added missing informations (like public key) in 
27383         GetReferencedAssemblies. Fix #60519.
27384         * image.h: Changed definition for public key token from const char*
27385         public_tok_value to guchar public_key_token [17];
27386         * reflection.c: Updated for changes to public key token.
27387
27388 2004-06-22  Lluis Sanchez Gual
27389
27390         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27391         for the field in base classes.
27392
27393 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27394
27395         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27396         mark headers as not supported, they are installed only for use by the
27397         debugger.
27398
27399 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27400
27401         * *.c, *.h: avoid namespace pollution in public headers.
27402
27403 2004-06-21  Martin Baulig  <martin@ximian.com>
27404
27405         * exception.c (mono_get_exception_security): It's in
27406         "System.Security", not in "System".
27407
27408         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27409         the exception classes.
27410
27411 2004-06-21  Martin Baulig  <martin@ximian.com>
27412
27413         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27414         Protect the exception object from being finalized.
27415
27416 2004-06-21  Martin Baulig  <martin@ximian.com>
27417
27418         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27419         public function.
27420
27421 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27422
27423         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27424         if it was not loaded before. Fix parts of #60439.
27425
27426 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27427
27428         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27429         code that was broken since Ben's change: wrappers are now
27430         dependent on the method signature only again.
27431
27432 2004-06-21  Martin Baulig  <martin@ximian.com>
27433
27434         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27435         added interface support.
27436
27437 2004-06-21  Martin Baulig  <martin@ximian.com>
27438
27439         * class.c (mono_vtable_get_static_field_data): New public method.
27440
27441 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27442
27443         * filewatcher.c : Windows build fix to be compliant with API changes.
27444
27445 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27446
27447         * class.h, class.c: more accessors.
27448         * metadata.h, metadata.c: prepare for hiding MonoType and
27449         MonoMethodSignature: people should use the accessors from now on
27450         outside of the tree.
27451
27452 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27453
27454         * *.c, *.h: more API cleanups.
27455
27456 2004-06-18  Jackson Harper  <jackson@ximian.com>
27457
27458         * assembly.c: Trace loading assemblies.
27459         * loader.c: Trace loading native libraries.
27460         * mono-config.c: Trace loading config files.
27461         
27462 2004-06-18  Dick Porter  <dick@ximian.com>
27463
27464         * locales.c: Tell ICU the lengths of strings, it can cope with
27465         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27466
27467 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27468
27469         * image.c: swapped name/filename;
27470
27471 2004-06-18  Martin Baulig  <martin@ximian.com>
27472
27473         * mono-debug-debugger.c (write_class): Write the parent class at
27474         the end of the header.
27475
27476 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27477
27478         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27479
27480 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27481
27482         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27483         (bundle_obj): New conditional define.
27484         (BUILT_SOURCES): Remove.
27485         ($(bundle_srcs)): Make parallel-make safe.
27486         (libmonoruntime_la_LIBADD): Make unconditional.
27487         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27488         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27489
27490 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27491
27492         * culture-info-tables.h: It was inconsistent with the latest
27493           supp info files.
27494
27495 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27496
27497         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27498         be loaded.
27499
27500         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27501         with gcc 2.95.
27502
27503 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27504
27505         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27506         cleaned up public header threads.h.
27507
27508 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27509
27510         * Makefile.am, *.c, *.h: more API cleanups.
27511
27512 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27513
27514         * Makefile.am: removed monosn from compilation.
27515         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27516         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27517         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27518         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27519         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27520         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27521
27522 2004-06-15  Jackson Harper  <jackson@ximian.com>
27523
27524         * assembly.c: Make locales lower case when searching the GAC for
27525         assemblies. gacutil will always make locales lowercase when
27526         installing so this effectively makes them case insensitive.
27527         
27528 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27529
27530         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27531         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27532           parameter which allows to choose whether the wait can be interrupted or 
27533           not. Also added the method mono_monitor_enter(), which locks the monitor
27534           using an infinite wait and without allowing interruption.
27535           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27536           interrupted.
27537         * object.h: Added new fields in MonoThread. suspend_event holds the event
27538           used to susped/resume the thread. synch_lock is the lock object to use for
27539           modifying the thread state.
27540         * threads.c: Use the new synch_lock object for locking, instead of "this",
27541           which can generate deadlocks.
27542           Moved thread state change in Thread.Sleep and Thread.Join from managed
27543           to unmanaged code. This avoids a deadlock when the thread was suspended
27544           just after acquiring the thread lock.
27545           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27546           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27547           which is not fully implemented in the io-layer.
27548         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27549
27550 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27551
27552         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27553         threads-types.h: more API cleanups.
27554
27555 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27556
27557         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27558         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27559         threadpool.c, threads.c: first pass at the exported API cleanup.
27560
27561 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27562
27563         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27564
27565 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27566
27567         * icall.c: added internalGetHome.
27568
27569 2004-06-14  Dick Porter  <dick@ximian.com>
27570
27571         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27572         possible to return successfully when '.' or '..' were the only
27573         entries in a directory, but were skipped.  The MonoIOStat was not
27574         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27575         Fixes bug 59574.
27576
27577 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27578
27579         * reflection.c: make binaries run on .Net 1.1 by default.
27580
27581 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27582
27583         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27584
27585 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27586
27587         * marshal.c: keep track of struct size with explicit layout
27588         (bug #59979).
27589
27590 2004-06-12  Martin Baulig  <martin@ximian.com>
27591
27592         * mono-debug-debugger.c: Comment out a debugging g_message().
27593
27594 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27595
27596         * reflection.c, reflection.h: do not free custom attrs that are cached.
27597         * icall.c: use braces to make code clearer.
27598
27599 2004-06-11  Martin Baulig  <martin@ximian.com>
27600
27601         * class.h (MonoInflatedField): New type.
27602         (MonoClassField): Replaced `MonoType *generic_type' with
27603         `MonoInflatedField *generic_info'.
27604
27605         * icall.c
27606         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27607
27608 2004-06-11  Martin Baulig  <martin@ximian.com>
27609
27610         * reflection.c (mono_image_create_method_token): Correctly encode
27611         varargs methods.
27612
27613 2004-06-11  Martin Baulig  <martin@ximian.com>
27614
27615         * metadata.c (mono_metadata_parse_method_signature): When parsing
27616         a MethodDef which has VarArgs, also set sentinelpos if we don't
27617         have any parameters.
27618
27619 2004-06-11  Martin Baulig  <martin@ximian.com>
27620
27621         * verify.c (mono_method_verify): In CEE_CALL, use
27622         mono_method_get_signature() to get the method's signature, unless
27623         we're a PInvoke method.
27624
27625 2004-06-10  Jackson Harper  <jackson@ximian.com>
27626
27627         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27628         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27629         logical name as the supplied path is just a prefix to the gac not
27630         the direct path to it.
27631         
27632 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27633
27634         * reflection.c: make the token for a created method match
27635         the token of the MethodBuilder it was created from
27636         (IKVM requires this behaviour now).
27637
27638 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27639
27640         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27641         reflection.c, socket-io.c: leak fixes.
27642
27643 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27644
27645         * icall.c: handle sentinel pos in vararg methods in position different
27646         from 0.
27647
27648 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27649
27650         * culture-info-tables.h: freshly generated.
27651
27652 2004-06-09  Martin Baulig  <martin@ximian.com>
27653
27654         * loader.c (mono_get_method_constrained): Call `mono_class_init
27655         (constrained_class)'.   
27656
27657 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27658
27659         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27660         any methods. Fixes #59629.
27661
27662 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27663
27664         * culture-info-tables.h: reflecting locale-builder updates.
27665
27666 2004-06-08  Dick Porter  <dick@ximian.com>
27667
27668         * object.h:
27669         * locales.c: Fixed compile warnings, including a real bug in
27670         CompareInfo_internal_compare.
27671         
27672 2004-06-08  Dick Porter  <dick@ximian.com>
27673
27674         * locales.c
27675         (ves_icall_System_Globalization_CompareInfo_internal_index):
27676         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27677         Double-check the resuls of usearches, because ICU currently
27678         ignores most of the collator settings here.  Fixes bug 59720.
27679         
27680 2004-06-08  Dick Porter  <dick@ximian.com>
27681
27682         * locales.c
27683         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27684         Fix memory leak and segfault-causing typo.  No idea how this one
27685         lasted so long without being noticed.
27686
27687 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27688
27689         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27690         any methods. Fixes #59629.
27691
27692 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27693
27694         * assembly.c:
27695         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27696         own the critical section before). Removed dead code (that's done
27697         in the preload hook).
27698
27699         (mono_assembly_load_with_partial_name): call the preload hook.
27700
27701 2004-06-08  Martin Baulig  <martin@ximian.com>
27702
27703         * metadata.c (mono_metadata_signature_alloc): Default
27704         `sentinelpos' to -1.
27705
27706         * reflection.c (mono_image_get_array_token): Likewise.
27707
27708 2004-06-08  Martin Baulig  <martin@ximian.com>
27709
27710         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27711
27712         * metadata.c (mono_metadata_parse_method_signature): When parsing
27713         a MethodDef which has VarArgs, set sentinelpos.
27714
27715         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27716         `gint16' since we're using -1 for non-varargs methods.
27717
27718         * reflection.c
27719         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27720         (method_encode_signature): Added varargs support.
27721         (method_builder_encode_signature): Likewise.
27722         (mono_image_get_varargs_method_token): New static method.
27723         (mono_image_create_method_token): New public method; this is
27724         called via an icall instead of mono_image_create_token() when
27725         calling a varargs method.       
27726
27727 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27728
27729         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27730
27731 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27732
27733         * culture-info-tables.h : Reflecting the latest locale-builder that
27734           fixed empty array representation ({} to {0}).
27735
27736 2004-06-07  Jackson Harper  <jackson@ximian.com>
27737
27738         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27739         looking up extra gac paths. This allows MONO_GAC_PATH to act
27740         exactly like a prefix.
27741         
27742 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27743
27744         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27745         type name before modifying it. Fixes #59405.
27746
27747 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27748
27749         * culture-info.h: added fields for "all datetime patterns".
27750         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27751           _construct_datetime_format ()): fill xxx_patterns fields.
27752         * object.h: added fields for "all datetime patterns" to
27753           MonoDateTimeFormatInfo.
27754         * culture-info-tables.h: reflecting locale-builder updates.
27755
27756 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27757
27758         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27759         the event has no add and remove methods. Fixes #59629.
27760
27761 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27762
27763         * object.c: Fixed possible integer overflow when allocating large
27764         strings.
27765
27766 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27767
27768         * culture-info-tables.h: reflecting locale-builder updates.
27769
27770 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27771
27772         * culture-info-tables.h: reflecting locale-builder updates.
27773
27774 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27775
27776         * culture-info-tables.h: reflecting locale-builder updates.
27777
27778 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27779
27780         * threads.c: Made Thread.Sleep abortable.
27781
27782 2004-06-02  Martin Baulig  <martin@ximian.com>
27783
27784         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27785
27786         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27787
27788 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27789
27790         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27791
27792 2004-05-30  Jackson Harper  <jackson@ximian.com>
27793
27794         * reflection.c: Do not hardcode assembly versions or public key
27795         tokens anymore. All of this except the corlib section was dead
27796         code anyways.
27797         
27798 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27799
27800         * object.c (mono_runtime_invoke_array): Automatically create boxed
27801         objects for byref valuetypes if needed. Fixes #59300.
27802         
27803         * object.c (mono_method_return_message_restore): Handle 
27804         MONO_TYPE_OBJECT as well.
27805
27806 2004-05-28  Jackson Harper  <jackson@ximian.com>
27807
27808         * reflection.c: The modified type encoding was causing build
27809         problems. Reverted for now.
27810         
27811 2004-05-28  Jackson Harper  <jackson@ximian.com>
27812
27813         * reflection.c/h: Take an assembly ref so that we dont create
27814         fully qualified names when encoding types in the same assembly as
27815         the custom attribute being emitted.
27816         * appdomain.c: Increment version number.
27817         
27818 2004-05-26  Duncan Mak  <duncan@ximian.com>
27819
27820         * icall.c
27821         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27822         Set the full version number (major, minor, build, revision).
27823
27824 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27825
27826         * marshal.c (emit_struct_conv): increment src/dst after blit
27827         (mono_marshal_get_managed_wrapper,
27828         mono_marshal_get_native_wrapper): make sure we have marshalling
27829         info before marshalling params (info computation affects
27830         blittable)
27831
27832         * class.c (class_compute_field_layout): correctly deal with
27833         blittable
27834         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27835         value types (as per what windows dows by default)
27836         (mono_class_setup_mono_type): System.ValueType is blittable
27837         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27838         blittable
27839
27840         * marshal.c (mono_marshal_load_type_info): flag types  as
27841         non-blittable if the native layout doesn't match the managed
27842         layout
27843
27844 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27845
27846         * appdomain.c: don't add stuff in the private search path that is
27847         above the application base. If application base is not set, there's
27848         no private search path.
27849
27850 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27851
27852         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27853         byref struct arguments in native->managed marshalling.
27854
27855 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27856
27857         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27858         cache methods using signature (special case for methods
27859         that are value type or string class)
27860         
27861         * image.c (mono_image_close): clean up allocated GSList's
27862         in runtime_invoke_cache.
27863
27864 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27865
27866         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27867         there's no MONO_CFG_DIR environment variable defined.
27868
27869 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27870
27871         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27872
27873 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27874
27875         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27876           is interrumped.
27877         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27878           before waiting for it, and call CloseHandle after the wait to unref it.
27879           This will make sure that handles are not disposed too early.
27880
27881 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27882
27883         * appdomain.c:
27884         * appdomain.h:
27885         * icall.c: removed
27886         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27887         needed now.
27888
27889         * object.c: se the application_base only for the domain that runs
27890         Main. Fixes bug #59216,
27891
27892 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27893
27894         * appdomain.c:
27895         * object.c: only the domain in which Main is run have
27896         SetupInformation.ConfigurationFile set, so moved a few lines from
27897         appdomain.c to object.c.
27898
27899 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27900
27901         * appdomain.c: we tried to load [name].(dll|exe), but according
27902         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27903         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27904         There's a test case attached to bug #58922.
27905
27906 2004-05-27  Dick Porter  <dick@ximian.com>
27907
27908         * icall.c:
27909         * file-io.c: Implemented icalls for locking and unlocking regions
27910         in a file.
27911         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27912         FALSE on error (fixes both compiler warning and real bug.)
27913
27914 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27915
27916         * culture-info-tables.h: reflecting locale-builder updates.
27917
27918           (Added missing ChangeLog entry for 05/26)
27919
27920 2004-05-27  Jackson Harper  <jackson@ximian.com>
27921
27922         * locales.c: Fix some cut and paste errors.
27923         
27924 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27925
27926         * mono-config.c: set the correct path for config. directory on windows.
27927
27928 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27929
27930         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27931           on win32.
27932
27933 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27934
27935         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27936         from pinvoke functions.
27937         
27938         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27939
27940 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27941
27942         * culture-info-tables.h: reflecting locale-builder updates.
27943
27944 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27945
27946         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27947         #59086.
27948
27949 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27950
27951         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27952         * icall.c: Modified icalls for RNG.
27953         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27954         Windows (CryptoAPI).
27955
27956 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27957
27958         * locales.c: Fix build.
27959
27960 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27961
27962         * culture-info-tables.h: reflecting locale-builder updates.
27963
27964 2004-05-25  Jackson Harper  <jackson@ximian.com>
27965
27966         * locales.c: When creating the current culture use the $LANGs
27967         specific culture. So DateTimeFormat and NumberFormat entries are created.
27968         
27969 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27970
27971         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27972         a char array as parameter.
27973
27974 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27975
27976         * image.c: In mono_image_open(), always use an absolute path name to
27977           look for already loaded images.
27978
27979 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27980
27981         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27982         missing in the windows build (like older cygwin include files).
27983
27984 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27985
27986         * icall.c: Fixed check for possible integer overflow in Buffer_
27987         BlockCopy icall. Replaced comments style // by /* */.
27988
27989 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27990
27991         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27992         
27993         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27994         check after MONO_VTADDR. Fixes pinvoke2.exe.
27995
27996         * marshal.h marshal.c metadata.h: Add beginnings of support for
27997         ftnptr -> delegate marshalling.
27998
27999 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
28000
28001         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
28002         * threads.c: Fix warnings.
28003
28004 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
28005
28006         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
28007         * icall.c: Registered icalls for Suspend and Resume.
28008         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
28009           Thread.Abort.
28010         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
28011         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
28012         * process.c: Use WaitForSingleObjectEx.
28013         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
28014           checkpoints.
28015         * threads.c, threads.h: Make use of new Ex wait methods. Improved
28016           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
28017           for Suspend and Resume. Added new mono_thread_stop, used for stoping
28018           background threads. Added basic support for Abort in Windows.
28019           Start new threads using a managed delegate invoke wrapper. This wrapper
28020           has an interruption checkpoint that is needed since an interruption
28021           can be requested before the thread leaves the unmanaged code that starts 
28022           the thread.
28023         * marshal.c: Added interruption checkpoint after every native call, and
28024           also before managed calls for wrappers called from unmanaged code to
28025           go into managed code.
28026         * object.h: Added new field in MonoThread to keep track of interruption
28027           requests.
28028
28029 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
28030
28031         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
28032         calls.
28033
28034 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28035
28036         * appdomain.c:
28037         * assembly.c:
28038         * gc.c:
28039         * locales.c:
28040         * mono-config.c:
28041         * rand.c: getenv -> g_getenv (windows!)
28042
28043         * process.c: complete_path is also used on non-windows platforms.
28044
28045 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28046
28047         * icall.c: new signature for Process_Start.
28048
28049         * process.[ch]: new signature for Process_Start. If we're on windows
28050         and UseShellExecute is false, we have to search for the program by
28051         ourselves if we don't get a full path.
28052
28053 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
28054
28055         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
28056         marshalling and call CleanUpNativeData if needed. Fixes #58646.
28057
28058 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28059
28060         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
28061         Fixes bug #58373.
28062
28063 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28064
28065         * process.c: use double quotes to quote program name and arguments on
28066         windows. Fixes bug #58575.
28067
28068 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28069
28070         * file-io.c: don't return "." and ".." when using windows Find*File.
28071
28072 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
28073
28074         * marshal.c: Don't pass wrappers to message init because method 
28075         addressed used to lookup metadata. part of remoting[2|3] fix.
28076
28077 2004-05-15  Jackson Harper  <jackson@ximian.com>
28078
28079         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
28080         path is essentially the same as MONO_PATH except that it points to
28081         GACs instead of lib directories.
28082         * loader.h: The user gac is gone so we dont need function to
28083         enable/disable it.
28084         * mono-config.c: user gac option is now gone.
28085         
28086 2004-05-15  Jackson Harper  <jackson@ximian.com>
28087
28088         * culture-info.h: Make defines more consistent, add calendar data
28089         to the culture info table.
28090         * culture-info-tables.h: Add basic calendar data. Basically
28091         everyone gets default gregorian until all the data is
28092         updated.
28093         * locales.c: Use the new consistent defines. Set calendar data for
28094         culture info objects.
28095         * object.h: add a field for calendar data to CultureInfo
28096         
28097 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
28098
28099         * image.c: image->runtime_invoke_cache is keyed on signatures now.
28100         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
28101         a signature.
28102         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
28103         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
28104         an extra param that is the pointer of the method to invoke. The IL for
28105         the invoke method is no longer specific to the method, but to the
28106         signature of the method. Thus, we can share the same code for multiple
28107         methods. This reduces the number of methods that have to be compiled.
28108
28109 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
28110
28111         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
28112
28113         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
28114
28115         * icall.c: Optimize Buffer.BlockCopy.
28116
28117 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28118
28119         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
28120         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
28121         quote). Changed them to "MMMM yyyy".
28122
28123 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
28124
28125         * rand.c
28126         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
28127
28128 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
28129
28130         * reflection.h: Updated after changes to managed structures.
28131
28132         * appdomain.c: Bump corlib version.
28133
28134 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28135
28136         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28137         windows.
28138
28139 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28140
28141         * Makefile.am: link to ../os/libmonoos.la on windows.
28142
28143         * assembly.c:
28144                 -If MONO_DEBUG, warn about non-existing directories in
28145                 MONO_PATH.
28146                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28147                 compile time variable.
28148                 -Removed init_default_path and call mono_set_rootdir from
28149                 libmonoos.a instead (windows only).
28150
28151         * assembly.h: declare mono_assembly_getrootdir().
28152
28153         * domain.c:
28154         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28155
28156         * loader.c: s/getenv/g_getenv/
28157
28158 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28159
28160         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28161
28162         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28163
28164         * metadata.h: Add new marshalling conversions.
28165
28166         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28167         function.
28168
28169         * reflection.c (mono_reflection_get_type): Lookup the type in all
28170         modules of a multi-module assembly. Fixes #58291.
28171
28172 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28173
28174         * threads.c: Before aborting a background, set the StopRequested
28175         state.  This avoids throwing the Abort exception.
28176         In mono_thread_manage, don't continue with the shutdown until all
28177         aborted threads have actually stopped.
28178
28179 2004-05-10  Jackson Harper  <jackson@ximian.com>
28180
28181         * locales.c: Remove the modifier from culture names.
28182         
28183 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28184
28185         * Makefile.am: monosn is not installed any more. It has been deprecated
28186         in favor of sn.
28187
28188 2004-05-07  Jackson Harper  <jackson@ximian.com>
28189
28190         * locales.c
28191         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28192         Fix array construction, add bailout if the length is 0.
28193
28194 2004-05-07  Dick Porter  <dick@ximian.com>
28195
28196         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28197         machine doesn't have a DNS entry.  Patch by Urs Muff
28198         (umuff@quark.com), fixes bug 57928.
28199
28200 2004-05-06  Jackson Harper  <jackson@ximian.com>
28201
28202         * reflection.c: Handle null PublicTokens properly. alloc mem for
28203         assembly names culture so we dont crash when freeing it.
28204         
28205 2004-05-06  Jackson Harper  <jackson@ximian.com>
28206
28207         * assembly.c: Check the usergac when loading with partial names.
28208         
28209 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28210
28211         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28212         does nothing for now (not required for Linux/Windows) but the class
28213         library can call it (and a newer or modified runtime could need it).
28214         * icall.c: Registred icall.
28215
28216 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28217
28218         * loader.c: prints a message on module loading error we set MONO_DEBUG
28219         environment variable.
28220
28221 2004-05-05  Jackson Harper  <jackson@ximian.com>
28222
28223         * appdomain.c: Handle PublicKeyToken=null properly.
28224         
28225 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28226
28227         * environment.c|h: Added icall ves_icall_System_Environment_
28228         GetOSVersionString to get the current OS version as a string.
28229         * icall.c: Registred icall.
28230
28231 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28232
28233         * object.c: in mono_object_get_virtual_method(), take into account that
28234         non-virtual methods don't have a slot in the vtable. Check needed when
28235         the object is a proxy.
28236
28237 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28238
28239         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28240         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28241
28242         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28243
28244         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28245         passed when a valuetype is expected.
28246
28247         * object.c (mono_unhandled_exception): Only set the exit code if the
28248         exception happens in the main thread. Fixes thread5.exe.
28249
28250         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28251         invalid names. Fixes #58047.
28252
28253 2004-05-03  Jackson Harper  <jackson@ximian.com>
28254
28255         * assembly.c: This line was committed accidently and is unneeded.
28256         
28257 2004-05-03  Jackson Harper  <jackson@ximian.com>
28258
28259         * icall.c: Add new icall for Assembly::LoadWithPartialName
28260         * assembly.c/.h: new function that probes the GAC to load partial
28261         assembly names by Paolo Molaro.
28262         
28263 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28264
28265         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28266         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28267         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28268         full type name.
28269
28270 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28271
28272         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28273         * reflection.c: fix bug when parsing a full type name and Version is not
28274         the last thing in the string.
28275
28276 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28277
28278         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28279         crashes when it is freed.
28280
28281 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28282
28283         * assembly.c: print the compat warning to stderr.
28284
28285 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28286
28287         * assembly.c (mono_assembly_load_references): Add a compatibility
28288         hack to run old applications that might be still referencing the
28289         3300-based assemblies, only do this for System.xxx.
28290
28291 2004-05-01  Jackson Harper  <jackson@ximian.com>
28292
28293         * appdomain.c: If the culture is neutral we set it to "".
28294         
28295 2004-04-29  Jackson Harper  <jackson@ximian.com>
28296
28297         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28298
28299 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28300  
28301         * string-icalls.c: added low overhead function for copying chars
28302         * icall.c: added needed icall for the above function
28303  
28304 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28305
28306         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28307         Environment.GetLogicalDrives.
28308
28309 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28310
28311         * rand.c: try and talk to egd or prngd
28312         for random bytes if opening devices fail.
28313
28314 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28315
28316         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28317         alignment for the type using the native alignment of its members 
28318         instead of using klass->min_align.
28319
28320         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28321
28322 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28323
28324         * file-io.c:
28325         * socket-io.c: added check for sys/aio.h.
28326
28327 2004-04-28  Dick Porter  <dick@ximian.com>
28328
28329         * threads.c: Don't abort a thread thats already aborting, when
28330         terminating everything.
28331
28332 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28333
28334         * icall.c: added 2 new async calls for Socket.
28335
28336         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28337         IO on *nix systems.
28338
28339         * threadpool.c: removed unused variable.
28340
28341 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28342
28343         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28344
28345 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28346
28347         * locales.c: put back string_invariant_tolower () and
28348         string_invariant_toupper ().
28349
28350 2004-04-26 David Waite <mass@akuma.org>
28351
28352         * file-io.h:
28353         * socket-io.h:
28354         * threads.h:
28355         * unicode.h: remove comma from end of enumeration declarations
28356
28357 2004-04-26 David Waite <mass@akuma.org>
28358
28359         * debug-mono-symfile.h:
28360         * decimal.c:
28361         * mono_debug.h:
28362         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28363
28364
28365 2004-04-26  Jackson Harper  <jackson@ximian.com>
28366
28367         * appdomain.c: Increment version number.
28368         
28369 2004-04-26  Jackson Harper  <jackson@ximian.com>
28370
28371         * appdomain.c: Set assembly references public token value when
28372         PublicKeyToken is specified, not the hash_value. Free public token
28373         values when free assembly name data. Previously the public key
28374         token was hex decoded, however we are using hex encoded public key
28375         tokens, so this is not neccasary.
28376         * assembly.c: Lookup assemblies in the gac if their public token
28377         value is set. Add function to allow enabling user gac
28378         lookups. Specify whether or not the assembly was loaded from the
28379         GAC. Compare full assembly names when checking the cache for
28380         assemblies (Temporarily disabled see comment in code). Remove
28381         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28382         specifies trace-loader they get extra info to stdout on the
28383         loading of assemblies.
28384         * image.h: Add a field for an assembly references public token
28385         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28386         whether an assembly has been loaded from the GAC.
28387         * image.c: Remove a corlib -> mscorlib name mapping.
28388         * loader.h: Add function to enable/disable the user gac.
28389         * mono-config.c: Check if the usergac is enabled in the config
28390         file.
28391         * icall.c: New icall to determine whether or not an assembly has
28392         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28393         * tabldefs.h: Add constant for assemblyref flag that specifies a
28394         full public key is used instead of a public token.
28395         * reflection.c: Remove mscorlib -> corlib mappings. Set
28396         PublicTokenValue instead of hash value. This value is a hex
28397         string so it does not need to be expanded.
28398
28399 2004-04-26  Martin Baulig  <martin@ximian.com>
28400
28401         * mono-debug-debugger.c (mono_debugger_initialize): Set
28402         `mono_debugger_initialized' before calling mono_debug_lock().
28403
28404 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28405
28406         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28407           InternalToUpper/InternalToLower.
28408         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28409           removed invariant culture shortcut.  This is now done in managed code.
28410         * locales.c: (string_invariant_toupper/tolower) removed.
28411
28412 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28413
28414         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28415         Added Poll internal call.
28416
28417         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28418         call for Poll. Select was too heavy for polling a single socket.
28419
28420         * threadpool.[ch]: added mono_threadpool_cleanup.
28421         * threads.c: use it. Don't use Thread_Abort on windows.
28422
28423 2004-04-23  Martin Baulig  <martin@ximian.com>
28424
28425         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28426
28427 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28428
28429         * icall.c: Registred new icalls for key pair protection and added an
28430         icall for Environment.GetFolderPath on Windows.
28431         * security.c|h: Added new icalls for key pair protection.
28432
28433 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28434
28435         * socket-io.c: don't display the non-supported family warning for known
28436         families. Now this is not displayed on windows when checking support
28437         for IPv4/IPv6.
28438
28439 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28440
28441         * class.c: don't display the layout warning for static fields.
28442
28443 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28444
28445         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28446         * locales.c, locales.h: Added new icalls for culture-specific
28447         Char.ToLower and Char.ToUpper.
28448
28449 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28450
28451         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28452         by David Waite.
28453
28454 2004-04-20  Martin Baulig  <martin@ximian.com>
28455
28456         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28457         of the type name before passing it to mono_reflection_type_from_name().
28458
28459 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28460
28461         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28462         encodings here. Fixes #56965.
28463
28464 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28465
28466         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28467         fix test on strstr result not that I can see anything that
28468         relies on the result.
28469
28470 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28471
28472         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28473         Fixes #57081.
28474
28475         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28476
28477         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28478         function to determine which marshalling to use for strings. Fixes
28479         #56965.
28480
28481         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28482
28483         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28484
28485 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28486
28487         * icall.c: #include mono-config.h
28488
28489 2004-04-15  Jackson Harper  <jackson@ximian.com>
28490
28491         * culture-info-tables.h: Fix date formats for en-US culture.
28492         
28493 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28494
28495         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28496         ThreadPool.SetMinThreads.
28497         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28498         ThreadPool.SetMinThreads.
28499
28500 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28501
28502         * mono-config.c: also load the .config file in the directory
28503         where the assembly was found.
28504
28505 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28506
28507         * assembly.c: load per-assembly config files.
28508         * icall.c: decrapified code to get the config dir and moved to
28509         mono-config.c.
28510         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28511         per-assembly config files. When doing a dll map lookup give precedence
28512         to the per-assembly data.
28513
28514 2004-04-14  Martin Baulig  <martin@ximian.com>
28515
28516         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28517         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28518         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28519
28520         * mono-debugger-debugger.c: While the debugger is locked, remember
28521         whether the symbol tables have changes and send one single
28522         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28523
28524 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28525
28526         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28527
28528         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28529         function.
28530
28531         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28532         account when marshalling string arrays. Fixes #56965.
28533
28534 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28535
28536         * icall.c: Add new icalls mapping for security.
28537         * security.c|h: Add internal calls for WindowsIdentity,
28538         WindowsImpersonationContext and WindowsPrincipal.
28539
28540 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28541
28542         * class.c: Added comment to ensure the System.MonoDummy class
28543         is removed when no longer necessary
28544
28545 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28546
28547         * appdomain.c: Pass arguments to the bootstraping exceptions to
28548         minimize JITed methods at boot
28549
28550         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28551         second string to be null.
28552
28553         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28554         Change the protocol to minimize the JIT methods at startup.  Now
28555         it Returns the internal codepage, if the value of "int_code_page"
28556         is 1 at entry, and we can not compute a suitable code page
28557         number, returns the code page as a string.
28558
28559 2004-04-13  Jackson Harper  <jackson@ximian.com>
28560
28561         * culture-info-tables.h: Fix number of decimal digits for all
28562         english locales.
28563
28564 2004-04-13  Jackson Harper  <jackson@ximian.com>
28565
28566         * icall.c: Clairfy out of sync error message. It is not always
28567         your corlib that is out of sync.
28568
28569 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28570
28571         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28572         properties when only the set accessor is overriden. Fixes #55874.
28573
28574 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28575
28576         * assembly.c (mono_assembly_load_references): Make this thread safe.
28577         Fixes #56327.
28578
28579 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28580
28581         * monosn.c: Add missing initialization calls.
28582
28583 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28584
28585         * locales.c:
28586         ves_icall_System_Globalization_CultureInfo_construct_number_format
28587         Fix g_assert so it compiles on fussier compilers re int/ptr
28588         mismatch
28589
28590 2004-04-08  Dick Porter  <dick@ximian.com>
28591
28592         * socket-io.h:
28593         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28594         53992.  Also rearrange the code so that the internal calls return
28595         an error value and exceptions are thrown from managed code.
28596
28597         * icall.c: Add type info to the socket icalls.
28598
28599 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28600
28601         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28602         owes me a beer.
28603
28604 2004-04-07  Martin Baulig  <martin@ximian.com>
28605
28606         * class.c (mono_class_from_generic_parameter): Don't default
28607         `klass->parent' to `mono_defaults.object_type'.
28608
28609 2004-04-07  Martin Baulig  <martin@ximian.com>
28610
28611         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28612         `param->pklass->reflection_info'.       
28613
28614 2004-04-07  Jackson Harper  <jackson@ximian.com>
28615
28616         * culture-info-tables.h: Fix date separator symbol.
28617         
28618 2004-04-07  Martin Baulig  <martin@ximian.com>
28619
28620         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28621         from System.Type to System.MonoType.
28622
28623 2004-04-07  Martin Baulig  <martin@ximian.com>
28624
28625         * reflection.h
28626         (MonoReflectionGenericParam): Added `has_reference_type' and
28627         `has_value_type' fields.
28628
28629         * reflection.c (mono_image_get_generic_param_info): Encode the
28630         correct flags if we have the `class' or `struct' constraint.
28631
28632 2004-04-07  Martin Baulig  <martin@ximian.com>
28633
28634         * reflection.h
28635         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28636
28637 2004-04-07  Jackson Harper  <jackson@ximian.com>
28638
28639         * appdomain.c: Revert extra patches, just wanted to bump the
28640         version number.
28641         
28642 2004-04-07  Jackson Harper  <jackson@ximian.com>
28643
28644         * Makefile.am: Add culture-info private headers.
28645         * icall.c: Add new icalls for contructing locales.
28646         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28647         * locales.h: Declare new culture info construction methods.
28648         * object.h: Add new fields used to avoid the CultureMap to
28649         MonoCultureInfo.
28650         * culture-info.h: Definition of structs used in the culture info
28651         tables.
28652         * culture-info-tables.h: Autogenerated tables that contain culture
28653         info data. This file was generated with the locale-builder tool.
28654         * appdomain.c: Incement corlib version number.
28655         
28656 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28657
28658         * appdomain.c: (mono_runtime_init) move mono_thread_init
28659         to before mono_object_new calls so critical sections
28660         are initialized before use.
28661
28662 2004-04-07  Martin Baulig  <martin@ximian.com>
28663
28664         * icall.c
28665         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28666         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28667         (ves_icall_MonoGenericParam_initialize): Removed.
28668         (monogenericparam_icalls): Removed.
28669         (generictypeparambuilder_icalls): Added new table for
28670         System.Reflection.Emit.GenericTypeParameterBuilder.
28671
28672         * reflection.c
28673         (mono_reflection_define_generic_parameter): Removed.
28674         (mono_reflection_initialize_generic_parameter): This is now called
28675         from GenericTypeParameterBuilder's .ctor.
28676
28677 2004-04-06  Martin Baulig  <martin@ximian.com>
28678
28679         * class.c (mono_class_init): Don't inflate nested classes in a
28680         generic instance.
28681         (mono_type_get_name_recurse): Include the generic arguments for
28682         generic instances and generic type declarations.
28683         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28684         (_mono_class_get_instantiation_name): Removed.
28685         (mono_class_create_generic): Always use `gklass->name' as our name.
28686
28687         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28688
28689         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28690         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28691         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28692         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28693         closed generic methods here.
28694
28695         * reflection.c
28696         (mono_reflection_generic_inst_get_nested_types): Removed.
28697         (inflate_mono_method): Copy the generic parameters from the
28698         MonoMethodHeader into out MonoGenericMethod.
28699
28700 2004-04-06  Martin Baulig  <martin@ximian.com>
28701
28702         * row-indexes.h
28703         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28704
28705         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28706
28707         * reflection.c (build_compressed_metadata): If we have any entries
28708         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28709         set the header version to 1.1.
28710
28711 2004-04-06  Martin Baulig  <martin@ximian.com>
28712
28713         * class.c (mono_class_init): If we're a generic instance,
28714         initialize our nested classes, too.
28715         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28716         suffix. 
28717
28718 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28719
28720         * process.c: quote the argument passed to the shell on windows.
28721
28722 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28723
28724         * threads.c (mono_alloc_special_static_data): Allow this to be
28725         called during startup.
28726
28727 2004-04-02  Martin Baulig  <martin@ximian.com>
28728
28729         * icall.c
28730         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28731
28732 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28733
28734         * icall.c: Fix build.
28735
28736 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28737
28738         * Makefile.am: Added security.c|h.
28739         * icall.c: Added icall for get_UserName;
28740         * security.c: New file for security related icalls. Added function
28741         get_UserName for System.Environment (fix #56144).
28742         * security.h: New. Header file for security.c
28743
28744 2004-04-02  Dick Porter  <dick@ximian.com>
28745
28746         * icall.c: Deleted the icalls that were obsoleted some time ago
28747         by the ICU string code, and which were mixed into the icall
28748         rearranging.  Fixes bug 55969.
28749
28750         * string-icalls.h: 
28751         * string-icalls.c: Deleted the code that those icalls reference.
28752
28753 2004-04-01  Martin Baulig  <martin@ximian.com>
28754
28755         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28756
28757         * class.c (mono_class_from_generic_parameter): Don't set 
28758         TYPE_ATTRIBUTE_INTERFACE.
28759         (my_mono_class_from_generic_parameter): Likewise.
28760
28761 2004-04-01  Martin Baulig  <martin@ximian.com>
28762
28763         * loader.c (find_method): Added an optional `MonoClass *ic'
28764         argument to search in a specific interface.
28765         (mono_get_method_constrained): New public function.
28766
28767 2004-04-01  Martin Baulig  <martin@ximian.com>
28768
28769         * reflection.c (mono_image_get_generic_field_token): Use the
28770         `handleref' cache here.
28771
28772 2004-04-01  Martin Baulig  <martin@ximian.com>
28773
28774         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28775
28776         * reflection.c (create_generic_typespec): Use the `typespec' hash
28777         here, not the `typeref' one.    
28778
28779 2004-04-01  Martin Baulig  <martin@ximian.com>
28780
28781         * class.c (mono_class_inflate_generic_type): Moved the
28782         functionality into a new static inflate_generic_type() which
28783         returns NULL if it didn't do anything.  Only increment the
28784         `mono_stats.inflated_type_count' if we actually inflated
28785         something.
28786         (mono_class_get_full): Check the classes type to see whether we
28787         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28788
28789 2004-04-01  Jackson Harper  <jackson@ximian.com>
28790
28791         * reflection.c: Set culture for assembly references.
28792         
28793 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28794
28795         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28796
28797 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28798
28799         * assembly.c:
28800         (do_mono_assembly_open): the critical section also covers
28801         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28802
28803 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28804
28805         * threads.c:
28806         (mono_manage_threads): abort the background threads when finishing.
28807         Fixes bug #47232.
28808
28809 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28810
28811         * gc.c: only close the done_event handle if there was no timeout.
28812         C-ified comments.
28813
28814 2004-03-30  Martin Baulig  <martin@ximian.com>
28815
28816         * icall.c (icall_entries): It's called "System.Activator", not
28817         "System.Activation".    
28818
28819 2004-03-30  Martin Baulig  <martin@ximian.com>
28820
28821         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28822         (mono_class_create_from_typespec): Likewise.
28823
28824 2004-03-30  Martin Baulig  <martin@ximian.com>
28825
28826         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28827         `has_ctor_constraint' and `initialized'.
28828
28829 2004-03-30  Martin Baulig  <martin@ximian.com>
28830
28831         * reflection.c (encode_new_constraint): New static function to add
28832         the constructor constraint attribute to a type parameter.
28833         (encode_constraints): Call encode_new_constraint() if necessary.
28834
28835         * reflection.h
28836         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28837
28838         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28839         
28840 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28841
28842         * reflection.c, icall.c: add support for pinning variables. 
28843
28844 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28845
28846         * marshal.c (mono_marshal_get_managed_wrapper):
28847         init bool local with zero rather than null.
28848
28849 2004-03-29  Martin Baulig  <martin@ximian.com>
28850
28851         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28852         the "official" behavior here.
28853         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28854
28855 2004-03-29  Martin Baulig  <martin@ximian.com>
28856
28857         * icall.c: Reflect latest API changes.
28858
28859 2004-03-29  Martin Baulig  <martin@ximian.com>
28860
28861         * loader.c (mono_get_method_from_token): Also call
28862         mono_metadata_load_generic_params () for abstract and interface
28863         methods; replace the type arguments in the method signature with
28864         the ones which are loaded from the metadata.
28865
28866 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28867
28868         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28869         of the lock is not the current thread. MS.NET don't do it, in spite of
28870         what the documentation says. See bug #56157.
28871
28872 2004-03-28  Martin Baulig  <martin@ximian.com>
28873
28874         * class.c (mono_class_init): Don't call init_properties() and
28875         init_events() for generic instances; set `prop->parent' when
28876         inflating properties.
28877
28878         * reflection.c (mono_generic_inst_get_object): Call
28879         `mono_class_init (ginst->klass)'.
28880         (mono_type_get_object): Only create a MonoGenericInst if your
28881         generic type is a TypeBuilder.
28882         (do_mono_reflection_bind_generic_parameters): Only set
28883         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28884
28885 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28886
28887         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28888         Fixes #56091.
28889
28890 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28891
28892         * icall.c: added Kill_internal icall.
28893         * process.[ch]: added Kill_internal icall.
28894
28895 2004-03-25  Martin Baulig  <martin@ximian.com>
28896
28897         * class.h (MonoStats): Added `generic_instance_count',
28898         `inflated_method_count', `inflated_type_count' and
28899         `generics_metadata_size'.       
28900
28901 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28902
28903         * reflection.c: no warnings now.
28904
28905 2004-03-25  Martin Baulig  <martin@ximian.com>
28906
28907         * class.c (mono_class_get_full): New public function; does a
28908         mono_class_get(), but also takes a `MonoGenericContext *'.
28909
28910         * loader.c (mono_field_from_memberref): Renamed to
28911         `field_from_memberref', made static and added `MonoGenericContext *'
28912         argument.
28913         (mono_field_from_token): Added `MonoGenericInst *' argument.
28914         (method_from_memberef): Likewise.
28915         (mono_get_method_from_token): Likewise.
28916         (mono_get_method_full): New public function; does a
28917         mono_get_method(), but also takes a `MonoGenericContext *'.
28918
28919         * verify.c (mono_method_verify): Get the method's generic context
28920         and pass it to mono_field_from_token(), mono_get_method_full() and
28921         mono_class_get_full().
28922
28923 2004-03-25  Martin Baulig  <martin@ximian.com>
28924
28925         * class.c (mono_class_inflate_generic_type): Take a
28926         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28927         `MonoGenericMethod *'.
28928
28929 2004-03-25  Martin Baulig  <martin@ximian.com>
28930
28931         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28932         instead of the MonoGenericMethod here.
28933
28934 2004-03-25  Martin Baulig  <martin@ximian.com>
28935
28936         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28937         each time we create a new MonoGenericInst, we also create a new
28938         context which points back to us.
28939
28940         * class.c (inflate_method): Use `ginst->context' instead of
28941         creating a new context.
28942
28943         * loader.c (method_from_memberref): Use
28944         `klass->generic_inst->context' instead of creating a new context.
28945
28946 2004-03-25  Martin Baulig  <martin@ximian.com>
28947
28948         * class.h (MonoGenericContext): New struct.
28949         (MonoGenericMethod): Removed `generic_inst'.
28950
28951         * class.c (mono_class_inflate_generic_method): Take a
28952         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28953
28954 2004-03-25  Martin Baulig  <martin@ximian.com>
28955
28956         * loader.h (MonoMethodInflated): New typedef.
28957
28958         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28959         `generic_param_count' consume just 30 bits, added `is_inflated'
28960         and `has_type_parameters' flags (one bit each).
28961
28962         * class.c (mono_class_inflate_generic_method): Create a
28963         MonoMethodInflated instead of a MonoMethodNormal and set
28964         `is_inflated' in the method signature.
28965
28966         * class.h (MonoGenericMethod): Removed `generic_method'.
28967
28968 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28969
28970         * image.c: Make sure the name of a MonoImage is always an absolute path.
28971           This fixes bug #54415.
28972
28973 2004-03-24  Martin Baulig  <martin@ximian.com>
28974
28975         * class.c (mono_class_setup_vtable): If we're a generic instance,
28976         use our generic type's vtable size.
28977
28978 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28979
28980         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28981         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28982         problems.
28983
28984 2004-03-23  Martin Baulig  <martin@ximian.com>
28985
28986         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28987         `MonoEvent *events'.
28988
28989         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28990         (typebuilder_icalls): Added "get_event_info"; calls
28991         mono_reflection_event_builder_get_event_info(). 
28992
28993         * reflection.c (mono_reflection_generic_inst_initialize): Added
28994         `MonoArray *events'.
28995         (mono_reflection_event_builder_get_event_info): New function.
28996
28997 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28998
28999         * object.h: add mono_type_initialization_init
29000
29001         * object.c (mono_runtime_class_init): 
29002         implement class constructor synchronization rules
29003         to cope with threading issues.  
29004         add mono_type_initialization_init
29005
29006         * appdomain.c (mono_runtime_init): call 
29007         mono_type_initialization_init
29008
29009         * class.h: removing initializing field from MonoVTable
29010
29011 2004-03-23  Martin Baulig  <martin@ximian.com>
29012
29013         * class.c (my_mono_class_from_generic_parameter): Use
29014         `param->name' if it's not NULL. 
29015
29016 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
29017
29018         * class.c: do not insert non-virtual methods in the vtable.
29019         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
29020         that means the method is non-virtual. This never would have
29021         happened before.
29022
29023 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
29024
29025         * profiler.c: Added lock for accessing coverage_hash.
29026
29027 2004-03-22  Martin Baulig  <martin@ximian.com>
29028
29029         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
29030         `method->method->signature->generic_param_count != 0' to make it
29031         work for interface methods.
29032
29033 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29034
29035         * process.c: quote the string passed to the shell using g_shell_quote.
29036
29037 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29038
29039         * threads.c:
29040         (mono_threads_manage): don't remove the finalizer thread and self
29041         from the threads hash table so that mono_thread_manage can be called
29042         more than once.
29043
29044 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29045
29046         * process.c: quote the arguments when UseShellExecute is true. Fixes
29047         bug #55790.
29048
29049 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29050
29051         * threads.c: set mono_thread_detach as a cleanup routine for every
29052         thread. This way it's always executed upon thread termination, either
29053         aborted or finished normally. No more xsp hangs!
29054
29055 2004-03-17  Martin Baulig  <martin@ximian.com>
29056
29057         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
29058         `int count_nested' and a `MonoType **nested'.
29059
29060         * reflection.c (mono_reflection_bind_generic_parameters): Moved
29061         most of the functionality into a new static
29062         do_mono_reflection_bind_generic_parameters() and don't take a
29063         `MonoType *nested_in' argument any more.  Don't compute nested
29064         types here.
29065         (mono_reflection_generic_inst_get_nested_types): New public method
29066         to get nested types.
29067
29068         * class.c (mono_class_create_generic): Set `klass->nested_in' if
29069         we're a nested class.
29070
29071         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
29072         mono_reflection_generic_inst_get_nested_types() to compute the
29073         nested types.
29074
29075 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29076
29077         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
29078         descriptive error message under windows.
29079         
29080 2004-03-17  Martin Baulig  <martin@ximian.com>
29081
29082         * class.c (dup_type): Added `const MonoType *original' argument;
29083         copy the attrs from the original type.
29084
29085 2004-03-17  Martin Baulig  <martin@ximian.com>
29086
29087         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
29088         `m->generic_inst_cache' here.
29089
29090 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29091
29092         * exception.h exception.c: Add stack_overflow_exception.
29093
29094 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29095
29096         * threadpool.c:
29097         (overlapped_callback): call SetEvent *after* invoking the callback.
29098         No need to call CloseHandle.
29099
29100 2004-03-16  Martin Baulig  <martin@ximian.com>
29101
29102         * reflection.c (mono_image_get_fieldref_token): Take a
29103         `MonoReflectionField *' instead of a `MonoClassField *' and a
29104         `MonoClass *'; store the `MonoReflectionField *' in the hash.
29105
29106 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29107
29108         * appdomain.c: don't add the culture to the filename we're looking for
29109         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
29110
29111 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29112
29113         * locales.c: don't ignore symbols when doing case insensitive compares.
29114         Thanks Dick! Fixes bug #54046.
29115
29116         * threads.c: surround 'threads' usage with enter/leave in
29117         mono_thread_manage.
29118
29119 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
29120
29121         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
29122         implicitly marshalled as [Out]. Fixes #55450.
29123
29124         (mono_marshal_get_runtime_invoke): Zero out the result if there is
29125         an exception.
29126
29127 2004-03-16  Martin Baulig  <martin@ximian.com>
29128
29129         * class.c (mono_class_from_generic_parameter): Use the actual
29130         parameter name. 
29131
29132 2004-03-16  Martin Baulig  <martin@ximian.com>
29133
29134         * reflection.c (type_get_signature_size): New static function.
29135         Compues the size of the type in a method signature.
29136         (method_get_signature_size): New static function; calls
29137         type_get_signature_size() to compute the actual size of the
29138         method's signature.
29139         (method_encode_signature): Use method_get_signature_size() to get
29140         the signature's size rather than using `nparams * 10'.
29141
29142 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29143
29144         * file-io.h: define here WapiOverlapped on windows. I don't want the
29145         regular OVERLAPPED one.
29146
29147         * file-io.c:
29148         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29149         Disabling AIO on windows.
29150
29151 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29152
29153         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29154         bug #55385.
29155
29156 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29157
29158         * appdomain.c: upgraded corlib version.
29159
29160         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29161         and BeginWrite. Allow opening files for asynchrnous operations.
29162
29163         * file-io.h: new struct that maps FileStreamAsyncResult.
29164         * icall.c: added new icalls.
29165         * process.[ch]: support setting child process environment variables
29166         and use the SHELL or COMSPEC when UseShellExecute is true.
29167
29168         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29169         callback for async. IO is here and also BindHandle.
29170
29171         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29172         from here.
29173
29174 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29175
29176         * reflection.c (create_custom_attr): Allow len == 0.
29177
29178         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29179         computation on big-endian machines.
29180
29181 2004-03-13  Martin Baulig  <martin@ximian.com>
29182
29183         * class.h (MonoGenericInst): Added `int count_ifaces'.
29184
29185         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29186         `ginst->count_ifaces' instead `klass->interface_count' since we
29187         may get called before the vtable is created.
29188
29189         * loader.c (mono_method_get_param_names): If we're a generic
29190         instance, return and don't initialize the class.
29191
29192         * reflection.c (mono_reflection_setup_generic_class): Don't call
29193         ensure_runtime_vtable().
29194         (mono_reflection_bind_generic_parameters): Set
29195         `ginst->count_ifaces'.
29196
29197 2004-03-11  Jackson Harper <jackson@ximian.com>
29198
29199         * icall.c:
29200         * unicode.c:
29201         * unicode.h: Remove unused System.Char icalls.
29202         
29203 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29204
29205         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29206         code when we P/Invoke the first library in Windows.Forms, instead
29207         of when we first open the assembly.
29208
29209         * assembly.c: Drop the lookup from here.
29210
29211 2004-03-10  Martin Baulig  <martin@ximian.com>
29212
29213         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29214         class for properties, fields and events.  Finally fixes #54945.
29215
29216 2004-03-10  Martin Baulig  <martin@ximian.com>
29217
29218         * metadata.c (mono_metadata_class_equal): New static function;
29219         checks whether two generic instances or two generic parameters are
29220         equal.
29221         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29222         compare classes.        
29223
29224 2004-03-10  Martin Baulig  <martin@ximian.com>
29225
29226         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29227
29228         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29229         argument and write it into the `reflection_info' field.
29230
29231         * icall.c
29232         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29233         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29234
29235 2004-03-09  Jackson Harper  <jackson@ximian.com>
29236
29237         * char-conversions.h: use 8 bits for numeric data its all we need
29238         * icall.c: numeric data is only 8 bits now.
29239
29240 2004-03-09  Martin Baulig  <martin@ximian.com>
29241
29242         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29243
29244         * class.c (init_properties, init_events): Initialize the new
29245         `parent' field.
29246
29247         * reflection.c (typebuilder_setup_properties): Likewise.
29248         (typebuilder_setup_events): Likewise.
29249
29250         * reflection.h (MonoEventInfo): Replaced `parent with
29251         `declaring_type' and `reflected_type'.
29252
29253         * icall.c (ves_icall_get_property_info): Distinguish between
29254         declaring and reflected type.
29255         (ves_icall_get_event_info): Likewise.
29256
29257 2004-03-09  Martin Baulig  <martin@ximian.com>
29258
29259         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29260         (ves_icall_Type_GetField): Correctly set field->klass.
29261
29262 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29263
29264         * loader.h: Fix warning.
29265
29266 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29267
29268         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29269         library routine if present.  Notice that it will still continue
29270         executing even if its missing, for those working on the Gtk#
29271         edition of Windows.Forms.
29272
29273         * assembly.c (do_mono_assembly_open): If loading the
29274         System.Windows.Forms call mono_loader_wini_init.
29275
29276 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29277
29278         * class.h: Added MonoRemoteClass struct.
29279         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29280         function for MonoStrings.
29281         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29282         Added internal call for getting the proxy type.
29283         * marshal.c: Get the type of transparent proxies from its remote_class.
29284         Added methods that generate the IL for type checks and casts:
29285         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29286         mono_marshal_get_proxy_cancast.
29287         * marshal.h: Declaration of the previous new methods.
29288         * object.c: Added new moethods for creating and updating MonoRemoteClass
29289         instances: mono_remote_class, mono_upgrade_remote_class, 
29290         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29291         * verify.c: FIx transparent_proxy_fields layout.
29292         * appdomain.c: Bump corlib version.
29293
29294 2004-03-04  Jackson Harper  <jackson@ximian.com>
29295
29296         * icall.c: Add icall to access char conversion tables.
29297         * char-conversions.h: Character conversion tables.
29298         * Makefile.am: Add char-conversions.h private header file.
29299         
29300 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29301
29302         * appdomain.c (unload_thread_main): Increase unloading timeout to
29303         10 sec as a temporary workaround for Nant problems.
29304
29305 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29306
29307         * gc.c: Add checks for GC_enable and GC_disable.
29308
29309         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29310         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29311         (bug #54988).
29312         
29313 2004-02-27  Martin Baulig  <martin@ximian.com>
29314
29315         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29316         `MonoReflectionType *' instead of a `MonoType *'.
29317
29318 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29319
29320         * gc.c (run_finalize): Avoid finalizing the object representing the
29321         finalizer thread.
29322         (finalizer_thread): Fix warning.
29323
29324 2004-02-25  Martin Baulig  <martin@ximian.com>
29325
29326         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29327         argument for nested types.
29328         (mono_class_create_generic): Added support for nested generictypes.
29329
29330         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29331         `GList *nested'.
29332
29333         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29334
29335         * reflection.c (method_encode_signature): Increase the minimum
29336         value of `size' from 10 to 11.
29337         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29338         and `MonoType **types' arguments instead of the `MonoArray
29339         *types'; added `MonoType *nested_in'.  Recursively instantiate
29340         nested classes. 
29341
29342 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29343
29344         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29345         stack_overflow_ex members which are used by exception handling.
29346
29347         * appdomain.c (mono_runtime_init): Initialize the new members.
29348
29349         * gc.c (mono_gc_enable): New helper function.
29350         * gc.c (mono_gc_disable): New helper function.
29351
29352 2004-02-23  Martin Baulig  <martin@ximian.com>
29353
29354         * icall.c: I must have been really stupid - make it actually work
29355         this time ;-)
29356
29357 2004-02-23  Martin Baulig  <martin@ximian.com>
29358
29359         * loader.c (method_from_memberref): Only inflate the method if
29360         it's in another klass.
29361
29362 2004-02-23  Martin Baulig  <martin@ximian.com>
29363
29364         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29365         (mono_class_init): If we're a generic instance and an interface,
29366         compute `class->interface_id'; also create `class->interfaces'
29367         here and inflate them.
29368
29369         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29370         `ginst->is_open'.
29371         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29372
29373         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29374
29375 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29376
29377         * reflection.c (method_encode_code): Improved the error message
29378         generated by the exception.
29379
29380 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29381
29382         * icall.c: Martin did not do what he said in the ChangeLog for
29383         2004-02-18, but put back the changes for properties and events.
29384         Commenting those changes out again and adding comment to bug #54518.
29385         
29386         * process.c: removed warning.
29387
29388 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29389
29390         * marshal.c (emit_struct_conv): Print an error message instead of
29391         asserting when a type does not have the StructLayout attribute.
29392
29393 2004-02-20  Martin Baulig  <martin@ximian.com>
29394
29395         * reflection.c (mono_type_get_object): Also use the cache for
29396         generic instances.
29397         (mono_reflection_bind_generic_parameters): Always compute
29398         `ginst->ifaces'.        
29399
29400 2004-02-20  Martin Baulig  <martin@ximian.com>
29401
29402         * class.h (MonoGenericMethod): Removed `klass'.
29403
29404         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29405         *klass' argument.
29406
29407 2004-02-20  Martin Baulig  <martin@ximian.com>
29408
29409         * reflection.c (method_encode_methodspec): Actually use the
29410         uninflated signature for the memberref.
29411
29412 2004-02-20  Martin Baulig  <martin@ximian.com>
29413
29414         * class.h (MonoGenericMethod): Removed `declaring'.
29415
29416         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29417         is NULL, compute it here.
29418
29419 2004-02-20  Martin Baulig  <martin@ximian.com>
29420
29421         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29422
29423         * metadata.c (mono_metadata_generic_inst_hash): New method.
29424         (mono_metadata_generic_inst_equal): New method.
29425
29426         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29427         `klass->image->generic_inst_cache' cache to avoid creating
29428         duplicate MonoGenericInst's.
29429
29430         * class.c (mono_class_inflate_generic_type): Use the cache.
29431
29432 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29433
29434         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29435
29436 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29437
29438         * icall.c: added Socket.WSAIoctl icall.
29439
29440         * socket-io.[ch]: implemented
29441         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29442
29443 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29444
29445         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29446
29447 2004-02-18  Urs C Muff  <umuff@quark.com>
29448
29449         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29450         this work on PPC and other big-endian architectures.
29451
29452         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29453         fields with an underscore to make sure they're only accessed by
29454         the read32() macro.
29455
29456 2004-02-18  Martin Baulig  <martin@ximian.com>
29457
29458         * icall.c: Put the klass->refclass changes back for methods and
29459         fields, but not for properties and events.  We're currently not
29460         distinguishing between DeclaringType and ReflectedType for
29461         properties and events, that's what caused the regressions.
29462
29463 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29464
29465         * object.c:
29466         (mono_async_result_new): the handle can be NULL.
29467
29468         * threadpool.c: Use an event instead of a semaphore, don't initialize
29469         it until needed. This saves quite a few semaphores from being created
29470         when using the threadpool.
29471
29472 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29473
29474         * object.c (mono_string_is_interned_lookup): Fix interning of long
29475         strings. Fixes #54473.
29476
29477         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29478
29479         * icall.c: Revert the klass->refclass changes since they introduce
29480         regressions (bug #54518).
29481
29482 2004-02-18  Martin Baulig  <martin@ximian.com>
29483
29484         * class.c (mono_class_init): If we're a generic instance and don't
29485         come from a TypeBuilder, inflate our members here.
29486         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29487         (mono_class_create_generic): New public method.
29488         (mono_class_initialize_generic): Removed.
29489         (get_instantiation_name): Renamed to
29490         _mono_class_get_instantiation_name() and made it public.
29491
29492 2004-02-18  Martin Baulig  <martin@ximian.com>
29493
29494         * class.c (mono_class_inflate_generic_type): Clear the new
29495         instance's `nginst->klass' when inflating a generic instance.
29496         (mono_class_is_subclass_of): Added (basic) support for generic
29497         instances.
29498
29499 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29500
29501         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29502         MonoMempool to hold compiled native code.
29503
29504 2004-02-17  Martin Baulig  <martin@ximian.com>
29505
29506         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29507         `properties'.
29508
29509         * reflection.c (mono_reflection_generic_inst_initialize): Added
29510         `MonoArray *properties' argument.
29511
29512         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29513
29514 2004-02-17  Martin Baulig  <martin@ximian.com>
29515
29516         * icall.c (ves_icall_Type_GetFields): Renamed to
29517         ves_icall_Type_GetFields_internal() and added a
29518         `MonoReflectionType *rtype' argument; pass it to
29519         mono_field_get_object() to set the field's "reflected" type.
29520         (ves_icall_Type_GetConstructors): Likewise.
29521         (ves_icall_Type_GetEvents): Likewise.
29522         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29523         argument; pass it to mono_method_get_object() to set the method's
29524         "reflected" type.       
29525
29526 2004-02-17  Martin Baulig  <martin@ximian.com>
29527
29528         * class.h (MonoDynamicGenericInst): New type.
29529         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29530
29531         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29532         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29533         (ves_icall_MonoGenericInst_GetFields): New interncall.
29534
29535         * class.c (mono_class_from_generic): Don't call
29536         mono_class_initialize_generic() if this is a dynamic instance;
29537         ie. it's being created from a TypeBuilder.
29538         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29539         `class->byval_arg.type'.
29540
29541         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29542         to `inflate_method' and made static.
29543         (mono_reflection_inflate_field): Removed.
29544         (mono_reflection_generic_inst_initialize): New public method.
29545
29546         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29547         `ctors' and `fields'; added `initialized'.
29548
29549 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29550
29551         * debug-helpers.c (mono_method_full_name): Fix output for empty
29552         namespaces.
29553
29554 2004-02-12  Martin Baulig  <martin@ximian.com>
29555
29556         * class.h (MonoClassField): Added `MonoType *generic_type'.
29557
29558         * reflection.c (mono_image_get_fieldref_token): Added support for
29559         instantiated generic types.
29560         (field_encode_inflated_field): Removed.
29561         (mono_image_get_inflated_field_token): Removed.
29562         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29563
29564         * reflection.h (MonoReflectionInflatedField): Removed.
29565
29566 2004-02-12  Martin Baulig  <martin@ximian.com>
29567
29568         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29569         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29570
29571         * reflection.c (mono_image_get_methodspec_token): Take a
29572         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29573         (mono_image_create_token): Check whether we have a
29574         `method->signature->gen_method' and call
29575         mono_image_get_methodspec_token() if appropriate.
29576         (inflated_method_get_object): Removed.
29577         (mono_reflection_bind_generic_method_parameters): Return a
29578         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29579         (mono_reflection_inflate_method_or_ctor): Likewise.
29580
29581         * reflection.h (MonoReflectionInflatedMethod): Removed.
29582
29583 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29584
29585         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29586         for custom valuetype marshalling.
29587
29588         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29589
29590 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29591
29592         * icall.c: fixed WSAGetLastError_internal name.
29593
29594 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29595
29596         * threads.c (mono_thread_attach): Allow this to be called multiple
29597         times for a thread.
29598         
29599         * threads.c (build_wait_tids): Do not wait for ourselves.
29600
29601         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29602         appdomain list is empty.
29603
29604         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29605         memory returned by mono_string_builder_to_utf16, since it points into
29606         managed memory. Thanks to Bernie Solomon for noticing this.
29607
29608         * icall.c: Add AppDomainSetup icalls.
29609
29610         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29611
29612         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29613         types.
29614
29615         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29616         custom attributes to the method_aux struct. Also fix array indexes etc.
29617
29618         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29619         
29620 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29621
29622         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29623         (both static and runtime) and reduce startup time.
29624
29625 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29626
29627         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29628         AsAny marshalling conversion instead of crashing.
29629
29630         * marshal.c: Fix warnings.
29631
29632 2004-02-09  Martin Baulig  <martin@ximian.com>
29633
29634         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29635
29636         * reflection.h (MonoReflectionInflatedMethod): Removed the
29637         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29638
29639         * reflection.c (method_encode_methodspec): Removed the `method'
29640         argument; we get it from `gmethod->declaring'.
29641         (inflated_method_get_object): Removed the `declaring' argument.
29642
29643 2004-02-09  Martin Baulig  <martin@ximian.com>
29644
29645         * class.h (MonoGenericMethod): New type.
29646         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29647         `generic_method'.
29648
29649         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29650         a `MonoGenericMethod *gen_method' one.
29651
29652         * class.c (mono_class_inflate_generic_type): Take an additional
29653         `MonoGenericMethod * argument.  This is only non-NULL if we're
29654         inflating types for a generic method.   
29655         (mono_class_inflate_generic_signature): Renamed to
29656         inflate_generic_signature() and made static; take a
29657         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29658         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29659         instead of a `MonoGenericInst *' one.
29660         (mono_class_inflate_generic_method): Likewise.
29661
29662         * reflection.c (encode_generic_method_sig): Take a
29663         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29664         (method_encode_methodspec): Likewise.
29665         (inflated_method_get_object): Likewise. 
29666
29667         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29668         field with a `MonoGenericMethod *gmethod' one.  
29669
29670 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29671
29672         * class.h (mono_class_has_parent): add parens to expansion
29673         so you can ! this.
29674
29675 2004-02-08  Martin Baulig  <martin@ximian.com>
29676
29677         * image.h (MonoImage): Removed `generics_cache'.
29678
29679         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29680         instead of a `MonoType *' argument; removed the `inflate_methods'
29681         argument.  Don't inflate methods here.
29682
29683         * loader.c (find_method): If it's a generic instance, call
29684         mono_class_init() on the `sclass->generic_inst->generic_type'.
29685
29686         * metadata.c (mono_type_size): Make this work on uninitialized
29687         generic instances; call it on the `ginst->generic_type's class.
29688
29689         * reflection.c (mono_reflection_bind_generic_parameters): Call
29690         mono_class_from_generic() to create the `ginst->klass'.
29691
29692 2004-02-08  Martin Baulig  <martin@ximian.com>
29693
29694         * class.h (MonoClass): Changed type of `generic_inst' from
29695         `MonoType *' to `MonoGenericInst *'.
29696
29697 2004-02-08  Martin Baulig  <martin@ximian.com>
29698
29699         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29700         mono_type_get_object(), this is now creating a `MonoGenericInst'
29701         for MONO_TYPE_GENERICINST.
29702         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29703         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29704
29705         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29706         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29707         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29708         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29709         and reflected type.
29710
29711         * reflection.h (MonoReflectionInflatedMethod): Removed
29712         `declaring_type' and `reflected_type'.
29713
29714 2004-02-08  Martin Baulig  <martin@ximian.com>
29715
29716         * class.h (MonoGenericInst): Added `MonoType *parent' and
29717         `MonoType **ifaces'.
29718
29719         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29720         `parent' and `interfaces'.
29721
29722         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29723         `MonoType *' argument and return a `MonoType *'.
29724
29725         * icall.c
29726         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29727         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29728
29729 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29730
29731         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29732         valuetype marshalling.
29733
29734 2004-02-06  Martin Baulig  <martin@ximian.com>
29735
29736         * class.c
29737         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29738         (my_mono_class_from_generic_parameter): Likewise.
29739
29740 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29741
29742         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29743         contents of the symbol files lazily.
29744
29745         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29746
29747         * threads.h threads.c icall.c: New icalls for getting and setting the
29748         threads name.
29749
29750 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29751
29752         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29753         Raise an exception when the domain is not found.
29754
29755 2004-02-03  Martin Baulig  <martin@ximian.com>
29756
29757         * reflection.c (mono_image_get_methodspec_token): Use the
29758         uninflated signature; fixes gen-33.
29759
29760 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29761
29762         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29763         the finalizer code can use thread functionality.
29764
29765         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29766         the finalizer thread.
29767
29768         * threads.c: Make some functions more robust.
29769
29770         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29771
29772         * metadata.h: Add new marshalling conventions.
29773
29774         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29775         stringbuilder marshalling. Fixes #53700.
29776
29777         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29778
29779         * reflection.c (mono_image_get_type_info): Save declarative security
29780         info.
29781
29782         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29783         unmanaged fields as well.
29784
29785         * appdomain.c: Bump corlib version.
29786
29787 2004-02-01  Martin Baulig  <martin@ximian.com>
29788
29789         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29790         method type arguments.  
29791
29792 2004-01-30  Duncan Mak  <duncan@ximian.com>
29793
29794         * marshal.h: Add prototype for
29795         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29796         and
29797         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29798         fix the build.
29799
29800 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29801
29802         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29803         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29804
29805 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29806
29807         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29808         custom marshalling of valuetypes.
29809
29810         * marshal.c: Fix some warnings.
29811
29812 2004-01-29  Martin Baulig  <martin@ximian.com>
29813
29814         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29815         for generic method parameters.
29816
29817         * reflection.c (method_encode_methodspec): Write the uninflated
29818         signature into the methodspec table.
29819         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29820         is always the uninflated method.
29821         (reflection_methodbuilder_to_mono_method): Copy the generic
29822         parameters from the MethodBuilder into `header->gen_params'.
29823
29824 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29825
29826         * class.c (mono_class_from_generic_parameter): Fix warning.
29827
29828 2004-01-27  Martin Baulig  <martin@ximian.com>
29829
29830         * class.c (mono_class_from_generic_parameter): Don't create
29831         `klass->methods' here.  
29832
29833 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29834
29835         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29836         extension since it does not work with libraries named lib<FOO>.dll.so.
29837
29838 2004-01-25  Martin Baulig  <martin@ximian.com>
29839
29840         * class.c (mono_class_inflate_generic_type): Added support for
29841         MONO_TYPE_GENERICINST.
29842
29843         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29844         inflate methods on open constructed types.      
29845
29846 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29847
29848         * object.c: fire ProcessExit event in the root AppDomain after running
29849         Main. Fixes bug #53299.
29850
29851 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29852
29853         * socket-io.c: include the new socket-wrappers.h header.
29854         Use the wrappers instead of the unix socket functions to make the code
29855         more clear.
29856
29857 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29858
29859         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29860
29861         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29862         Fixes #22532.
29863
29864 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29865
29866         * reflection.c (mono_image_create_pefile): Handle the case when the
29867         entry point is not a MethodBuilder.
29868
29869         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29870         field to ReflectionMethod since it is not allways a builder.
29871
29872         * reflection.c (type_get_fully_qualified_name): New helper function to
29873         return the fully qualified name of a type.
29874
29875         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29876         type name for custom marshallers.
29877
29878         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29879
29880         * class.c (mono_class_setup_vtable): If a parent class already 
29881         implements an interface, use the implementing methods from that class.
29882         Fixes #53148.
29883
29884 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29885
29886         * threadpool.c: just return instead of ExitThread to allow for thread
29887         clean up earlier.
29888
29889 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29890
29891         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29892         when closing resource modules.
29893
29894         * reflection.c (mono_image_create_pefile): Handle the case when the
29895         entry point is not a MethodBuilder.
29896
29897         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29898         field to ReflectionMethod since it is not allways a builder.
29899
29900 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29901
29902         * marshal.c (mono_marshal_get_managed_wrapper): 
29903         mono_marshal_alloc takes native int so CONV_I
29904         the arg for 64bits.
29905
29906 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29907
29908         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29909         tokens in the cattr table. Fixes #53108.
29910
29911 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29912
29913         * loader.c: don't trim ".dll" before looking up in the config file.
29914         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29915
29916 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29917
29918         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29919         Return the module which contains the resource as well.
29920         (ves_icall_System_Reflection_Module_Close): New icall.
29921
29922         * appdomain.c: Bump corlib version number.
29923
29924         * image.c (mono_image_addref): New public function.
29925
29926         * assembly.c: Call mono_image_addref.
29927
29928         * reflection.c (mono_module_get_object): Increase reference count of 
29929         the image.
29930
29931         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29932         Fixes #22532.
29933
29934         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29935         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29936         proper exceptions on DllImport problems.
29937
29938 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29939
29940         * class.c, metadata.c: eliminate CSIZE macro.
29941
29942 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29943
29944         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29945         * object.h: Added async_callback field in MonoAsyncResult.
29946         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29947         * verify.c: Added async_callback in MonoAsyncResult layout.
29948
29949 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29950
29951         * reflection.c (mono_reflection_get_custom_attrs): Add support
29952         for Modules.
29953
29954 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29955
29956         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29957         marshalling.
29958         (mono_marshal_method_from_wrapper): Add null pointer check.
29959
29960 2004-01-16  Martin Baulig  <martin@ximian.com>
29961
29962         * debug-mono-symfile.h: Set version number to 36 and reflect
29963         latest symbol writer changes.
29964
29965 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29966
29967         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29968         multi-dimensional arrays.
29969         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29970         (mono_class_from_mono_type): Use bounded_array_class_get.
29971         
29972         * class.c (mono_bounded_array_class_get): New function which takes
29973         a 'bounded' bool argument to distinguish vectors from one dimensional
29974         arrays.
29975
29976         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29977         bounded_array_class_get if the array has bounds.
29978
29979         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29980         Search modules loaded using AssemblyBuilder:AddModule as well.
29981
29982 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29983
29984         * appdomain.c: increased corlib version.
29985         * filewatcher.c: removed g_print.
29986         * icall.c:
29987         (get_property_info): only allocate what is actually requested.
29988         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29989
29990 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29991
29992         * Makefile.am: added filewatcher.[ch]
29993         * filewatcher.[ch]: FileSystemWatcher runtime support.
29994         * icall.c: added new FSW icalls.
29995
29996 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29997
29998         * string-icalls.c: fix stringbuilder regression as suggested by
29999         Iain McCoy <iain@mccoy.id.au>.
30000
30001 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
30002
30003         * process.c (process_read_stringtable_block): Recognize '007f' as
30004         a language neutral stringtable block.
30005
30006 2004-01-12  Patrik Torstensson
30007
30008         * object.h (MonoStringBuilder) : Changed layout to support our
30009         new stringbuilder class.
30010         * marshal.c: Change marshalling to support the new layout of 
30011         string builder.
30012         * appdomain.c: increased version number because new layout of
30013         string builder.
30014
30015 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
30016
30017         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
30018         assembly name as an string instead of an AssemblyName, since it is
30019         easier to extract info from it.
30020
30021         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
30022         the culture subdirectories too. Fixes #52231.
30023
30024 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30025
30026         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
30027         It takes 2 new parameters with an optional name for the method to look
30028         for and case ignoring info.
30029
30030         * threadpool.c: removed unused variable.
30031
30032 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30033
30034         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
30035         It takes 2 new parameters with an optional name for the property to look
30036         for and case ignoring info.
30037         Fixes bug #52753.
30038
30039 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
30040
30041         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
30042         Fix #52451.
30043
30044 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30045
30046         * appdomain.c:
30047         * assembly.c: escape the uri before passing it to g_filename_from_uri.
30048         Fixes bug #52630.
30049
30050 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
30051
30052         * reflection.c: Add support for more than one unmanaged resource.
30053
30054         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
30055         in field->def_value, as done in all other cases.
30056
30057         * reflection.c (mono_reflection_get_custom_attrs): Add support for
30058         TypeBuilders.
30059
30060         * reflection.c (mono_reflection_create_runtime_class): Remove 
30061         errorneous assignment to klass->element_class, since it is already
30062         done in mono_reflection_setup_internal_class.
30063
30064 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30065
30066         * gc.c: added missing LeaveCriticalSection.
30067         * icall.c: indented a couple of lines.
30068         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
30069         if we call EndInvoke inside a callback. Fixes bug #52601.
30070
30071 2004-01-07  Martin Baulig  <martin@ximian.com>
30072
30073         * mono-debug-debugger.h
30074         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
30075
30076 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
30077
30078         * appdomain.c: Use messages in NotImplementedException.
30079
30080         * exception.c (mono_get_exception_not_implemented): Now this takes
30081         a message argument.
30082
30083         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
30084         exception instead of g_asserting an aborting when something is not
30085         implemented.
30086
30087         Add some inline docs.
30088
30089 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
30090
30091         * reflection.h: Update after changes to object layout.
30092
30093         * reflection.c: Implement saving of unmanaged aka win32 resources.
30094
30095         * appdomain.c: Bump version number.
30096
30097         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
30098         Handle missing domains gracefully.
30099
30100 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
30101
30102         * file-io.c : On Windows, there are much more invalid_path_chars.
30103
30104 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
30105
30106         * class.h, object.c: prepare for GetType () speedup.
30107
30108 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
30109
30110         * profiler.c: workaround for --profile null reference exception on
30111           cygwin. Patch by Patrik Torstensson.
30112
30113 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
30114
30115         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
30116         make work for unaligned access.
30117
30118 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
30119
30120         * class.c: small cleanup (class->fields [i] -> field).
30121         * image.c: check address of metadata is valid.
30122
30123 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
30124
30125         * assembly.h assembly.c (mono_assembly_loaded): New public function to
30126         search the list of loaded assemblies.
30127
30128         * reflection.c (mono_reflection_type_from_name): Use 
30129         mono_assembly_loaded instead of mono_image_loaded.
30130
30131         * reflection.c: Fix warnings.
30132
30133 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30134
30135         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30136         is dynamic. This is needed since an assembly can contain both dynamic and
30137         non-dynamic images.
30138
30139         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30140         assembly->dynamic.
30141
30142         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30143
30144         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30145         to store modules loaded using AddModule.
30146
30147         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30148         on Modules.
30149
30150         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30151
30152         * reflection.c (mono_image_fill_export_table_from_module): New function to
30153         fill out the EXPORTEDTYPES table from a module.
30154
30155         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30156         into a separate function. Also handle loaded non-dynamic modules.
30157
30158         * reflection.c (mono_image_basic_init): Fix memory allocation.
30159
30160         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30161
30162         * assembly.c (mono_assembly_load_references): Make this public.
30163
30164 2003-12-19  Martin Baulig  <martin@ximian.com>
30165
30166         * class.c (mono_class_initialize_generic): Made this static, take
30167         a `MonoGenericInst *' instead of a `MonoClass *'.
30168         (mono_class_from_generic): Call mono_class_initialize_generic()
30169         unless we're already initialized or being called from
30170         do_mono_metadata_parse_generic_inst().
30171
30172         * class.h (MonoGenericInst): Added `initialized' and
30173         `init_pending' flags.
30174
30175         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30176         `mono_class_init (gklass)' or mono_class_initialize_generic()
30177         here; set `generic_inst->init_pending' while parsing the
30178         `type_argv'.
30179
30180 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30181
30182         * locales.c: include string.h for memxxx prototypes
30183
30184 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30185
30186         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30187         constructor when accessing literal fields.
30188
30189 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30190
30191         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30192
30193         * reflection.c (assembly_add_resource_manifest): New function to fill
30194         the MANIFESTRESOURCE table.
30195
30196         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30197
30198         * reflection.h: Update to changes in class layout.
30199
30200         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30201         Reenable call to mono_runtime_is_shutting_down ().
30202
30203         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30204         determine if the runtime is shutting down.
30205
30206 2003-12-16  Jackson Harper <jackson@ximian.com>
30207
30208         * icall.c: comment out call to mono_runtime_is_shutting_down to
30209         fix build.
30210         
30211 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30212
30213         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30214         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30215
30216 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30217
30218         * reflection.c: move definition of swap_with_size
30219         to before its first call
30220
30221 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30222
30223         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30224
30225         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30226         icall.
30227
30228         * object.c: Fix warnings.
30229
30230         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30231         members if FlattenHierarchy is set.
30232
30233         * reflection.c (mono_image_add_decl_security): New function to emit
30234         declarative security.
30235
30236         * reflection.h reflection.c: Add support for declarative security.
30237
30238         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30239         
30240 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30241
30242         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30243         
30244         * appdomain.c verify.c: Moved corlib version checking into its own
30245         function in appdomain.c since it needs to create vtables etc.
30246
30247 2003-12-13  Patrik Torstensson <p@rxc.se>
30248
30249         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30250         instead of unwrapped server.
30251
30252 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30253
30254         * verify.c (check_corlib): Fix field index.
30255
30256 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30257
30258         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30259         GetGacPath icall.
30260
30261 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30262
30263         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30264         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30265         cope with sizeof(size_t) != sizeof(guint32).
30266
30267 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30268
30269         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30270         in case of failure.
30271
30272 2003-12-10  Mark Crichton <crichton@gimp.org>
30273
30274         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30275         in managed code.
30276
30277         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30278
30279 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30280
30281         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30282         marked as deleted.
30283
30284 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30285
30286         * verify.c (check_corlib): Handle the case when the version field is 
30287         initialized by a static constructor.
30288
30289 2003-12-08  Patrik Torstensson  <p@rxc.se>
30290
30291     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30292
30293 2003-12-08  Martin Baulig  <martin@ximian.com>
30294
30295         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30296         a MonoReflectionGenericParameter, also take the parameter index
30297         and name as arguments.
30298         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30299         (ves_icall_MonoGenericParam_initialize): New interncall.
30300         (ves_icall_Type_make_byref_type): New interncall.
30301
30302         * reflection.h (MonoReflectionGenericParam): Derive from
30303         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30304         `index' fields.
30305
30306         * reflection.c (mono_reflection_define_generic_parameter): Create
30307         and return a new MonoReflectionGenericParam; don't initialize the
30308         constraints here.
30309         (mono_reflection_initialize_generic_parameter): New public method;
30310         initializes the constraints and creates the `param->pklass'.
30311
30312 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30313
30314         * reflection.h reflection.c: Use the new fields 'num_types', 
30315         'num_fields' and 'num_methods' to track the number of types etc.
30316
30317         * verify.c (check_corlib): Check corlib version number.
30318
30319 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30320
30321         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30322         function works on all methods.
30323
30324 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30325
30326         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30327         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30328         the custom_type_info flag of the transparent proxy.
30329         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30330         objects that supports IRemotingTypeInfo.
30331         * object.h: Added custom_type_info field in transparent proxy.
30332
30333 2003-12-06  Martin Baulig  <martin@ximian.com>
30334
30335         * class.c (mono_class_create_from_generic): Removed.
30336         (mono_class_from_generic): Check `ginst->klass' before doing
30337         anything else.  This is important to fully support "recursive"
30338         generic types.
30339
30340         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30341         empty `generic_inst->klass' before doing anything else.
30342
30343 2003-12-06  Dick Porter  <dick@ximian.com>
30344
30345         * verify.c: 
30346         * object.h:
30347         * icall.c:
30348         * locales.c: Use C structs to access class fields.  Don't do a
30349         conversion between MonoString and UChar because both are
30350         platform-endian UTF-16.  Compare now takes startindex and count
30351         parameters.  Add a char overload for IndexOf.  Speed up the
30352         invariant string IndexOf.
30353
30354 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30355
30356         * Makefile.am (monosn_LDADD): Fix parallel build.
30357
30358 2003-12-04  Martin Baulig  <martin@ximian.com>
30359
30360         * icall.c
30361         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30362         (ves_icall_Type_make_array_type): New interncall.       
30363
30364 2003-12-04  Martin Baulig  <martin@ximian.com>
30365
30366         * locales.c: also change it in the !HAVE_ICU case.
30367
30368 2003-12-04  Dick Porter  <dick@ximian.com>
30369
30370         * icall.c:
30371         * locales.c: construct_compareinfo is now in CompareInfo, not
30372         CultureInfo.
30373
30374 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30375
30376         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30377         image->files array.
30378
30379         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30380         table as well.
30381
30382         * assembly.c (mono_assembly_load_references): Only load references
30383         once.
30384
30385         * class.c (mono_class_from_name): Avoid linear search of the 
30386         EXPORTEDTYPE table.
30387
30388         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30389
30390 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30391
30392         * image.h (MonoImage): Add 'field_cache' field.
30393
30394         * loader.c (mono_field_from_token): Cache field lookups.
30395         
30396         * reflection.c (mono_module_get_object): Fix name property.
30397
30398         * icall.c (ves_icall_get_enum_info): Update after changes to 
30399         mono_metadata_get_constant_index ().
30400
30401         * icall.c: Get rid of get_type_info icall, use a separate icall for
30402         each type property to avoid needless memory allocations. Fixes #51514.
30403
30404         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30405         to avoid needless binary searches.
30406
30407         * class.c (class_compute_field_layout): Move the initialization of
30408         field->def_value to mono_class_vtable ().
30409
30410         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30411         non-corlib types.
30412
30413         * object.c (mono_object_allocate): Make it inline.
30414
30415         * object.c (mono_object_allocate_spec): Make it inline.
30416         
30417 2003-12-02  Dick Porter  <dick@ximian.com>
30418
30419         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30420         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30421
30422 2003-12-01  Dick Porter  <dick@ximian.com>
30423
30424         * threads.c: Fix signature and call in CreateMutex and
30425         CreateEvent.
30426
30427 2003-12-01  Dick Porter  <dick@ximian.com>
30428
30429         * icall.c: 
30430         * locales.c: Implement string compares and searching
30431
30432         * object.h: Add extra Thread field
30433
30434 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30435
30436         * reflection.c (fixup_method): Add support for MonoCMethod.
30437
30438 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30439
30440         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30441
30442         * reflection.c (assembly_name_to_aname): Allow extra characters in
30443         assembly names. Fixes #51468.
30444
30445 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30446
30447         * exception.c (mono_exception_from_name_domain): New helper function.
30448
30449         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30450         exception object in the correct domain.
30451
30452         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30453         formatting + make a copy a the input data.
30454
30455         * loader.c (mono_get_method_from_token): Methods which contain
30456         native code do not have entries in the ImplMap.
30457
30458         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30459         Thanks to Gonzalo for spotting this.
30460         
30461         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30462         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30463
30464         * assembly.h (mono_assembly_load_from): Split the second part of 
30465         assembly loading into a new public function.
30466
30467         * exception.h (mono_get_exception_bad_image_format): New function.
30468
30469 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30470
30471         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30472         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30473         
30474         * icall.c: Add new icall for creating dynamic methods.
30475
30476         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30477
30478         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30479
30480         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30481         create a dynamic method.
30482
30483         * reflection.c (resolve_object): New helper function.
30484
30485         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30486         which manipulate it so they can also work on dynamic methods.
30487
30488         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30489         creating the MonoReflectionMethodAux structure if it is not needed.
30490         
30491         * reflection.h verify.c: Update after changes to object layout.
30492
30493         * reflection.c (method_builder_encode_signature): Fix compilation on
30494         gcc 2.95.x.
30495
30496 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30497
30498         * appdomain.h: Added support for context static fields. Added static_data
30499           field to MonoAppContext and renamed thread_static_fields to a more
30500           generic special_static_fields in MonoAppDomain, since it can now contain
30501           context static fields.
30502         * domain.c: Updated hashtable name.
30503         * object.c: Replaced field_is_thread_static() for a more generic
30504           field_is_special_static() which also checks for context static attribute.
30505           In mono_class_vtable(), added support for static context fields.
30506         * threads.c: Changed methods that manage thread static fields to more
30507           generic methods so they can be reused both for thread and context static
30508           data.
30509         * threads.h: Declared some new methods.
30510
30511 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30512
30513         * reflection.h: Update after changes to the managed types.
30514
30515         * reflection.c (encode_custom_modifiers): New helper function.
30516
30517         * reflection.c (method_encode_signature): Emit custom modifiers.
30518
30519         * reflection.c (field_encode_signature): Emit custom modifiers.
30520
30521 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30522
30523         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30524
30525         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30526         implementation.
30527
30528         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30529         icall.
30530
30531         * object.c (mono_field_get_value_object): New function.
30532
30533         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30534         specific.
30535
30536 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30537
30538         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30539         return a preallocated out-of-memory exception instance.
30540
30541         * object.c (out_of_memory): Use the new function.
30542
30543         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30544         flag is before the custom modifiers. Fixes #49802.
30545
30546 2003-11-16  Martin Baulig  <martin@ximian.com>
30547
30548         * class.c (mono_class_is_open_constructed_type): Implemented the
30549         MONO_TYPE_GENERICINST case.
30550
30551 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30552
30553         * assembly.c (mono_assembly_fill_assembly_name): New function to
30554         fill out the MonoAssemblyName structure.
30555         (mono_assembly_open): Use the new function.
30556
30557         * icall.c (fill_reflection_assembly_name): New helper function.
30558
30559         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30560         new function.
30561
30562         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30563
30564 2003-11-15  Martin Baulig  <martin@ximian.com>
30565
30566         * class.c (mono_class_is_open_constructed_type): New public
30567         function; checks whether a type is an open constructed type,
30568         ie. whether it still contains type parameters.
30569         (mono_class_inflate_generic_type): If we're a type parameter and
30570         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30571         type.
30572
30573         * class.h (MonoGenericInst): Added `guint32 is_open'.
30574
30575         * loader.c (method_from_methodspec): Check whether we're an open
30576         or closed constructed type and set `ginst->is_open'.
30577
30578         * reflection.c (mono_reflection_bind_generic_parameters): Check
30579         whether we're an open or closed constructed type and set
30580         `ginst->is_open'.
30581         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30582         from open constructed types.
30583
30584 2003-11-15  Martin Baulig  <martin@ximian.com>
30585
30586         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30587         a generic instance (instead of a generic type declaration) with
30588         unbound generic parameters, bind them to our actual types.
30589
30590 2003-11-14  Martin Baulig  <martin@ximian.com>
30591
30592         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30593
30594         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30595         an interface type, populate `res->interfaces' with instantiated
30596         versions of all the interfaces we inherit.
30597
30598 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30599
30600         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30601         when MONO_PATH is set but doesn't contain the install dir.
30602
30603 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30604
30605         * icall.c:
30606         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30607         it's also implemented in base classes. Fixes bug #50927.
30608
30609 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30610
30611         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30612         if this method is called from a finalizer. Fixes #50913.
30613
30614 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30615
30616         * threads.c: Implement VolatileRead/VolatileWrite
30617
30618         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30619
30620 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30621
30622         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30623         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30624         2.95.3.
30625
30626         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30627         from Peter Ross (pro@missioncriticalit.com).
30628         
30629 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30630
30631         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30632
30633 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30634
30635         * assembly.c (mono_assembly_load_references): Disable check because it
30636         triggers on older corlibs which lots of people have.
30637
30638 2003-11-12  Jackson Harper  <jackson@ximian.com>
30639
30640         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30641         load corlib.dll if mscorlib.dll is not found.
30642         * assembly.h: Remove corlib name define.
30643         * class.c:
30644         * domain.c:
30645         * image.c: Change corlib name to mscorlib.
30646         
30647 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30648
30649         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30650
30651 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30652
30653         * appdomain.h: Added loader_optimization here to sync with the C#
30654         code, and add disallow_binding_redirects field.
30655
30656 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30657
30658         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30659
30660         * reflection.c (mono_image_build_metadata): Fix crash on modules
30661         with no types.
30662
30663         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30664
30665         * icall.c (ves_icall_get_method_info): Return callingConvention as
30666         well.
30667
30668         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30669         namespaces from the EXPORTEDTYPE table as well.
30670
30671         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30672         from all modules inside the assembly.
30673         
30674 2003-11-11  Martin Baulig  <martin@ximian.com>
30675
30676         * reflection.c (mono_reflection_bind_generic_parameters): Make
30677         this work for interfaces.
30678
30679 2003-11-11  Martin Baulig  <martin@ximian.com>
30680
30681         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30682
30683 2003-11-11  Martin Baulig  <martin@ximian.com>
30684
30685         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30686         "MonoInflatedMethod" and "MonoInflatedCtor".
30687
30688 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30689
30690         * reflection.c (resolution_scope_from_image): Use the assembly table
30691         from the manifest module, since other modules don't have it.
30692
30693         * debug-helpers.c (mono_type_full_name): New helper function.
30694
30695         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30696
30697         * image.c (mono_image_load_file_for_image): New public function which
30698         is a replacement for the load_file_for_image in class.c.
30699
30700         * assembly.c (mono_assembly_load_module): A wrapper for the function
30701         above which does assembly association and reference loading too.
30702
30703         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30704
30705 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30706
30707         * appdomain.c: not all of the attributes for the full assembly name
30708         are required and the order doesn't matter. Fixes bug #50787.
30709
30710 2003-11-10  Dick Porter  <dick@ximian.com>
30711
30712         * locales.c: Use platform-endian UTF16
30713
30714 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30715
30716         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30717         
30718 2003-11-10  Martin Baulig  <martin@ximian.com>
30719
30720         * metadata.c
30721         (mono_metadata_load_generic_params): Make this actually work.
30722
30723         * reflection.c (mono_reflection_bind_generic_parameters): If our
30724         parent is a generic instance, pass all the `types' to it, no
30725         matter whether it has the same number of type parameters or not.
30726
30727 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30728
30729         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30730
30731         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30732         assignment code to this function so it gets called recursively for all
30733         modules.
30734
30735         * image.c (load_modules): Remove the assembly assignment since it is
30736         now done by mono_assembly_load_references.
30737         
30738         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30739         Add 'module' argument.
30740         (mono_module_get_types): New helper function.
30741         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30742
30743 2003-11-08  Martin Baulig  <martin@ximian.com>
30744
30745         * class.c (mono_class_inflate_generic_method): Interface method
30746         don't have a header.
30747
30748         * reflection.c (mono_image_get_methodspec_token): Take an
30749         additional `MonoGenericInst *' argument instead of reading it from
30750         the header; this is necessary to support interfaces.
30751         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30752         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30753         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30754         argument.
30755
30756         * reflection.h (MonoReflectionInflatedMethod): Added
30757         `MonoGenericInst *ginst'.
30758
30759 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30760
30761         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30762
30763 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30764
30765         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30766
30767 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30768
30769         * reflection.c 
30770         (reflection_methodbuilder_from_method_builder):
30771         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30772         initialize a ReflectionMethodBuilder structure.
30773         (mono_image_get_methodbuilder_token):
30774         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30775         tokens which point to types in another module inside the same assembly.
30776
30777         * reflection.c: Use the new helper functions.
30778         
30779         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30780
30781         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30782         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30783
30784         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30785         neccesary.
30786
30787         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30788         current module. Emit the manifest only for the main module.
30789
30790         * reflection.c (mono_image_create_token): Add assertion when a 
30791         memberref needs to be created.
30792
30793         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30794
30795         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30796         larger buffer for the custom attribute blob. Fixes #50637.
30797         
30798 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30799
30800         * threadpool.c: notify listener on async processing handles after
30801         invoking the async callback. Thanks to Zoltan.
30802
30803 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30804
30805         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30806         avoid code duplication.
30807
30808         * reflection.h (MonoDynamicImage): New type which is currently unused,
30809         but will be used through the ref.emit code in place of 
30810         MonoDynamicAssembly.
30811
30812         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30813         object layout.
30814
30815         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30816         a MonoDynamicImage instead of just a MonoImage.
30817         
30818         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30819         icalls to ModuleBuilder but keep their semantics, so they will work
30820         with moduleb->assemblyb. This will change later.
30821         
30822 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30823
30824         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30825         object layout.
30826
30827         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30828         main module, since it is now done by the managed code.
30829
30830 2003-11-03  Martin Baulig  <martin@ximian.com>
30831
30832         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30833         `ginst->klass' here.
30834         (method_encode_methodspec): Don't use the `ginst->generic_method's
30835         klass if it's a generic instance, use `ginst->klass' in this case.
30836
30837 2003-11-03  Martin Baulig  <martin@ximian.com>
30838
30839         * reflection.c (mono_image_get_generic_method_param_info):
30840         Removed, use mono_image_get_generic_param_info() instead.
30841         (mono_image_get_type_info): Write the GenericParam table before
30842         the Method table.  This is neccessary because in the GenericParam
30843         table, type parameters of the class (ie. '!0' etc.) must come
30844         before the ones from its generic methods (ie. '!!0' etc).
30845
30846 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30847
30848         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30849
30850 2003-11-02  Martin Baulig  <martin@ximian.com>
30851
30852         * reflection.c (create_generic_typespec): Take a
30853         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30854         the generic parameters from it.
30855
30856 2003-11-02  Martin Baulig  <martin@ximian.com>
30857
30858         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30859         instead of a `MonoClassField *' since we just need the type.
30860         (create_generic_typespec): New static function.  Creates a
30861         TypeSpec token for a generic type declaration.
30862         (mono_image_get_generic_field_token): New static function.
30863         (mono_image_create_token): If we're a FieldBuilder in a generic
30864         type declaration, call mono_image_get_generic_field_token() to get
30865         the token.
30866
30867 2003-11-02  Martin Baulig  <martin@ximian.com>
30868
30869         * reflection.h
30870         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30871         `MonoReflectionGenericInst *declaring_type' and
30872         `MonoReflectionGenericInst *reflected_type' fields.
30873
30874         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30875         `MonoReflectionGenericInst *declaring_type' and a
30876         `MonoReflectionGenericInst *reflected_type' argument instead of a
30877         single `MonoReflectionGenericInst *type' one.  Set
30878         `res->declaring_type' and `res->reflected_type' from them.
30879         (mono_reflection_inflate_field): Likewise.      
30880
30881 2003-11-02  Martin Baulig  <martin@ximian.com>
30882
30883         * class.c (mono_class_setup_vtable): Don't store generic methods
30884         in the vtable.  
30885
30886 2003-11-02  Martin Baulig  <martin@ximian.com>
30887
30888         * reflection.h (MonoReflectionGenericInst): Added
30889         `MonoReflectionType *declaring_type'.
30890
30891         * reflection.c (mono_reflection_bind_generic_parameters): Use
30892         `if (tb->parent)' instead of `klass->parent'.
30893
30894 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30895
30896         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30897         with an empty ASSEMBLY table.
30898
30899         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30900         variable in the inner and outer loops.
30901
30902 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30903
30904         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30905         argument.
30906
30907         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30908         
30909         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30910         icalls. Instead, do everything in managed code. This is needed since
30911         it is hard to restore the original domain etc. in unmanaged code in the
30912         presence of undeniable exceptions.
30913
30914         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30915         New icalls to push and pop appdomain refs.
30916
30917 2003-10-31  Martin Baulig  <martin@ximian.com>
30918
30919         * class.c (inflate_generic_type): Renamed to
30920         mono_class_inflate_generic_type() and made it public.
30921
30922         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30923         New interncall.
30924
30925         * loader.c (mono_field_from_memberref): Also set the retklass for
30926         typespecs.
30927
30928         * fielder.c (mono_image_get_inflated_field_token): New static
30929         method; creates a metadata token for an inflated field.
30930         (mono_image_create_token, fixup_method): Added support for
30931         "MonoInflatedField".
30932         (fieldbuilder_to_mono_class_field): New static function.
30933         (mono_reflection_inflate_field): New public function.
30934
30935         * reflection.h
30936         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30937         (MonoReflectionInflatedField): New typedef.     
30938
30939 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30940
30941         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30942         for Solaris and other platforms without s6_addr16
30943
30944 2003-10-30  Martin Baulig  <martin@ximian.com>
30945
30946         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30947         argument instead of two.
30948         (mono_class_inflate_generic_signature): Likewise.
30949         (inflate_generic_header): Likewise.
30950         (mono_class_inflate_generic_method): Likewise.  In addition, if
30951         `ginst->klass' is set, it becomes the new `method->klass'.
30952
30953         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30954         field.
30955
30956         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30957         first byte. [FIXME]
30958         (method_encode_methodspec): If we have generic parameters, create
30959         a MethodSpec instead of a MethodRef.
30960         (fixup_method): Added support for "MonoInflatedMethod" and
30961         "MonoInflatedCtor".
30962         (mono_image_create_token): Added support for "MonoInflatedMethod"
30963         and "MonoInflatedCtor".
30964         (inflated_method_get_object): New static function; returns a
30965         managed "System.Reflection.MonoInflatedMethod" object.
30966         (mono_reflection_bind_generic_method_parameters): Return a
30967         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30968         (mono_reflection_inflate_method_or_ctor): Likewise.
30969         (mono_image_get_generic_method_param_info): Initialize unused
30970         fields to zero.
30971         (mono_image_get_generic_param_info): Likewise.
30972
30973         * reflection.h (MonoReflectionInflatedMethod): New public
30974         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30975         "S.R.MonoInflatedCtor" classes.
30976
30977         * loader.c (method_from_memberref): If we're a TypeSpec and it
30978         resolves to a generic instance, inflate the method.
30979
30980 2003-10-28  Dick Porter  <dick@ximian.com>
30981
30982         * object.c (mono_runtime_run_main): Convert command-line arguments
30983         into utf8, falling back to the user's locale encoding to do so.
30984
30985 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30986
30987         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30988         at this time.
30989
30990         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30991
30992         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30993         up icalls at method definition time. Partially fixes #33569.
30994
30995 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30996
30997         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30998         marshalling of arrays. Fixes #50116.
30999
31000         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
31001
31002         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
31003         points to a vtable in the dying appdomain.
31004
31005         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
31006         listeners into unmanaged code inside the lock.
31007
31008         * object.c (mono_class_vtable): Turn off typed allocation in non-root
31009         domains and add some comments.
31010
31011 2003-10-25  Martin Baulig  <martin@ximian.com>
31012
31013         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
31014
31015         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
31016
31017         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
31018         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
31019         currently parsing.  Create the generic class and store it in
31020         `generic_inst->klass' before parsing the type arguments.  This is
31021         required to support "recursive" definitions; see mcs/tests/gen-23.cs
31022         for an example.
31023         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
31024         to support recursive typespec entries.
31025
31026         * class.c (mono_class_setup_parent): If our parent is a generic
31027         instance, we may get called before it has its name set.
31028         (mono_class_from_generic): Splitted into
31029         mono_class_create_from_generic() and mono_class_initialize_generic().
31030
31031 2003-10-25  Martin Baulig  <martin@ximian.com>
31032
31033         * icall.c (ves_icall_Type_BindGenericParameters): Return a
31034         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
31035         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
31036         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
31037
31038         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
31039         (create_typespec): Likewise.
31040         (mono_reflection_bind_generic_parameters): Return a
31041         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
31042         (mono_reflection_inflate_method_or_ctor): New public function.
31043
31044         * reflection.h (MonoReflectionGenericInst): New typedef.        
31045
31046 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
31047
31048         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
31049         inside the domain lock. Fixes #49993.
31050         
31051         * object.c (mono_class_vtable): When typed allocation is used, 
31052         allocate vtables in the GC heap instead of in the mempool, since the
31053         vtables contain GC descriptors which are used by the collector even
31054         after the domain owning the mempool is unloaded.
31055
31056         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
31057
31058         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
31059         reflect what it does. Also invalidate mempools instead of freeing
31060         them if a define is set.
31061
31062         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
31063         of the appdomain.
31064         
31065         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
31066         hold the finalizable objects in this domain.
31067
31068         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
31069         appdomain.
31070
31071         * appdomain.c (mono_domain_set): New function to set the current
31072         appdomain, but only if it is not being unloaded.
31073
31074         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
31075         appdomain which is being unloaded.
31076         
31077         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
31078         unloading of the root appdomain.
31079
31080         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
31081         icall to execute a method in another appdomain. Intended as a 
31082         replacement for InternalSetDomain, which can confuse the code 
31083         generation in the JIT.
31084
31085         * appdomain.c (mono_domain_is_unloading): New function to determine
31086         whenever an appdomain is unloading.
31087
31088         * appdomain.c (mono_domain_unload): New function to correctly unload
31089         an appdomain.
31090
31091         * assembly.c (mono_assembly_load_references): Check that an assembly
31092         does not references itself.
31093
31094         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
31095         domain manually, it asks the finalizer thread to do it, then waits for
31096         the result. Also added a timeout.
31097
31098         * icall.c: Register the new icalls.
31099
31100         * threads.h threads.c: Export the mono_gc_stop_world and 
31101         mono_gc_start_world functions.
31102         
31103         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
31104         function to fill out the mempool with 0x2a.
31105
31106 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
31107
31108         * reflection.h (MonoReflectionMethodAux): New structure to store
31109         information which is rarely used, thus is not in the MonoMethod
31110         structure.
31111
31112         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
31113         store the aux info.
31114
31115         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
31116         and marshalling info into the aux structure.
31117
31118         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
31119         from the aux structure.
31120
31121         * loader.c (mono_method_get_param_names): Retrieve the param names from
31122         the aux structure.
31123         
31124 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
31125
31126         * exception.h exception.c: Add AppDomainUnloadedException && fix 
31127         warning.
31128
31129 2003-10-21  Dick Porter  <dick@ximian.com>
31130
31131         * socket-io.c
31132         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
31133         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31134
31135 2003-10-21  Martin Baulig  <martin@ximian.com>
31136
31137         * reflection.c (mono_reflection_bind_generic_parameters):
31138         `klass->parent' is NULL for interfaces.
31139
31140 2003-10-21  Martin Baulig  <martin@ximian.com>
31141
31142         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31143
31144 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31145
31146         * exception.c (mono_exception_from_name_msg): New helper function for
31147         creating exceptions and initializing their message field.
31148
31149         * exception.c: Simplify functions using the new helper.
31150
31151         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31152         New function.
31153
31154         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31155         mono_raise_exception, since otherwise gcc doesn't generate the function
31156         epilog for raise_exception, confusing the stack unwinding in the JIT.
31157         Fixes #45043.
31158
31159         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31160         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31161         Fixes #49499.
31162
31163 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31164
31165         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31166         utf8.
31167
31168 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31169
31170         * icall.c: Removed GetUninitializedObject method because
31171           AllocateUninitializedClassInstance does the same.
31172
31173 2003-10-18  Martin Baulig  <martin@ximian.com>
31174
31175         * class.c (inflate_generic_signature): Renamed to
31176         mono_class_inflate_generic_signature() and made it public.
31177         (my_mono_class_from_generic_parameter): New static function; if we
31178         don't already have the generic parameter's MonoClass, create a
31179         very simple one which is just used internally in the runtime and
31180         not passed back to managed code.
31181
31182         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31183
31184         * metadata.h (MonoMethodSignature): Moved the
31185         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31186         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31187
31188         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31189         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31190         interncall on the MonoMethod class, not on MethodInfo.
31191         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31192         calling mono_reflection_bind_generic_method_parameters() directly.
31193
31194         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31195         return the already computed `method->signature'.
31196         (method_from_methodspec): New static function to load a method
31197         from a MethodSpec entry.
31198         (mono_get_method_from_token): Call the new method_from_methodspec()
31199         for MethodSpec tokens.  
31200         (mono_get_method_from_token): If we're a generic method, load the
31201         type parameters.
31202
31203         * reflection.c (mono_image_get_memberref_token): Allow
31204         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31205         table.
31206         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31207         (mono_image_create_token): First check whether it's a generic
31208         method (so we'd need to create a MethodSpec), then do the other
31209         two alternatives.
31210         (mono_reflection_bind_generic_method_parameters): Return a
31211         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31212         called directly from the interncall.
31213
31214 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31215
31216         * reflection.c (load_public_key): Move loading of the public key
31217         into managed code.
31218
31219         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31220
31221         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31222         fields.
31223
31224         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31225         culture, hash_alg and public_key. Fixes #49555.
31226
31227 2003-10-17  Martin Baulig  <martin@ximian.com>
31228
31229         * class.h (MonoGenericInst): Moved this declaration here and added
31230         `MonoMethod *generic_method'.
31231
31232         * icall.c
31233         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31234         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31235
31236         * metadata.c (mono_metadata_type_equal): Two types of
31237         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31238         index; ie. don't compare the address of the `MonoGenericParam'
31239         structure.
31240         (mono_metadata_load_generic_params): Removed the `MonoMethod
31241         *method' argument.
31242
31243         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31244         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31245
31246         * reflection.c (method_encode_signature): Encode the number of
31247         generic parameters.
31248         (encode_generic_method_sig): New static function.
31249         (method_encode_methodspec): New static function; creates an entry
31250         in the MethodSpec table for a generic method.
31251         (mono_image_get_methodspec_token): New static function.
31252         (mono_image_create_token): Call mono_image_get_methodspec_token()
31253         for generic methods.
31254         (mono_reflection_bind_generic_method_parameters): New public
31255         function.  Instantiates a generic method.
31256
31257 2003-10-16  Martin Baulig  <martin@ximian.com>
31258
31259         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31260         *gen_params' here from MonoMethodHeader.
31261
31262         * metadata.c (mono_metadata_parse_method_signature): If we have
31263         generic parameters, initialize `method->gen_params' and then set
31264         the correct `type->data.generic_param' in all the parameters.
31265
31266 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31267
31268         * threads.c (mono_threads_get_default_stacksize): New function to 
31269         return the default stacksize.
31270
31271         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31272         termination of the finalizer thread, since the previous method had
31273         race conditions. Fixes #49628.
31274
31275         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31276         as for the other managed threads.
31277
31278 2003-10-16  Martin Baulig  <martin@ximian.com>
31279
31280         * class.c (inflate_generic_signature): Copy `generic_param_count'
31281         and `gen_params'.
31282
31283         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31284         New interncall.
31285
31286         * metadata.c (mono_metadata_parse_method_signature): Actually set
31287         the `method->generic_param_count' here.
31288         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31289
31290 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31291
31292         * object.h: Add a new field to TypedRef to simplify the implementation
31293         of the REFANY opcodes in the JIT.
31294
31295         * icall.c: Make use of the new field.
31296
31297         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31298         dynamically.
31299
31300 2003-10-15  Martin Baulig  <martin@ximian.com>
31301
31302         * class.c (mono_class_from_gen_param): Renamed to
31303         mono_class_from_generic_parameter() and moved most of the
31304         functionality from mono_reflection_define_generic_parameter()
31305         here; ie. we create a "real" class here.
31306         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31307         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31308         previously been called.
31309
31310         * class.h (MonoGenericParam): Moved the declaration of this struct
31311         here from metadata.h and added `MonoMethod *method'.
31312
31313         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31314         interncall.
31315
31316         * loader.c (mono_get_method_from_token): If we have any generic
31317         parameters, call mono_metadata_load_generic_params() to read them
31318         from the MONO_TABLE_GENERICPAR.
31319
31320         * metadata.c (mono_metadata_load_generic_params): Added
31321         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31322
31323         * metadata.h (MonoMethodSignature): Replaced
31324         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31325         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31326
31327         * reflection.c (mono_reflection_define_generic_parameter): Moved
31328         most of the functionality into the new
31329         mono_class_from_generic_parameter(); set the `method' field if
31330         we're a method parameter.       
31331
31332 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31333
31334         * marshal.c (emit_struct_conv): if native size is 0
31335         emit no code.
31336
31337 2003-10-14  Martin Baulig  <martin@ximian.com>
31338
31339         * icall.c: The generics API has changed in the spec since it was
31340         added to System.Type; these modifications make it match the spec
31341         again.
31342         (ves_icall_Type_GetGenericParameters): Renamed to
31343         `ves_icall_Type_GetGenericArguments'.
31344         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31345         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31346         `ves_icall_MonoType_get_HasGenericArguments'.
31347         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31348         `ves_icall_MonoType_get_IsGenericParameter'.
31349         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31350         this is no interncall anymore.
31351         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31352         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31353
31354 2003-10-14  Martin Baulig  <martin@ximian.com>
31355
31356         * reflection.c (mono_reflection_bind_generic_parameters): Also
31357         inflate generic methods if we're reading the class from IL.
31358
31359 2003-10-13  Martin Baulig  <martin@ximian.com>
31360
31361         * reflection.c (mono_reflection_define_generic_parameter): This
31362         method isn't called directly from the icall anymore; take a
31363         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31364         method generic parameters.
31365         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31366         (method_builder_encode_signature): Encode generic parameters.
31367         (mono_image_get_method_info): Write generic params to the
31368         MONO_TABLE_GENERICPARAM table.
31369
31370         * reflection.h (MonoReflectionMethodBuilder): Added
31371         `MonoArray *generic_params'.
31372
31373         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31374
31375         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31376         wrapper for mono_reflection_define_generic_parameter().
31377         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31378
31379 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31380
31381         * marshal.h: Add missing function to fix build.
31382
31383         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31384         the SetLastError pinvoke attribute.
31385
31386         * marshal.c (mono_marshal_set_last_error): New helper function called
31387         by the generated code.
31388         
31389         * marshal.c (mono_mb_emit_branch): New helper function.
31390
31391         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31392
31393         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31394         classes as parameters and return values of delegates. Fixes #29256. 
31395
31396 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31397
31398         * locales.c: use gint32 in non HAVE_ICU case
31399
31400 2003-10-11  Martin Baulig  <martin@ximian.com>
31401
31402         * mono-debug.c (mono_debug_add_method): Added a workaround for
31403         bug #48591.
31404
31405 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31406
31407         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31408         delegates passed to native code must use the STDCALL calling 
31409         convention. Fixes #35987.
31410
31411 2003-10-10  Martin Baulig  <martin@ximian.com>
31412
31413         * class.c (inflate_generic_type): If we're inflating for a generic
31414         type instance (and not for a generic method), return
31415         MONO_TYPE_MVAR unchanged.
31416
31417 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31418
31419         * string-icalls.c: Join ignores null strings in the source array.
31420         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31421         * threads.c: GetAvailableTheads is slightly more accurate.
31422
31423 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31424
31425         * threads.h threads.c : add mono_threads_set_default_stacksize
31426         and pass default to CreateThread calls.
31427
31428 2003-10-09  Dick Porter  <dick@ximian.com>
31429
31430         * icall.c:
31431         * locales.h:
31432         * locales.c: Internal calls for constructing CultureInfo and
31433         related objects from libicu (if its available.)
31434
31435 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31436
31437         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31438
31439 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31440
31441         * threadpool.c: added an argument to async_invoke_thread that is the
31442         item to process, pass the MonoAsyncResult to the thread start function
31443         when creating a new thread. This way we don't need to acquire any lock
31444         when we're creating a new thread. Readded a semaphore for faster
31445         response times (instead of that Sleep i added).
31446
31447 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31448
31449         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31450         get daylight change dates better on Windows, fix handling
31451         of platforms without tm_gmtoff.
31452
31453 2003-10-06  Martin Baulig  <martin@ximian.com>
31454
31455         * class.c (inflate_generic_method): Renamed to
31456         mono_class_inflate_generic_method() and made public.
31457         (mono_class_init): Don't inflate the generic methods here.
31458         (mono_class_from_generic): Added `gboolean inflate_methods'
31459         argument.  Inflate the methods here.
31460
31461         * loader.c (mono_method_get_param_names): Ignore instances of
31462         generic types for the moment.
31463
31464         * reflection.c (fixup_method): Added support for inflated methods.
31465         (mono_image_create_token): Use mono_image_get_methodref_token()
31466         for inflated methods.
31467         (mono_custom_attrs_from_param): Ignore instances of generic types
31468         for the moment.
31469         (mono_reflection_bind_generic_parameters): New public function.
31470         Moved all the functionality from
31471         ves_icall_Type_BindGenericParameters() here and added support for
31472         dynamic types.
31473         (mono_reflection_define_generic_parameter): Initialize
31474         `klass->methods' here.
31475
31476         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31477         functionality into mono_reflection_define_generic_parameter().
31478         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31479         TypeBuilder, return that TypeBuilder.
31480
31481 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31482
31483         * appdomain.c: removed mono_delegate_semaphore.
31484
31485         * threadpool.c:
31486         (mono_thread_pool_add): moved hash table creation inside and the thread 
31487         creation outside of the critical region.
31488         (mono_thread_pool_finish): removed obsolete code.
31489         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31490         continue or exit the thread depending on the queue.
31491
31492 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31493
31494         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31495         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31496         handle more bool marshalling options
31497
31498 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31499
31500         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31501         arrays of structs. Also add a more descriptive error message when
31502         a structure member is marshalled as LPArray.
31503
31504 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31505
31506         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31507         marshalling arrays of complex types. Fixes #29098. Also remove an
31508         usused and incomplete function.
31509
31510 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31511
31512         * gc.c: report heap_size - free_bytes as total memory allocated
31513         (bug#49362).
31514
31515 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31516
31517         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31518         fix timezone handling problems on Windows.
31519         
31520         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31521         asserts when the year is outside the range handled by ms the functions.
31522
31523         * class.c (setup_interface_offsets): If the class is an interface,
31524         fill out its interface_offsets slot.
31525
31526 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31527
31528         * threadpool.c: mark threadpool threads as background.
31529
31530 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31531
31532         * decimal.c - define DECINLINE to nothing if not using GCC
31533
31534 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31535
31536         * assembly.c: More refcount fixes.
31537
31538 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31539
31540         * string-icalls.c: if we're not trimming, return the same string.
31541         When not splitting, don't create a new string.
31542
31543 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31544
31545         * image.c:
31546         (mono_image_open): increment the ref_count inside the critical section.
31547
31548 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31549
31550         * image.c (mono_image_open): Fix reference counting bug.
31551
31552 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31553
31554         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31555         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31556         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31557         mono_lookup_pinvoke_call throws.        
31558
31559 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31560
31561         * reflection.c (mono_reflection_parse_type): Fix #49114.
31562
31563         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31564         temporary workaround for cygwin header problem.
31565
31566         * object.c (mono_object_isinst): Synchronize this with the code
31567         generated by the JIT for casts.
31568
31569 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31570
31571         * reflection.c (encode_type): Fix #38332.
31572
31573 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31574
31575         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31576         the original method from the wrapper method.
31577
31578 2003-09-25  Martin Baulig  <martin@ximian.com>
31579
31580         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31581         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31582         (ves_icall_Type_get_IsGenericInstance): New interncall.
31583
31584 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31585
31586         * object.c: fix cast warning in big endian code.
31587
31588 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31589
31590         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31591         
31592 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31593
31594         * assembly.c: don't call check_env from mono_assembly_load. It's
31595         already done once in mono_assemblies_init and may cause headaches when
31596         multiple threads are loading assemblies.
31597
31598 2003-09-19  Martin Baulig  <martin@ximian.com>
31599
31600         * reflection.c (mono_reflection_define_generic_parameter): Don't
31601         allocate `klass->methods', set `klass->flags' to
31602         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31603
31604 2003-09-18  Martin Baulig  <martin@ximian.com>
31605
31606         * class.c (mono_class_init): Don't create `class->methods' if it's
31607         already initialized.
31608
31609         * metadata.c (mono_metadata_load_generic_params): Make this
31610         actually work.
31611
31612         * reflection.c (mono_reflection_define_generic_parameter): Set
31613         parent class and interfaces from the constraints.
31614
31615         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31616         to keep this struct in sync with the declaration in TypeBuilder.cs.
31617
31618 2003-09-17  Martin Baulig  <martin@ximian.com>
31619
31620         * metadata.h (MonoType): Replaced the data's `int type_param'
31621         field with `MonoGenericParam *generic_param'.
31622         (MonoGenericParam): Added `MonoClass *klass'.
31623
31624         * class.c (mono_class_from_gen_param): Removed the
31625         `MonoImage *image' and `int type_num' arguments.
31626
31627         * metadata.c (mono_metadata_parse_generic_param): New static
31628         method; creates a MonoGenericParam which just contains the index.
31629         (do_mono_metadata_parse_type): Call
31630         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31631         MONO_TYPE_MVAR.
31632
31633         * reflection.c (mono_image_typedef_or_ref): Generic type
31634         parameters may be in the same assembly, but never use a typedef
31635         for them.
31636         (mono_reflection_define_generic_parameter): We're now creating a
31637         "real" class for the type parameter; it's now safe to call
31638         mono_class_from_mono_type() on the class'es type, it'll do the
31639         right thing.
31640
31641 2003-09-16  Martin Baulig  <martin@ximian.com>
31642
31643         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31644         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31645         the `symfile' data structure must be fully initialized before it
31646         gets added to the table.
31647
31648 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31649
31650         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31651
31652         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31653         class init trampolines.
31654
31655 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31656
31657         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31658         to the built-in profiler to turn off time and allocation profiling
31659         respectively.
31660
31661 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31662
31663         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31664         g_direct_equal.
31665
31666         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31667         in human readable form.
31668
31669 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31670
31671         * reflection.c icall.c: Fixed warnings.
31672
31673         * image.c (load_class_names): Use a temporary hash table to hold the
31674         namespaces in order to avoid doing many string comparisons.
31675
31676         * image.h: Fix typo.
31677
31678         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31679         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31680         since the NULL case is short-circuited inside g_hash_table_lookup, 
31681         leading to better performance.  
31682
31683         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31684         obtain the first custom attribute for a given index. Depends on the
31685         CustomAttribute table being sorted by the parent field.
31686
31687         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31688         for better performance.
31689
31690 2003-09-07  Martin Baulig  <martin@ximian.com>
31691
31692         * class.c (mono_class_init): If we're a generic instance, inflate
31693         all our methods instead of loading them from the image.
31694         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31695
31696 2003-09-07  Martin Baulig  <martin@ximian.com>
31697
31698         * mono-debug-debugger.c: Added support for constructors.
31699
31700 2003-09-06  Martin Baulig  <martin@ximian.com>
31701
31702         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31703         New interncall.
31704
31705         * reflection.c (mono_reflection_setup_generic_class): Call
31706         ensure_runtime_vtable() to create the vtable.
31707
31708 2003-09-05  Martin Baulig  <martin@ximian.com>
31709
31710         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31711         MONO_TYPE_MVAR.
31712
31713 2003-09-04  Martin Baulig  <martin@ximian.com>
31714
31715         * reflection.c (mono_reflection_define_generic_parameter): Generic
31716         parameters start with zero.
31717
31718 2003-09-04  Martin Baulig  <martin@ximian.com>
31719
31720         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31721
31722         * reflection.h (MonoReflectionGenericParam): New typedef.
31723         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31724         the generic parameters from the managed TypeBuilder.
31725
31726         * reflection.c (mono_reflection_define_generic_parameter): New function.
31727         (mono_reflection_create_runtime_class): Encode generic parameters.
31728         (mono_reflection_setup_generic_class): New function; this is
31729         called after adding adding all generic params to the TypeBuilder.
31730         (encode_type): Added MONO_TYPE_VAR.
31731
31732 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31733
31734         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31735         here from the JIT.
31736
31737         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31738         load hook.
31739
31740 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31741
31742         * reflection.h reflection.c class.h class.c: Delete duplicate 
31743         definition of mono_type_get_name () from reflection.c and export the
31744         one in class.c.
31745
31746         * class.c: Class loading fixes from Bernie Solomon 
31747         (bernard@ugsolutions.com).
31748
31749         * reflection.c: Endianness fixes from Bernie Solomon 
31750         (bernard@ugsolutions.com).
31751         
31752 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31753
31754         * assembly.h assembly.c: Define a file format version for AOT
31755         libraries.
31756         
31757         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31758
31759         * appdomain.h (MonoJitInfo): New field to determine whenever the
31760         code is domain neutral.
31761         
31762 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31763
31764         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31765
31766 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31767
31768         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31769         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31770         Avoid caching the result since strings must be domain specific. Fixes
31771         #48050.
31772
31773 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31774
31775         * marshal.c (mono_marshal_init): Make this callable multiple times
31776         since it is hard to find a correct place to call it.
31777
31778         * object.c (mono_runtime_class_init): Execute static constructors in
31779         the correct appdomain.
31780
31781         * image.c (build_guid_table): Handle the case when multiple images have
31782         the same GUID.
31783
31784 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31785
31786         * icall.c: added a couple of icalls for System.Web.
31787
31788 2003-08-28  Martin Baulig  <martin@ximian.com>
31789
31790         * icall.c (ves_icall_Type_BindGenericParameters): Use
31791         `klass->generic_inst' instead of `&klass->byval_arg' in the
31792         mono_type_get_object() call.  The returned type must be
31793         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31794
31795 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31796
31797         * NOTES: New file.
31798
31799         * object.c (mono_class_proxy_vtable): Make it thread safe.
31800
31801         * pedump.c: Fix warning.
31802
31803         * object.c appdomain.h: Get rid of metadata_section. 
31804         It is no longer needed and it was causing deadlocks with domain->lock.
31805
31806         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31807
31808 2003-08-26  Martin Baulig  <martin@ximian.com>
31809
31810         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31811
31812 2003-08-26  Martin Baulig  <martin@ximian.com>
31813
31814         * pedump.c (main): Call mono_metadata_init(),
31815         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31816         and mono_loader_init().
31817
31818 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31819
31820         * loader.h: Add missing include to fix build.
31821
31822         * image.h: mono_image_load_references is no more.
31823
31824         * assembly.c: Reworked assembly loading to make it really thread safe.
31825         After these changes, the assembly returned by mono_assembly_open is
31826         fully initialized, i.e. all its references assemblies are loaded.
31827
31828         * assembly.c (mono_image_load_references): Renamed to 
31829         mono_assembly_load_references, and made private, since clients no
31830         longer need to call it.
31831
31832         * class.c: Removed calls to mono_assembly_load_references, since it was
31833         a source of deadlocks.
31834
31835         * loader.h loader.c class.h class.c: Protect data structures using a 
31836         new lock, the loader lock.
31837
31838         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31839         GPtrArrays only when needed.
31840
31841         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31842         into empty structures by mcs. Fixes pinvoke7.cs.
31843         
31844         * domain.c (mono_init): Call a new initialization function.
31845
31846         * appdomain.c (mono_runtime_init): Call the new initializer function
31847         of the marshal module.
31848
31849         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31850         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31851
31852         * marshal.h marshal.c: Added locks around the wrapper caches to make
31853         this module thread safe.
31854
31855         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31856         this argument. Fixes pinvoke1.exe.
31857
31858 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31859
31860         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31861         enumeration of values. Removed fields to store remote call output values in
31862         MonoAsyncResult. Not needed any more.
31863         * object.c: Initialize call_type and async_result fields in mono_message_init.
31864         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31865         dispatching the message.
31866         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31867         async call to finish. To do it use a message with EndInvoke call type.
31868
31869 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31870
31871         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31872         determines whenever a method has marshalling info.
31873
31874 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31875
31876         * assembly.c: fix the build on windows.
31877
31878 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31879
31880         * object.cs: Fixed bug #47785.
31881
31882 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31883
31884         * string-icalls.c (StringReplace): If their are no occurances of
31885         the old string found return a reference to the supplied
31886         string. This saves some memory and matches MS behavoir.
31887         
31888 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31889
31890         * socket-io.c: fixed compilation for systems that define AF_INET6
31891         and don't define SOL_IP/SOL_IPV6.
31892
31893 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31894
31895         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31896         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31897
31898         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31899
31900         * domain.c: Make this module thread safe.
31901
31902         * domain.c (mono_init): Call new initialization function.
31903
31904         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31905         reference types too. Fixes #38812.
31906
31907         * image.c (mono_image_init): Fixed warnings.
31908
31909         * class.c (mono_class_from_typeref): Handle assembly load failure
31910         correctly.
31911
31912         * appdomain.c (add_assemblies_to_domain): Handle the case when
31913         the references of an assembly are not yet loaded.
31914
31915         * metadata.c image.c assembly.c: Moved initialization of global
31916         variables to a separate function called at startup since lazy 
31917         initialization of these variables is not thread safe.
31918         
31919         * image.c assembly.c: Made this module thread safe by adding locks in 
31920         the appropriate places.
31921
31922         * domain.c (mono_init): Call the new initialization functions of the
31923         three modules.
31924
31925 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31926
31927         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31928           make a direct call. It is proxy's work to make the call asynchronous.
31929           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31930           the return values.
31931         * object.cs: mono_method_call_message_new(): read AsyncResult and
31932           state object from parameters list, if this info is requested.
31933         * object.h: Added fields to store remote call output values in
31934           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31935
31936 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31937
31938         * object.h: add needed fields to MonoThread.
31939         * threads.c, threads.h: allow registering a function to cleanup data
31940         allocated per thread by the JIT.
31941
31942 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31943
31944         * loader.h: portability fix by Bernie Solomon
31945         * <bernard@ugsolutions.com>.
31946
31947 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31948
31949         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31950         return a MonoArray. This simplifies the code and also ensures that
31951         the cache allways contains an object reference as a value.
31952
31953         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31954         function.
31955
31956 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31957
31958         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31959         fixes a problem with byte ordering when getting the address family for
31960         a socket.
31961
31962 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31963
31964         * .cvsignore: Added monosn.
31965
31966         * reflection.h reflection.c loader.c: Added support for parameter
31967         marshalling to dynamically created types. Fixes #47295.
31968
31969 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31970
31971         * rand.c: remove useless warnings.
31972
31973 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31974
31975         * class.c: implemented ldtoken for methods and fieldrefs.
31976
31977 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31978
31979         * threadpool.c: when mono_async_invoke was called, no one took care of
31980         monitoring the queue. So if the method invoked took some time and we
31981         got new async invoke requests after 500 ms (the thread created waited
31982         that long in WaitForSingleObject), the new async invoke was not called
31983         until the previous one finished.
31984
31985         This is fixed now. Thanks to Totte for helping with it.
31986
31987 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31988
31989         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31990
31991 2003-08-11  Martin Baulig  <martin@ximian.com>
31992
31993         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31994
31995 2003-08-06  Martin Baulig  <martin@ximian.com>
31996
31997         * mono-debug-debugger.c: Added support for static fields,
31998         properties and methods.
31999
32000 2003-08-06  Martin Baulig  <martin@ximian.com>
32001
32002         * mono-debug-debugger.c: Don't store the MonoString's vtable to
32003         make this work for applications with multiple application domains.
32004
32005 2003-08-04  Martin Baulig  <martin@ximian.com>
32006
32007         * mono-debug-debugger.c: Completely reworked the type support; the
32008         most important thing is that we're now just using one single
32009         `MonoType' instance per type.
32010
32011 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
32012
32013         * mono-endian.h, mono-endian.c, icall.c: Added icall
32014         ves_icall_System_Double_AssertEndianity to assert double word endianity
32015         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
32016
32017 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32018
32019         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
32020         support, icalls and fixes.
32021
32022 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
32023
32024         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
32025         classes that are a punctuation character in .NET is not the same a
32026         g_unichar_ispunct.
32027
32028 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32029
32030         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
32031
32032 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
32033
32034         * icall.c: Add new MemCopy internalcall.
32035         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
32036         Simplified code; It is not necessary to handle all the cases here,
32037         as the C# code takes care of it.  Only handle the case of the name
32038         resource embedded into the assembly.
32039
32040         Changed signature to return the data pointer and the size of the
32041         data. 
32042
32043 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
32044
32045         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
32046         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
32047
32048 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32049
32050         * socket-io.c: ignore EINTR error in select.
32051
32052 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32053
32054         * class.h, class.c: removed unused subclasses field in MonoClass.
32055
32056 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32057
32058         * icall.c: improve fix of get_base_definition(). If the parent class
32059           doesn't have the mehod, look at the parent of the parent.
32060         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
32061           to check if a parameter is an in or out parameter
32062           (PARAM_ATTRIBUTE_IN is not set by default).
32063           mono_method_return_message_restore(): Use mono_class_value_size to
32064           get the size of a value type. mono_type_stack_size (parameterType)
32065           does not return the correct value if parameterType is byRef.
32066           mono_load_remote_field(), mono_load_remote_field_new(),
32067           mono_store_remote_field(), mono_store_remote_field_new():
32068           raise exception if the remote call returns an exception.
32069
32070 2003-07-28  Martin Baulig  <martin@ximian.com>
32071
32072         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
32073         method.  This is a wrapper around mono_runtime_invoke() which
32074         boxes the instance object if neccessary.
32075
32076 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32077
32078         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
32079         metadata.h, row-indexes.h, verify.c: first cut of generics support.
32080
32081 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32082
32083         * icall.c: disable mcs bug workaround.
32084
32085 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
32086
32087         * object.c (mono_runtime_class_init): Take the metadata_section
32088         mutex before obtaining the domain mutex.
32089
32090         * appdomain.h: Added definition of metadata_section mutex here. 
32091
32092         * object.c: define metadata_mutex here.
32093
32094 2003-07-24  Ravi Pratap  <ravi@ximian.com>
32095
32096         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
32097         fixed.
32098
32099 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
32100
32101         * reflection.c: Fix bug #46669
32102
32103 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32104
32105         * exception.c:
32106         * exception.h:
32107         * icall.c:
32108         * object.h: fill in the type name for TypeLoadException.
32109
32110 2003-07-23  Ravi Pratap  <ravi@ximian.com>
32111
32112         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
32113         relationship between TypeBuilders while compiling corlib) and bug
32114         45993 (Array types returned from the runtime while compiling
32115         corlib were from the loaded corlib).
32116
32117 2003-07-22  Martin Baulig  <martin@ximian.com>
32118
32119         * mono-debug-debugger.c: Reworked the type support a bit more;
32120         distinguish between types and classes.
32121
32122 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
32123
32124         * icall.c: add IsArrayImpl icall.
32125
32126 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
32127
32128         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
32129         initializing real_size only once. Also fix bug #46602.
32130
32131 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
32132
32133         * object.c: Renamed mono_metadata_section to metadata_section.
32134
32135 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32136
32137         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32138           empty array if the type is an array. Fixed.
32139           ves_icall_MonoMethod_get_base_definition: if the base method
32140           is abstract, get the MethodInfo from the list of methods of
32141           the class.
32142         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32143           and it was 1-based. Fixed in mono_param_get_objects.
32144
32145 2003-07-20  Martin Baulig  <martin@ximian.com>
32146
32147         * mono-debug.h: Set version number to 31.
32148         (mono_debug_init): Added `MonoDomain *' argument.
32149
32150         * mono-debug-debugger.c: Reworked the type support; explicitly
32151         tell the debugger about builtin types; pass the `klass' address to
32152         the debugger.
32153
32154 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32155
32156         * image.c: Allow new metadata tables to be loaded without a
32157         warning. Also update the warning message to give the new constant value.
32158                 
32159 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32160
32161         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32162         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32163         array type representation changes.
32164
32165 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32166
32167         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32168         on Environment.Exit () call.
32169
32170 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32171
32172         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32173         requires a matching corlib.
32174
32175 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32176
32177         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32178           Committed again without the CRs.
32179         
32180 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32181
32182         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32183           getting it from the "this" socket instance. Did not work
32184           if the socket is a subclass of Socket.
32185           Also fixed bug #35371.
32186
32187 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32188
32189         * metadata.c: fixed size for TypedByRef.
32190         * loader.c: when searching for a method, consider the vararg amrker.
32191         * unicode.c, decimal.c: constify some arrays.
32192
32193 2003-07-15  Dick Porter  <dick@ximian.com>
32194
32195         * socket-io.c: Fixed compilation for gcc < 3.2.
32196
32197         Fixed compilation for machines that don't have AF_INET6 (thanks to
32198         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32199
32200         Fixed compile warnings.
32201         
32202         Fixed formatting and line endings.
32203
32204 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32205
32206         * socket-io.h:
32207         * socket-io.c: Added IPv6 support.
32208
32209 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32210
32211         * class.c (mono_class_is_assignable_from): New function to implement
32212         the is_assignable_from logic. Used by mono_object_isinst, 
32213         Type::IsAssignableFrom () and the interpreter.
32214
32215         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32216         Object, even interfaces.
32217         
32218         * object.c (mono_object_isinst): Implement in terms of 
32219         is_assignable_from.
32220
32221         * icall.c (ves_icall_type_is_assignable_from): New icall.
32222
32223 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32224
32225         * domain.c (foreach_domain): fix compiler warning.
32226
32227 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32228
32229         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32230         not available on all plattforms
32231
32232 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32233
32234         * image.h image.c: Store the metadata version string in MonoImage.
32235         * icall.c: New icall to retrieve the image version.
32236         * reflection.c (create_dynamic_image): Fill in the image version field
32237         * reflection.c (build_compressed_metadata): Use the image version
32238         from the image structure.
32239
32240 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32241
32242         * appdomain.c: modified comment.
32243         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32244         That will be its last iteration when mono_gc_cleanup is called from
32245         mono_runtime_cleanup and before the domain is unloaded.
32246
32247         Fixes bug #45962.
32248
32249 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32250
32251         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32252         attributes.
32253
32254 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32255
32256         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32257         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32258         Bernie Solomon <bernard@ugsolutions.com>.
32259
32260 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32261
32262         * object.c, object.h: provide mono_object_new_fast() for faster
32263         allocation in some special cases.
32264
32265 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32266
32267         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32268         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32269
32270 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32271
32272         * threadpool.c: fix leaks.
32273
32274 2003-07-01  Dick Porter  <dick@ximian.com>
32275
32276         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32277         using MonoGHashTables.  Fixes threadpool bug posted to list.
32278
32279 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32280
32281         * image.h, image.c: added support to load an assembly from a byte array.
32282         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32283         assembly bundle support.
32284
32285 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32286
32287         * threadpool.c (mono_thread_pool_add): keep a reference to the
32288         AsyncResult to prevent GC
32289
32290 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32291
32292         * class.c: leak fix.
32293
32294 2003-06-25  Dick Porter  <dick@ximian.com>
32295
32296         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32297         for the async object, the WaitHandle object will close the handle.
32298         Fixes bug 45321.
32299
32300 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32301
32302         * class.c: in mono_array_class_get (), lookup from the hash with the
32303         same type we insert: this works around a bug in
32304         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32305         lluis. The real fix will have to wait for after the release.
32306
32307 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32308
32309         * icall.c: fix memory leak when getting type members.
32310
32311 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32312
32313         * reflection.c: added more pubtoken special cases.
32314
32315 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32316
32317         * class.c: handle field offset correctly when class size
32318         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32319
32320 2003-06-20  Martin Baulig  <martin@ximian.com>
32321
32322         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32323         *image' field.
32324
32325 2003-06-20  Martin Baulig  <martin@ximian.com>
32326
32327         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32328
32329 2003-06-20  Martin Baulig  <martin@ximian.com>
32330
32331         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32332         just distinguish between variables in registers and variables at
32333         an offset relative to a register.
32334
32335 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32336
32337         * icall.c: #ifdef out latest changes until mcs is fixed.
32338
32339 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32340
32341         * icall.c: return members in metadata order.
32342
32343 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32344
32345         * icall.c: avoid infinite loop in GetTimeZoneData.
32346
32347 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32348
32349         * icall.c: added Marshal.Prelink/All icalls.
32350
32351 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32352
32353         * object.c, object.h: fix warnings and do some overflow checking
32354         when creating arrays.
32355
32356 2003-06-17  Dick Porter  <dick@ximian.com>
32357
32358         * file-io.h:
32359         * file-io.c: File attributes need to be tweaked slightly when
32360         passed from the managed to the w32 world.
32361
32362 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32363         * profiler.h profiler-private.h profiler.c: Rework last patch
32364         based on suggestion by Paolo.
32365         
32366 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32367
32368         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32369         instruction level coverage data collection.
32370         * profiler.h profiler.c (: Added new callback function which can be
32371         used by the profiler to limit which functions should have coverage
32372         instrumentation.
32373         * profiler.c (mono_profiler_load): Call g_module_build_path to
32374         generate the file name of the profiler library.
32375
32376 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32377
32378         * profiler.c, profiler.h, profiler-private.h: added basic block 
32379         coverage profiling API.
32380
32381 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32382
32383         * reflection.c (mono_reflection_create_runtime_class): Add support
32384         for events in dynamically generated code.
32385
32386         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32387         not allocated.
32388
32389 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32390
32391         * icall.c: when getting timezone info, return reasonable values if we
32392         can't get the actual data.
32393
32394 2003-06-14  Dick Porter  <dick@ximian.com>
32395
32396         * threads.c (start_wrapper): Remove the reference to the thread
32397         object in the TLS data, so the thread object can be finalized.
32398         This won't be reached if the thread threw an uncaught exception,
32399         so those thread handles will stay referenced :-( (This is due to
32400         missing support for scanning thread-specific data in the Boehm GC
32401         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32402
32403 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32404
32405         * reflection.c: ensure streams and tables are first allocated with
32406         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32407
32408 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32409
32410         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32411
32412 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32413
32414         * reflection.c (mono_reflection_create_runtime_class): Add support for
32415         properties to dynamically created classes.
32416         * reflection.c: Fix a few places where non-MonoObjects were inserted
32417         into the tokens hashtable.
32418
32419 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32420
32421         * object.c: some support to handle out of memory exceptions.
32422
32423 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32424
32425         * marshal.c (mono_marshal_get_native_wrapper): support reference
32426         return types
32427
32428 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32429
32430         * object.h, object.c: more portability stuff from Bernie Solomon.
32431         Unexport mono_object_allocate(). Added mono_object_unbox ().
32432         Set exitcode when an unhandled exception is thrown.
32433
32434 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32435
32436         * marshal.c (mono_marshal_get_native_wrapper): use custom
32437         marshaler for return types.
32438
32439 2003-06-10  Dick Porter  <dick@ximian.com>
32440
32441         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32442         ip_mreq is available
32443
32444 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32445
32446         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32447         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32448         by Bernie Solomon <bernard@ugsolutions.com>.
32449
32450 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32451
32452         * gc.c (mono_gc_init): Avoid error message on shutdown when
32453         GC_DONT_GC=1 is used.
32454
32455         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32456         New icall to return the GUID of a module.
32457
32458 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32459
32460         * class.c: ensure instance size always includes the parent's size
32461         even whem class size is set explicitly (fixes bug#44294).
32462
32463 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32464
32465         * profiler.h, profiler.c: made the simple profiler thread-safe,
32466         get more accurate timing info. Allow the loading of an
32467         externally-developed profiler module.
32468
32469 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32470
32471         * marshal.c (mono_marshal_get_native_wrapper): improved
32472         class/byref arguments.
32473         (mono_marshal_get_native_wrapper): better string marshaling support.
32474
32475 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32476
32477         * class.c: ensure .pack and .size are handled correctly and
32478         simplified layout of static fields.
32479
32480 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32481
32482         * appdomain.c
32483         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32484
32485         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32486         current directory (fix bug 44008)
32487
32488 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32489
32490         * marshal.c (mono_marshal_get_native_wrapper): started support for
32491         custom marshalers.
32492         (mono_delegate_to_ftnptr): consider marshalling specifications
32493
32494 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32495
32496         * reflection.c, reflection.h: emit custom marshal info.
32497
32498 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32499
32500         * object.c: free the GError.
32501         * icall.c: added CloseEvent_internal.
32502         * threads.[ch]:
32503         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32504         call.
32505
32506 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32507
32508         * loader.c (mono_method_get_signature): Add support for dynamic
32509         assemblies.
32510
32511 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32512
32513         * reflection.c: fixed bug #43905.
32514
32515 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32516
32517         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32518         handling TypedReference and ArgIterator.
32519         * loader.c, loader.h: added function to get signature at call site.
32520
32521 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32522
32523         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32524         data readonly. Buglets and warning fixes. Some MethodSpec support.
32525
32526 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32527
32528         * class.h, class.c, object.c: remove relative numbering support.
32529
32530 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32531
32532         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32533         free the string, until we get a chance to fix Gtk#
32534
32535 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32536
32537         * marshal.c: revert last patch.
32538
32539 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32540
32541         * icall.c: updates for new mono_class_vtable() not calling
32542         the type constructor anymore.
32543
32544 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32545
32546         * object.h, object.c: separate vtable creation from type
32547         initialization. Make running the .cctor thread safe.
32548
32549 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32550
32551         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32552
32553 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32554
32555         * loader.c (mono_get_method): consider calling convention
32556
32557 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32558
32559         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32560         to return the invisible global type for a module.
32561
32562         * reflection.c (mono_image_build_metadata): Emit global fields too.
32563
32564 2003-05-20  Peter Williams  <peterw@ximian.com>
32565
32566         * loader.c (mono_lookup_internal_call): Add a few newlines.
32567
32568 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32569
32570         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32571         literal strings.
32572
32573         * appdomain.c (set_domain_search_path): Recalculate search path when
32574         AppDomainSetup.PrivateBinPath changes.
32575
32576         * object.c (mono_class_compute_gc_descriptor): It turns out some
32577         parts of the class libs (like System.Thread) holds pointers to
32578         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32579         to treat native int a pointer type here.
32580         
32581 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32582
32583         * appdomain.h, domain.c: add hashtable for jump target resolution.
32584
32585 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32586
32587         * reflection.h reflection.c icall.c: Added new icalls 
32588         GetManifestResourceInfoInternal, GetModulesInternal and support
32589         infrastructure.
32590
32591 2003-05-16  Dick Porter  <dick@ximian.com>
32592
32593         * icall.c:
32594         * file-io.h:
32595         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32596
32597 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32598
32599         * object.c: mono_store_remote_field: little fix to previous patch.
32600
32601 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32602
32603         * class.c: add constructors to array classes.
32604         * icall.c: special case array construction for InternalInvoke (),
32605
32606 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32607
32608         * class.h class.c reflection.c object.c: Added support for field
32609         defaults in dynamically generated classes.
32610
32611 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32612
32613         * reflection.c: properly encode charset for ddlimport.
32614
32615 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32616
32617         * threads.c: allow compiling without GC.
32618
32619 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32620
32621         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32622         handling of thread static data.
32623
32624 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32625
32626         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32627
32628 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32629
32630         * class.c (mono_array_class_get): always set the serializable flags
32631         (mono_array_class_get): always set the SEALED attribute for array types
32632
32633 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32634
32635         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32636         attributes (fix for bug 42021).
32637
32638 2003-05-12  Dick Porter  <dick@ximian.com>
32639
32640         * gc.c: Don't run finalizers when the finalizer thread is
32641         finishing up, because the default domain has already been
32642         destroyed.
32643
32644 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32645
32646         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32647         value is null, we should throw an exception.   This is slightly
32648         different than the other conventions used for the constructor.
32649
32650 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32651
32652         * socket-io.c: fixed windows build.
32653
32654 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32655
32656         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32657
32658 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32659
32660         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32661         compilers.
32662
32663 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32664
32665         * class.c (mono_class_layout_fields): Add experimental GC aware
32666         auto layout facility. Requires class library changes to work correctly.
32667
32668         (mono_class_setup_vtable): Avoid overriding explicit interface
32669         method implementations. Fixes iface3.exe test.
32670
32671         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32672         object reference.
32673         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32674         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32675
32676         * metadata.h: Add new type classification macro which determines
32677         whenever the type holds an object reference.
32678
32679 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32680
32681         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32682
32683 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32684
32685         * gc.c (finalizer_thread): Work around a GC bug.
32686
32687 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32688
32689         * marshal.c (emit_struct_conv): allow unions
32690
32691         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32692
32693 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32694
32695         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32696
32697 2003-05-06  Martin Baulig  <martin@ximian.com>
32698
32699         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32700
32701 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32702
32703         * socket-io.c:
32704         (Select_internal): allow NULLs, don't create arrays if not needed.
32705         Coupled with Socket.cs changes.
32706
32707         * threadpool.c:
32708         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32709         register a finalizer for it that will close the semaphore handle. This
32710         fixes the leak and make Lupus' test run with > 4080 loops.
32711
32712 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32713
32714         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32715         Jerome Laban (bug #42287)
32716
32717 2003-05-02  Martin Baulig  <martin@ximian.com>
32718
32719         * debug-mono-symfile.h
32720         (MonoSymbolFile): Moved declaration into mono-debug.h.
32721         (MonoDebugMethodJitInfo): Likewise.
32722         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32723         argument.
32724         (_mono_debug_address_from_il_offset): Take a
32725         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32726
32727         * mono-debug.h
32728         (MonoDebugDomainData): New struct.
32729         (mono_debug_get_domain_data): New function.
32730         (mono_debug_add_method): Take an additional `MonoDomain *'
32731         argument.
32732         (mono_debug_source_location_from_address): Likewise.
32733         (mono_debug_il_offset_from_address): Likewise.
32734         (mono_debug_address_from_il_offset): Likewise.
32735
32736 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32737
32738         * reflection.c: one more check for null type in custom attrs.
32739
32740 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32741
32742         * reflection.c: avoid warning (comparison is always false due to limited
32743         range of data type).
32744
32745 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32746
32747         * icall.c: throw an exception in Type.GetField if the argument 'name'
32748         is NULL.
32749
32750 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32751
32752         * reflection.c: fixed handling of enums in named arguments to custom
32753         attributes (bug #42123).
32754
32755 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32756
32757         * reflection.c: use the right array element type and handle
32758         a null for a Type argument, too.
32759
32760 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32761
32762         * reflection.c: handle arrays as arguments to custom attributes.
32763
32764 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32765
32766         * reflection.c: handle a string value in a custom attr
32767         ctor that takes an object.
32768
32769 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32770
32771         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32772         (fix bug #42063)
32773
32774 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32775
32776         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32777
32778 2003-04-27  Martin Baulig  <martin@ximian.com>
32779
32780         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32781         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32782         MONO_DEBUGGER_EVENT_BREAKPOINT.
32783         (mono_breakpoint_trampoline_code): Removed.
32784         (mono_debugger_event_handler): The last argument is now a
32785         `guint32'.
32786         (mono_debugger_insert_breakpoint_full): Removed the
32787         `use_trampoline' argument.
32788         (mono_debugger_method_has_breakpoint): Likewise.
32789         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32790         mono_debugger_breakpoint_callback(); take the method and
32791         breakpoint number as arguments.
32792
32793 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32794
32795         * metadata.c: fix off by one when loading parameters attributes.
32796
32797 2003-04-24  Martin Baulig  <martin@ximian.com>
32798
32799         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32800
32801 2003-04-24  Martin Baulig  <martin@ximian.com>
32802
32803         * mono-debug-debugger.c: Moved all code which interacts with the
32804         Mono Debugger here.
32805
32806         * debug-mono-symfile.c: This code now just deals with the symbol
32807         file itself, the debugger code is now in mono-debug-debugger.c.
32808
32809 2003-04-23  Martin Baulig  <martin@ximian.com>
32810
32811         * mono-debug.c (mono_debug_source_location_from_il_offset):
32812         New method; like mono_debug_source_location_from_address(), but
32813         takes an IL offset instead of a machine address.
32814
32815 2003-04-23  Martin Baulig  <martin@ximian.com>
32816
32817         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32818         `line' field; this is now computed by the debugger.
32819
32820 2003-04-23  Martin Baulig  <martin@ximian.com>
32821
32822         * mono-debug.[ch]: New files.  This is the new debugging interface.
32823
32824         * mono-debug-debugger.[ch]: New files.  Moved all code which
32825         interacts with the Mono Debugger here.
32826
32827 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32828
32829         * domain.c (mono_init): initialize mono_defaults.monitor_class
32830
32831 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32832
32833         * reflection.c (method_encode_code): Add a spicy exception to help
32834         future compiler authors.
32835
32836 2003-04-21  Martin Baulig  <martin@ximian.com>
32837
32838         * icall.c
32839         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32840         Make this work with relative pathnames; g_filename_to_uri() needs
32841         an absolute filename.
32842
32843 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32844
32845         * icall.c: Track name changes in Object and ValueType.
32846
32847 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32848
32849         * metadata.c (mono_type_stack_size): size should be a multiple of
32850         sizeof (gpointer)
32851
32852 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32853
32854         * gc.c:
32855         (internal_domain_finalize): moved into mono_domain_finalize. No need
32856         to create another thread because the finalizers will be run in the
32857         finalizer thread.
32858         
32859         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32860         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32861         to be run (MS does this too).
32862
32863 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32864
32865         * object.c (mono_class_compute_gc_descriptor): Update comment.
32866
32867         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32868
32869         * image.h: Add synchronized wrapper cache.
32870
32871         * image.c (do_mono_image_open): Initialize cache.
32872
32873         * reflection.c (create_dynamic_mono_image): Initialize cache.
32874
32875 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32876
32877         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32878         ves_icall_System_Buffer_ByteLengthInternal.
32879
32880 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32881
32882         * reflection.c: setup klass->nested_in earlier. Allow
32883         a dash in the assembly name.
32884
32885 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32886
32887         * metadata.c (mono_type_to_unmanaged): dont access
32888         type->data.klass for MONO_TYPE_OBJECT
32889         (mono_type_to_unmanaged): consider System.Delegate class
32890
32891 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32892
32893         * class.c: just setup supertypes in the proper place instead of
32894         initializing the full element class for arrays.
32895
32896 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32897
32898         * class.c: ensure the element class of arrays is initialized.
32899         Setup the supertype info for array classes, too.
32900
32901 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32902
32903         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32904
32905 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32906
32907         * Makefile.am: re-added -m option when running cygpath. This way,
32908         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32909         separator.
32910         * mono-config.c: same codepath for locating mono config file for WIN32
32911         and the rest.
32912         * assembly.c: if mono_assembly_setrootdir is called, don't override
32913         the value set.
32914
32915 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32916
32917         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32918         MONO_ASSEMBLIES variable.
32919
32920 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32921
32922         * icall.c: added Assembly::GetNamespaces() icall.
32923
32924 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32925
32926         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32927
32928 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32929
32930         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32931         * object.c: fixed bug in the construction of vtable for proxies
32932
32933 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32934
32935         * object.c (mono_array_new): Mark mono_array_new as an icall.
32936
32937 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32938
32939         * class.c: fixed test for public method when overriding interfaces.
32940         Closes bug #40970.
32941
32942 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32943
32944         * appdomain.h, domain.c: added mono_domain_foreach() to
32945         be able to access the currently loaded appdomains.
32946         * object.c: make string interning work across sppdomains.
32947         Mark some functions for use as icalls.
32948
32949 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32950
32951         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32952
32953         * reflection.h reflection.c: Allocate long living data using 
32954         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32955
32956         * reflection.c: Double the allocation size in streams instead of
32957         increasing it, to prevent unneccesary copying on large assemblies.
32958         
32959         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32960         creation if the assembly does not have the Run flag set.
32961
32962 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32963
32964         * class.h: avoid the C++ keywords in header files (Jerome Laban
32965         spotted and fixed this).
32966
32967 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32968
32969         * object.c:
32970         (mono_unhandled_exception): fill in the arguments for the
32971         UnhandledException event. Only trigger that event for the default
32972         domain (as MS does).
32973
32974 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32975
32976         * object.c: Improve typed allocation stuff based on suggestions from
32977         Paolo. Also turn it on if the GC library supports it.
32978
32979 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32980
32981         * object.c object.h class.h: Added experimental typed allocation
32982         facility using the interfaces in gc_gcj.h.
32983
32984         * os/gc_wrapper.h: Added new include files.
32985         
32986 2003-04-03  Martin Baulig  <martin@ximian.com>
32987
32988         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32989         which is not yet enabled by default.
32990
32991         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32992         functions.
32993         (mono_gc_lock, mono_gc_unlock): New static functions.
32994
32995         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32996         functions; stop/start the world for the garbage collector.  This
32997         is using the windows API; we need to complete the SuspendThread()/
32998         ResumeThread() implementation in the io-layer to make this work on Unix.
32999         (mono_gc_push_all_stacks): New public function; tells the garbage
33000         collector about the stack pointers from all managed threads.
33001
33002 2003-04-03  Martin Baulig  <martin@ximian.com>
33003
33004         * object.h (MonoThread): Added `gpointer stack_ptr'.
33005
33006         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
33007
33008 2003-04-03  Martin Baulig  <martin@ximian.com>
33009
33010         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
33011
33012 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33013
33014         * reflection.c (typebuilder_setup_fields): Initialize field.first and
33015         field.last.
33016
33017 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
33018
33019         * loader.c (mono_lookup_internal_call): Report the corlib that is
33020         out of sync.
33021
33022 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
33023
33024         * icall.c (ves_icall_type_GetTypeCode): fixed check for
33025         System.DBNull (it's class not valuetype).
33026
33027 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
33028
33029         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
33030         if the array method was already assigned a token (fixes bug#40646).
33031
33032 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
33033
33034         * reflection.c (mono_reflection_get_type): Attempt type resolve even
33035         if no assembly is given.
33036
33037 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
33038
33039         * metadata.h: Added the new tables.
33040
33041         * row-indexes.h: Added definitions for new tables.
33042
33043         * metadata.c: Add schemas for new tables, and add support for
33044         computing the sizes of them.
33045
33046         * class.c: Update for handling the new type cases.
33047
33048 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
33049
33050         * metadata.h (MONO_TYPE_IS_VOID): new macro
33051
33052 2003-03-31  Martin Baulig  <martin@ximian.com>
33053
33054         * threads.h (MonoThreadCallbacks): Added `thread_created'.
33055
33056         * threads.c (mono_thread_new_init): Call `thread_created' in the
33057         mono_thread_callbacks.
33058
33059 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
33060
33061         * loader.h: added marshalbyrefobject_class to mono_defaults
33062         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
33063         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
33064           generation of output parameters.
33065           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
33066         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
33067           contextbound and the target object belongs to the context of the caller.
33068         * object.h: added context and unwrapped_server variables in MonoRealProxy.
33069         * object.c: Implemented support for interfaces and abstract classes
33070           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
33071           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
33072
33073 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
33074
33075         * class.h class.c (mono_class_is_subclass_of): New function.
33076         
33077         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
33078         routines for most common case (calls from ArrayList::ToArray).
33079
33080         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
33081         routine so programs which call Environment::Exit() can be profiled.
33082
33083         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
33084         Added MONO_ARCH_SAVE_REGS.
33085
33086         * icall.c (ves_icall_type_is_subtype_of): Use new function.
33087
33088 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
33089
33090         * blob.h: Add a couple of new MonoType types definitions.
33091
33092         * tabledefs.h: Add a couple of new call convs.
33093
33094 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
33095
33096         * reflection.h (MonoReflectionDynamicAssembly): track changes in
33097         the layout of the class.
33098
33099         * reflection.c (alloc_table): double the size on overflow to avoid
33100         unnecessary copying.
33101
33102         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
33103         avoid filling out metadata tables and blobs. Also set mb->ilgen to
33104         null so it can be garbage collected.
33105         
33106 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
33107
33108         * reflection.c (mono_reflection_get_type): Return the resolved type
33109         only if it is in the assembly we searched.
33110
33111         * reflection.c (ensure_runtime_vtable): Initialize method slots.
33112
33113         * class.c (mono_class_setup_vtable): Set the slot of the overriding
33114         method.
33115
33116 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33117
33118         * appdomain.c:
33119         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
33120         the right one is 'file:///blah', but MS allows it.
33121         * assembly.c:
33122         (mono_assembly_open): allow 'file://blah'
33123
33124         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
33125
33126 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
33127
33128         * socket-io.c: fixes bug #40310.
33129
33130 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
33131
33132         * reflection.c (mono_reflection_parse_type): handle deeply nested
33133         types correctly.
33134
33135         * reflection.c (mono_image_create_token): Use unique token values
33136         since they will be put into a hash table.
33137
33138         * class.c (mono_class_setup_vtable): If a method occurs in more than
33139         one place in the vtable, and it gets overriden, then change the
33140         other occurances too.
33141
33142         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33143         object as return type.
33144
33145 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33146
33147         * icall.c: Deleted "ToString" implementation for double and float
33148         because they are full implemented in managed code.
33149
33150 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33151
33152         * reflection.c, reflection.h: implemented and exported functions
33153         to retrieve info about custom attributes.
33154
33155 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33156
33157         * appdomain.c: moved Uri handling to assembly.c
33158         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33159         work when using a file Uri in *nix and windows.
33160
33161         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33162         GetReferencedAssemblies.
33163
33164 2003-03-18  Dick Porter  <dick@ximian.com>
33165
33166         * icall.c: Rename a couple of internal calls
33167
33168         * threads.c: Set the thread state to Stopped when a thread exits.
33169         Fixes bug 39377.
33170
33171 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33172
33173         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33174         New icall.
33175
33176         * object.c (mono_class_vtable): fix warning.
33177
33178 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33179
33180         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33181
33182         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33183         memory.
33184         (method_encode_clauses): Create exception info structures in the right
33185         order.
33186         (mono_reflection_setup_internal_class): Initialize supertypes field.
33187
33188         * class.c object.c: Handle interfaces which implement other interfaces 
33189         correctly.
33190
33191         * class.h class.c: Move the supertypes array initialization code into 
33192         a separate function so it can be used for dynamic types too. Also call
33193         it earlier, in mono_class_init(), since it can be used before the
33194         type is initialized.
33195
33196 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33197
33198         * Makefile.am:
33199         * assembly.c:
33200         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33201
33202         * appdomain.c:
33203         * appdomain.h:
33204         * marshal.c:
33205         * object.c: remove warnings.
33206
33207 2003-03-13  Martin Baulig  <martin@ximian.com>
33208
33209         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33210         (MonoDebugLexicalBlockEntry): New types.
33211
33212         * debug-mono-symfile.c
33213         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33214
33215 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33216
33217         * process.c: ret can be any non-zero value accroding to MS doc.
33218
33219 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33220
33221         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33222         fixing a warning for a miss-used prototype, would have cause
33223         random memory corruption.
33224
33225 2003-03-07  Martin Baulig  <martin@ximian.com>
33226
33227         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33228         getting really annoying ....
33229
33230 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33231
33232         * reflection.c (fixup_method): added support for array methods.
33233
33234 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33235
33236         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33237         (pointed out by Michael Adams).
33238
33239 2003-03-04  Dick Porter  <dick@ximian.com>
33240
33241         * icall.c: Temporarily reverted the Double and Single ToString()
33242         change, because it broke nunit.
33243
33244 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33245
33246         * object.h, threads.h: make include files compatible with C++
33247         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33248
33249 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33250
33251         * icall.c: Erased ToString helper functions for Double and Single.
33252         Now, that implementations ar all in managed code (Double and Single
33253         Formatters).
33254
33255 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33256
33257         * appdomain.c: Added method for initializing the default context of
33258         a domain. Added internal call for getting the default context.
33259         * appdomain.h: Added context variable in MonoDomain struct.
33260         * domain.c: mono_domain_set also sets the default context of the domain
33261         * icall.c: Mapped internal method InternalGetDefaultContext.
33262         * object.c: mono_object_get_virtual_method returns always a remoting
33263         wrapper if the object is a transparent proxy.
33264         mono_runtime_invoke_array: when creating an object by calling the
33265         constructor, if the created object is a proxy, then the constructor should
33266         be called using the a remoting wrapper.
33267
33268 2003-03-03  Dick Porter  <dick@ximian.com>
33269
33270         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33271         variable so it compiles on solaris.  Problem spotted by
33272         Christopher Taylor <ct@cs.clemson.edu>
33273
33274 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33275
33276         * appdomain.c:
33277         (get_info_from_assembly_name): don't leak value.
33278
33279         * icall.c:
33280         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33281         result.
33282
33283 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33284
33285         * assembly.c: export mono_image_load_references ().
33286         * class.c: handle function pointers. mono_class_from_name() now
33287         supports nested type names directly.
33288
33289 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33290
33291         * reflection.h reflection.c: Encode already created dynamic methods 
33292         and fields correctly as a DEF instead of a REF.
33293
33294         * reflection.c: Get rid of the force_ref argument to 
33295         mono_image_typedef_or_ref since it was wrong in the first place.
33296
33297         * string-icalls.c: add error checking to string constructors according
33298         to the MSDN docs.
33299
33300         * reflection.c: Emit types in the order their TypeBuilders were 
33301         created. Previously, a new table index was assigned to each type before
33302         the tables were emitted. This was wrong because the signature blob
33303         might already refer to a type by its original table index.
33304
33305 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33306
33307         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33308         change.
33309         
33310 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33311
33312         * Makefile.am: make assemblies dir have \ instead of / on windows.
33313
33314 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33315
33316         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33317         iterate over the NESTEDCLASS table using a linear search since the
33318         table is not guaranteed to be sorted by the secondary key.
33319
33320         * class.c (mono_class_create_from_typedef): fixed up call to
33321         mono_metadata_nesting_typedef.
33322         
33323 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33324
33325         * marshal.c (mono_string_to_byvalstr): clear the memory as
33326         suggested by Jerome Laban <jlaban@wanadoo.fr>
33327
33328 2003-02-26  Dick Porter  <dick@ximian.com>
33329
33330         * process.c: Cope with padding in .rsrc blocks
33331
33332 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33333
33334         * metadata.h: reverted the filter_len change, it breaks reflection
33335         
33336 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33337
33338         * metadata.h: added a new field to store the filter_len
33339         
33340
33341 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33342
33343         * reflection.c: handle custom attributes for types and members
33344         created with Reflection.Emit (bug#38422).
33345
33346 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33347
33348         * reflection.c: define RTSpecialName automatically for constructors for
33349         compatibility with MS.NET.
33350
33351         * reflection.c (mono_reflection_create_runtime_class): initialize
33352         nested_in field of dynamically created classes.
33353
33354 2003-02-22  Martin Baulig  <martin@ximian.com>
33355
33356         * debug-mono-symfile.h: Incremented version number.
33357
33358 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33359
33360         * object.h icall.c process.c: fix warnings.
33361
33362 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33363
33364         * appdomain.h appdomain.c:
33365         (mono_domain_try_type_resolve): split the 
33366         name_or_tb argument into a name and a tb argument.
33367         (mono_domain_has_type_resolve): new function to check whenever the
33368         application has registered a TypeResolve event handler.
33369         
33370         * icall.c reflection.h reflection.c: move the type resolve logic into
33371         mono_reflection_get_type () so it will be invoked when 
33372         Assembly::GetType () is called.
33373
33374         * reflection.c:
33375         (mono_reflection_get_type): renamed to get_type_internal.
33376         (mono_reflection_get_type): fixed type name generation so it works 
33377         for nested types too.
33378         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33379         costly type name generation if there is no resolve event handler.
33380
33381 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33382
33383         * class.c, image.c: load exported types from file references.
33384
33385 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33386
33387         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33388           used to cache the managed methods used to create proxies and make 
33389           remote invocation of methods.
33390         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33391           to be remotely created.
33392         * object.c: Modified the method mono_class_vtable(). It now initializes 
33393           the remote flag of the vtable. Modified mono_object_new_specific(), 
33394           so now it checks the remote flag.
33395         * icall.c: Added a couple of internal methods, one for enabling instance 
33396           creation interception for a type, and one for creating objects bypassing
33397           the remote check.
33398
33399 2003-02-18  Martin Baulig  <martin@ximian.com>
33400
33401         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33402         New interncall to get a method's metadata token.
33403
33404         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33405         New interncall for the debugger.
33406
33407 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33408
33409         * class.c (mono_class_setup_vtable): allocate supertype array
33410
33411 2003-02-18  Martin Baulig  <martin@ximian.com>
33412
33413         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33414
33415 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33416
33417         * reflection.c:
33418         (assembly_name_to_aname): jump over unknown properties (i've found
33419         something like: 'type, assembly, version=xxx, custom=null, public...',
33420         so now will ignore custom=null and still get the rest of the values).
33421
33422 2003-02-17  Dick Porter  <dick@ximian.com>
33423
33424         * threads.c: Have Thread.Start() wait for a semaphore to signal
33425         that the thread has set up all its local data.  This fixes bug
33426         34323, where Abort() raced the new thread's TLS data.
33427
33428         Also removes the handle_store() call from start_wrapper, because
33429         threads are now always created suspended and there is no longer a
33430         race between the parent and child threads to store the info.
33431
33432 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33433
33434         * image.c: explain the #- heap issue in a message, hopefully
33435         avoiding FAQs on mono-list.
33436
33437 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33438
33439         * icall.c:
33440         (GetEntryAssembly): if the domain has not invoked
33441         AppDomain.ExecuteAssembly yet, return the assembly of the default
33442         AppDomain.
33443
33444 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33445
33446         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33447
33448 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33449
33450         * metadata.c, reflection.c: simple speedup to type hash
33451         and equals code.
33452
33453 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33454
33455         * image.c, image.h, class.c, assembly.c: move module loading
33456         to MonoImage. When loading metadata, consider alignemnet from
33457         the start of metadata, not from the metadata address in memory.
33458
33459 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33460
33461         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33462         AssemblyBuilder objects. Factored out custom attribute creation into
33463         a separate function.
33464         (create_custom_attr): new function to create custom attributes.
33465
33466 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33467
33468         * Makefile.am: Got tired of typing the full pathname to pedump.
33469         Until there is another option, am installing this.
33470
33471 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33472
33473         * class.c (class_compute_field_layout): always set field->parent 
33474         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33475
33476 2003-02-11  Dick Porter  <dick@ximian.com>
33477
33478         * threads-types.h:
33479         * monitor.c: Rewrote Monitor, making lock much faster and
33480         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33481         creates them as needed.
33482
33483         * exception.c: Added SynchronizationLockException
33484
33485         * threads.c: Deleted old Monitor implementation.  The new one is
33486         in a new file.
33487
33488 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33489
33490         * class.c: handled TypedReference type code. Set the correct size for
33491         class data. Setup interface_offsets for interface classes, too.
33492
33493 2003-02-09  Martin Baulig  <martin@ximian.com>
33494
33495         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33496
33497 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33498
33499         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33500         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33501         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33502         * verify.c: check for code that runs after the end of the method.
33503
33504 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33505
33506         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33507         "System.Math::Round2".
33508         * sysmath.h: Added Floor, Round and Round2 definitions.
33509         * sysmath.c: Modified certain functions that were not 100% compliant
33510         with MS.NET (math precision) and added the implementation of Floor,
33511         Round and Round2.
33512
33513 2003-02-07  Martin Baulig  <martin@ximian.com>
33514
33515         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33516
33517 2003-02-07  Martin Baulig  <martin@ximian.com>
33518
33519         * debug-mono-symfile.c: Reflected latest symwriter changes.
33520         (mono_debug_create_mono_symbol_file): Removed.
33521         (mono_debug_open_mono_symbol_file): Take an argument which
33522         specifies whether to create a dynamic symbol file.
33523
33524 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33525
33526         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33527
33528 2003-02-05  Martin Baulig  <martin@ximian.com>
33529
33530         * reflection.c (mono_image_build_metadata): Make this public,
33531         protect it against being called multiple times, don't create
33532         resources and don't build the compressed metadata here.
33533         (mono_image_create_pefile): Do this here.
33534
33535         * icall.c
33536         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33537
33538 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33539
33540         * socket-io.c: fixed bug #36322.
33541
33542 2003-02-06  Piers Haken <piersh@friskit.com>
33543
33544         * appdomain.[ch]:
33545         * class.h:
33546         * debug-mono-symfile.c:
33547         * icall.c:
33548         * loader.c:
33549         * mono-config.c:
33550         * monosn.c:
33551         * reflection.c:
33552         * socket-io.c: warning cleanups
33553
33554 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33555
33556         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33557         function. works like remoting invoke, but does a check for the Proxy first.
33558
33559 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33560
33561         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33562
33563 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33564
33565         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33566         array of pointers.
33567         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33568         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33569
33570         * object.c (mono_store_remote_field_new): used by the new jit
33571         instead of mono_store_remote_field
33572         (mono_load_remote_field_new): used by the new jit
33573         instead of mono_load_remote_field
33574
33575 2003-02-05  Patrik Torstensson
33576
33577         * appdomain.c: changed unload to take the domain id instead
33578         of domain
33579         
33580         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33581
33582
33583 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33584
33585         * appdomain.c: don't look for assemblies in ApplicationBase if
33586         PrivateBinPathProbe is set.
33587
33588 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33589
33590         * object.c: make the first argument in main_args contain the absolute
33591         path to the assembly. Fixes bug #37511.
33592
33593 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33594
33595         * icall.c: get correct UTC offset for countries not using daylight
33596         time saving. Fixes bug #30030.
33597
33598 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33599
33600         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33601         and 1 are the family).
33602
33603 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33604
33605         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33606
33607         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33608
33609 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33610
33611         * reflection.c: added support for SignatureHelper tokens, which is
33612         needed by the Calli opcode.
33613
33614         * reflection.h: track changes to SignatureHelper class.
33615
33616         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33617
33618 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33619
33620         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33621
33622 2003-02-03  Patrik Torstensson
33623         * appdomain.[c|h], domain.c : 
33624          - Added support for getting a domain via domain id
33625          - Support for setting and getting domain from System.AppDomain 
33626            (used in cross appdomain channel)
33627          - Added support for get/set for a MonoAppContext on a thread 
33628            (Context class in System.Runtime.Remoting.Contexts),
33629          - Removed hack in Get/SetData and ExecuteAssembly.
33630         
33631         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33632         the managed world to get control when a proxy is created.
33633
33634         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33635         
33636 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33637
33638         * icall.c
33639         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33640         Populate the codebase field as well.
33641
33642 2003-02-02  Martin Baulig  <martin@ximian.com>
33643
33644         * debug-mono-symfile.c
33645         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33646         (mono_debug_symfile_add_method): Allow interncalls.
33647
33648 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33649
33650         * icall.c: throw parse exception if strtod fails or the string is empty.
33651
33652 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33653
33654         * marshal.c: handle object type separately from defined
33655         class types.
33656
33657 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33658
33659         * marshal.c: handle NATIVE_LPSTR for strings when it's
33660         explicitly specified.
33661
33662 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33663
33664         * reflection.c, reflection.h, icall.c: setup the reflection
33665         handle cache for ModuleBuilders and AssemblyBuilders.
33666
33667 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33668
33669         * reflection.c (reflection_methodbuilder_to_mono_method): set
33670         pinvoke flag
33671
33672 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33673
33674         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33675
33676 2003-01-29  Dick Porter  <dick@ximian.com>
33677
33678         * threads.c: No need for the fake_thread kludge now that Thread
33679         doesn't run a class constructor
33680         
33681 2003-01-29  Dick Porter  <dick@ximian.com>
33682
33683         * threads.c: Use g_direct_hash instead of the rather bogus
33684         g_int_hash
33685
33686 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33687
33688         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33689         (fix pinvoke12.exe)
33690         (mono_marshal_get_struct_to_ptr): generate valid IL code
33691         (mono_marshal_get_ptr_to_struct): generate valid IL code
33692         (*): correctly set sig->pinvoke, we need to memdup the signature
33693         to do that
33694
33695 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33696
33697         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33698         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33699
33700 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33701
33702         * profiler.c: provide more callers information.
33703
33704 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33705
33706         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33707
33708         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33709
33710         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33711
33712 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33713
33714         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33715         exception instead of going into an infinite loop on dates which it 
33716         can't yet handle.
33717
33718         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33719         out-of-range exception if needed.
33720
33721         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33722         an implementation for an interface method and to override an inherited
33723         method at the same time. 
33724         Imagine a scenario when a virtual method is used to override a
33725         virtual abstract method in a parent class, and this same method 
33726         provides an implementation for an method inherited from an interface. 
33727         In this case, the interface resolution code will set im->slot, which 
33728         means that the virtual method override pass will skip this method 
33729         which means a pointer to the abstract method inherited from the parent
33730         will remain in the vtable of this non-abstract class.
33731
33732         * class.c: (mono_class_setup_vtable): continue search for a real 
33733         method if only an abstract method is found.     
33734
33735 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33736
33737         * reflection.c: add size to encoding for ByValStr and ByValArray
33738         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33739
33740 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33741
33742         * class.c (mono_class_setup_vtable): pass the override info as an
33743         argument.
33744
33745         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33746         correctly.
33747         
33748         * reflection.c (ensure_runtime_vtable); add support for method 
33749         overrides.
33750         
33751 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33752
33753         * reflection.c (resolution_scope_from_image): Hack to work to work with
33754         dynamic assemblies.
33755
33756         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33757         added a 'force_ref' argument to force this function to allways return 
33758         a TypeRef. This is needed by mono_image_get_memberref_token ().
33759         
33760 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33761
33762         * reflection.c (mono_image_get_type_info): interfaces really don't have
33763         a parent.
33764
33765         * reflection.c (mono_image_basic_init): fill out missing fields of
33766         image structure.
33767
33768         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33769         dynamic assemblies. This is required so dynamic assemblies show up in
33770         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33771         Type::GetType() etc. This is consistent with MS behaviour.
33772
33773         * image.c image.h reflection.c: add newly created classes to the name 
33774         cache so mono_class_get () will find them.      
33775
33776 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33777
33778         First part of changes to get IKVM.NET running under mono.
33779         
33780         * appdomain.h, appdomain.c: added new function 
33781         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33782         This function will call AppDomain::DoTypeResolve to do the actual work.
33783
33784         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33785         moved existing code dealing with dynamic tokens to a new function 
33786         called mono_reflection_lookup_dynamic_token (). This function will 
33787         raise TypeResolve events when appropriate. Since reflection.c is not 
33788         part of libmetadata, a new hook function called 
33789         mono_lookup_dynamic_token() is added to class.c which will call this.
33790
33791         * assembly.h assembly.c: make the invoke_load_hook function public,
33792         so it can be called for dynamic assemblies.
33793
33794         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33795
33796         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33797         type isn't found.
33798
33799         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33800         MonoGHashTable, since it contains pointers to objects which the GC 
33801         needs to track.
33802
33803         * assembly.c (search_loaded): remove unused variable.
33804         
33805 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33806
33807         * object.c: fixed issue exposed by gcc-generated IL programs
33808         that use RVA data for pointers.
33809
33810 2003-01-25  Martin Baulig  <martin@ximian.com>
33811
33812         * threads.c (start_wrapper): Moved the initialization of
33813         `start_func' above the mono_new_thread_init() call to which we
33814         pass it as argument.
33815
33816 2003-01-24  Martin Baulig  <martin@ximian.com>
33817
33818         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33819         the MonoThread pointer.
33820
33821 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33822
33823         * icall.c: Rename `PowImpl' to Pow.
33824
33825 2003-01-23  Dick Porter  <dick@ximian.com>
33826
33827         * threads.c (start_wrapper): Create a Thread object if needed, so
33828         the Main() thread can do the class initialisation in a subthread
33829         that has been set up to allow managed code execution.
33830
33831         Pass the thread ID instead of the MonoThread pointer to the thread
33832         start and attach callbacks.  This change is required, because the
33833         jit thread start callback must be called _before_ the Thread
33834         object can be created.
33835         
33836         (mono_thread_init): Removed much object creation code that is no
33837         longer needed.  No managed code is called from here now.
33838
33839         * object.c (mono_runtime_exec_managed_code): Create a subthread
33840         for Main, and call back to the runtime to use it.
33841         Set the exit code when Main exits.
33842
33843         * gc.c: Make sure domain finalisation happens in a subthread.
33844         Re-enable threaded GC, fixing bug 31333 (again).
33845
33846         * environment.c: System.Environment internall calls (so far just
33847         ExitCode is here, the others are still in icall.c)
33848
33849         * appdomain.c (mono_runtime_cleanup): All threads running managed
33850         code should have finished before mono_runtime_cleanup() is
33851         reached, so no need to clean up threads.
33852
33853 2003-01-22  Martin Baulig  <martin@ximian.com>
33854
33855         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33856         `gpointer func' arguments.      
33857         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33858         but added `MonoThread *thread' argument.
33859         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33860
33861         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33862         and pass it to the mono_thread_start_cb callback.
33863         (mono_install_thread_callbacks): New public function to install a
33864         set of callbacks which are set by the debugger.
33865         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33866
33867 2003-01-22  Martin Baulig  <martin@ximian.com>
33868
33869         * Makefile.am: Install debug-mono-symfile.h.
33870
33871 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33872
33873         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33874
33875 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33876
33877         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33878         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33879         (mono_array_class_get): correctly set access levels of arrays
33880
33881 2003-01-20      Patrik Torstensson
33882         * image.h (MonoAssemblyName): changed major, minor, build, revision
33883         from signed to unsigned.
33884
33885 2003-01-20  sean kasun <skasun@azstarnet.com>
33886
33887         * reflection.c (load_cattr_value): Now this handles
33888         MONO_TYPE_SZARRAY.  Fixes bug #35629
33889
33890 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33891
33892         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33893         integer value
33894
33895 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33896
33897         * decimal.c: fixed bug #26056.
33898
33899 2003-01-17  Martin Baulig  <martin@ximian.com>
33900
33901         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33902
33903 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33904
33905         * exception.[ch]:
33906         (mono_get_exception_type_initialization): new function.
33907
33908         * object.c: throw a TypeInitializationException when an exception is
33909         thrown invoking the class constructor.
33910
33911 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33912
33913         * reflection.c: fixed attribute reading.
33914
33915 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33916
33917         * icall.c:
33918         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33919         provided, look for the type in the calling assembly and then in
33920         mscorlib; if the assembly name is provided, only try that one.
33921
33922 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33923
33924         * object.c: register the vtable before there is a chance it's
33925         queried again recursively.
33926
33927 2003-01-13  Duncan Mak  <duncan@ximian.com>
33928
33929         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33930         gc-internal.h. 
33931         
33932 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33933
33934         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33935
33936 2003-01-11  Martin Baulig  <martin@ximian.com>
33937
33938         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33939         this to 20 for the release.
33940
33941 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33942
33943         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33944
33945         * loader.c (mono_method_get_marshal_info): bug fix
33946
33947         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33948         structures with explicit layout
33949
33950 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33951
33952         * profiler.c: made the output more readable (and sorted). 
33953         Added caller information for the allocation profiler.
33954
33955 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33956
33957         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33958
33959 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33960
33961         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33962         to get value types.
33963         
33964 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33965
33966         * object.c, profiler.h, profiler.c, profiler-private.h:
33967         Added object allocation profiler.
33968
33969 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33970
33971         * reflection.h, reflection.c: handle global methods.
33972         Compress blob entries.
33973
33974 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33975
33976         * marshal.c: fix compilation.
33977
33978 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33979
33980         * loader.c (mono_method_get_marshal_info): impl.
33981
33982         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33983
33984 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33985
33986         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33987         for reference types.
33988
33989 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33990
33991         * loader.c: fixed off by one error in loaded parameter names.
33992
33993 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33994
33995         * marshal.c (mono_marshal_get_icall_wrapper): like
33996         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33997         instead of a MonoMethod.
33998
33999 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34000
34001         * decimal.c: fixed bug #36537.
34002
34003 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
34004
34005         * marshal.c: throw a missing method exception if a
34006         P/Invoke method is not found.
34007
34008 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34009
34010         * icall.c: allow a null this for constructors.
34011
34012 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
34013
34014         * icall.c: raise the proper exceptions if the arguments to the
34015         internal Invoke are incorrect.
34016
34017 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
34018
34019         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
34020
34021 2003-01-03  Martin Baulig  <martin@ximian.com>
34022
34023         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34024
34025 2002-12-31  Martin Baulig  <martin@ximian.com>
34026
34027         * debug-mono-symfile.c: Completely rewrote the type section.
34028         Instead of using individual malloc()ed fields, we use one big
34029         continuous memory area and offsets into this area.
34030         See the comments in the source code for details.
34031
34032 2002-12-30  Martin Baulig  <martin@ximian.com>
34033
34034         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
34035
34036 2002-12-30  Martin Baulig  <martin@ximian.com>
34037
34038         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
34039         line number table in this data blob instead of using an external
34040         pointer.
34041
34042 2002-12-28  Martin Baulig  <martin@ximian.com>
34043
34044         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34045
34046 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
34047
34048         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
34049         as a boxed return type.
34050
34051 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
34052
34053         * appdomain.c
34054         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
34055         g_build_filename to properly get separators on the filename created.
34056
34057         * object.h: Small change, introduce MonoMarshalByRefObject to
34058         track the layout of that structure in the C# universe as we make
34059         changes there.
34060
34061 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
34062
34063         * object.c: removed assert to allow static fields on interfaces.
34064         * loader.c: a TypeSpec may be used for any type, not just arrays.
34065
34066 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34067
34068         * class.c, class.h: added mono_class_array_element_size ().
34069         Ignore static methods in interfaces.
34070
34071 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34072
34073         * threads.c: fixed the build under cygwin.
34074
34075 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
34076
34077         * reflection.c: handle nullref constants. Allocate keys for
34078         reflection handles with the GC.
34079
34080 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34081
34082         * threads.c, threads.h: added mono_thread_get_abort_signal()
34083         to get a suitable signal for thread abort.
34084
34085 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34086
34087         * metadata.c: fix handling of ExportedType table.
34088
34089 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34090
34091         * icall.c: added WriteWindowsDebugString internal call.
34092
34093 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34094
34095         * reflection.h: added fields to match C# implementation.
34096
34097 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34098
34099         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
34100
34101 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
34102
34103         * gc.h, gc-internal.h: Rename header for GC internal calls to
34104         gc-internal.h from gc.h as to not clash with Boehm GC having its
34105         header installed as <gc.h> in outside include paths.
34106         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
34107         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
34108
34109 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34110
34111         * icall.c: assign minor, build and revision in FillName.
34112
34113 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
34114
34115         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
34116         Added support for running code generated by Reflection.Emit.
34117
34118 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34119
34120         * appdomain.c: check for NULL argument in LoadFrom.
34121
34122 2002-12-10  Dick Porter  <dick@ximian.com>
34123
34124         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
34125
34126 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34127
34128         * appdomain.c: fix buglet when building exe file name.  Handle full
34129         assembly name (needed after latest changes to AssemblyName).
34130         * image.c:
34131         (mono_image_close): free some hashtables.
34132
34133 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34134
34135         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34136         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34137         on some systems (redhat 7.3) 
34138
34139 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34140
34141         * threads.c: delete the critical section of a sync block,
34142         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34143
34144 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34145
34146         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34147
34148 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34149
34150         * appdomain.[ch]: handle the assembly preload event to try loading the
34151         assemblies using the paths we have in the current domain.
34152
34153         * assembly.[ch]: created an assembly preload hook that is called to try
34154         loading the assembly by other means that the ones provided here.
34155
34156         * domain.c: initialize the domain search path.
34157
34158         From now on, assemblies (TODO: except corlib and System) are loaded
34159         according to these rules when using mono_assembly_load ():
34160
34161                 1. It tries to load the assembly from the ApplicationBase
34162                 of the current domain appending .dll and .exe (TODO: have to
34163                 try loading from name/name.dll and name/name.exe).
34164
34165                 2. It tries the search path specified in PrivateBinPath for the
34166                 current domain (if any).
34167
34168                 3. Previous behavior.
34169
34170 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34171
34172         * icall.c: implemented GetInterfaceMap() related icall.
34173         * domain.c, loader.h: load MethodInfo in mono_defaults.
34174
34175 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34176
34177         * gc.c: disable the finalizer thread for now, untill all the issues
34178         with it are resolved.
34179
34180 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34181
34182         * string-icalls.c: handle embedded nulls in string ctor when the
34183         length is specified.
34184
34185 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34186
34187         * class.c: look for explicit interface implementation in parent
34188         classes, too.
34189
34190 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34191
34192         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34193
34194 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34195
34196         * gc.c: protect handles with a critical section.
34197
34198 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34199
34200         * icall.c:
34201         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34202         parameters. If no assembly specified, try getting the type from all
34203         the assemblies in the current domain, else, load the assembly and get
34204         the type from it.
34205
34206 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34207
34208         * marshal.c: applied patch from Aleksey Demakov that fixes
34209         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34210
34211 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34212
34213         * icall.c: fixed get_location.
34214
34215 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34216
34217         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34218         declarations to make it work with older gcc. 
34219
34220         * loader.c (mono_get_method): set signature->pinvoke for native calls
34221
34222 2002-11-20  Dick Porter  <dick@ximian.com>
34223
34224         * threads.c (mono_thread_init): Set the main thread's handle
34225
34226 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34227
34228         * gc.c: allow compilation without GC support. Changed to match the
34229         mono coding style.
34230
34231 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34232
34233         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34234
34235 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34236
34237         * reflection.c: set a public key token on the core assemblies.
34238
34239 2002-11-18  Dick Porter  <dick@ximian.com>
34240
34241         * threads.c: Split out some thread initialisation so that other
34242         files can set the start callback function.
34243
34244         * gc.c: Run finalisers in a separate thread, to avoid stack
34245         overflow.  Fixes bug 31333.
34246
34247         * appdomain.c: Set up GC finalisation thread.
34248
34249         * reflection.c: 
34250         * object.c: 
34251         * domain.c: Use gc.h macros for GC_malloc
34252         
34253 2002-11-15  Dick Porter  <dick@ximian.com>
34254
34255         * threadpool.c: 
34256         * threads.c:
34257         * appdomain.c: Removed mono_runtime_init_with_attach(),
34258         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34259         merging the extra parameter with the existing function.  Removed
34260         unneeded code in mono_thread_attach().
34261
34262 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34263
34264         * image.c (mono_image_loaded_by_guid): a method to get loaded
34265         images by guid. 
34266         (load_metadata_ptrs): we store the guid as string.
34267
34268 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34269
34270         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34271
34272         * metadata.c (mono_guid_to_string): imported method form Zoltan
34273         Varga (slightly modified)
34274
34275         * assembly.c (mono_assembly_open): load precompiled code
34276
34277         * loader.h (MonoMethod): we store the method token for use in the
34278         aot compiler. 
34279
34280 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34281
34282         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34283         the hook function called when an assembly is loaded.
34284         
34285         * domain.c: Modified file.
34286         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34287
34288         Fixes bug #33196.
34289
34290 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34291
34292         * reflection.c: Map PEFileKind to the value expected by the WinNT
34293         image loader. 
34294
34295 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34296
34297         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34298         Read until the buffer is filled completely.
34299
34300 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34301
34302         * icall.c: implemented MonoType.InternalGetEvent ().
34303
34304 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34305
34306         * appdomain.c: implemented InitAppDomainSetup. Delayed
34307         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34308         the entry_assembly.
34309
34310         * assembly.c: base_dir is now an absolute path ending with
34311         G_DIR_SEPARATOR.
34312
34313         * icall.c: modified get_location according to the above changes.
34314
34315         * object.c: init AppDomain.SetupInformation for the default domain after
34316         we have the entry assembly.
34317
34318         * domain.c: when unloading a domain, setup = NULL.
34319
34320 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34321
34322         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34323
34324 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34325
34326         * object.h, object.c: introduced mono_object_get_virtual_method ()
34327         to lookup the method invoked on an object when a callvirt is done on
34328         a method.
34329         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34330
34331 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34332
34333         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34334         current domain when loaded an assembly and failed to load it.
34335
34336         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34337
34338 2002-10-31  Dick Porter  <dick@ximian.com>
34339
34340         * icall.c: 
34341         * file-io.h: 
34342         * file-io.c: Return the error status in a parameter, as the
34343         GetLastError() value has long since been blown away if we try and
34344         look it up in a subsequent internal call invocation.  Delete the
34345         GetLastError() internal call, because it's useless.
34346
34347 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34348
34349         * class.[ch]: added cast_class to fix bug 29517
34350
34351 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34352
34353         * marshal.c: create valid IL code in the filter clause:
34354         the new JIT is less forgiving:-)
34355
34356 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34357
34358         * icall.c: removed get_property internal call.
34359
34360 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34361
34362         * appdomain.h domain.c: Added an ID to appdomains.
34363         
34364         * threads.c threads.h icall.c: Implement icall
34365         Thread:GetDomainID(), and remove unused icall 
34366         CurrentThreadDomain_internal.
34367
34368 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34369
34370         * icall.c: Don't recurse through the base types in GetConstructor.
34371         Fixes bug #32063. 
34372
34373 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34374
34375         * mempool.h, mempool.c: added mono_mempool_empty() and
34376         mono_mempool_stats().
34377
34378 2002-10-23  Dick Porter  <dick@ximian.com>
34379
34380         * file-io.c: 
34381         * file-io.h: 
34382         * icall.c: Added MonoIO.GetFileType internal call
34383
34384 2002-10-17  Dick Porter  <dick@ximian.com>
34385
34386         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34387         delegate semaphore before waiting for all threads to finish,
34388         because new threads can also call async delegates.  Fixes bug
34389         32004.
34390
34391         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34392         of 3 seconds, in case another async job is queued.  (This part is
34393         needed because the bug fix reintroduced the 3s exit lag.)  This
34394         makes the mono_runtime_shutdown flag superfluous.
34395
34396 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34397
34398         * reflection.c: include ehader size in method section headers.
34399         Really check for suplicated modules entries.
34400
34401 2002-10-17  Martin Baulig  <martin@gnome.org>
34402
34403         * debug-mono-symfile.c: Added back support for locals.
34404
34405 2002-10-14  Martin Baulig  <martin@gnome.org>
34406
34407         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34408         MONO_TYPE_VOID.
34409
34410 2002-10-14  Martin Baulig  <martin@gnome.org>
34411
34412         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34413         mono_class_get() instead of looking in the class cache. 
34414
34415 2002-10-13  Martin Baulig  <martin@gnome.org>
34416
34417         * debug-mono-symfile.c: Set version number to 28, include the
34418         signature in method names.
34419
34420 2002-10-13  Martin Baulig  <martin@gnome.org>
34421
34422         * debug-mono-symfile.h: Set version number to 27.
34423
34424 2002-10-11  Martin Baulig  <martin@gnome.org>
34425
34426         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34427
34428 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34429
34430         * metadata.c, metadata.h: added helper function to allocate signatures.
34431
34432 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34433
34434         * icall.c: added internal call to get the location of machine.config.
34435
34436 2002-10-08  Martin Baulig  <martin@gnome.org>
34437
34438         * debug-mono-symfile.c: Ignore classes with a pending init for the
34439         moment.
34440
34441 2002-10-03  Dick Porter  <dick@ximian.com>
34442
34443         * threads.c: Freebsd pthread_t is a pointer
34444
34445 2002-10-03  Dick Porter  <dick@ximian.com>
34446
34447         * socket-io.c: Implemented GetHostName_internal
34448
34449 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34450
34451         * mono-config.c:
34452         (mono_config_parse_file): don't leak the text.
34453
34454 2002-10-02  Martin Baulig  <martin@gnome.org>
34455
34456         * debug-mono-symfile.c: Added support for methods.
34457
34458 2002-10-01  Martin Baulig  <martin@gnome.org>
34459
34460         * debug-mono-symfile.c: Don't emit methods and line numbers for
34461         the dynamic symbol file, just write the type table.  We can easily
34462         have an external helper program which creates a symbol file for an
34463         IL file.        
34464
34465 2002-10-01  Dick Porter  <dick@ximian.com>
34466
34467         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34468         Only add the handle to the cleanup array when we're about to
34469         launch the thread.  Bug 31425 deadlocked when the test was run on
34470         mono under w32.
34471
34472 2002-10-01  Martin Baulig  <martin@gnome.org>
34473
34474         * debug-mono-symfile.c: Added support for properties.
34475
34476 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34477
34478         * reflection.c: unaligned store fix from Mark Crichton
34479         <crichton@gimp.org>.
34480
34481 2002-09-27  Martin Baulig  <martin@gnome.org>
34482
34483         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34484         New interncall.
34485
34486 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34487
34488         * assembly.h, assembly.c: use a sane API to hook into the assembly
34489         loading process instead of a useless special-purpouse hack
34490         (ngen needs a hook, too, for example).
34491
34492 2002-09-27  Dick Porter  <dick@ximian.com>
34493
34494         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34495         io-layer can set up some process handle info.  Not needed on w32,
34496         but doesn't hurt either.
34497
34498         * process.c: Pass the program name in the second parameter to
34499         CreateProcess, so the path is searched.  Include the working
34500         directory. Implemented process name, process enumeration, and some
34501         process detail internal calls.
34502         
34503         * icall.c: Added internal calls for process lookup, and some
34504         process details
34505
34506 2002-09-26  Martin Baulig  <martin@gnome.org>
34507
34508         * assembly.c (mono_install_open_assembly_hook): New global
34509         function to install a function to be invoked each time a new
34510         assembly is loaded.
34511         (mono_assembly_open): Run this callback function if set.
34512
34513         * debug-mono-symfile.c: Put back line numbers for the dynamic
34514         symbol file and also record the .il file as source file.  This
34515         allows us to install the temporary symbol file as `file.dbg' just
34516         like a compiler-generated one.
34517
34518 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34519
34520         * Corrected typo in gc.c (BOHEM vs BOEHM).
34521
34522 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34523
34524         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34525         GetProperties. Also avoid calling g_slist_length in GetProperties and
34526         GetMethods.
34527
34528 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34529
34530         * reflection.c: avoid unaligned stores (bug spotted by
34531         Mark Crichton  <crichton@gimp.org>).
34532
34533 2002-09-25  Martin Baulig  <martin@gnome.org>
34534
34535         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34536         instead of guint64 for addresses and added prologue/epilogue info.
34537
34538 2002-09-25  Martin Baulig  <martin@gnome.org>
34539
34540         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34541         store line number info.  For the dynamic symbol file, we only need
34542         to provide the JIT generated dynamic line number info for the dynamic
34543         symbol file.
34544
34545 2002-09-25  Martin Baulig  <martin@gnome.org>
34546
34547         * debug-mono-symfile.h: Incremented version number.
34548
34549 2002-09-24  Martin Baulig  <martin@gnome.org>
34550
34551         * class.c (mono_debugger_class_init_func): New global function
34552         pointer variable.
34553         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34554         call it.
34555
34556         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34557         function.  This is called via the mono_debugger_class_init_func
34558         hook to add all types to the dynamic type table.
34559         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34560         from its metadata token.
34561
34562         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34563         New interncall for the debugger.
34564
34565 2002-09-24  Nick Drochak <ndrochak@gol.com>
34566
34567         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34568         before using it in case it is null.
34569         
34570 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34571
34572         * metadata.c: allow custom modifiers in local var signatures
34573         (bug spotted by Zoltan Varga).
34574
34575 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34576
34577         * class.c: deal with the <Module> class that may have a NULL vtable.
34578         Eliminate warnings.
34579
34580 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34581
34582         * image.c, image.h: more strong name helpers.
34583         * monosn.c: more work: convert pem keys to cryptoapi format.
34584
34585 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34586
34587         * string-icalls.c: speedup IndexOf.
34588
34589 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34590
34591         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34592
34593 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34594
34595         * icall.c: cleanup: use mono_object_domain ().
34596
34597 2002-09-23  Martin Baulig  <martin@gnome.org>
34598
34599         * debug-mono-symfile.c: Improved type support.
34600
34601 2002-09-22  Martin Baulig  <martin@gnome.org>
34602
34603         * debug-mono-symfile.c: Added support for reference types and strings.
34604
34605 2002-09-22  Martin Baulig  <martin@gnome.org>
34606
34607         * debug-mono-symfile.c: Started to work on the type table.
34608
34609 2002-09-21  Martin Baulig  <martin@gnome.org>
34610
34611         * debug-mono-symfile.c: Largely reworked the symbol table format.
34612         The symbol table is now incrementally updated each time a new
34613         method is added.  We're now also using our own magic and version
34614         so that you don't need to recompile all your classes if the
34615         dynamic table changes.
34616         (mono_debug_update_mono_symbol_file): Removed.
34617         (mono_debug_symfile_add_method): New function to add a method.
34618
34619 2002-09-21  Martin Baulig  <martin@gnome.org>
34620
34621         * icall.c
34622         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34623         New interncall.
34624
34625         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34626         New interncall to get a method from its metadata token.
34627
34628 2002-09-21  Martin Baulig  <martin@gnome.org>
34629
34630         * debug-mono-symfile.c: Create type table.
34631
34632 2002-09-20  Martin Baulig  <martin@gnome.org>
34633
34634         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34635
34636 2002-09-20  Martin Baulig  <martin@gnome.org>
34637
34638         * debug-mono-symfile.c: Provide information about params and locals.
34639
34640 2002-09-20  Martin Baulig  <martin@gnome.org>
34641
34642         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34643         New interncall.
34644
34645         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34646         interncall to get a method from its metadata token.
34647
34648 2002-09-20  Martin Baulig  <martin@gnome.org>
34649
34650         * debug-mono-symfile.c: Added a few checks for method->header
34651         being non-NULL.  This should never happen, but for the moment
34652         let's use a g_warning() rather than a g_assert().
34653
34654 2002-09-19  Mark Crichton  <crichton@gimp.org>
34655
34656         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34657         even if support for it isn't present.  Added an #ifdef to fix this.
34658
34659         * socket-io.c: Added checks back for Solaris support.
34660
34661 2002-09-19  Martin Baulig  <martin@gnome.org>
34662
34663         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34664         changes in the symbol file format.
34665
34666 2002-09-18  Martin Baulig  <martin@gnome.org>
34667
34668         * debug-mono-symfile.c: Set version number to 21.
34669
34670 2002-09-18  Dick Porter  <dick@ximian.com>
34671
34672         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34673         on netbsd.  Fixes bug 30051.
34674
34675 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34676
34677         * reflection.c:
34678         (set_version_from_string): little fix.
34679
34680 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34681
34682         * monosn.c, Makefile.am: added strong name utility.
34683         * reflection.h, reflection.c: implemented delayed signing,
34684         locale, version and hash id assembly attributes.
34685
34686 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34687
34688         * loader.c, metadata.c: load param attributes in signatures.
34689
34690 2002-09-16  Martin Baulig  <martin@gnome.org>
34691
34692         * debug-mono-symfile.c: Added string table with all method names.
34693
34694 2002-09-14  Martin Baulig  <martin@gnome.org>
34695
34696         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34697         fast method lookup.
34698
34699 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34700
34701         * reflection.c: record the public key token of referenced assemblies.
34702
34703 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34704
34705         * image.c, image.h: added functions to get the strong name and the
34706         public key of an assembly.
34707         * pedump.c: use them.
34708
34709 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34710
34711         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34712
34713 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34714
34715         * marshal.c (mono_marshal_get_managed_wrapper): Added
34716         MONO_TYPE_BOOLEAN 
34717
34718 2002-09-11  Martin Baulig  <martin@gnome.org>
34719
34720         * gc.c: Call GC_unregister_disappearing_link() on all links when
34721         finalizing them, this is necessary to aviod a crash in boehm's
34722         finalize handler.
34723
34724 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34725
34726         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34727         nick@chemlab.org.
34728
34729 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34730
34731         * icall.c: implemented MonoType::Module.
34732         * reflection.c, reflection.h: mono_module_get_object () from
34733         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34734
34735 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34736
34737         * icall.c: ignore overridden methods in GetMethods ().
34738         Fix for FieldInfo::SetValue().
34739         * object.c: handle float/double in runtime invoke.
34740
34741 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34742
34743         * object.c: allow a constructor to be called again on an object.
34744
34745 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34746
34747         * class.h, class.c: move field layout code to it's own function and
34748         export it. Get an interface id earlier. Move fields in MonoClass
34749         so they are more cache friendly and align the bitfields.
34750         * loader.c: temporary handle get_param_names() for a runtime method.
34751         * reflection.c, reflection.h: more code to handle runtime creation of
34752         types.
34753
34754 2002-09-09  Martin Baulig  <martin@gnome.org>
34755
34756         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34757         signature with the pinvoke field being set for the actual call.
34758
34759 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34760
34761         * icall.c: removed some unused icalls. Start of map of glib charsets
34762         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34763
34764 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34765
34766         * debug-helpers.c: break infinite loop (found and fixed by
34767         Holger Arnold <harnold@gmx.de>).
34768
34769 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34770
34771         * icall.c: target may be null in create_delegate.
34772
34773 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34774
34775         * marshal.c: handle a boolean return type.
34776
34777 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34778
34779         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34780
34781 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34782
34783         * gc.c: fix weakreferences.
34784
34785 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34786
34787         * icall.c: added icall to get default codepage.
34788
34789 2002-09-03  Dick Porter  <dick@ximian.com>
34790
34791         * threads.h: 
34792         * threads.c: Use MonoThread instead of MonoObject where
34793         apropriate.
34794
34795         Store running thread objects in a hash table, so that we have all
34796         the info to hand when waiting for them to finish
34797         (means we don't need OpenThread() any more, so mingw builds should
34798         be fully functional again.)
34799
34800         * verify.c:
34801         * object.h: Added thread ID to MonoThread
34802
34803 2002-09-03  Martin Baulig  <martin@gnome.org>
34804
34805         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34806
34807 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34808
34809         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34810
34811 2002-09-03  Martin Baulig  <martin@gnome.org>
34812
34813         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34814         argument to store the end address of the disassembled instruction.
34815
34816         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34817         here from debug-symfile.h.
34818         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34819         JIT into this struct.
34820         (MonoSymbolFile): Added `char *image_file' field.
34821         (MonoDebugGetMethodFunc): Removed.
34822         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34823         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34824         (mono_debug_find_method): New method.
34825
34826         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34827         create a full symbol file.
34828         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34829         and static symbol files.
34830         (mono_debug_find_method): The symbol file keeps an internal method hash,
34831         call this to get a MonoDebugMethodInfo from a MonoMethod.
34832
34833         * debug-symfile.[ch]: Removed.
34834
34835 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34836
34837         * image.c (do_mono_image_open): Remove linker version check.
34838
34839 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34840
34841         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34842         wrappers for instance methods.
34843         
34844 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34845
34846         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34847
34848 2002-08-28  Dick Porter  <dick@ximian.com>
34849
34850         * Makefile.am: Export HOST_CC for w32 builds
34851
34852 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34853
34854         * file-io.c process.c: MonoString are null terminated, no
34855         need for mono_string_to_utf16() anymore.
34856
34857 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34858
34859         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34860
34861 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34862
34863         * icall.c, reflection.h: speedup System.MonoType.
34864
34865 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34866
34867         * reflection.c: allow null as the value of a string argument in
34868         custom attributes constructors.
34869
34870 2002-08-27  Martin Baulig  <martin@gnome.org>
34871
34872         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34873         `trampoline_address' field.
34874
34875 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34876
34877         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34878         check (fixes bug #29486) 
34879
34880 2002-08-27  Martin Baulig  <martin@gnome.org>
34881
34882         * debug-mono-symfile.c: Changed the file format in a way that allows us
34883         open it read-only and to use a specially malloced area for all the
34884         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34885         debugging IL code and there is no MCS generated symbol file for it.
34886
34887 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34888
34889         * object.c: added a define for a good string and array
34890         creation speedup (not enabled by default because we need to deal with
34891         the synch stuff).
34892
34893 2002-08-26  Martin Baulig  <martin@gnome.org>
34894
34895         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34896         function to create a dynamic symbol file.  This is used by the
34897         debugger to create a symbol file for IL code on-the-fly.
34898
34899 2002-08-26  Martin Baulig  <martin@gnome.org>
34900
34901         * loader.c (mono_lookup_pinvoke_call): Include the error message
34902         from g_module_error() in the error message.
34903
34904 2002-08-24  Martin Baulig  <martin@gnome.org>
34905
34906         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34907         function to update the symbol file.  The symbol file is mmap()ed
34908         writable, but private.  This allows us to install the symbol file
34909         together with the assembly.
34910
34911 2002-08-24  Martin Baulig  <martin@gnome.org>
34912
34913         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34914         but they can read the new symbol file format which mcs is now creating.
34915
34916         * debug-symfile.c (mono_debug_find_source_location): Moved to
34917         debug-mono-symfile.c; this is now operating on the new symbol file.
34918
34919 2002-08-23  Martin Baulig  <martin@gnome.org>
34920
34921         * debug-helpers.c (mono_method_desc_from_method): New function to get
34922         a MonoMethodDesc from a MonoMethod.
34923
34924 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34925
34926         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34927         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34928
34929 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34930
34931         * string-icalls.[ch]: make helper methods static.
34932
34933 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34934
34935         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34936         types to it and to SetValueInternal.
34937
34938         * object.c: Moved handle_enum label to its proper place. This was the
34939         f... bug! ;-)
34940
34941         This time i compiled mcs and gtk-sharp and they both work.
34942
34943 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34944
34945         * icall.c: reverted partially my previous patch until 
34946         object.c:set_value handles enums correcly.
34947
34948 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34949
34950         * icall.c:
34951         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34952         (ves_icall_System_Environment_get_MachineName): removed warning when
34953         compiling under cygwin.
34954
34955 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34956
34957         * object.c: fixed field_get_value() for reference types.
34958
34959 2002-08-22  Dick Porter  <dick@ximian.com>
34960
34961         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34962         Don't free a buffer while it's still needed.  Patch from Jonathan
34963         Liger <Jonathan.liger@wanadoo.fr>
34964
34965 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34966
34967         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34968         internal call.
34969
34970 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34971
34972         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34973         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34974
34975         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34976         we call unmanaged code which throws exceptions.
34977
34978 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34979
34980         * appdomain.h: added per-domain entry_assembly.
34981         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34982         arguments.
34983         * icall.c: Assembly::GetEntryAssembly icall.
34984         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34985         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34986
34987 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34988
34989         * appdomain.h, gc.c: added mono_domain_finalize ().
34990
34991 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34992
34993         * object.c:
34994         (mono_print_unhandled_exception): changed g_warning by g_printerr
34995         because g_log has a 1024 characters limit (yeah, i got a big stack
34996         trace). Don't print exception name, that should be in ToString 
34997         returned string.
34998
34999 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35000
35001         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
35002         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
35003
35004 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35005
35006         * object.c:
35007         (mono_print_unhandled_exception): after previous commit, i realized
35008         that MS calls ToString on the exception. I changed this function to
35009         do that. This way we get stack_trace for free.
35010
35011 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35012
35013         * object.c:
35014         (mono_print_unhandled_exception): invoke Message property instead of
35015         getting 'message' field from Exception. Don't allocate memory for
35016         'trace' and 'message' if not needed.
35017
35018 2002-08-18  Dick Porter  <dick@ximian.com>
35019
35020         * unicode.c: Fix asserts to match Encoder.cs checks
35021
35022 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35023
35024         * marshal.c: fix unaligned store issue and a few wrong
35025         opcode argument types.
35026
35027 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35028
35029         * icall.c: added GetUninitializedObjectInternal internal call.
35030
35031 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
35032
35033         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
35034         to the right domain.
35035
35036 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
35037
35038         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
35039
35040         * class.c (class_compute_field_layout): set blittable to false for Strings
35041
35042         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
35043
35044 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35045
35046         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
35047         first chunk of code to create types at runtime. Code to
35048         handle ReflectedType/DeclaringType. Make reflection handles
35049         domain specific.
35050
35051 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35052
35053         * class.c: set correct name in arrays.
35054
35055 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
35056
35057         * appdomain.c (mono_domain_transfer_object): make it work with
35058         valuetypes. bug fixes.
35059
35060 2002-08-12  Dick Porter  <dick@ximian.com>
35061
35062         * object.h: Rename some parameters to avoid c++ keywords (Patch
35063         from Joseph Wenninger <kde@jowenn.at>)
35064
35065 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
35066
35067         * icall.c: added icall to implement Assembly.GetFile*.
35068
35069 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35070
35071         * reflection.h, reflection.c: code to embed managed resources.
35072
35073 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35074
35075         * class.c: move all the type size stuff into
35076         class_compute_field_layout().
35077
35078 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35079
35080         * class.c: ensure enums have always the correct instance size.
35081         * unicode.c: remove wrong assert.
35082
35083 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35084
35085         * assembly.c: fix mem corruption issue.
35086         * image.h, image.c: added mono_image_get_resource () to access
35087         managed resources.
35088         * icall.c: implemented Assembly.EntryPoint property and some
35089         Managed Resources related internalcalls.
35090
35091
35092 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35093
35094         * image.c, image.h: impemented mono_image_get_entry_point ().
35095         * appdomain.c: use mono_image_get_entry_point.
35096
35097 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35098
35099         * reflection.c: support the object type argument when loading
35100         custom attributes.
35101
35102 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
35103
35104         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
35105         String as return type.
35106
35107 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
35108
35109         * reflection.c: fix encoding of named args for custom attrs to match
35110         the ms implementation. Read them back when instantiating custom
35111         attributes.
35112
35113 2002-08-02  Radek Doulik  <rodo@ximian.com>
35114
35115         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
35116         by Dietmar as quick fix
35117         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
35118         16 as stack size, used on more places as quick fix before Dietmar
35119         will fix it properly
35120
35121 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35122
35123         * object.h, object.c: added accessors for fields and properties.
35124
35125 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35126
35127         * class.c, class.h: made mono_class_get_field_from_name ()
35128         loop on parent types.
35129         Added mono_class_get_property_from_name ().
35130
35131 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35132
35133         * class.c, class.h: move the code to setup the type vtable in its own
35134         function so that it can be reused also for types created at runtime.
35135         Eliminate the "class" identifier from the header file.
35136         * reflection.c: setup the vtable for enums so that we can create
35137         objects for use in SetConstant ().
35138
35139 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35140
35141         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35142         instead of the delegate itself as this pointer (bug #28383)
35143
35144 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35145
35146         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35147         conversions.
35148
35149 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35150
35151         * loader.c: don't set the pinvoke bit on icalls.
35152
35153 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35154
35155         * debug-helpers.c (mono_method_full_name): only print a number to
35156         indicate wrapper type (so that the output is more readable in traces).
35157
35158 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35159
35160         * class.c (mono_class_init): include method override patch from Paolo
35161
35162 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35163
35164         * icall.c: fixed GetTypeCode().
35165
35166 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35167
35168         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35169         use real delegate invoke function to make it work with multicast
35170         delegates (fix bug# 28291).
35171
35172 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35173
35174         * object.c: load constant strings.
35175
35176 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35177
35178         * reflection.c: no magic numbers.
35179         * tabledefs.h: security action enum.
35180
35181 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35182
35183         * assembly.c: fix possible memory corruption.
35184
35185 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35186
35187         * reflection.h, reflection.c: added support for linking resources.
35188         * verify.c: check we have an updated corlib.
35189
35190 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35191
35192         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35193         string arrays.
35194         (mono_marshal_string_array): null terminate unmanaged string arrays.
35195         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35196
35197 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35198
35199         * icall.c: Type.GetType () can now return also types from the
35200         calling assembly.
35201
35202 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35203
35204         * loader.h, loader.c: stack walking support.
35205         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35206         GetCallingAssembly.
35207
35208 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35209
35210         * marshal.c: added optimisations for blittable types 
35211
35212         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35213         (mono_class_setup_mono_type): set blittable attribute for single
35214         and double.
35215
35216         * marshal.c (mono_string_utf8_to_builder): impl.
35217         (mono_string_builder_to_utf8): impl.
35218         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35219
35220 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35221
35222         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35223         (mono_marshal_get_managed_wrapper): impl. byref types
35224
35225 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35226
35227         * icall.c:
35228         (search_method): don't display debug message. 
35229
35230 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35231
35232         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35233
35234 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35235
35236         * appdomain.c: set the missing filename when throwing exception.
35237
35238 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35239
35240         * metadata.c (mono_type_size): code cleanup
35241         (mono_type_stack_size): removed some test code
35242
35243 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35244
35245         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35246         mono_get_exception_file_not_found now.
35247
35248         * exception.c (mono_exception_from_name_two_strings): New version
35249         that will call a constructor with two string arguments. 
35250         (mono_get_exception_file_not_found): New helper routine, used to
35251         report file-not-found errors.
35252
35253 2002-07-20  Dick Porter  <dick@ximian.com>
35254
35255         * process.h:
35256         * process.c: Pass file handles to CreateProcess
35257         
35258         * icall.c:
35259         * file-io.h:
35260         * file-io.c: Implemented CreatePipe
35261
35262 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35263
35264         * metadata.c (mono_get_param_info): set alignment for value types
35265
35266 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35267
35268         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35269         Constify mono_domain_assembly_open().
35270         * loader.c: handle null namespace in icalls.
35271
35272 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35273
35274         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35275         (emit_str_to_ptr_conv): marshal object as structs
35276
35277         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35278
35279         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35280
35281 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35282
35283         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35284         (mono_marshal_get_native_wrapper): we an now return value types
35285
35286 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35287
35288         * verify.c: more checks implemented.
35289
35290 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35291
35292         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35293         (fix bug #27695)
35294         (mono_marshal_get_native_wrapper): allow byref arguments
35295         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35296         impl. PtrToStringXXX methods
35297         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35298         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35299         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35300         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35301         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35302
35303 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35304
35305         * reflection.c: fix buglet in parsing an assembly name.
35306
35307 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35308
35309         * marshal.c (emit_ptr_to_str_conv): first impl.
35310
35311 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35312
35313         * object.c, class.h: cache the vtable in the class as suggested by
35314         vargaz@freemail.hu (Zoltan Varga).
35315
35316 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35317
35318         * class.h, loader.c: added mono_field_from_token().
35319         * verify.c: first cut of type checking code.
35320
35321 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35322
35323         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35324
35325 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35326
35327         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35328         (fix bug #27782)
35329         (mono_marshal_get_remoting_invoke): impl.
35330         (mono_delegate_begin_invoke): impl.
35331         (mono_mb_emit_save_args): impl.
35332         (mono_delegate_end_invoke): impl.
35333         (mono_marshal_get_delegate_begin_invoke):
35334         (mono_marshal_get_delegate_end_invoke):
35335         (mono_marshal_get_delegate_invoke): generate a special name for
35336         those methods (including the signature) and associate them whith
35337         the delegate class. 
35338
35339 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35340
35341         * reflection.[ch]: 
35342         (mono_reflection_type_from_name): now it has a MonoImage parameter
35343         which is used as the default image to search the type in. If the image
35344         is NULL or getting the type from it fails, it defaults to corlib.
35345
35346         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35347         new parameter.
35348
35349 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35350
35351         * reflection.c: update the parameter table index.
35352
35353 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35354
35355         * domain.c: don't include the mark byte in the string hash.
35356
35357 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35358
35359         * icall.cs: icall for Type.GetTypeCode ().
35360         * verify: a couple of fixes and disabled local initialization checks.
35361
35362 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35363
35364         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35365
35366         * debug-helpers.c (mono_method_full_name): print the type of the
35367         runtime wrapper
35368
35369         * metadata.c (mono_signature_hash): a hash function for signatures
35370         (mono_signature_hash): better hash algorithm
35371
35372         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35373
35374         * debug-helpers.c (mono_method_full_name): this can now generate
35375         method names with signatures
35376
35377         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35378         method dont have this pointers.
35379
35380 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35381
35382         * reflection.c: fixup typebuilder tokens.
35383         * image.c: fix buglet.
35384         * marshal.h: remove whitespace.
35385         * metadata.h, metadata.c: reinstate code that was removed.
35386         * verify.c: handle catch directives and fix another couple of bugs.
35387
35388 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35389
35390         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35391         (mono_marshal_get_native_wrapper): make it comp. with the old code
35392         (mono_marshal_get_native_wrapper): support boolean
35393         (mono_marshal_get_managed_wrapper): support more types
35394
35395 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35396
35397         * class.c (class_compute_field_layout): compute class->blittable attribute.
35398
35399 2002-07-09  Dick Porter  <dick@ximian.com>
35400
35401         * threads.c: Make the thread cleaning up cope with threads that
35402         call ExitThread()
35403
35404 2002-07-08  Radek Doulik  <rodo@ximian.com>
35405
35406         * reflection.c (method_encode_code): use non-translated values to
35407         compute finally_start, this fixes exception handling on ppc, yay!
35408
35409         * decimal.h (struct signscale): fix endianess
35410
35411 2002-07-07  Radek Doulik  <rodo@ximian.com>
35412
35413         * reflection.c: swap box_val and not val
35414
35415 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35416
35417         * reflection.c, reflection.h: handle full assembly info in type name.
35418         Handle Type arguments when loading custom attributes.
35419         * icall.c: updated to use new mono_reflection_type_from_name () method.
35420
35421 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35422
35423         * loader.c:
35424         (method_from_memberref): also print assembly name when method not found.
35425
35426 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35427
35428         * icall.c:
35429         (ves_icall_TypeGetProperties): fixed bug #27473. 
35430
35431 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35432
35433         * reflection.c: display image name and token when cannot find the
35434         .ctor for an attribute.
35435
35436 2002-07-05  Martin Baulig  <martin@gnome.org>
35437
35438         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35439
35440 2002-07-04  Dick Porter  <dick@ximian.com>
35441
35442         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35443         compile on mingw.  This will cause mingw builds to not wait for
35444         subthreads to terminate after the main thread does.  I've lodged a
35445         bug with the mingw developers for them to wrap OpenThread().
35446
35447 2002-07-03  Dick Porter  <dick@ximian.com>
35448
35449         * threads.c: Store thread IDs instead of handles, because
35450         GetCurrentThread() returns a pseudohandle and therefore stores
35451         useless values.  mono_thread_cleanup() continues checking the
35452         array of threads until it is empty, to cope with subthreads
35453         spawning new threads after the main thread has finished.
35454
35455         * profiler.h:
35456         * profiler.c:
35457         * profiler-private.h: Pass the thread ID to thread profiler
35458         functions, instead of a handle
35459
35460 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35461
35462         * verify.c: fixes to make it more usable.
35463         * pedump.c: added --verify code to verify IL code in an assembly.
35464
35465 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35466
35467         * reflection.c: turn errors into warnings to allow compiling corlib.
35468
35469 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35470
35471         * reflection.c: add special cases to compile corlib.
35472
35473 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35474
35475         * reflection.c: handle properties with only a set method.
35476
35477 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35478
35479         * opcodes.h: add enum with opcodes in opval order.
35480
35481 2002-07-01  Dick Porter  <dick@ximian.com>
35482         
35483         * object.h:
35484         * object.c (mono_runtime_run_main): Removed unneeded argument
35485
35486 2002-06-28  Martin Baulig  <martin@gnome.org>
35487
35488         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35489
35490 2002-06-27  Dick Porter  <dick@ximian.com>
35491
35492         * threads.c: Store the handle in both the parent thread and in the
35493         subthread, to minimise the time between starting a new thread and
35494         storing its ID.
35495
35496 2002-06-26  Dick Porter  <dick@ximian.com>
35497
35498         * appdomain.c (mono_runtime_cleanup): Close the socket library
35499         after all the threads have finished, not before
35500
35501 2002-06-26  Martin Baulig  <martin@gnome.org>
35502
35503         * debug-symfile.c (mono_debug_find_source_location): Added
35504         `guint32 *line_number' argument.  If it's not NULL, store the line number
35505         there and return the file name without the line number.
35506
35507 2002-06-25  Dick Porter  <dick@ximian.com>
35508
35509         * icall.c:
35510         * process.h:
35511         * process.c: Process forking and other support functions
35512
35513 2002-06-25  Dick Porter  <dick@ximian.com>
35514
35515         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35516         things dont happen when the image is closed.
35517         (mono_image_lookup_resource): Walk the resource section looking
35518         for a particular entry
35519
35520         * cil-coff.h: PE resource section decoding
35521
35522 2002-06-25  Dick Porter  <dick@ximian.com>
35523         
35524         * assembly.h:
35525         * assembly.c: 
35526         (mono_assembly_foreach): Accessor functions to walk the list of
35527         loaded assemblies
35528         (mono_assembly_set_main):
35529         (mono_assembly_get_main): Process methods need to know which
35530         assembly is the "main" one
35531
35532         * object.c (mono_runtime_run_main): Record the main assembly
35533
35534         * debug-helpers.c: Fix typo
35535
35536 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35537
35538         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35539         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35540
35541 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35542
35543         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35544
35545 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35546
35547         * image.c (do_mono_image_open): Initialize reference count,
35548         otherwise we leak the MonoImage.
35549
35550 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35551
35552         * reflection.c: small tweak to handle self-hosting.
35553
35554 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35555
35556         * reflection.c: fix type name parse code.
35557
35558 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35559
35560         * reflection.c: break out of the loop.
35561         * image.c: special case corlib.
35562
35563 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35564
35565         * reflection.c: add all the custom attrs at the end to ensure the
35566         ctors have been properly initialized when the attributes are defined
35567         in the current assembly.
35568
35569 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35570
35571         * reflection.c: handle correctly multiple-nested types.
35572
35573 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35574
35575         * row-indexes.h: fix typos.
35576         * reflection.c: adjust for typos and fix method_def_or_ref
35577         encoding in MethodImpl table.
35578
35579 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35580
35581         * reflection.c: fix entry point patching (thanks Serge!).
35582
35583 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35584
35585         * verify.c: add check for System.Exception
35586
35587 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35588
35589         * image.c, class.c: minifix for code just c&p'ed.
35590         * reflection.c: warning fix.
35591         * object.h, loader.h, domain.c: load also StringBuilder.
35592
35593 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35594
35595         * marshal.h, marshal.c: some support code to handle complex marshaling.
35596
35597 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35598
35599         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35600         Better signatures with vtable error dump.
35601
35602 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35603
35604         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35605
35606 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35607
35608         * icall.c (ves_icall_Type_GetField): impl.
35609
35610 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35611
35612         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35613         to retrieve a marshal description blob for a field or param.
35614
35615 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35616
35617         * reflection.h, reflection.c: change order of nested type emission
35618         to avoid table corruption. The NestedTypes table is sorted.
35619         * icall.c: change order of GetConstructor results to workaround mcs bug.
35620
35621 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35622
35623         * reflection.h, reflection.c: handle field and param marshal
35624         information.
35625
35626 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35627
35628         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35629
35630 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35631
35632         * reflection.c: fix call convention.
35633
35634 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35635
35636         * reflection.h, reflection.c: mono_image_get_memberref_token()
35637         takes a type instead of a class, now. Added
35638         mono_image_get_array_token() to create tokens for the special
35639         multi-dim array methods.
35640
35641 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35642
35643         * assembly.c: handle modules (no assembly table). Split
35644         loading references in its own function.
35645         * class.c: handle moduleref resolution scope.
35646         * image.c, image.h: cache module name in image.
35647
35648 2002-06-07  Martin Baulig  <martin@gnome.org>
35649
35650         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35651         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35652
35653 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35654
35655         * icall.c: more signature fixes that used uint instead of int.
35656
35657 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35658
35659         * reflection.c: fixed signature of field refs.
35660
35661 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35662
35663         * class.c, reflection.c: handle typerefs of nested types
35664         (both on read and when writing files).
35665
35666 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35667
35668         * icall.c: fix method signatures that tried to workaround the previous
35669         typo, d'oh!
35670
35671 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35672
35673         * debug-helpers.c: fix typo.
35674
35675 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35676
35677         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35678         rewrote the PE/COFF writing code (our programs are understood by the
35679         ms runtime, now).
35680
35681 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35682
35683         * gc.c, gc.h, icall.c: weakreference support.
35684
35685 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35686
35687         * Makefile.am, mono-config.c: use $(sysconfdir).
35688
35689 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35690
35691         * icall.c: changed default precision of Double.ToString() to 15.
35692         Fixed memory leak. Unified with Single.ToString.
35693
35694 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35695
35696         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35697
35698 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35699
35700         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35701         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35702         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35703         and myself.
35704
35705 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35706
35707         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35708
35709 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35710
35711         * reflection.c, socket-io.c: more compilation fixes.
35712
35713 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35714
35715         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35716         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35717         unicode.c: warning and compiler compatibility fixes.
35718
35719 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35720
35721         * class.h, metadata.c: fixed warnings/compilation errors.
35722
35723 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35724
35725         * Makefile.am, mono-config.c, mono-config.h: configuration file
35726         support routines.
35727         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35728         config file. Export methods to insert and lookup mappings.
35729
35730 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35731
35732         * reflection.c: handle types and boxed objects in custom attr
35733         constructors.
35734
35735 2002-05-30  Martin Baulig  <martin@gnome.org>
35736
35737         * debug-symfile.c
35738         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35739
35740 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35741
35742         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35743         to lookup the implmap row for a P/Invoke method.
35744         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35745         P/Invoke method from the runtime on an as needed basis.
35746
35747 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35748
35749         * metadata.c (mono_metadata_parse_signature): impl.
35750
35751 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35752
35753         * class.c: handle .pack directive.
35754
35755 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35756
35757         * object.c: initialize static fields with RVA data.
35758
35759 2002-05-25  Martin Baulig  <martin@gnome.org>
35760
35761         * debug-symfile.c
35762         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35763
35764 2002-05-24  Martin Baulig  <martin@gnome.org>
35765
35766         * debug-symfile.c
35767         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35768         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35769         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35770
35771 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35772
35773         * object.c: special case string ctros in invoke.
35774         * gc.c: silly whitespace changes.
35775
35776 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35777
35778         * threadpool.[ch]: impl. a threadpool that can
35779         be used by mint and mono.
35780
35781 2002-05-22  Martin Baulig  <martin@gnome.org>
35782
35783         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35784         The first argument is now a `MonoReflectionModuleBuilder *', the return
35785         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35786         `methods' field to get the method builder.  The `token' argument is the
35787         unfixed token.
35788
35789         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35790         invalid characters instead of g_assert_not_reached()ing.  This seems
35791         to be the behaviour of mscorlib.
35792
35793 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35794
35795         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35796         Hestilow to fix bug #25104
35797
35798 2002-05-21  Martin Baulig  <martin@gnome.org>
35799
35800         * debug-symfile.c (mono_debug_find_source_location): New function.
35801         Looks up an IL offset in the line number table and returns the source
35802         location as a string.
35803
35804 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35805
35806         * icall.c:
35807         (mono_double_ToStringImpl): changed %f by %g until we have something
35808         better.
35809
35810 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35811
35812         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35813         parameters first in C#.
35814
35815 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35816
35817         * icall.c, reflection.h: added icall to get info about an event.
35818
35819 2002-05-20  Radek Doulik  <rodo@ximian.com>
35820
35821         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35822         endian
35823         (mono_value_box): don't use memcpy for small sizes on
35824         architectures with unaligned access
35825
35826 2002-05-20  Martin Baulig  <martin@gnome.org>
35827
35828         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35829         if `tb->parent == NULL'.
35830         (mono_reflection_create_internal_class): New function.  This is
35831         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35832         for enum types.
35833
35834         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35835         New interncall.
35836
35837 2002-05-19  Martin Baulig  <martin@gnome.org>
35838
35839         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35840         argument to get the length, don't default to the array length.
35841
35842 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35843
35844         * assembly.c (mono_assembly_setrootdir): New function used to
35845         override the MONO_ASSEMBLIES directory.
35846
35847 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35848
35849         * icall.c: ValueType_GetHashCode() initialize local var.
35850
35851 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35852
35853         * reflection.c: sort custom attributes table.
35854
35855 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35856
35857         * reflection.c: support named args in custom attributes (write support).
35858
35859 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35860
35861         * reflection.c: fix finally position calculation.
35862
35863 2002-05-15  Radek Doulik  <rodo@ximian.com>
35864
35865         * reflection.c: fixed endianess at many places
35866
35867         * icall.c (ves_icall_InitializeArray): comment out debug msg
35868
35869 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35870
35871         * object.c (mono_unhandled_exception): new function to handle
35872         unhandled exceptions.
35873         (mono_unhandled_exception): call the UnhandledException event.
35874         (mono_runtime_delegate_invoke): impl.
35875
35876 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35877
35878         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35879         returns the RVA, not the direct pointer to the data. Handle the case
35880         when the class size is fixed.
35881
35882 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35883
35884         * reflection.c: fix some endianess issues.
35885
35886 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35887
35888         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35889
35890         * threads.c (mono_thread_init): added a callback which is invoked
35891         at thread start.
35892
35893 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35894         
35895         * icall.c: make GetHashCode return non-negative values.
35896
35897 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35898
35899         * object.c, icall.c, gc.c: revert to address-based hashcode.
35900
35901 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35902
35903         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35904
35905 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35906
35907         * icall.c, class.c: special case <Module>.
35908
35909 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35910
35911         * icall.c: fix bug in GetNow().
35912
35913 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35914
35915         * object.c (mono_runtime_class_init): make sure that we call all
35916         static class constructors.
35917
35918 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35919
35920         * reflection.c: sort methodsemantics table.
35921
35922 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35923
35924         * reflection.h, reflection.c: honour init locals setting.
35925
35926 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35927
35928         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35929
35930 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35931
35932         * reflection.c: support ContructorBuilders in attribute blob creation.
35933
35934 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35935
35936         * reflection.c: some changes to build a binary that can be run
35937         directly in windows.
35938
35939 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35940
35941         * loader.c: print a big message when an icall can't be found.
35942
35943 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35944
35945         * string-icalls.c: fix bug 24248.
35946
35947 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35948
35949         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35950         icall.c, reflection.h: separate assembly loading by pathname and by
35951         assembly name. Use the MONO_PATH env var to search for assemblies.
35952
35953 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35954
35955         * assembly.c, image.h: add some support for assemblies
35956         with multiple modules.
35957         * class.c, class.h: export mono_class_from_typeref().
35958         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35959         instead.
35960
35961 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35962
35963         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35964         documentation says (the ECMA one is correct).
35965
35966 2002-05-02  Dick Porter  <dick@ximian.com>
35967
35968         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35969         Don't name the synchronisation mutex.
35970
35971 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35972
35973         * rand.c
35974         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35975         Make the prototypes match.
35976         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35977         Same.
35978
35979         * icall.c
35980         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35981         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35982         all systems have tm.tm_zone, so use strftime() with %Z to print
35983         the timezone abreviation into a temp string.
35984
35985         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35986         rather than mono_array_addr() on a MonoString on Big Endian
35987         machines.
35988
35989 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35990
35991         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35992         fix bug 24041
35993
35994 2002-04-30  Dick Porter  <dick@ximian.com>
35995
35996         * socket-io.c: Cope with SOCKET being an integer rather than a
35997         pointer now.
35998
35999         * threads.c: Added Thread_free_internal, to deal with thread
36000         handle cleanup.  Moved calls to handle_store() and handle_remove()
36001         to start_wrapper(), so each can only be called once.  Allocate
36002         synchronisation blocks with GC_malloc(), and use GC finalisation
36003         to close the handles.
36004
36005         * icall.c: added System.Threading.Thread::Thread_free_internal
36006
36007 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36008
36009         * icall.c: support Environment.Exit, CommandLineArgs().
36010
36011 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
36012
36013         * object.c, object.h: added mono_runtime_run_main () and
36014         mono_runtime_get_main_args () for use in System.Environment.
36015
36016 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36017
36018         * gc.c: fix thinko, enable actual finalization since the jit is now
36019         fixed.
36020
36021 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36022
36023         * gc.c, object.c: take into account that an object may be offset wrt the address
36024         returned by GC_malloc().
36025
36026 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
36027
36028         * image.c: handle files without entries in the assembly table (modules).
36029
36030 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
36031
36032         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
36033         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
36034         allowed to be null when it's System.Object class setup.
36035
36036 2002-04-27  Martin Baulig  <martin@gnome.org>
36037
36038         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
36039         if `tb->parent == NULL' rather than crashing.
36040
36041 2002-04-28  Nick Drochak  <ndrochak@gol.com>
36042
36043         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
36044         calling acos() where asin() should have been called.
36045
36046 2002-04-26  Martin Baulig  <martin@gnome.org>
36047
36048         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
36049         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
36050         there's a subdirectory called `System', but we don't want to read that
36051         subdirectory as an assembly.
36052
36053 2002-04-25  Martin Baulig  <martin@gnome.org>
36054
36055         * debug-symfile.c: Reflect latest MonoString changes.
36056
36057 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
36058
36059         * rand.c, rand.h: instance method icalls need to have an explicit
36060         this pointer as first argument in the C implementation.
36061
36062 2002-04-25  Nick Drochak <ndrochak@gol.com>
36063
36064         * icall.c: Fix typo in map for GetNonZeroBytes
36065
36066 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36067
36068         * string-icalls.c : String does now passes unit tests without any 
36069         errors, the following changes has been made:
36070         
36071         Implemented replace methods.
36072         Renaming of methods to (try) follow the standard.
36073         Fixed compare ordinal
36074         Made all memory allocated directly to function instead of via icall function.
36075         Small performance fix in is_in_array function
36076                         
36077  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
36078
36079         c (mono_string_Internal_ctor_charp_int_int):
36080         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
36081         sindex < 0, throw ArgumentOutOfRangeException instead of
36082         ArgumentNullException.
36083
36084         Added new check for length == 0, however
36085         I need to make it return String.Empty from the C code.
36086         
36087         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
36088         that calculate the length for us here.
36089         
36090         (mono_string_Internal_ctor_sbytep_int_int): Replaced
36091         mono_string_new_utf16 with mono_string_new, since value is utf8.
36092
36093 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36094
36095         * object.c: register the object for finalization if needed.
36096         Allocate one more char in the string for the terminating 0 char.
36097
36098 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36099
36100         * class.c, class.h, image.c: check if a type implemenst a destructor.
36101         Use the proper key for array class lookups.
36102         * icall.c: register the icalls in the System.GC class.
36103         * gc.c, gc.h: GC-related functions and icalls.
36104
36105 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36106
36107         * icall.c:
36108         * socket-io.c:
36109         * unicode.c: free some strings gotten from mono_string_to_utf8 and
36110         changed a couple of free () by g_free ().
36111
36112         * decimal.c: one-liner in the comments for decimal2string ().
36113
36114 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36115
36116         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
36117
36118 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36119
36120         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
36121         * object.c (mono_runtime_invoke_array) : handle null in params
36122
36123 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36124
36125         * string-icalls.c: fixed bug in split (one off bug)
36126
36127 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36128
36129         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
36130         * icalls.c: added String::Equals as internal method
36131
36132 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36133
36134         * threads.c: fixed bug in the double interlocked functions
36135
36136 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36137
36138         * threads.c: implemented all of the new interlocked icalls.
36139         * string-icalls.c: fix a bug in insert.
36140         * icalls.c: added the icalls for interlocked, removed old string functions.
36141         
36142 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36143
36144         * loader.c: fix off-by-one error when reading argument names.
36145
36146 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36147
36148         * profiler.c: win32 counter implementation (untested).
36149         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36150         (the latter needs testing and more complete impl. from win32 folks).
36151
36152 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36153
36154         * object.c: mono_array_new_full workaround mono_array_class_get
36155         problem.
36156
36157 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36158
36159         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36160         * object.h (mono_string_chars): Changed casting type.
36161
36162 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36163
36164         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36165                            method signatures to use gunichar2 instead of gint16.
36166
36167 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36168
36169         * object.h, object.c: domain-specific versions of mono_object_new and
36170         mono_array_new.
36171
36172 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36173
36174         * object.c: changed String layout
36175
36176         * string-icalls.c (mono_string_Internal_ctor_chara): added
36177         internal string constructors.
36178
36179 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36180
36181         * threads.c: pass 'this' to the thread start routine.
36182
36183 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36184
36185         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36186         InternalCompareStr don't call twice mono_string_cmp_char for the last
36187         character. Improved performance in mono_string_cmp_char.
36188
36189 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36190
36191         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36192         code into its own library: libmonoruntime.
36193
36194 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36195
36196         * object.h, object.c: changed array format so that szarrays do not
36197         require a bounds structure.
36198         * icall.c, appdomain.c: support for new szarray format.
36199
36200 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36201
36202         * metadata.c: compare also the retuns type when comparing signatures:
36203         we didn't do this as an optimization since really overloaded methods
36204         must differ also in the arguments, but this doesn't work with
36205         low-level IL code (or when using explicit conversion operators: see
36206         bug#23498 for an example).
36207
36208 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36209
36210         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36211
36212 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36213
36214         * icall.c: make MonoType::GetElementType its own icall.
36215
36216 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36217
36218         * icall.c: remove MonoMethod_get_Name().
36219         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36220         object.
36221
36222 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36223
36224         * string-icalls.c: optimized a few methods.
36225
36226 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36227
36228         * icall.c: added all new string internal calls
36229         * string-icalls.c: added, new string internal call implementation.
36230         * object.c: added mono_string_new_size for allocating a string a size
36231
36232 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36233
36234         * object.c (mono_object_isinst): use the same code as in the
36235         optimized x86 version.
36236
36237 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36238
36239         * profiler.c: TSC-based timer code (faster and more accurate).
36240         Not hooked up in configure, yet (set USE_X86TSC to 1).
36241
36242 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36243
36244         * profiler.c, profiler.h: track time spent compiling methods.
36245         * threads.c: track thread creation/destruction.
36246
36247 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36248
36249         * profiler.c, profiler.h, profiler-private.h: profiling interface
36250         and sample implementation. Moved here so that it can be used also by
36251         the jit.
36252
36253 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36254
36255         * reflection.c, reflection.h: keep types and other handles separate in
36256         the hash tables for referred tokens. Add guid for modules.
36257
36258 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36259
36260         * assembly.c: fix bugs found with valgrind.
36261         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36262
36263 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36264
36265         * threads: added icall support for getting current domain for
36266                    the thread.
36267  
36268 2002-04-13  Martin Baulig  <martin@gnome.org>
36269
36270         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36271         (MonoDebugVarInfo): Added `index' field for register based addresses.
36272         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36273         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36274         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36275         `MonoDebugVarInfo *this_var'.
36276
36277         * debug-symfile.c (relocate_variable): New static function to write
36278         a location description for a local variable or method parameter.
36279
36280 2002-04-12  Martin Baulig  <martin@gnome.org>
36281
36282         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36283         stack offset and begin/end scope address of a local variable.
36284         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36285         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36286         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36287
36288         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36289         Added new relocation types for start/end scope of a local variable.
36290
36291 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36292
36293         * object.h: add mono_object_domain() macro.
36294         * reflection.c: handle typespecs.
36295         * icall.c: MonoMethod::get_Name() implementation.
36296
36297 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36298
36299         * icall.c: String::GetHashCode() icall implementation.
36300
36301 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36302
36303         * icall.c: String::IndexOfAny icall.
36304         * object.c, object.h: make array->max_length more useful.
36305         Intrduced mono_object_class() and mono_string_length() macros.
36306
36307 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36308
36309         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36310         instead of g_unichar_isdigit.
36311
36312 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36313
36314         * icall.c: Implement a simple Double.ToString().
36315
36316 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36317
36318         * appdomain.h: only io-layer.h is supposed to be included.
36319         * icall.c: explicitly import environ. Fix warning.
36320
36321 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36322
36323         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36324                 return true even if it's not Daylight Savings time.
36325                 Only return false for the case where the function isn't
36326                 implemented for a plaform (read Windows).
36327
36328 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36329
36330         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36331         data with a mutex.
36332
36333 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36334
36335         * mempool.c (mono_mempool_alloc): only use g_malloc when
36336         absolutely necessary.
36337
36338 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36339
36340         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36341
36342         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36343         (mono_class_proxy_vtable): use domain mempool
36344
36345 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36346
36347         * appdomain.h, appdomain.c: split initialization that requires the
36348         execution engine support into mono_runtime_init().
36349
36350 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36351
36352         * class.c (mono_class_init): don't include vtable inside MonoClass
36353         to save some memory, gather some statistics.
36354         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36355
36356 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36357
36358         * icall.c: internalcall implementation for ValueType.Equals().
36359
36360 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36361
36362         * object.c (mono_message_init): moved 
36363         (mono_runtime_exec_main): new arch. independent impl.
36364         (mono_runtime_invoke_array): new method - like
36365         mono_runtime_invoke, but you can pass an array of objects.
36366         (mono_remoting_invoke): new arch. independent impl.
36367         (mono_message_invoke): new arch. independent impl.
36368         (mono_runtime_class_init): new arch. independent impl.
36369         (mono_runtime_object_init): new arch. independent impl.
36370
36371 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36372
36373         * metadata.c, object.c, reflection.c: documented the exported
36374         functions.
36375
36376 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36377
36378         * icall.c: simpler code to pass the assembly builder data to corlib.
36379         Implement GetNestedTypes() internalcall.
36380
36381 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36382
36383         * class.c: warn if a type can't be loaded.
36384
36385 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36386
36387         * image.h: typedef MonoImageOpenStatus
36388         * types.h: removed unused file
36389         
36390 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36391
36392         * icall.c: Enum_ToObject accepts enum value arguments.
36393
36394 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36395
36396         * class.c: move initialization of properties, events and nested
36397         classes, so that they happen for interfaces, too.
36398
36399 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36400
36401         * icall.c: cleanup some ugly casts in Array_SetValue*.
36402
36403 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36404
36405         * icall.c: the values array fro enums is of the correct type, now.
36406         Implement (correctly) getFullName instead of assQualifiedName for
36407         MonoType.
36408         * reflection.h, reflection.c: added mono_type_get_name ().
36409
36410 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36411
36412         * assembly.c, image.h: for each MonoImage, record from wich assembly
36413         it was loaded.
36414         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36415         Make Type.Assembly work.
36416
36417 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36418
36419         * debug-symfile.h: use char* instead of gpointer to avoid
36420         unnecessary casts.
36421
36422         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36423
36424         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36425         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36426
36427 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36428
36429         * icall.c (mono_message_init): impl. (code cleanup)
36430         (ves_icall_InternalExecute): impl. FieldGetter
36431
36432         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36433         defined we call all (non-static)methods through the vtable. 
36434
36435 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36436
36437         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36438         finalizer even though the memory is still referenced (and the chunk of
36439         memory is not freed).
36440
36441 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36442
36443         * assembly.c: fix brokeness.
36444
36445 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36446
36447         * class.c: kill some warnings. Check explicit interface method
36448         implementation also without considering the namespace.
36449         Load also literal strings in static class data.
36450
36451 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36452
36453         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36454         (default_assembly_name_resolver): Make the resolver take the
36455         "base" directory where the assembly was originally defined, so we
36456         can load DLLs that are in the same directory as the assembly that
36457         is being referenced.
36458
36459 2002-03-28  Dick Porter  <dick@ximian.com>
36460
36461         * file-io.h: 
36462         * file-io.c:
36463         * socket-io.c: 
36464         * unicode.h: 
36465         * unicode.c: Warning cleanups
36466
36467 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36468
36469         * object.h, reflection.h: use the correct type instead of MonoObject.
36470
36471 2002-03-28  Martin Baulig  <martin@gnome.org>
36472
36473         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36474         (mono_debug_update_symbol_file): Initialize classes if necessary.
36475
36476 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36477
36478         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36479         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36480
36481 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36482
36483         * assembly.h: fix function prototype.
36484         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36485         * mono-endian.h: use const cast.
36486
36487 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36488
36489         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36490
36491 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36492
36493         * loader.c: don't assert when a typeref can't be loaded, give
36494         a chance to the runtime to trow an exception instead.
36495         * loader.h: fix warning.
36496
36497 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36498
36499         * class.c (mono_class_proxy_vtable): added proxy support
36500
36501 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36502
36503         * icall.c: removed last of PAL calls, added System.Environment
36504         * file-io.h, file-io.c: MonoIO implementation
36505         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36506
36507 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36508
36509         * appdomain.c: do not use the byte marker in ldstr table lookup.
36510         * debug-helpers.c: allow two ':' to separate class and method name.
36511         * object.c: allocate arrays bounds with the GC, too.
36512         * verify: add a few more checks.
36513
36514 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36515
36516         * reflection.c: output also literal strings. Allocate parameter data
36517         with GC_malloc() (thanks, Martin, for catching this!).
36518
36519 2002-03-26  Martin Baulig  <martin@gnome.org>
36520
36521         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36522         include the `this' offset in the `param_offsets'.
36523
36524 2002-03-25  Martin Baulig  <martin@gnome.org>
36525
36526         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36527         mono_debug_get_class() function to get the classes. Added new
36528         relocation types for arrays and strings.
36529         (mono_debug_get_class): New static function to search in all
36530         referenced assemblies for a metadata token.
36531
36532         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36533
36534 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36535
36536         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36537         hold gc-allocated objects. Make the string heap a stream like the
36538         others. Removed duplicated code when writing stream info.
36539         Added asserts to catch possible buffer overflows. Set the sorted map
36540         for tables that need sorting. Added some documentation.
36541
36542 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36543
36544         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36545         for interned strings and vtables.
36546
36547 2002-03-24  Martin Baulig  <martin@gnome.org>
36548
36549         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36550         it in the array since it was created with g_slist_prepend().
36551
36552 2002-03-24  Martin Baulig  <martin@gnome.org>
36553
36554         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36555         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36556         (mono_debug_method_from_token): Renamed to
36557         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36558         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36559
36560         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36561         relocation types.
36562
36563         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36564
36565 2002-03-24  Martin Baulig  <martin@gnome.org>
36566
36567         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36568         (mono_debug_method_from_token): New func.
36569
36570         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36571         New interncall, calls mono_debug_local_type_from_signature().
36572         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36573         calls mono_debug_method_from_token().
36574
36575 2002-03-23  Martin Baulig  <martin@gnome.org>
36576
36577         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36578         specifies the number of bytes to be converted, not the array size.
36579         Return the number of chars, not the number of bytes.
36580         (ves_icall_iconv_get_chars): The `byteCount' argument
36581         specifies the number of bytes to be converted, not the array size.
36582
36583 2002-03-23  Martin Baulig  <martin@gnome.org>
36584
36585         * reflection.h (MonoReflectionSigHelper): New type.
36586
36587         * reflection.c (mono_reflection_sighelper_get_signature_local),
36588         (mono_reflection_sighelper_get_signature_local): New functions.
36589
36590         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36591         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36592         interncalls.
36593
36594 2002-03-23  Martin Baulig  <martin@gnome.org>
36595
36596         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36597         is_writeable is set.
36598         (mono_raw_buffer_update): New function to write the modified map
36599         back to disk.
36600
36601         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36602
36603         * debug-symfile.c (mono_debug_update_symbol_file): Call
36604         mono_raw_buffer_update() when done writing.
36605
36606 2002-03-23  Martin Baulig  <martin@gnome.org>
36607
36608         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36609
36610         * debug-symfile.c: Added support for arguments and local variables.
36611
36612 2002-03-23  Dick Porter  <dick@ximian.com>
36613
36614         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36615         protected by ifdefs, hence breaking the w32 build.
36616
36617 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36618
36619         * object.c: implement is_interned() the right way.
36620
36621 2002-03-21  Martin Baulig  <martin@gnome.org>
36622
36623         * debug-symfile.[ch]: New files to handle debugging information
36624         files. There's also support to dynamically update these symbol
36625         files to include machine dependent information.
36626
36627 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36628
36629         * threads.c (mono_thread_create): new function to create thread
36630         from C
36631
36632 2002-03-20  Martin Baulig  <martin@gnome.org>
36633
36634         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36635         method is a constructor.
36636         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36637         points to ves_icall_InternalInvoke().
36638
36639 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36640
36641         * file-io.c: Flush shouldn't throw exceptions.
36642
36643 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36644
36645         * file-io.c: FileStream flush support; FileSetLength now
36646         restores file pointer.
36647
36648 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36649
36650         * class.c: set image for pointer classes.
36651
36652 2002/03/19  Nick Drochak <ndrochak@gol.com>
36653
36654         * sysmath.c: Forgot one.
36655
36656 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36657
36658         * sysmath.c: Avoid redefining existing names.
36659
36660 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36661
36662         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36663         handled by runtime as icall rather than dllimport from libm.so
36664         * file-io.c, file-io.h: fixed handle argument type.
36665
36666 2002-03-18  Dick Porter  <dick@ximian.com>
36667
36668         * reflection.c (mono_image_get_type_info): rename interface to
36669         iface, because of "#define interface struct" on windows.
36670
36671 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36672
36673         * class.c, class.h: rename and export mono_ptr_class_get().
36674         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36675         * reflection.c, reflection.h, icall.c: better/saner type name
36676         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36677         method signatures.
36678
36679 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36680
36681         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36682
36683         * icall.c (ves_icall_InternalInvoke): impl.
36684
36685 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36686
36687         * reflection.c: output the interface map table, too.
36688
36689 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36690
36691         * class.c (class_compute_field_layout): separate computation of 
36692         static field layout
36693
36694 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36695
36696         * icall.c: added System.Buffer support.
36697         * file-io.c: moved file icalls from PAL to FileStream.
36698
36699 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36700
36701         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36702
36703 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36704
36705         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36706
36707 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36708
36709         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36710
36711 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36712
36713         * debug-helpers.{c,h}: moved here from monograph some useful functions
36714         to locate a method by name/signature in a class or image. Included
36715         also a small and flexible IL disassembler.
36716
36717 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36718
36719         * reflection.c: fixup tokens in methods with small header size, too.
36720
36721 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36722
36723         * object.c (mono_string_to_utf8): remove assert(!error), instead
36724         print a warning. 
36725
36726 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36727
36728         * icall.c: update to the new mono_Array_class_get interface.
36729
36730 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36731
36732         * appdomain.c, object.c: Boehm-GC enable.
36733         * icall.c: make get_data_chunk() support split data requests.
36734         Ensure a class is initialized in more cases. Return only the first
36735         property found in GetProperties() or the compiler gets confused. 
36736         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36737         * reflection.h, reflection.c: add fixup mechanism for field and method
36738         tokens. Initialize assembly->typeref in a single place. Output
36739         properties after events. Support custom attributes for events, too.
36740         Typo fix for paramter custom attrs.
36741
36742 2002-03-07  Martin Baulig  <martin@gnome.org>
36743
36744         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36745
36746 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36747
36748         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36749
36750 2002-03-06  Martin Baulig  <martin@gnome.org>
36751
36752         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36753         non-zero lower bounds. See testcases #F10-#F13.
36754
36755 2002-03-05  Martin Baulig  <martin@gnome.org>
36756
36757         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36758
36759         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36760         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36761         here.
36762         (ves_icall_System_Array_SetValue): Likewise.
36763         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36764         as argument and does the actual work. This function is used when copying a
36765         multi-dimensional array.
36766         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36767         now do all the widening conversions of value types.
36768         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36769
36770 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36771
36772         * class.c: remove some magic numbers and use the smbolic names,
36773         instead. Added init_events() to load event info at class init time.
36774         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36775         and mono_metadata_methods_from_event().
36776         * reflection.h, reflection.c: added support for writing out the evnets
36777         related information.
36778
36779 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36780
36781         * reflection.h, icall.c: use a different method (GetInterfaces)
36782         to gather interface info and add isbyref, isprimitive and
36783         ispointer to the ves_icall_get_type_info() return value.
36784
36785 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36786
36787         * class.h: stared adding support for events.
36788         * icall.c: split find_members implementation. Added debug icall to get
36789         the address of an object.
36790         * reflection.c: handle TypeBuilders in mono_type_get_object().
36791
36792 2002-03-01  Martin Baulig  <martin@gnome.org>
36793
36794         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36795         ArgumentOutOfRangeException(), not an ArgumentException().
36796         (ves_icall_System_Array_GetLowerBound): Likewise.
36797         (ves_icall_System_Array_GetValue): Improved argument checking.
36798         (ves_icall_System_Array_SetValue): Improved argument checking.
36799
36800 2002-03-01  Martin Baulig  <martin@gnome.org>
36801
36802         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36803         called with invalid arguments rather than just dying with g_assert().
36804         (ves_icall_System_Array_SetValue): Likewise.
36805         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36806         raise a NotImplementedException instead.
36807         (ves_icall_System_Array_GetLength): Added argument checking.
36808         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36809
36810 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36811
36812         * object.h (mono_assert): new macros mono_assert and
36813         mono_assert_not_reached
36814
36815 2002-02-28  Martin Baulig  <martin@gnome.org>
36816
36817         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36818         and "System::String::IsInterned" to "System::String::_IsInterned".
36819
36820 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36821
36822         * icall.c: remove hacks for typebuilder. Added icall to create a
36823         modified type from a tybebuilder.
36824         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36825         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36826         to create a backing MonoClass for a TypeBuilder.
36827
36828 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36829
36830         * class.c, class.h: more refactoring of class init.
36831         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36832
36833 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36834
36835         * marshal.c, marshal.h: start of marshaling interface.
36836
36837 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36838
36839         * icall.c: fix order in assembly qualified name icall.
36840
36841 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36842
36843         * class.c: do not free str, since we store it in the hash table.
36844         * reflection.h: add label field to MonoILExceptionInfo.
36845         * reflection.c: handle references to more than one assembly. Handle
36846         case when there isn't a module created in the assembly.
36847
36848 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36849
36850         * class.c: Fix typo. Start refactoring of class init code.
36851
36852 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36853
36854         * appdomain.c: exit with 1 on error.
36855         * class.c: we already have the name in MonoClassField.
36856         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36857         MonoStreamHeader instead of an offset of image->raw_metadata.
36858
36859 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36860
36861         * appdomain.c (mono_init): Be even more descriptive about the error.
36862
36863 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36864
36865         * appdomain.c: give the user an informative message when corlib can't
36866         be loaded.
36867
36868 2002-02-26  Martin Baulig  <martin@gnome.org>
36869
36870         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36871         New icall to get the time zone data.
36872
36873 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36874
36875         * reflection.c: set virtual and raw size of section correctly.
36876         * threads.c: transfer domain information to newly created threads.
36877
36878 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36879
36880         * class.c: when instancing a class in a domain, load the default
36881         vaules for static fields from the constant table. Fix System.Enum to
36882         not be an enum.
36883         * icall.c: implement Object::GetType() internalcall. Implemented
36884         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36885         Fixed checking of binding flags in find_members().
36886         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36887         * reflection.c: handle enumerations when writing to the constant
36888         table. Use a different object cache for types.
36889
36890
36891 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36892
36893         * object.c (mono_object_isinst): fix for arrays
36894
36895         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36896
36897 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36898
36899         * object.c: don't use mprotect ()  and fix intern pool hash table
36900         lookup for big endian systems.
36901
36902 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36903
36904         * icall.c: change type_is_subtype_of () signature.
36905
36906 2002-02-21  Mark Crichton  <crichton@gimp.org>
36907
36908         * rand.c, rand.h: Added random number generator for
36909         System.Security.Cryptography classes.
36910
36911         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36912
36913         * icall.c: Added System.Security.Cryptography calls.
36914
36915 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36916
36917         * class.c, icall.c, metadata.c: better support for pointer types.
36918         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36919         * reflection.c: Add support for getting custom attrs for properties
36920         and simplify some code.
36921
36922 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36923
36924         * icall.c: change getToken () and add custom attribute GetBlob()helper
36925         method.
36926         * reflection.h: add custom attrs array to the reflection builder structures.
36927         * reflection.c: encode and emit custom attributes for all the relevant
36928         reflection objects. Cache fieldref and methodref tokens. Change
36929         mono_image_create_token() interface to take a MonoDynamicAssembly.
36930         More complete custom attributes decoder. Load custom attributes for
36931         Assembly, Field, Method and Constructor objects, too. Make the
36932         returned array an Attribute[] one, not object[]. Added
36933         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36934         custom attribute constructor.
36935
36936 2002-02-20  Dick Porter  <dick@ximian.com>
36937
36938         * icall.c:
36939         * rawbuffer.c:
36940         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36941         problem code out for now).
36942
36943 2002-02-19  Radek Doulik  <rodo@ximian.com>
36944
36945         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36946
36947 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36948
36949         * icall.c: register the GetCustomAttributes method.
36950         * object.c, object.h: add mono_string_new_len ().
36951         * reflection.h, reflection.c: added mono_runtime_invoke(),
36952         mono_install_runtime_invoke(). Added
36953         mono_reflection_get_custom_attrs () to load custom attributes and
36954         create the attribute objects.
36955
36956 2002-02-19  Dick Porter  <dick@ximian.com>
36957         * threads-dummy-types.c:
36958         * threads-dummy-types.h:
36959         * threads-dummy.c:
36960         * threads-dummy.h:
36961         * threads-pthread-types.c:
36962         * threads-pthread-types.h:
36963         * threads-pthread.c:
36964         * threads-pthread.h:  Deleted obsolete files
36965
36966 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36967
36968         * class.c (mono_class_vtable): runtime init the class when we
36969         allocate static class data.
36970
36971         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36972
36973         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36974         and String - but we will need generic marshalling support in the
36975         future. 
36976         (mono_init): set the domain name in a ms compatible way
36977
36978         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36979         String[].
36980
36981 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36982
36983         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36984         for sizes
36985
36986         * appdomain.c (mono_domain_unload): impl.
36987
36988 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36989
36990         * appdomain.c, object.c: fix intern pool implementation.
36991         * class.c: fix alignment code.
36992
36993 2002-02-16  Radek Doulik  <rodo@ximian.com>
36994
36995         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36996         and s2 > s1, just copy lower bytes to be compatible with little
36997         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36998         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36999
37000         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
37001         force big_endian to be 1 for big endian machines 
37002         (ves_icall_iconv_new_decoder): ditto
37003
37004 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
37005
37006         * socket-io.c (convert_sockopt_level_and_name): If the system
37007         doesn't define SOL_IP or SOL_TCP, get them by hand using
37008         getprotobyname() and caching the values (because this could be a
37009         slow operation).
37010         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
37011         Use the appropriate struct when the system does support it. Ie,
37012         not all systems have struct ip_mreqn so use struct ip_mreq when
37013         appropriate.
37014
37015 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
37016
37017         * reflection.c: handle finally clauses.
37018
37019 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
37020
37021         * socket-io.c: use g_snprintf() instead of snprintf.
37022
37023 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37024
37025         * reflection.c (mono_param_get_objects): Cast second argument to
37026         mono_method_get_param_names to a const char** to silence the
37027         compiler warning.
37028
37029         * appdomain.c (mono_domain_assembly_open): Put parens around the
37030         truth statement in the for-loop.
37031
37032         * unicode.c (iconv_convert): Got rid of a compiler warning about
37033         int i being unused when the system has a new iconv.
37034         (iconv_get_length): Same.
37035
37036         * image.c (load_class_names): Cast the second argument to
37037         g_hash_table_insert() to char* to hush compiler warnings about the
37038         arg being a const.
37039         (mono_image_open): Same here.
37040
37041         * socket-io.c: Don't conditionally include sys/filio.h or
37042         sys/sockio.h here anymore since we now get them from
37043         io-layer/io-layer.h
37044         (inet_pton): If the system doesn't support inet_aton, implement
37045         using inet_addr and also #define INADDR_NONE if it isn't defined
37046         by the system.
37047
37048 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
37049
37050         * metadata.c, metadata.h: added function to get packing and size info
37051         of a typedef.
37052         * reflection.h, reflection.c: handle field RVA data. Save info about
37053         the table layout if needed. Assign typedef indexes to all the types
37054         before dumping the info about them to avoid forward reference problems.
37055
37056 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
37057
37058         * socket-io.c (convert_sockopt_level_and_name): ifdef
37059         SO_ACCEPTCONN because it is not defined on my system (old debian)
37060
37061 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
37062
37063         * opcode.c: use stddef.h to get NULL.
37064
37065 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37066
37067         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
37068         for FIONBIO, FIONREAD and SIOCATMARK.
37069         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
37070         define INADDR_NONE and besides, inet_addr() is deprecated and
37071         should not be used. Use inet_pton() instead - it also has the
37072         added bonus that it can easily handle IPv6 addresses as well.
37073         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
37074
37075 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
37076
37077         * decimal.c: remove _MSC_VER conditional.
37078
37079 2002-02-13  Dick Porter  <dick@ximian.com>
37080
37081         * socket-io.c: 
37082         * icall.c: Internal calls for Blocking, Select, Shutdown,
37083         GetSocketOption and SetSocketOption
37084
37085 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37086
37087         * assembly.cs: better resolver: use it instead of some kludgy
37088         code.
37089
37090 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
37091
37092         * reflection.c: the best way to speed-up the compiler is to avoid
37093         infinite loops.
37094
37095 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
37096
37097         * class.c (mono_class_vtable): changed the object layout
37098         (obj->vtable->class). 
37099         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
37100
37101 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37102
37103         * assembly.c: look for assemblies in the assembly dir, too.
37104
37105 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37106
37107         * class.c: fix thinko in mono_class_from_type().
37108
37109 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37110
37111         * exception.h, exception.c: added TypeLoadException.
37112         * object.h, object.c: added mono_array_clone ().
37113         * icall.c: handle throwOnError in AssemblyGetType().
37114         Added Array.Clone().
37115         * opcode.h, opcode.c: use a single value for the opcode val.
37116         Compile fix for non-gcc compilers.
37117
37118 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
37119
37120         * opcodes.c, opcodes.h: export interesting info about opcodes.
37121
37122 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
37123
37124         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
37125         icalls. 
37126
37127         * class.c (class_compute_field_layout): set element_class for enums
37128         (mono_class_create_from_typedef): set element_class for normal classes
37129
37130         * icall.c (ves_icall_System_Enum_get_value): impl.
37131
37132         * class.c (mono_class_create_from_typedef): do not set valuetype
37133         flag for System.ValueType and System.Enum
37134
37135 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37136
37137         * unicode.c (iconv_convert): fix big endian problem.
37138
37139 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37140
37141         * class.c: add asserts if we are ever going to scribble over memory.
37142         * socket-io.c: not all systems have AF_IRDA defined.
37143
37144 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37145
37146         * class.c (class_compute_field_layout): do not consider static
37147         fields to compute alignment
37148
37149 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37150
37151         * appdomain.c (mono_appdomain_get): impl.
37152         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37153
37154 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37155
37156         * icall.c: ignore "file://" prefix when loading an assembly.
37157
37158 2002-01-23  Dick Porter  <dick@ximian.com>
37159
37160         * socket-io.c:
37161         * icall.c:
37162         * Makefile.am: Added socket support
37163
37164 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37165
37166         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37167         code back.  This should return the assemblies that are loaded by
37168         the runtime on behalf of an application domain. 
37169
37170         The current implementation is still broken, it just returns every
37171         assembly loaded, but until we get real applications domain this
37172         will do.
37173
37174 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37175
37176         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37177         AppDomain object.
37178
37179 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37180
37181         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37182         the mono_class_from_name lookup.
37183         (ves_icall_get_parameter_info): ditto.
37184         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37185         method.
37186         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37187
37188 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37189
37190         * class.c: load also nested classes on class init.
37191         System.ValueType instance methods gets passed boxed
37192         values, unless methods in derived classed that get a pointer to the
37193         data.
37194         * icall.c: use better name parsing code in GetType().
37195         * image.c, image.h: add mono_image_loaded ().
37196         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37197         * reflection.c, reflection.h: added mono_reflection_parse_type().
37198
37199 2002-01-22  Veronica De Santis <veron78@interfree.it>
37200
37201         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37202         * threads.c : Added the implementation of internal calls for events
37203         * threads.h : Added prototypes of internal calls for events
37204         
37205 2002-01-21  Radek Doulik  <rodo@ximian.com>
37206
37207         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37208
37209 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37210
37211         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37212         (mono_class_value_size): use min_align
37213
37214 2002-01-20  Dick Porter  <dick@ximian.com>
37215
37216         * threads.h:
37217         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37218         so it compiles on w32.
37219
37220 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37221
37222         * metadata.c (mono_type_stack_size): impl.
37223
37224         * class.c (mono_class_get_field): impl. memberref token
37225
37226 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37227
37228         * icall.h : Added the internal calls mapping for CreateMutex_internal
37229                     and ReleaseMutex_internal.
37230         * threads.h : Added the prototype of mutexes internal calls.
37231         * threads.c : Added the implementations of mutexes internal calls.
37232
37233 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37234
37235         * metaparse.h: removed unused file.
37236         * reflection.c, reflection.h: added stream_data_align () function 
37237         to align data in streams and keep stream aligned. Add support for
37238         exception support in method headers.
37239
37240 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37241
37242         * unicode.c: make iconv_convert () return the number of bytess written
37243         in the output buffer.
37244
37245 2002-01-15  Dick Porter  <dick@ximian.com>
37246         * threads.c: Make the runtime's idea of infinite timeouts coincide
37247         with the class library's
37248
37249         Fix a particularly egregious bug in mono_thread_cleanup(). That
37250         code was so utterly bogus it must have been written on a Monday.
37251
37252 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37253
37254         * reflection.h: add subtypes field to TypeBuilder.
37255         * reflection.c: encode constants for literal fields.
37256         Handle subtypes. Fix user string token (and add a zero byte)
37257         at the end.
37258         
37259 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37260
37261         * class.c (mono_class_init): bug fix: assign slot numbers for
37262         abstract methods.
37263
37264 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37265
37266         * reflection.c: don't try to output a code RVA for abstract methods.
37267         Small fixes for method header format. Output parameter info to the
37268         ParamDef table. Save method overriding info to MethodImpl table.
37269         Fix property support. Allow typedef.extends to be a type in the
37270         building assembly.
37271         * verify.c: fix off-by-one error.
37272
37273 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37274
37275         * class.c: fix mono_class_from_mono_type () for szarray types.
37276         Remove unused cache check in mono_class_from_type_spec().
37277         * icall.c: *type_from_name () functions handle simple arrays and byref.
37278         * reflection.c: handle byref and szarray types. Handle methods without
37279         body (gets P/Invoke compilation working). Handle types and fields in
37280         get_token ().
37281         * reflection.h: add rank to MonoTypeInfo.
37282
37283 2002-01-10  Dick Porter  <dick@ximian.com>
37284
37285         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37286         internal calls
37287
37288 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37289
37290         * icall.c: initialize class in type_from_handle ().
37291         Loop also in parent classes for get_method ().
37292         * reflection.c: properly encode class and valuetype types.
37293         Start on encoding TypeBuilder types. Handle fieldrefs.
37294         Use correct length when registering a user string.
37295         Handle ConstructorBuilder and MonoMethod in get_token ().
37296         Make mono_type_get_object () aware of cached types.
37297         * object.c: back out change to mono_string_new ().
37298
37299 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37300         * object.c: mono_string_new should return a NULL when the string 
37301         passed in is NULL -- not try to deference it.
37302         
37303 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37304
37305         * icall.c: hack to make IsSubType work for TypeBuilders.
37306         * reflection.c: emit constructors before methods.
37307         Retrieve param names in mono_param_get_objects().
37308
37309 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37310
37311         * Makefile.am: fix list of headers and sources so automake 1.5
37312         doesn't complain. Removed \# at end of list.
37313
37314 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37315
37316         * reflection.c: get token for a method ref. Set return type of
37317         constructor to void.
37318         * loader.c: debug message.
37319         * class.c: typo fix.
37320
37321 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37322
37323         * icall.c: fix array init with rank > 1. FindMembers
37324         loops in parent class as well.
37325         * image.c: do not insert nested types in name cache.
37326         * reflection.c: warning fix.
37327         * reflection.h: add override method (for interface impl).
37328
37329 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37330
37331         * metadata.c: fix customattr decoding.
37332
37333 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37334
37335         * rawbuffer.cs: Added native Win32 implementation, avoids using
37336         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37337
37338 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37339
37340         * class.c: make the low-level routines handle the cache.
37341
37342 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37343
37344         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37345
37346 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37347
37348         * class.c: fix mono_array_element_size() for objects.
37349         * class.h, class.c: add properties to MonoClass and load them
37350         at init time.
37351         * icall.c: check with isinst() when assigning a value to an array
37352         instead of requiring the classes to match exactly.
37353         Implemented icall for System.Type::GetType().
37354         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37355         enums. Handle bindingflags when looking for methods and fields.
37356         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37357         and mono_metadata_methods_from_property().
37358         * reflection.h, reflection.c: added structures for propreties,
37359         parameters and enums. Implemented mono_property_get_object() and
37360         mono_param_get_objects().
37361
37362 2001-12-18  Dick Porter  <dick@ximian.com>
37363
37364         * file-io.c: Use mono_string_to_utf16() instead of
37365         mono_string_chars()
37366
37367         * object.c: Added mono_string_to_utf16(), which copies the non
37368         NULL-terminated MonoString into a new double-null-terminated
37369         buffer.
37370
37371 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37372
37373         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37374
37375 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37376
37377         * file-io.c: raise exceptions if handle is invalid.
37378
37379 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37380
37381         * assembly.c: yet another check for mscorlib.
37382         * class.c, class.h: load nesting info for classes.
37383         * icall.c: many new functions to support the Reflection classes.
37384         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37385         * reflection.h, reflection.c: mono_image_create_token(),
37386         mono_assembly_get_object(), mono_type_get_object(),
37387         mono_method_get_object(), mono_field_get_object(): methods to return
37388         objects that parallel the C representation of assemblies, types,
37389         methods, fields.
37390
37391 2001-12-11  Dick Porter  <dick@ximian.com>
37392
37393         * icall.c:
37394         * file-io.c: Internal calls for file IO.
37395
37396 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37397
37398         * tabledefs.h: missing FileAttributes.
37399         * verify.h, verify.c: use is_valid_string () to simplify and check for
37400         valid strings more correctly. Fix warnings and speeling.
37401         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37402         Check code: branches, maxstack, method calls.
37403
37404 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37405
37406         * object.c (mono_object_allocate): removed static, so that the jit
37407         can allocate value types.
37408
37409         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37410
37411 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37412
37413         * class.c: init enum types right away and register the
37414         token->MonoClass map in mono_class_create_from_typedef ().
37415         * verify.h, verify.c: first cut of the verifier.
37416         * pedump.c: add --verify switch to verify metadata tables.
37417         * tabledefs.h: add some missing enums.
37418
37419 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37420
37421         * class.c (mono_install_runtime_class_init): impl.
37422         (mono_class_init): renamed mono_class_metadata_init to
37423         mono_class_init, also removed the metadata_inited flag
37424
37425         * object.c (mono_object_isinst): use faster algorithm
37426
37427 2001-11-30  Radek Doulik  <rodo@ximian.com>
37428
37429         * mono-endian.h: reverted last change
37430         added function prototypes
37431
37432         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37433         add mono-endian.c back
37434
37435         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37436         for unaligned access, I've mistaked it with endianess. I am
37437         sorry.
37438         (mono_read16): fix reverted endianess
37439         (mono_read64): ditto
37440         (mono_read32): ditto
37441
37442 2001-11-30  Dick Porter  <dick@ximian.com>
37443
37444         * exception.c: Implement mono_exception_from_name()
37445
37446 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37447
37448         * metadata.h, metadata.c: remove params_size and locals_size and their
37449         calculation from the metadata code: they are only usefult to the
37450         interp.
37451
37452 2001-11-29  Radek Doulik  <rodo@ximian.com>
37453
37454         * object.c (mono_ldstr): swap bytes here, it's probably not the
37455         best place, but works for me now, I'll redo it once I know mono
37456         better, also note that I add PROT_WRITE and don't reset back, also
37457         note that it's only affects big endians, so x86 should be OK
37458
37459         * mono-endian.h (read16): use just glib macros for both endians
37460
37461         * mono-endian.c: removed as glib macros are used in in
37462         mono-endian.h so we don't need to care about endianess for read
37463         macros as glib does that for us already
37464
37465 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37466
37467         * class.h, class.h: take minimum alignment into consideration so
37468         that the fields of a class remain aligned also when in an array.
37469
37470 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37471
37472         * loader.h, loader.c: add mono_method_get_param_names().
37473         * class.c: 0-init class fields.
37474
37475 2001-11-26  Dick Porter  <dick@ximian.com>
37476
37477         * icall.c:
37478         * threads-types.h:
37479         * threads.c: New file that handles System.Threading on all platforms
37480
37481         * object.c: 
37482         * object.h: Remove the synchronisation struct from MonoObject,
37483         replace it with a pointer that gets initialised on demand
37484
37485         * Makefile.am: Replace all the system-specific threading code with
37486         a single file that uses the new wrapper library
37487
37488 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37489
37490         * class.c, class.h: add mono_install_trampoline() so that the runtime
37491         can register a function to create a trampoline: removes the ugly
37492         requirement that a runtime needed to export arch_create_jit_trampoline.
37493         * object.h, object.c: added mono_install_handler() so that the runtime
37494         can install an handler for exceptions generated in C code (with
37495         mono_raise_exception()). Added C struct for System.Delegate.
37496         * pedump.c: removed arch_create_jit_trampoline.
37497         * reflection.c: some cleanups to allow registering user strings and
37498         later getting a token for methodrefs and fieldrefs before the assembly
37499         is built.
37500         * row-indexes.h: updates and fixes from the new ECMA specs.
37501
37502 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37503
37504         * class.h, class.c: add enum_basetype field to MonoClass.
37505         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37506         to get index in the constant table reated to a field, param or
37507         property.
37508         * reflection.h, reflection.c: handle constructors. Set public-key and
37509         version number of the built assembly to 0.
37510         * row-indexes.h: update from new ECMA spec.
37511
37512 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37513
37514         * class.h, class.c: add a max_interface_id to MonoClass.
37515         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37516         since it's used to do that. Added mono_type_type_from_obj().
37517         Make GetType() return NULL instead of segfaulting if the type was not
37518         found. Handle simple arrays in assQualifiedName.
37519         * object.h: add a struct to represent an Exception.
37520         * reflection.c: output call convention in method signature.
37521         Add code to support P/Invoke methods and fixed offsets for fields.
37522
37523 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37524
37525         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37526         the value.
37527         * icall.c: use mono_array_addr instead of array->vector: fixes the
37528         reflection image writing.
37529         * reflection.c: init call convention byte to 0 in method signature.
37530         Encode the property signature. Don't output property-related methods
37531         twice. Really process the properties for a type (don't cast a field to
37532         a property, my mom always told me that).
37533         Fix 64 bit issues in pointer alignment in a different and more
37534         readable way.
37535
37536 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37537
37538         * loader.h: Removed type class from MonoDefaults, added monotype
37539
37540         * loader.c: Loaded MonoType, removed loading of Type
37541
37542         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37543         and fills in System.Type._impl with a RuntimeTypeHandle rather
37544         than the actual MonoClass *
37545
37546         (ves_icall_type_from_handle): change from type_class to
37547         monotype_class
37548
37549         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37550         implemented
37551
37552         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37553         implemented
37554
37555         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37556
37557         (ves_icall_System_Reflection_Assembly_GetType): implemented
37558
37559         (ves_icall_System_MonoType_assQualifiedName): implemented
37560
37561         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37562
37563 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37564
37565         * assembly.c (mono_assembly_open): Implement a cache for the
37566         assemblies. 
37567
37568         (mono_assembly_close): only destroy the assembly when the last
37569         reference is gone.
37570         
37571 2001-11-09  Dick Porter  <dick@ximian.com>
37572
37573         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37574
37575 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37576
37577         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37578
37579 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37580
37581         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37582         from Martin Weindel.
37583         * object.h: add mono_string_chars ().
37584
37585 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37586
37587         * reflection.c (build_compressed_metadata): Eliminates warnings
37588         and uses 64-bit clean code.
37589
37590         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37591         (mono_type_equal): Change signature to eliminate warnings.
37592
37593 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37594
37595         * icall.c, loader.c: remove the internalcall array constructors.
37596         Changes to match the new MonoArray structure.
37597         * object.h, object.c: an array object doesn't allocate an extra
37598         vector. Add mono_array_new_full () to create jagged arrays easily.
37599
37600 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37601
37602         * metadata.h, metadata.c: add mono_metadata_field_info () to
37603         retreive all the info about a field from vairous tables.
37604         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37605         * class.h, class.c: augment MonoClassField with more info.
37606         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37607         policy and load a field's RVA if needed.
37608
37609 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37610
37611         * class.c (mono_class_metadata_init): create a trampoline for all
37612         virtual functions instead of actually compiling them.
37613
37614 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37615
37616         * class.h, class.c: include name in MonoClassField.
37617         * class.c: fix fundamental type of System.Object and System.String.
37618         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37619         tokens in ldtoken.
37620         * icall.c: remove internalcalls for the Reflection stuff that is now
37621         done in C# code.
37622         * loader.c: mono_field_from_memberref () implementation.
37623         * mono-endian.c: thinko (s/struct/union/g).
37624         * object.c, object.h: make the mono_string_* prototypes actually use
37625         MonoString instead of MonoObject.
37626         * reflection.c, reflection.h: updates for changes in the reflection
37627         code in corlib: we use C structures that map to the actual C# classes.
37628         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37629         fat method header if needed and use the info from the ILGenerator for
37630         methods. Handle fields in types. Misc fixes.
37631
37632 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37633
37634         * class.c (mono_class_metadata_init): bug fix: always allocate
37635         space for static class data
37636
37637 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37638
37639         * class.c (mono_compute_relative_numbering): use relative
37640         numbering to support fast runtime type checks.
37641
37642 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37643
37644         * class.c (mono_class_create_from_typeref): added debugging output
37645         to print class name when MonoDummy is returned instead of real class
37646
37647 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37648
37649         * class.c (mono_class_metadata_init): interface offset table now
37650         contains pointers into the vtable - this is more efficient for the jit
37651
37652 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37653
37654         * class.c (mono_class_metadata_init): use a temporary vtable (the
37655         old algorithm only worked for the interpreter, but not for the jit)
37656
37657 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37658
37659         * loader.c (method_from_memberref): use mono_class_get to get the
37660         class of an array instead of using System.Array directly.
37661         (mono_get_method): also add MEMBERREF methods to the method cache
37662         which usefull for arrays.
37663
37664 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37665
37666         * pedump.c (arch_compile_method): added to compute vtable entry
37667
37668         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37669         number of interfaces.
37670         
37671         * class.h: merged MonoArrayClass into MonoClass
37672
37673         * class.c (mono_class_create_from_typedef): compute the vtable size and
37674         allocate space to include the vtable inside MonoClass
37675         (mono_class_metadata_init): initialize the vtable
37676
37677 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37678
37679         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37680         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37681         * image.c: endian fixes by Laurent Rioux.
37682         * object.h, object.c: rename MonoStringObject to MonoString and
37683         MonoArrayObject to MonoArray. Change some function names to conform to
37684         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37685         guint16* as first argument, so don't use char*.
37686         Provide macros to do the interesting things on arrays in a portable way.
37687         * threads-pthread.c: updates for the API changes and #include <sched.h>
37688         (required for sched_yield()).
37689         * icall.c: updates for the API changes above.
37690         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37691         platforms that need them.
37692
37693 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37694
37695         * class.c: set the correct type for all the fundamental
37696         type when loading the class.
37697
37698 2001-10-05  Dick Porter  <dick@ximian.com>
37699
37700         * threads-pthread.c (pthread_mutex_timedlock): Simple
37701         compatibility version for C libraries that lack this call.
37702
37703 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37704
37705         * class.c: MonoTypes stored in MonoClass are stored as
37706         fundamental MonoTypes when the class represents a
37707         fundamental type (System.Int32, ...).
37708         The TypeHandle return by ldtoken is a MonoType*.
37709         * icall.c: ves_icall_get_data_chunk () write out all the
37710         PE/COFF stuff. Implement ves_icall_define_method (),
37711         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37712         * image.c: properly skip unknown streams.
37713         * loader.h, loader.c: add type_class to mono_defaults.
37714         * metadata.c, metadata.h: export compute_size () as
37715         mono_metadata_compute_size () with a better interface.
37716         Typo and C&P fixes.
37717         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37718         * reflection.c, reflection.h: many cleanups, fixes, output method
37719         signatures and headers, typedef and typeref info, compress the metadata
37720         tables, output all the heap streams, cli header etc.
37721         * row-indexes.h: typo fixes.
37722
37723 2001-10-04  Dick Porter  <dick@ximian.com>
37724
37725         * object.h: Add a synchronisation mutex struct to MonoObject
37726
37727         * object.c (mono_new_object): Initialise the object
37728         synchronisation mutexes
37729
37730         * icall.c: System.Threading.Monitor internal calls
37731         
37732         * threads-pthread.h:
37733         * threads-pthread.c: System.Threading.Monitor internal calls
37734
37735         * threads-types.h: New file, includes the system-specific thread
37736         structures
37737         
37738         * threads-pthread-types.h:
37739         * threads-pthread-types.c: New files, handle pthread-specific
37740         synchronisation types
37741
37742         * threads-dummy-types.h: 
37743         * threads-dummy-types.c: New files of dummy support for
37744         thread-specific types
37745
37746         * metadata.c:
37747         * image.c:
37748         * pedump.c: include mono-endian.h not endian.h
37749         
37750         * Makefile.am: More threads files.
37751         Name mono-endian.h not endian.h
37752
37753 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37754
37755         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37756         stuff and implement a few more bits.
37757         * icall.c: a field needs to be dereferenced twice. Do not use the same
37758         name for two variables in the same scope.
37759         * image.c, image.h: cleanups.
37760
37761 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37762
37763         * class.c (mono_class_metadata_init): bug fix: compute the right size
37764
37765 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37766
37767         * icall.c: implemented some of the Reflection internalcalls.
37768         * image.c, image.h: start writing out the PE/COFF image.
37769         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37770         that does the reverse than decode_blob_size ().
37771         * object.c: use mono_metadata_encode_value (). Move here
37772         temporary implementation of mono_string_to_utf8 ().
37773         * rawbuffer.c: make malloc_map static.
37774
37775 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37776
37777         * metadata.c: fix type comparison for arrays.
37778         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37779         Added a couple of new classes to monodefaults.
37780         * icall.c: added a couple of Reflection-related internalcalls.
37781         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37782         Added a byval_arg MonoType to MonoClass.
37783
37784 2001-09-28  Dick Porter  <dick@ximian.com>
37785
37786         * icall.c:
37787         * threads-pthread.h: 
37788         * threads-pthread.c: Implemented internal calls for
37789         LocalDataStoreSlot operations.  Applied mutexes around all shared
37790         data.  Reworked the thread creation and Start() operations to
37791         avoid a race condition.
37792         
37793         * threads-dummy.h:
37794         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37795
37796 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37797
37798         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37799
37800 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37801
37802         * class.c, loader.c: warn and return NULL instead of erroring out.
37803         * icall.c: added System.AppDomain::getCurDomain().
37804         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37805
37806 2001-09-25  Dick Porter  <dick@ximian.com>
37807
37808         * threads-pthread.h:
37809         * threads-pthread.c: Implemented timed thread joining and added
37810         System.Threading.Thread::Join_internal internal call
37811
37812         * icall.c: Added System.Threading.Thread::Join_internal internal call
37813
37814         * threads-dummy.h:
37815         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37816
37817 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37818
37819         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37820         mono_string_intern () to implement the semantics of the ldstr opcode
37821         and the interning of System.Strings.
37822         * icall.c: provide hooks to make String::IsIntern and String::Intern
37823         internalcalls.
37824
37825 2001-09-23  Dick Porter  <dick@ximian.com>
37826
37827         * threads-dummy.c: 
37828         * threads-dummy.h: New files of dummy threading routines
37829
37830         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37831         support code based on system specifics
37832
37833         Rename PTHREAD_LIBS to THREAD_LIBS
37834         
37835 2001-09-23  Dick Porter  <dick@ximian.com>
37836
37837         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37838         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37839         internal calls.
37840         (mono_thread_init): Set up a Thread object instance to return when
37841         the main thread calls Thread.CurrentThread
37842         (mono_thread_cleanup): Wait for all subthreads to exit
37843
37844         * icall.c: New internal calls for System.Threading.Thread::Sleep
37845         (including Schedule) and CurrentThread
37846
37847         * threads.h: New file, to insulate thread-specific stuff from the
37848         rest of the code
37849
37850 2001-09-21  Dick Porter  <dick@ximian.com>
37851
37852         * threads-pthread.h: 
37853         * threads-pthread.c: New file, for handling pthreads-style
37854         threading support.  Start() now starts a new thread and executes
37855         the ThreadStart delegate instance.
37856
37857         * icall.c: Added the internalcall for
37858         System.Threading.Thread::Start_internal
37859
37860         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37861
37862 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37863
37864         * loader.c: work around the different signatures for delegates
37865         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37866
37867 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37868
37869         * class.h, class.c: add mono_class_get_field_from_name ().
37870         * *: Fix C comments and other ANSI C issues.
37871
37872 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37873
37874         * endian.h, assembly.c: fix some endianness issues.
37875
37876 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37877
37878         * loader.h, load.c: add delegate_class to mono_defaults.
37879         Handle runtime provided methods in mono_get_method ().
37880
37881 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37882
37883         * loader.c (mono_get_method): use pinvoke for internal call
37884
37885         * icall.c: use pinvoke for internal call
37886
37887         * loader.c (method_from_memberref): set the method name
37888
37889 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37890
37891         * metadata.c: help the compiler generate better code for
37892         mono_class_from_mono_type ().
37893
37894 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37895
37896         * class.c (mono_class_metadata_init): delayed computing of the
37897         class size to mono_class_metadata_init ()
37898
37899 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37900
37901         * class.c, class.h: add an interfaces member to MonoClass.
37902         * image.c, image.h: add assembly_name field to MonoImage
37903         from the assembly table.
37904         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37905
37906 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37907
37908         * class.c: Handle Array in mono_class_from_mono_type ().
37909         * metadata.c, pedump.c: some endian fixes.
37910
37911 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37912
37913         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37914         * metadata.c: fix small problem introduced with the latest commit.
37915
37916 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37917
37918         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37919         We don't need a MonoMetadata pointer anymore to compare signatures in
37920         mono_metadata_signature_equal (), update callers.
37921         Reduced memory usage an number of allocations for MonoMethodHeader and
37922         MonoMethodSignature.
37923
37924 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37925
37926         * metadata.c: added compare for szarray.
37927
37928 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37929
37930         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37931         and add a couple more types to it and mono_defaults. Give an hint on
37932         classes that need implementing in our corlib and are referenced
37933         in mscorlib.
37934
37935 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37936
37937         * class.h, class.c: keep track if a class is also an Enum.
37938         * loader.c: Implement a couple more types for use in libffi
37939         marshalling. Gives better diagnostics when failing to dlopen
37940         a library. Set method->klass for P/Invoke methods, too.
37941
37942 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37943
37944         * class.c, class.h: add a MonoType this_arg to MonoClass that
37945         represents a pointer to an object of the class' type that
37946         can be used by the interpreter and later the type cache.
37947         Add best guess alignment info for valuetype objects.
37948
37949 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37950
37951         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37952         into MonoType: one less level of indirection and allocation and
37953         simplifies quite a bit of code. Added cache for MonoTypes that are
37954         used frequently, so that we don't need to allocate them all the time.
37955
37956 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37957
37958         * class.c (mono_class_create_from_typedef): System.Enum is also a
37959         value type, although it does not derive from System.ValueType
37960         (maybe a bug in the ms compiler?)
37961
37962         * metadata.c (mono_type_size): return the right size for value types
37963
37964         * loader.c (mono_get_method): only initialize method header if not abstract
37965
37966         * class.c (mono_class_from_mono_type): use mono_default values. 
37967
37968 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37969
37970         * *: use MonoClass pointers instead of <type_tokens>
37971         
37972         * class.h: new flag: metadata_inited.
37973
37974         * class.c (mono_class_metadata_init): impl.
37975         (mono_class_instance_size): impl.
37976         (mono_class_data_size): impl.
37977
37978 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37979
37980         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37981         MonoClass now has the name and name_space fields. 
37982         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37983         mono_get_method () takes and optional MonoClass as argument.
37984         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37985         instead that takes advantage of a map from class names to typedef
37986         tokens in MonoImage.
37987
37988 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37989
37990         * metadata.c: zero is not a valid alignment boundary.
37991         Merge MONO_TYPE_VOID in default decoding code.
37992
37993 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37994
37995         * image.h: merged MonoMetadata into MonoImage
37996
37997         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37998         identify the type of elements.
37999
38000 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
38001
38002         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
38003         * cil-coff.h: split MonoMSDOSHeader and add size info.
38004         * image.c: add some consistency checks.
38005         * metadata.c: fix row size computation: one programmer
38006         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
38007         add explanation for the locator routine.
38008         Fix decoding of size in method header.
38009         
38010 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
38011
38012         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
38013         (g_concat_dir_and_file): Bring g_concat_dir_and_file
38014         function from gnome-libs.  This uses the right path separator
38015         based on the OS, and also works around a bug in some systems where
38016         a double slash is not allowed. 
38017         (default_assembly_name_resolver): Use g_concat_dir_and_file
38018         (mono_assembly_open): ditto.
38019
38020 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
38021
38022         * metadata.c (mono_metadata_signature_equal): impl.
38023
38024         * *: void is now a realy MonoType (instead of using NULL)
38025         
38026         * metadata.c (do_mono_metadata_parse_type): use
38027         mono_metadata_parse_type to parse void value.
38028
38029 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
38030
38031         * metadata.c, metadata.h: in the signature and method header store
38032         only the space required for holding the loca vars and incoming arguments.
38033
38034 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
38035
38036         * metadata.c (do_mono_metadata_parse_type): treat void like any
38037         other type (instead of assigning NULL);
38038
38039 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
38040
38041         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
38042
38043 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
38044
38045         * image.c (do_mono_image_open): added a cache for arrays.
38046
38047 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38048
38049         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
38050         decode a single column from a row in a metadata table and changes
38051         to take advantage of it in the typedef locator (gives a nice speed up).
38052         Store offset info for function params.
38053
38054 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
38055
38056         * image.h (MONO_IMAGE_IS_CORLIB): removed 
38057
38058 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
38059
38060         * assembly.c: how could mono_assembly_close () had ever worked?
38061         * metadata.c, metadata.h: provide offset info for local vars.
38062         Implement mono_type_size () to take care of alignment as well
38063         as size (it was mono_field_type_size in cli/class.c before).
38064
38065 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
38066
38067         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
38068
38069         * assembly.h (CORLIB_NAME): set to corlib.dll
38070
38071         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
38072
38073 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38074
38075         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
38076         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
38077         tokentype.h: massive namespace cleanup.
38078
38079 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38080
38081         * metadata.h, metadata.c: decode exception clauses when parsing method header.
38082
38083 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
38084
38085         * metadata.c (mono_metadata_free_type): added check for type !=
38086         NULL (void) before calling mono_metadata_free_type()
38087
38088 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
38089
38090         * metadata.h, row_indexes.h: added header with enumerations to use
38091         to index in the columns from tables in metadata and to decode coded
38092         tokens: we should start using this instead of embedding magic numbers
38093         all over the code.
38094
38095 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
38096
38097         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
38098         Move metadata_t info from cli_image_info_t to MonoImage, where
38099         it's easily accessible. Changed all the uses accordingly.
38100         Added the method and class caches to MonoImage.
38101         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
38102         and mono_metadata_decode_value () signature to be more consistent
38103         with the other parse functions (and simplify code). Taken advantage
38104         of zero-length array allocation with GCC. Removed reduntant (and
38105         wrong) MonoFieldType struct and use MonoParam instead. Changed
38106         mono_metadata_parse_field_type () to use common code for parsing.
38107         Added mono_metadata_typedef_from_field () and
38108         mono_metadata_typedef_from_method () to lookup a typedef index from a
38109         field or method token.
38110         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
38111
38112 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
38113
38114         * metadata.c (mono_metadata_parse_field_type): Implement. 
38115         (do_mono_metadata_parse_type): Split engine from
38116         mono_metadata_parse_type, so that we can create smaller structures
38117         for things that just have one pointer to the MonoType (look at
38118         the MonoFieldType)
38119
38120 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
38121
38122         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
38123         as Jan Gray found out, it is incorrect. 
38124
38125 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
38126
38127         * assembly.c: Implement asssembly loading.  This loads an image
38128         and loads all the referenced assemblies.  Come to think of it, we
38129         could always do lazy loading of the assemblies. 
38130
38131         * image.c (mono_image_open): Keep loaded images in a hashtable.
38132
38133         * image.h (MonoImage): Add reference count.
38134
38135 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38136
38137         * assembly.c (mono_assembly_open): Keep track of the file name in
38138         case the assembly has no ASSEMBLY table.
38139
38140         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38141         from get.c here.
38142
38143 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38144
38145         * metadata.c, metadata.h: decode local vars in method header
38146         parse function. Change callers accordingly.
38147
38148 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38149
38150         * metadata.h, cil-coff.h: protect against multiple inclusion.
38151         Added some new structures to hold information decoded from metadata:
38152         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38153         and relevant decoding/free functions.
38154         * metadata.c: implement decoding functions. Add warning for out of bounds
38155         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38156         all the info about a method signature and invocation. Remove check on
38157         uninitialized local var in parse_mh() and fix memory leak.
38158
38159 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38160
38161         * metadata.h: More macros.
38162
38163         * tokentype.h: New file.
38164
38165 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38166
38167         * assembly.c: added a consistency check and initialize
38168         some structures with g_new0().
38169         * metadata.c: fixed a couple more bugs in table size computation
38170         and add other checks for out-of bound access to metadata.
38171
38172 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38173
38174         * metatada.c: fix bugs computing table sizes. Spew a
38175         warning when index in string heap is out of bounds.
38176
38177 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38178
38179         * metadata.h: Add a couple of macros to manipulate tokens. 
38180
38181 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38182
38183         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38184         cli_section_tables).
38185
38186 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38187
38188         * metadata.c (mono_metadata_user_string): New function, provides
38189         access to the UserString heap. 
38190
38191 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38192
38193         * metadata.c: Add inline documentation.
38194
38195 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38196
38197         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38198         files. 
38199
38200 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38201
38202         * typeattr.h: New file, TypeAttribute flags. 
38203
38204 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38205
38206         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38207         mono_assembly_ensure_section): Section loading code.
38208         (load_section_tables): Load the sections.
38209
38210         * mono/metadata/metadata.c (mono_metadata_locate_token,
38211         mono_metadata_locate): Functions to locate the information
38212         definition given a token or a table and an index.
38213         (mono_metadata_compute_table_bases): New.
38214         (compute_size): New function to compute the sizes of the various
38215         tables.
38216
38217         * mono/metadata/metadata.h: Finish listing the different index
38218         types. 
38219
38220         * mono/metadata/pedump.c: Improve to dump new information.
38221
38222 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38223
38224         * mono/metadata/metadata.c: Entered all the tables matching
38225         Beta2. 
38226
38227         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2