2009-08-19 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4         memory until we're sure that we'll need it. This avoids leaking for
5         broken types or duplicated instantiation.
6
7 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
8
9         * metadata-verify.c (is_valid_method_header): Fix stupid formating
10         mistake.
11
12 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
13
14         * metadata-verify.c (is_valid_method_header): Fix number of clauses
15         and expected size calculation.
16
17 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
18
19         * class.c (mono_class_get_field_idx): Add fixme for broken
20         behavior for types with multiple fields with the same name.
21         I would rather fix it, but have no idea on how to generate
22         such artifact for testing.
23
24 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
25
26         * verify.c (verifier_load_field): We should allow references to
27         fields to be made using the generic type definition. It's up to
28         the loader system to fail invalid ops.
29
30         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
31         are invalid.
32
33 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
34
35         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
36
37         * metadata-internals.h: Fix declaration of 
38         mono_metadata_interfaces_from_typedef_full.
39
40         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
41         heap_alloc_result parameter that controls if the result should be
42         g_malloc'd.
43
44         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
45         array be g_malloc'd and properly document this public API function.
46
47 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
48
49         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
50         remove METHOD_HEADER_TINY_FORMAT1.
51
52         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
53
54         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
55
56         Both spec and MS uses only 2 bits to enumerate the kind of header.
57         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
58         is superfluous, only used for tiny headers with odd code lengths.
59
60         This change also make sure that mono doesn't wronly interpret bit 2
61         of fat header flags, which is currently reserved.
62
63 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
64
65         * metadata.c (do_mono_metadata_parse_type): Do error
66         checking for element types. Don't abort if presented
67         with a broken type kind.
68
69 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
70
71         * metadata.c (mono_metadata_parse_method_signature_full):
72         Gracefully fail bad vararg signatures.
73
74 2009-08-18  Christian Hergert  <chris@dronelabs.com>
75
76         * profiler.c:
77         * class.c: Fix warnings for uninitialized variables.
78
79 2009-08-18  Christian Hergert  <chris@dronelabs.com>
80
81         * icall.c: Fix _NSGetEnviron method declaration warning.
82
83 2009-08-18  Christian Hergert  <chris@dronelabs.com>
84
85         * icall.c:
86         * reflection.c: Make bitwise checks explicit.
87
88 2009-08-18  Christian Hergert  <chris@dronelabs.com>
89
90         * debug-helpers.c:
91         * marshal.c: Fix printf warnings.
92
93 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
94
95         * reflection.c (encode_cattr_value): Fix a warning.
96
97 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
98
99         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
100         of array bounds.
101
102 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
103
104         * loader.c (mono_method_signature): Don't assert on broken
105         signature. Print a more useful error message.
106
107 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * loader.c (mono_method_get_marshal_info): Assert if
110         signature is invalid. Bounds check stores to the
111         mspecs array;
112
113 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
114
115         * loader.c (field_from_memberref): Fix warning.
116
117 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
118
119         * loader.c (mono_method_get_param_names): Check if signature
120         is null. Don't store beyond the size of the name array.
121
122 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
123
124         * loader.c (mono_get_method_constrained): Check if signature
125         is null.
126
127 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
128
129         * loader.c (mono_loader_set_error_bad_image): Improve
130         error messages.
131
132 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
133
134         * loader.c (mono_get_method_full): Convert an assertion
135         into a loader error.
136
137 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
138
139         * class-internals.h, class.c: Better naming and documentation.
140
141 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
142
143         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
144         obj is NULL.
145
146 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
147
148         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
149         parsing fails.
150
151 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
152
153         * loader.c (mono_loader_error_prepare_exception): Handle missing field
154         errors with no class set.
155
156         * loader.c (field_from_memberref): If the field signature is of the wrong
157         type fail with a MissingFieldException instead of a BadImageException as
158         this is the behavior observed on MS. 
159
160 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
161
162         * loader.c (field_from_memberref): Don't crash if either the field
163         signature or the typespec class are invalid.
164
165 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
166
167         * verify.c (verifier_load_field): Don't allow field related
168         ops to reference fields on generic type definition.
169
170 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
171
172         * metadata-verify.c: Add new warning level for errors specified
173         by ECMA 335 but that MS ignores.
174
175         * metadata-verify.c (verify_method_table): Make compiler controled
176         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
177         this check is safe because the end result will only be some visibility
178         exceptions been thrown.
179
180 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
181
182         * verify.c (get_boxable_mono_type): Don't allow the
183         use of the generic type definition on boxed type positions.
184
185         Fixes #531237.
186
187 2009-08-14  Mark Probst  <mark.probst@gmail.com>
188
189         * threadpool.c: Make sure no cross-domain references remain in
190         ares_htable or the arrays that are thrown away when resizing.
191
192 2009-08-14  Mark Probst  <mark.probst@gmail.com>
193
194         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
195         list of classes for which we have to unregister reflection_info
196         with the GC and which are not in the namespace cache.
197
198         * reflection.c (mono_reflection_initialize_generic_parameter): Add
199         the class to the list.
200
201 2009-08-14  Mark Probst  <mark.probst@gmail.com>
202
203         * domain.c (mono_domain_free): Unregister the GC roots in
204         MonoDomain.
205
206 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
207
208         * reflection.c (mono_reflection_type_get_handle): Fix typo.
209
210 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
211
212         * class.c: Add mono_class_get_field_from_name_full which does
213         the same as mono_class_get_field_from_name but does check field
214         signature as well.
215
216         * class-internals.h: Export mono_class_get_field_from_name_full as
217         part of the internal API.
218
219         * loader.c (field_from_memberref): Search fields by name and signature
220         as it's valid to have two fields with same name but different types.
221
222         Fixes #528055.
223
224 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
225
226         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
227
228         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
229
230         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
231         System.Type.
232
233 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
234
235         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
236
237         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
238
239 2009-08-12  Mark Probst  <mark.probst@gmail.com>
240
241         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
242         to sgen-scan-object.h, which can be included and parameterized via
243         macros.
244
245         * Makefile.am: sgen-scan-object.h added.
246
247 2009-08-12  Mark Probst  <mark.probst@gmail.com>
248
249         * gc.c: #define GC_dont_gc if we're compiling with SGen.
250
251 2009-08-12  Mark Probst  <mark.probst@gmail.com>
252
253         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
254         before clearing a domain in the GC.
255
256 2009-08-12  Mark Probst  <mark.probst@gmail.com>
257
258         * exception.c (mono_exception_from_name_domain): Actually create
259         the exception in the specified domain.
260
261         * appdomain.c (mono_domain_create_appdomain_internal): Create the
262         OutOfMemoryException a bit later so that the domain is inialized
263         "enough" that it works.
264
265 2009-08-12  Mark Probst  <mark.probst@gmail.com>
266
267         * threads.c (thread_cleanup): Clean up the cached_culture_info
268         array to prevent cross-domain references.
269
270 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
271
272         * metadata.c: more documentation for MonoType accessors.
273
274 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
275
276         Fix incorrect size definitions where the tail array isn't a list
277         of pointers
278         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
279         define size.
280         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
281         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
282         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
283
284 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
285
286         * reflection.h:
287         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
288
289 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
290
291         * metadata.c:
292         * loader.c:
293         * metadata-internals.h:
294         * method-builder.c:
295         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
296
297 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
298
299         * cominterop.c:
300         * metadata.c:
301         * metadata.h:
302         * loader.c:
303         * marshal.c:
304         * reflection.c: #define for sizeof in MonoType and
305         MonoMethodSignature.
306
307 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
308
309         * domain.c:
310         * domain-internals.h: add and use #define's instead of sizeof()
311         for MonoJitInfo and MonoJitInfoTable.
312
313 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
314
315         * object.c:
316         * class.h: use #define instead of sizeof() for MonoRemoteClass.
317
318 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
319
320         * metadata.c:
321         * metadata.h:
322         * object.c:
323         * class-internals.h:
324         * generic-sharing.c:
325         * marshal.c: use a #define instead of sizeof() for a few
326         structures that use a zero-length array.
327
328 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
329
330         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
331         to handle inflated generic methods.
332
333         * appdomain.c: Bump corlib version.
334
335         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
336         instances.
337
338         * reflection.c (fixup_method): Same
339
340         * reflection.c (resolve_object): Same.
341
342         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
343         g_error and a decent message.
344
345 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
346
347         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
348         from the object because it could not yet be available globally
349         (it happens if the profiler tries to create a gchandle on the
350         MonoThread object of a thread that is still registering itself
351         with the runtime).
352
353 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
354
355         * reflection.c (mono_generic_class_get_object): Initialized the
356         managed type arguments array.
357
358         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
359
360         * appdomain.c: Bump corlib version.
361
362 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
363
364         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
365         #527902.
366
367 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
368
369         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
370         Avoid a crash if synch_cs is not set.
371         
372         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
373         Handle the case when the handle is 0.
374
375         * appdomain.c: Bump corlib version.
376
377 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
378
379         * reflection.c (mono_type_get_object): Fix a warning.
380
381 2009-08-01  Mark Probst  <mark.probst@gmail.com>
382
383         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
384         descriptor here.  We assume it's already been computed.
385
386         * generic-sharing.c (instantiate_other_info): Compute the GC
387         descriptor for info type MONO_RGCTX_INFO_KLASS.
388
389 2009-08-01  Mark Probst  <mark.probst@gmail.com>
390
391         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
392         type, so don't use MONO_OBJECT_SETREF to set a field.
393
394 2009-08-01  Mark Probst  <mark.probst@gmail.com>
395
396         * gc.c: We were missing one case where invoking a finalizer would
397         not reset the domain.  Also, in the finalizer thread loop, assert
398         that we're in the root domain.
399
400 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
401
402         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
403         if the type is not an array.
404
405 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
406
407         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
408         method bound to the declaring type of the method. Raise an exception
409         if the type is not a generic param.
410
411 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
412
413         * class.c (print_unimplemented_interface_method_info): Print the
414         full type name.
415
416         * class.c (mono_class_setup_vtable_general): When dealing with a
417         generic instance first check if the generic type definition is
418         not broken.
419
420 2009-02-11 Tom Hindke <tom_hindle@sil.org>
421
422         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
423
424         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
425
426         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
427
428         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
429
430         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
431
432         Code is contributed under MIT/X11 license
433
434 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
435
436         * verify.c: Fix naming of stelem and ldelem.
437
438 2009-07-30  Mark Probst  <mark.probst@gmail.com>
439
440         * generic-sharing.c: Replace the templates lock with the loader
441         lock because of very hard to resolve deadlock issues.
442
443 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
444
445         * icall.c (ves_icall_Type_GetMethodsByName): Use 
446         mono_class_get_vtable_size () instead of accessing klass->vtable_size
447         directly. Fixes #525338.
448
449         * class.c (mono_class_get_vtable_size): New helper function.
450
451         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
452         the field belongs to the type. Fixes #525733.
453
454 2009-07-30  Mark Probst  <mark.probst@gmail.com>
455
456         * sgen-gc.c: When we stop a thread and its stack top is not within
457         its allocated stack (because it's in an altstack signal handler),
458         restart it and stop it again, until it is.
459
460 2009-07-30  Mark Probst  <mark.probst@gmail.com>
461
462         * sgen-gc.c: Take a thread's stack top and registers from the
463         sigcontext in the suspend signal handler.
464
465         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
466         stuff to sgen-archdep.h.
467
468         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
469         caller, because have code in sgen-archdep.h to acquire that data.
470
471 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
472
473         * profiler.c, profiler.h, profiler-private.h:
474         Added support for keeping track of code chunks and buffers.
475
476 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
477
478         * metadata-verify.c: Fix endianness problems on decoding functions.
479         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
480
481 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
482
483         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
484         schema for vectors and one dimension SZARRAY.
485
486 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
487
488         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
489         schema for vectors and one dimension SZARRAY.
490
491 2009-07-27  Mark Probst  <mark.probst@gmail.com>
492
493         * icall-def.h, thread-types.h, threads.c: New separate icalls for
494         Interlocked.(Compare)Exchange with object arguments, which invoke
495         write barriers.
496
497 2009-07-26  Miguel de Icaza  <miguel@novell.com>
498
499         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
500         passed invalid arguments.   Fixes another crasher in the
501         Silverlight test suite.
502
503         * class.c (mono_class_array_element_size): Return 0 for the size
504         of the class;  This fixes the crasher exposed by :
505
506         typeof (void).MakeArrayType ();
507
508         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
509         if there is no method to dereference.    Put all the code that
510         depends on this inside the if (method) block.
511
512         This fixes the crasher exposed by Microsoft's Silvelright CLR test
513         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
514
515         With this change, we pass the test.
516         
517         * reflection.c (mono_reflection_sighelper_get_signature_local):
518         Only dereference the assembly if it has been set.    Fixes a
519         crasher exposed by #525328
520
521 2009-07-25  Mark Probst  <mark.probst@gmail.com>
522
523         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
524         don't perform the store in mono_gc_wbarrier_generic_nostore().
525         Remove the second argument (value), which is not needed.
526
527 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
528
529         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
530         the build.
531
532         * boehm-gc.c: Ditto.
533         
534 2009-07-24  Mark Probst  <mark.probst@gmail.com>
535
536         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
537         not perform the store itself.  Introduce
538         mono_gc_wbarrier_generic_nostore(), which is the same as
539         mono_gc_wbarrier_generic_store(), except it doesn't perform the
540         store.
541
542 2009-07-24  Mark Probst  <mark.probst@gmail.com>
543
544         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
545         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
546         we still need the memcpy().
547
548 2009-07-22  Mark Probst  <mark.probst@gmail.com>
549
550         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
551         so that big arrays are handled correctly.  Always use
552         safe_object_get_size() to calculate array object sizes, which
553         takes bounds into account.
554
555 2009-07-22  Mark Probst  <mark.probst@gmail.com>
556
557         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
558         GC descriptor is computed before we use it.
559
560 2009-07-22  Mark Probst  <mark.probst@gmail.com>
561
562         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
563         write barrier if necessary.
564
565 2009-07-22  Mark Probst  <mark.probst@gmail.com>
566
567         * icall-def.h, icall.c, thread-types.h: New separate icall for
568         VolatileWrite(object&,object) that uses a write barrier.
569
570         * console-unix.c, file-io.c, icall.c, threads.c: Use write
571         barriers in icalls which write to "ref" or "out" arguments.
572
573 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
574
575         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
576         handler in a separate icall, to reduce the size of the wrappers.
577
578 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
579
580         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
581
582 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
583
584         * metadata-verify.c (parse_field): Allow byref field.
585
586         * metadata-verify.c (parse_locals_signature): Allow byref locals.
587
588         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
589
590 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
591
592         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
593         Fixes #522784.
594
595 2009-07-20  Robert Jordan  <robertj@gmx.net>
596
597         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
598         Fix invalid IL in valuetype handling (STOBJ must push the
599         corresponding class). Fixes bug #523149.
600
601         Code is contributed under MIT/X11 license.
602
603 2009-07-20  Geoff Norton  <gnorton@novell.com>
604
605         * gc.c: Use proper semaphores where available on posix and darwin.
606
607 2009-07-19  Geoff Norton  <gnorton@novell.com>
608
609         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
610
611 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
612
613         * refletion.c (is_sre_usertype): Change name to is_usertype and
614         invert it's result so it returns true if the type is an user type
615         and not the opposite.
616
617         * reflection.c (is_*_type): Change all of those to use new macro
618         check_corlib_type_cached that cached the type lookup so we don't
619         need to do string comparisons all the type. Changed the signature
620         to take a MonoClass instead.
621
622         * reflection.c: Change mono_image_create_token and resolve_object
623         to use is_sre_* functions.
624
625 2009-07-18  Mark Probst  <mark.probst@gmail.com>
626
627         * sgen-gc.c: Check for writes to the stack in the managed
628         wbarrier as well.
629
630 2009-07-18  Mark Probst  <mark.probst@gmail.com>
631
632         * sgen-gc.c: When a thread is unregistered, don't free its remsets
633         but put them on a list which is processed with the other thread's
634         remsets.
635
636 2009-07-18  Mark Probst  <mark.probst@gmail.com>
637
638         * sgen-gc.c: Fix and enable the internal allocator instead of
639         using malloc/free (which causes deadlocks).
640
641 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
642
643         * refletion.c: Fix builds with SRE disabled by adding a minimal
644         implementation of mono_reflection_type_get_handle.
645
646 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
647
648         * refletion.c: Make mono_reflection_type_get_handle non static.
649
650         * object-internals.h: Export mono_reflection_type_get_handle.
651
652         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
653         unmanaged handle using mono_reflection_type_get_handle.
654
655 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
656
657         * refletion.c: Replace all reads of MonoReflectionType::type with
658         calls to mono_reflection_type_get_handle. Only the functions that
659         deal with constructing TypeBuilder::type have not been changed
660         because they have to deal with NULL values.
661
662         This is a first step into supporting reflection types that don't
663         map directly into their unmanaged counterpart.
664
665 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
666
667         * metadata-verify.c (parse_locals_signature): Don't complain
668         on signature with zero locals since MS generates it and doesn't
669         bother with.
670
671 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
672
673         * reflection.c (mono_image_get_array_token): Resolve return
674         type using mono_reflection_type_get_handle.
675
676         * reflection.c (mono_image_get_array_token): Resolve array method
677         parent type using mono_reflection_type_get_handle.
678
679 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
680
681         * reflection.c (mono_image_basic_init): Applied patch from
682         <Dax@daxxfiles.net>. Set the public key token from the assembly
683         builder. Fixes #518909.
684
685         * appdomain.c: Bump corlib version.
686
687 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
688
689         * class.c (mono_class_needs_cctor_run): Make this return false if
690         the class has no cctor.
691
692 2009-07-13  Mark Probst  <mark.probst@gmail.com>
693
694         * sgen-gc.c: When the minor GC needs to allocate a new section,
695         invoke the major GC afterwards.
696
697 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
698
699         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
700           Applying the window_style field to the SHELLEXECUTEINFO struct.
701
702         Code is contributed under MIT/X11 license.
703
704 2009-07-13  Mark Probst  <mark.probst@gmail.com>
705
706         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
707         locking earlier.  Fix it in the managed allocator by making sure
708         that no thread is stopped there before the GC runs.  If we do stop
709         a thread there, we restart it and let it run a but, until it stops
710         somewhere else.
711
712         * gc-internal.h, gc.c: Function for getting the IP from a signal
713         context via a function registered by mini.
714
715 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
716
717         * object-internals.h (MonoIntPtr): New structure describing a boxed
718         IntPtr.
719
720         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
721         returns. Fixes #519953.
722
723         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
724
725 2009-07-09  Mark Probst  <mark.probst@gmail.com>
726
727         * class-internals.h, generic-sharing.c: New RGCTX info type for
728         getting a remoting invoke with check wrapper.
729
730 2009-07-07  Geoff Norton  <gnorton@novell.com>
731
732         * icall-def.h: Fix the enable-minimal build.
733
734 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
735
736         * object-internals.h: Add MonoReflectionDerivedType.
737
738         * reflection.c: Implement support for PointerType.
739         Fixed tons of warnings.
740
741 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
742
743         * object-internals.h: Add MonoReflectionByRefType.
744
745         * reflection.c: Implement support for ByRefType.
746
747 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
748
749         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
750
751         * object-internals.h: Add MonoReflectionArrayType and
752         mono_reflection_create_unmanaged_type.
753
754         * reflection.c: Implement support for ArrayType.
755
756 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
757
758         * metadata-verify.c (is_valid_method_header): Parse EH block
759         flags correctly.
760
761 2009-07-03  Mark Probst  <mark.probst@gmail.com>
762
763         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
764         processing the disappearing links, and process disappearing links
765         in a loop until no new objects are copied.
766
767 2009-07-03  Mark Probst  <mark.probst@gmail.com>
768
769         * object.c (handle_enum): Invoke the write barrier when copying
770         value type instances.
771
772         * sgen-gc.c: Register remsets for unmanaged write barriers only
773         when the address written to is actually on the heap.  This makes
774         set_value() in object.c work without requiring that the result be
775         on the heap.
776
777 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
778
779         The runtime wrappers are all bound to a given type that must
780         exist in the same image. For regular images we use the <Module>
781         type, which is required to exist for all images.
782
783         The <Module> type can't be used for dynamic images because it
784         might not exist at the time the wrapper is required, so we create
785         a synthetic type to use instead.
786
787         The current code works because of the 2 stage setup of MonoClass,
788         but once this is gone it will no longer work.
789
790         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
791
792         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
793
794         * object-internals.h: Export mono_image_set_wrappers_type icall
795         as part of the internal API.
796
797         * marshal.c (get_wrapper_target_class): If the image is dynamic,
798         use MonoDynamicImage::wrappers_type instead of the <Module> type.
799
800         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
801         image wrappers_type to the provided value.
802
803 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
804
805         * appdomain.c (deregister_reflection_info_roots): No need
806         to use the image lock here.
807
808 2009-07-02  Mark Probst  <mark.probst@gmail.com>
809
810         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
811
812 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
813
814         * threads.c: Store the thread start argument in a hash table instead of
815         registering it as a root, as libgc doesn't support unregistering roots
816         under windows, leading to 'too many root sets' errors when many threads
817         are created.
818
819         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
820         shutdown, they can still be referenced by the other dying objects.
821         Fixes #514506.
822
823 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
824
825         * socket-io.c: DontLinger does not allow LingerOptions.
826
827 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
828
829         * metadata-verify.c: The spec doesn't mention that it's possible to add
830         custom attribute to a generic parameter. Fixed.
831
832 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
833
834         * class.c (inflate_generic_type): Don't crash while trying to output a message
835         on why we're aborting.
836
837 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
838
839         * socket-io.c: DontLinger can take an int or a boolean too.
840
841 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
842
843         * gc.c: check for a null argument to SuppressFinalize () and
844         ReRegisterForFinalize ().
845
846 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
847
848         * loader.c (method_from_methodspec): Call into the verifier to check
849         the signature.
850
851         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
852
853         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
854         part of the internal API.
855
856 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
857
858         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
859         the signature.
860
861         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
862
863         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
864         part of the internal API.
865
866 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
867
868         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
869         the signature.
870
871         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
872         blob verification.
873
874         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
875         part of the internal API.
876
877 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
878
879         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
880         when doing basic verification. 
881
882         This check must be done since the runtime peeks into signatures in much
883         more places than it does decoding so it makes sense to ensure that all
884         pointers to blob objects are well formed.
885
886 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
887
888         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
889         Use proper overflow dectection. Fix usage of it.
890
891 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
892
893         * loader.c (field_from_memberref): Call into the verifier to check
894         the signature.
895
896         * loader.c (mono_method_get_signature_full): Same.
897
898         * loader.c (method_from_memberref): Same.
899
900         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
901
902         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
903         part of the internal API.
904
905 2009-06-25  Mark Probst  <mark.probst@gmail.com>
906
907         * threadpool.c (mono_thread_pool_add): If the domain is unloading
908         or unloaded, still return an AsyncResult, but don't add it to the
909         threadpool.
910
911 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
912
913         * threads.c: fix missing colon when DEBUG is defined.
914
915 2009-06-25  Mark Probst  <mark.probst@gmail.com>
916
917         * threadpool.c: Don't add new calls to a threadpool if the domain
918         of the call is unloading or unloaded.  When dequeuing a job, null
919         the reference in the queue.
920
921 2009-06-25  Mark Probst  <mark.probst@gmail.com>
922
923         * sgen-gc.c (null_link_in_range): Add the dislink for the old
924         generation if an object was moved.
925
926 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
927
928         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
929           parameters of type SAFEARRAY[VARIANT].
930
931         * reflection.c (encode_marshal_blob): Properly generate element type
932           (SafeArraySubType marshal attribute option).
933
934         Code is contributed under MIT/X11 license.
935
936 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
937
938         * reflection.c: in mono_method_clear_object () really ensure all the
939         objects are removed.
940
941 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
942
943         * loader.c (mono_method_signature): Call into the verifier to check
944         the method signature.
945
946         * metadata-verify.c (verify_method_table): Move signature verification
947         to verify_method_table_full.
948
949         * metadata-verify.c: Add mono_verifier_verify_method_signature.
950
951         * verify-internals.h: Export mono_verifier_verify_method_signature as
952         part of the internal API.
953
954 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
955
956         * loader.c (mono_method_get_header): Call into the verifier to
957         check the method header.
958
959         * metadata-verify.c: Add mono_verifier_verify_method_header.
960
961         * verify-internals.h: Export mono_verifier_verify_method_header as
962         part of the internal API.
963
964 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
965
966         * class.c (mono_class_find_enum_basetype): Call into the verifier to
967         check the field signature. Replace an assert with an explicit check.
968
969         * class.c (mono_class_setup_fields): Call into the verifier to check
970         the field signature.
971
972         * metadata-verify.c: Add mono_verifier_verify_field_signature.
973
974         * verify-internals.h: Export mono_verifier_verify_field_signature as
975         part of the internal API.
976
977 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
978
979         * class.c (mono_class_find_enum_basetype): Simplify this function
980         by moving code outside of the loop and not decoding static fields.
981
982 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
983
984         * metadata-verify.c (verify_typedef_table): Check the extends
985         token here. Move to here a flags check from verify_typedef_table_full.
986
987 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
988
989         * metadata-verify.c (is_valid_method_header): Fix a warning.
990
991         * metadata-internals.h (MonoImage): Remove the unused 
992         static_rgctx_invoke_wrapper_cache.
993
994         * image.c marshal.c: Ditto.
995
996 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
997
998         * image.c (do_mono_image_load): Enable table data verification.
999
1000 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
1001
1002         * metadata-verify.c (is_valid_constant): Fix nullref check.
1003
1004 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
1005
1006         * metadata-verify.c (is_valid_constant): Fix string bounds check.
1007
1008 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1009
1010         * sgen-gc.c: Managed allocation with pthreads TLS.
1011
1012         * threads.c, threads-types.h: Functions for the JIT to tell the
1013         runtime whether it supports the MONO_TLS opcode.
1014
1015 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
1016
1017         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
1018         without methods.
1019
1020 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
1021
1022         * metadata-verify.c (is_valid_constant): Fix the string length check.
1023         Use safe overflow checking. Add decent error messages.
1024
1025 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
1026
1027         * metadata-verify.c: Move remaininh blob checks to the offline
1028         verification path.
1029
1030 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
1031
1032         * metadata-verify.c: Move more blob checks to the offline verification
1033         path.
1034
1035 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
1036
1037         * object-internals.h : Adding interrupt_on_stop field.
1038
1039         * threads.c (mono_thread_request_interruption) : On Windows exit the
1040           thread if interrupt_on_stop is set.
1041
1042         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
1043          Removing old interrupt logic and setting the interrupt_on_stop for the
1044          thread when calling accept.
1045
1046         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
1047          setting the interrupt_on_stop for the thread when calling accept.
1048
1049         Contributed under MIT/X11 license.
1050
1051 2009-06-20  Martin Baulig  <martin@ximian.com>
1052
1053         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
1054
1055 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
1056
1057         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
1058         running in no-exec mode.
1059
1060 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
1061
1062         * metadata-verify.c (verify_method_table): Move header
1063         checking to verify_method_table_full.
1064
1065         * metata-verify.c (mono_verifier_verify_full_table_data):
1066         Call verify_method_table_full.
1067
1068 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * metadata-verify.c (verify_field_table): Move signature
1071         checking to verify_field_table_full.
1072
1073         * metata-verify.c (mono_verifier_verify_full_table_data):
1074         Call verify_field_table_full.
1075
1076 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
1077
1078         * metadata-verify.c (verify_typedef_table): Move remaining
1079         stuff to verify_typedef_table_full.
1080
1081 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
1082
1083         * metadata-verify.c: Kill is_corlib from VerifyContext.
1084         It is only used by the offline mode.
1085         So we better remove it from the runtime path.
1086
1087 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
1088
1089         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
1090         function that perform the offline metadata verification steps.
1091
1092         * metadata-verify.c (verify_typedef_table): Move some checks to
1093         verify_typedef_table_full and make it been called by new function
1094         mono_verifier_verify_full_table_data.
1095
1096         * pedump.c: Call mono_verifier_verify_full_table_data.
1097
1098         * verify-internals.h: Export mono_verifier_verify_full_table_data as
1099         part of the internal API.
1100
1101 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
1102
1103         * metadata-verify.c (typedef_is_system_object): Fix System.Object
1104         check.
1105
1106         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
1107         flags bits. SupportLastError was confused as bit 7 instead of 6.
1108
1109         * metadata-verify.c (verify_implmap_table): Fix import scope verification
1110         to check against the module ref table instead of module.
1111
1112         * metadata-verify.c (verify_implmap_table): Fix corlib check.
1113
1114         * pedump.c: Call mono_image_load_names.
1115
1116 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
1117
1118         * image.c: Extract mono_image_load_names from do_mono_image_load.
1119
1120         * metadata-internals.h: Export mono_image_load_names as part of
1121         the internal API.
1122         
1123 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * metadata.c (mono_metadata_cleanup): Free the generic method cache
1126         first, as it could reference data in the other caches.
1127
1128 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
1129
1130         * metadata-verify.c: Finished with method header verification.
1131
1132 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
1133
1134         * metadata-verify.c: Added more header verification code.
1135         Now only EH clauses are missing.
1136
1137 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * marshal.c (get_runtime_invoke_type): Don't share primitive types
1140         for return values.
1141
1142 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
1143
1144         * metadata-verify.c: Initial method header verification.
1145
1146 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
1147
1148         * metadata-verify.c (verify_import_table): The IAT contents
1149         might end been patched by the windows DL when running with
1150         coree enabled.
1151
1152 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
1153
1154         * class.c (mono_class_from_typeref): If the enclosing type is not
1155         found return null instead of crashing. Fixes #508487.
1156
1157 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
1158
1159         * normalization-tables.h : updated to the latest unicode charcter
1160           data.
1161         * appdomain.c : bump corlib version.
1162
1163 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * class.c (mono_class_from_name): Fix support for assembly references
1166         in the EXPORTEDTYPE table. Fixes #511704.
1167
1168 2009-06-13  Geoff Norton  <gnorton@novell.com>
1169
1170         * domain.c: Ensure that mono_domain_assembly_open actually opens the
1171         assembly in the target domain.
1172
1173 2009-06-12  Robert Jordan  <robertj@gmx.net>
1174
1175         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
1176         because "this" of the managed signature has become an
1177         ordinary parameter in the unmanaged signature.
1178
1179 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
1180
1181         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
1182         field for owner-less generic containers.
1183
1184         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
1185         image field of the owner-less generic containers created here.
1186
1187         * metadata.c (mono_metadata_load_generic_params): Ditto, the
1188         contain is ownerless until the caller sets its owner.
1189
1190         * metadata.c (type_in_image): Handle owner-less generic containers
1191         correctly.
1192         
1193 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1194
1195         * image.c (mono_image_close): Support debug_assembly_unload for
1196         dynamic images too.
1197
1198 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
1199
1200         * class.c: Fix some typos in comments.
1201
1202 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1203
1204         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
1205
1206         * threads.c (mono_thread_execute_interruption): Avoid creating the
1207         abort exception object while holding the synch_cs lock.
1208
1209 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1210
1211         * metadata-verify.c: Verify basic cattr content.
1212
1213 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1214
1215         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
1216         nested types.
1217         
1218         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
1219         support for nested types. Fixes #511704.
1220
1221 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
1222
1223         * metadata-verify.c: Verify methodspec signatures.
1224
1225 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
1226
1227         * metadata-verify.c: Verify typespec signatures.
1228
1229 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1230
1231         * metadata.c (free_inflated_method): Call 
1232         mono_marshal_free_inflated_wrappers (), which was missed earlier.
1233
1234 2009-06-08  Miguel de Icaza  <miguel@novell.com>
1235
1236         * mono-config.c: Small change to report the PPC64/ILP32 model.
1237
1238 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
1239
1240         * metadata-verify.c (parse_type): Check szarray.
1241
1242 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
1243
1244         * metadata-verify.c (parse_type): Check fnptr.
1245
1246 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
1247
1248         * metadata-verify.c (parse_type): Check generic instances.
1249
1250 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
1251
1252         * metadata-verify.c (parse_type): Check array shape.
1253
1254 2009-06-05  Robert Jordan  <robertj@gmx.net>
1255
1256         * class.c (mono_class_create_from_typedef): Check only for
1257         mscorlib's System.Array.
1258
1259 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
1260
1261         * metadata-verify.c (parse_type): Check pointer, class/valuetype
1262         and generic params. 
1263
1264         * metadata-verify.c (parse_field): Check the signature.
1265
1266 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
1267
1268         * metadata-verify.c: Implement locals signature check.
1269
1270 2009-06-04  Marek Safar  <marek.safar@gmail.com>
1271
1272         * domain.c: Add .NET 4.0 Beta 1 version.
1273
1274 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
1275
1276         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
1277           For QueryInterface on CCWs consider the base class
1278           interfaces as well.
1279
1280         Code is contributed under MIT/X11 license.
1281
1282 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1283
1284         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
1285
1286         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
1287         used.
1288
1289         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
1290         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
1291
1292         * generic-sharing.c (inflate_other_data): Ditto.
1293         
1294 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1295
1296         * metadata-verify.c: Implement property signature check.
1297
1298 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1299
1300         * sgen-gc.h: Register saving support for PPC.
1301
1302 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1303
1304         * sgen-gc.c: Fixed a pthread TLS screwup.
1305
1306 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1307
1308         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
1309         supported.
1310
1311 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1312
1313         * sgen-gc.c: Disable TLA and managed allocation if the __thread
1314         keyword is not supported.
1315
1316 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1317
1318         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
1319         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
1320         the inflated method is freed. Fixes #508389.
1321
1322         The code is contributed under the MIT/X11 license.
1323         
1324 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1325
1326         * marshal.c (get_wrapper_target_class): New helper function.
1327         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
1328         the <Module> class of the image. Fixes #509049.
1329
1330 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
1331
1332         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
1333         Check if the thread was interrupted and proccess it straight away.
1334         Makes abortion much more responsive.
1335
1336 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * threads.c (mono_thread_execute_interruption): Use atomic cas with
1339         MonoThread::interruption_requested to match it's counterpart.
1340
1341         Fixes a hang in abort-stress-1 on a 2 core x86.
1342
1343         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
1344         Fix warning.
1345
1346 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
1347
1348         Change MonoImage::name_cache to be protected by the image lock
1349         instead of the loader lock.
1350
1351         * appdomain.c (deregister_reflection_info_roots): Protect access
1352         to name_cache.
1353
1354         * class.c (mono_image_init_name_cache): Change from the loader lock
1355         to the image lock. Check if the cache wasn't already created.
1356
1357         * class.c: Change from the loader to the image lock.
1358
1359         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
1360         the code to hold the image lock while iterating over name_cache and
1361         not go into mono_array_new holding it.
1362
1363         * metadata-internals.h: Add a comment about this change.
1364
1365 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
1366
1367         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
1368         Under the 2.0 profile raise the loader error.
1369
1370         Fixes #508532.
1371
1372 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
1373
1374         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
1375         of ldind opcode for generic instances so we don't fail for direct wrappers.
1376         This only affect direct calls.
1377
1378 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1379
1380         * reflection.c (create_dynamic_mono_image): Fix warnings.
1381
1382         * generic-sharing.c (other_info_equal): Ditto.
1383         
1384 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1385
1386         * metadata-verify.c: Implement field signature check.
1387
1388 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1389
1390         * metadata-verify.c: Implement standalone signature check.
1391
1392 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1393
1394         * metadata-verify.c: Implement methodref signature check.
1395
1396 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * object-internals.h (MonoRuntimeCallbacks): New structure containing
1399         callbacks supplied by the runtime.
1400
1401         * object.c (mono_install_callbacks): New internal function to install
1402         the callbacks.
1403
1404         * object.c (mono_create_ftnptr): Move the implementation of this to
1405         mini/.
1406
1407         * object.c (mono_get_addr_from_ftnptr): Ditto.  
1408
1409 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1410
1411         * metadata-verify.c (parse_return_type): Proper byref check.
1412         * metadata-verify.c (is_valid_method_signature): Check for zero arity
1413         generic signatures and method params.
1414
1415 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1416
1417         * metadata-verify.c (decode_signature_header): Fix bounds check.
1418
1419         * metadata-verify.c (parse_custom_mods): Check custom mods.
1420
1421         * metadata-verify.c (parse_type): Do initial basic verification
1422         of valid values.
1423         
1424         * metadata-verify.c (is_valid_method_signature): Parse the generic
1425         param count.
1426
1427 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
1428
1429         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
1430         discarded based on their most specific definition so we set the method_slots
1431         array before checking if the method is acceptable or not.
1432
1433         Fixes #506757.
1434
1435 2009-05-26  Mark Probst  <mark.probst@gmail.com>
1436
1437         * icall.c: Free the old array when resizing a mono_ptr_array.
1438
1439 2009-05-26  Mark Probst  <mark.probst@gmail.com>
1440
1441         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
1442         for the hashes whose keys are managed objects.
1443
1444 2009-05-26  Mark Probst  <mark.probst@gmail.com>
1445
1446         * object-internals.h, threads.c: Set the execution context on
1447         thread start here, not in corlib.
1448
1449         * appdomain.c: Bump corlib version.
1450
1451 2009-05-27  Martin Baulig  <martin@ximian.com>
1452
1453         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
1454         if `_mono_debug_using_mono_debugger' is set to make things work
1455         properly when embedding Mono.
1456
1457 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1458
1459         * class.c (mono_class_setup_fields): Don't mark simd types as having
1460         16 bytes alignment as the whole runtime doesn't support.
1461
1462 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1463
1464         * metadata-verify.c (safe_read): Use endian safe read macros.
1465
1466 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
1469         it is read-only when using full aot.
1470
1471 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
1472
1473         * metadata-verify.c (is_valid_method_signature): Verify parts
1474         of the return type. Provide an error message in case of failure.
1475
1476 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
1477
1478         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
1479
1480 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
1481
1482         * metadata-verify.c: Include the size prefix in the bounds check.
1483
1484 2009-05-22  Miguel de Icaza  <miguel@novell.com>
1485
1486         * icall.c: Remove warnings.
1487
1488         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
1489         prevent auto-detection based on GCC defines.
1490
1491         Add PS3
1492
1493         * metadata-verify.c: Do not include signal.h
1494
1495         * generic-sharing.c, marshal.c: Add returns to avoid some warning
1496         messages.  Not sure why the g_assert_not_reached is not enough to
1497         quiet the compiler.
1498         
1499
1500         * appdomain.c: Remove code that is not used when
1501         DISABLE_SHADOW_COPY is set.
1502
1503         * image.c: use g_getenv
1504
1505 2009-05-21  Miguel de Icaza  <miguel@novell.com>
1506
1507         * reflection.c: Remove code that it not used with
1508         DISABLE_REFLECTION_EMIT is defined.
1509
1510 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
1513         invoke wrappers.
1514
1515 2009-05-20  Miguel de Icaza  <miguel@novell.com>
1516
1517         * socket-io.c
1518         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
1519         the ifdef here and instead put that on io-layer
1520
1521 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
1522
1523         * metadata-verify.c: Verify the generic param constraint table.
1524
1525 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
1526
1527         * metadata-verify.c (verify_generic_param_table): Fix
1528         thinko on the valid flags bits for generic params.
1529
1530 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
1531
1532         * metadata-verify.c: Verify the methodspec table.
1533
1534 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
1535
1536         * metadata-verify.c: Verify the generic param table.
1537
1538 2009-05-19  Mark Probst  <mark.probst@gmail.com>
1539
1540         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
1541
1542 2009-05-19  Mark Probst  <mark.probst@gmail.com>
1543
1544         * sgen-gc.c: Use generation enum more consistently and use the
1545         correct generation in mono_gc_register_for_finalization().
1546
1547 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
1548
1549         * metadata-verify.c: Verify the nested class table.
1550
1551 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
1552
1553         * metadata-verify.c: Verify the manifest resource table.
1554
1555 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
1556
1557         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
1558
1559 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
1562         wrappers, this is now done in the JIT.
1563         
1564         * class.c (mono_set_generic_sharing_supported): New internal function.
1565         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
1566
1567 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
1568
1569         * metadata-verify.c: Verify the exported type table.
1570
1571 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
1572
1573         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
1574
1575 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
1576
1577         * metadata-verify.c: Verify the file table.
1578
1579 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
1580
1581         * metadata-verify.c (verify_assembly_table): Fix an error message.
1582
1583         * metadata-verify.c: Verify the assemblyref table.
1584
1585 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
1586
1587         * metadata-verify.c (verify_assembly_table): Fix the valid
1588         bits mask for flags.
1589
1590 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1591
1592         * debug-helpers.c (mono_method_full_name): Print generic parameters of
1593         generic methods as well.
1594
1595 2009-05-15  Geoff Norton  <gnorton@novell.com>
1596
1597         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
1598         use-case and is significantly more performant than the wapi layer.
1599
1600 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
1601
1602         * metadata-verify.c: Verify the assembly table.
1603
1604 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
1605
1606         * metadata-verify.c: Fix rows limit check.
1607
1608 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
1609
1610         * metadata-verify.c: Verify the fieldrva table.
1611
1612 2009-05-13  Mark Probst  <mark.probst@gmail.com>
1613
1614         * sgen.c: Speed up weak links and finalizers by grouping them by
1615         generation.
1616
1617 2009-05-13  Mark Probst  <mark.probst@gmail.com>
1618
1619         * marshal.c (delegate_hash_table_add): When overwriting an entry,
1620         free the old GCHandle (only applies to SGen).
1621
1622 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * loader.c (mono_get_method_from_token): Avoid the expensive call to
1625         mono_metadata_load_generic_params () for non-generic methods.
1626
1627 2009-05-12  Mark Probst  <mark.probst@gmail.com>
1628
1629         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
1630         New function for returning a monitor's weak link if it has one.
1631
1632         * sgen-gc.c: Remove an object's monitor's weak link (if it has
1633         one) when clearing a domain.  These can still be around because
1634         the object might not have been collected.
1635
1636 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
1637
1638         * gc.c: Fix a warning.
1639
1640 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
1641
1642         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
1643         prevous wait that resulted in a deadlock on Windows when initializing
1644         the runtime form DllMain. Also results in improved startup time.
1645         (finalizer_thread): Get rid of thread_started_event.
1646         * threads.c, threads-types.h (mono_thread_create_internal): Return the
1647         resulting MonoThread.
1648
1649         Contributed under MIT/X11 license.
1650
1651 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
1652
1653         * metadata-verify.c: Verify the implmap table.
1654         Don't require that #US and #Strings be present.
1655
1656 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
1657
1658         * security-core-clr.c: Delegate checks are done at creation time,
1659         not a invocation time. Fix exception for Telerik Silverlight demo
1660
1661 2009-05-11  Mark Probst  <mark.probst@gmail.com>
1662
1663         * sgen-gc.c (need_remove_object_for_domain): Remove the special
1664         case for the Thread class.
1665
1666         * threads.c: Do clean-up of abort exception/state in
1667         thread_cleanup() instead of Thread.free_internal().  Also clean up
1668         current_appcontext.  The reason we have to do that is because
1669         those references might point into another domain and if that
1670         domain is unloaded before the thread is finalized, they point to
1671         invalid data.
1672
1673 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
1674
1675         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
1676         stub signatures.
1677         
1678         Contributed unter MIT/X11 license.
1679
1680 2009-05-09  Miguel de Icaza  <miguel@novell.com>
1681
1682         * verify.c, metadata-verifier.c: Add support for disabling the
1683         verifier in some builds.
1684
1685         [ Sorry, my previous commit accidentally commited some work in
1686         progress ]
1687
1688 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1689
1690         * class.c (mono_class_setup_fields): Set class->field.first for
1691         generic instances.
1692
1693 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1694
1695         * metadata-verify.c: Verify the typespec table.
1696
1697 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1698
1699         * metadata-verify.c: Verify the module table.
1700
1701 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1702
1703         * metadata-verify.c: Verify the methodimpl table.
1704
1705 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1706
1707         * metadata-verify.c: Verify the property table.
1708
1709 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * debug-helpers.c (mono_method_desc_match): Add support for generic
1712         glob patterns.
1713
1714 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1715
1716         * metadata-verify.c: Verify the propertymap table.
1717
1718 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
1719
1720         * metadata-verify.c: Verify the event table.
1721
1722         * metadata-verify.c (search_sorted_table): Fix offset
1723         calculation.
1724
1725 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
1728
1729 2009-05-01  Mark Probst  <mark.probst@gmail.com>
1730
1731         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
1732         because mono_delegate_free_ftnptr() needs it.
1733
1734 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1735
1736         * metadata-verify.c: Verify the eventmap table.
1737
1738 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1739
1740         * metadata-verify.c: Verify the standalonesig table.
1741
1742 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1743
1744         * metadata-verify.c: Verify the field layout table.
1745
1746 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1747
1748         * class.c (mono_type_get_name_recurse): Don't crash
1749         for ownerless generic params.
1750
1751         * debug-helpers.c (mono_type_get_desc): Correct the format
1752         for ownerless generic params.
1753
1754 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1755
1756         * metadata-verify.c: Verify the class layout table.
1757
1758 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1759
1760         * metadata-verify.c: Verify the decl security table.
1761
1762 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1763
1764         * domain.c (mono_domain_set_internal_with_options): Don't do
1765         anything if the old domain is the same as the old one.  Fixes
1766         #499326.
1767
1768 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1769
1770         * appdomain.c: Deregister the reflection_info roots when unloading
1771         a domain.
1772
1773         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
1774         memory allocated by a domain and frees its disappearing links.
1775
1776         * boehm-gc.c, null-gc.c: Empty implementation of
1777         mono_gc_clear_domain().
1778
1779 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1780
1781         * appdomain.c (clear_cached_vtable): Free the static fields memory
1782         block.
1783
1784 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1785
1786         * gc.c: Set the correct domain when invoking finalizers.
1787
1788         * appdomain.c: Set the correct domain when creating threads.
1789
1790 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1791
1792         * sgen-gc.c: Fix skip size for vectors.
1793
1794 2009-05-03  Martin Baulig  <martin@ximian.com>
1795
1796         * mono-debug-debugger.c
1797         (mono_debugger_check_breakpoints): Check class init handlers even
1798         if we don't have any method load handers.
1799
1800 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
1801
1802         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
1803         returning refonly assemblies if refonly is FALSE. Fixes #499013.
1804
1805 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
1806
1807         * metadata-verify.c: Verify the field marshal table.
1808
1809 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
1810
1811         * metadata-verify.c: Verify the custom attribute table.
1812
1813 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1814
1815         * metadata-verify.c: Verify the constant table.
1816
1817 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1818
1819         * metadata-verify.c: Verify the memberef table.
1820
1821 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1822
1823         * metadata-verify.c (get_coded_index_token): Remove
1824         dead argument.
1825
1826 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1827
1828         * metadata-verify.c: Verify the interfaceimpl table.
1829
1830 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1831
1832         * verify.c: Improve error message.
1833
1834         * debug-helpers.c (mono_type_get_desc): Harden the code that
1835         deals with VAR and MVAR.
1836
1837 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
1840         part of #498692.
1841
1842 2009-04-23 Tom Hindle <tom_hindle@sil.org>
1843
1844         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
1845         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
1846
1847 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
1848
1849         * security-core-clr.c: Avoid redundant checks for platform code, 
1850         e.g. check for method and for class (very common) and check
1851         for class and outer class (less common)...
1852
1853 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * reflection.c: Avoid returning random cattrs for synthetic methods.
1856         Fixes #498545.
1857
1858 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1859
1860         * assembly.c: assemblies in the GAC should never be shadow-copied.
1861
1862 2009-04-26  Mark Probst  <mark.probst@gmail.com>
1863
1864         * domain.c, domain-internals.h: Disable
1865         track_resurrection_{objects,handles}_hash in MonoDomain if using
1866         SGen.
1867
1868 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1869
1870         * metadata-verify.c: Verify the param table.
1871
1872 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1873
1874         * metadata-verify.c (verify_typedef_table): Range check FieldList and
1875         MethodList.
1876
1877         * metadata-verify.c (verify_method_table): Proper check the ParamList
1878         field.
1879
1880 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1881
1882         * metadata-verify.c (verify_method_table): Check for runtime
1883         implemented functions such as delegate .ctors. Remove spurious
1884         printf.
1885         
1886 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1887
1888         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
1889
1890 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
1891
1892         Don't allocate MonoGenericInfo for ownerless generic params.
1893         * class-internals.h (MonoGenericParam::info): Move field to ...
1894         (MonoGenericParamFull): ... this.  New struct.
1895         (MonoGenericContainer::type_params): Change type to
1896         MonoGenericParamFull.
1897         (MonoGenericParam, MonoGenericContainer): Update accessors.
1898         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
1899         'info' field for ownerless generic param.
1900         (mono_metadata_load_generic_params): Update to changes.
1901         * reflection.c (mono_reflection_create_generic_class): Likewise.
1902         (reflection_methodbuilder_to_mono_method): Likewise.
1903         (mono_reflection_initialize_generic_parameter): Likewise.
1904
1905 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
1906
1907         Don't use MonoGenericParamInfo for ownerless generic params.
1908         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
1909         use ParamInfo class at all.
1910         (mono_class_from_generic_parameter): Use them.
1911         (make_generic_param_class): Fix a couple of instances where 'pinfo
1912         == NULL' wasn't handle.
1913
1914 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
1915
1916         * class.c (make_generic_param_class): Carve out of ...
1917         (mono_class_from_generic_parameter): ... here.
1918
1919 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
1920
1921         Simplify mono_class_from_generic_parameter
1922         * class-internals.h (MonoGenericParamInfo::token): New field.
1923         * metadata.c (mono_metadata_load_generic_params): Initialize it
1924         from metadata.
1925         * class.c (mono_class_from_generic_parameter): Use it instead of
1926         searching through metadata.
1927
1928 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1929
1930         * metadata-verify.c: Add verification of the method table.
1931
1932 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1933
1934         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
1935         Delegate::Invoke optimization.
1936
1937 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1938
1939         * appdomain.c (mono_domain_create_appdomain_internal): Free the
1940         string returned by get_shadow_assembly_location_base.
1941
1942         * appdomain.c (get_shadow_assembly_location_base): Add a comment
1943         about caller's ownership.
1944
1945 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1946
1947         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
1948         reflection memory on domain unload.
1949
1950         * domain.c (mono_domain_free): Don't free refobject_hash, let the
1951         reflection cleanup code do it.
1952
1953         * domain-internals.h: Add mono_reflection_cleanup_domain.
1954
1955         This fixes a memory leak for managed mirrors of reflection objects
1956         on domain unload. 
1957
1958 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
1959
1960         * metadata-verify.c: Implement more verification of the field table.
1961
1962 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
1963
1964         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
1965         doesn't try to parse the input assembly, which can be broken.
1966
1967 2009-04-23  Mark Probst  <mark.probst@gmail.com>
1968
1969         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
1970         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
1971         by using the lowest bit in the link to store whether the link is
1972         tracked.  Move the track_resurrection hashes into boehm-gc.c.
1973
1974 2009-04-22  Miguel de Icaza  <miguel@novell.com>
1975
1976         * Makefile.am: Split the console support in platform specific code
1977         and put together a framework for making this easy in the future so
1978         that we can start splitting code instead of having a mess of PLATFORM_WIN32
1979
1980 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
1981
1982         * pedump.c: Fix a warning.
1983
1984 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
1985
1986         * verify.c (mono_delegate_type_equal): Compare valuetypes using
1987         mono_class_from_mono_type to avoid bad interactions with the dual representation
1988         of the generic type definition.
1989
1990 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
1991
1992         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
1993         get the MonoClass for the call context type as it might be a generic
1994         instance.
1995
1996         Fixes #491483.
1997
1998 2009-04-21  Mark Probst  <mark.probst@gmail.com>
1999
2000         * object-internals.h: The Thread object has no execution_context
2001         member anymore.
2002
2003         * threads.c, threadpool.c, threads-types.h: Accessor functions for
2004         the execution context.
2005
2006         * appdomain.c: Bump corlib version.
2007
2008 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2009
2010         * verify.c (do_newobj): Improve error message.
2011
2012 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2013
2014         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
2015         is nested in the filter block.
2016
2017         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
2018         block is not fully nested.
2019
2020         Fixes #495656.
2021
2022 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2023
2024         * verify.c (verify_type_compatibility_full): Compare MonoClass and
2025         not MonoType to check for equality of valuetypes as the generic type
2026         definition allows for two different encodings: the generic type definition
2027         class or a generic instance over the GTD arguments.
2028
2029         Fixes #496175.
2030
2031 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2032
2033         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
2034
2035         * verify.c (do_initobj): Improve error message.
2036
2037 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2038
2039         * metadata-verify.c: Enable pe verification as the issue with #496453
2040         is that the authenticode data directory have a different unspecified
2041         format. Ignore it for now.
2042
2043         * pedump.c: Run the metadata verifier together with the IL verifier.
2044
2045         Fixes ##496453.
2046
2047 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2048
2049         * metadata-verify.c: Temporarily disable pe verification due to #496453.
2050
2051 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
2052
2053         * class.c (can_access_type): Check visibility against
2054         the element type for pointers and arrays.
2055
2056         Fixes #496150.
2057
2058 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
2059
2060         * metadata-verify.c: Fix cli and table verification to use information
2061         from the MonoImage. A lot of duplicated code got killed.
2062
2063 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
2064
2065
2066         This patch starts to integrate the metadata verifier with the runtime code.
2067
2068         This patch causes major regression in functionality for the metadata verifier
2069         as cli and table verification are disabled since they require to be ported to
2070         use MonoImage information.
2071
2072         * image.c (do_mono_image_load): Split the code in this function
2073         into mono_image_load_pe_data and mono_image_load_cli_data.
2074         Add     care_about_pecoff parameter to not load pecoff data.
2075         Call into the metadata verifier for pecoff and cli verification.
2076
2077         * image.c (mono_image_open_raw): New function that doesn't perform
2078         any parsing of the image contents.
2079         
2080         The reason for the 3 new functions is to give pedump better control
2081         into the interaction with the verifier.
2082
2083         * metadata-internals.h: Add new functions from image.c as part of the
2084         internal mono API.
2085
2086         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
2087         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
2088         to make those functions work together with the runtime.
2089
2090         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
2091         true if the image needs to be verified.
2092
2093         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
2094
2095         * pedump.c: Use new metadata verifier API.
2096
2097 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * object.c (mono_install_vtable_trampoline): Make this receive a
2100         trampoline creation function instead of trampoline, allowing the JIT
2101         to use a different trampoline for each vtable.
2102
2103 2009-04-18  Mark Probst  <mark.probst@gmail.com>
2104
2105         * object.c (mono_raise_exception): Don't reset the thread abort
2106         exception state here.
2107
2108 2009-04-18  Mark Probst  <mark.probst@gmail.com>
2109
2110         * icall-def.h: New icall for getting the thread abort exception
2111         state for a thread.
2112
2113         * object.c, thread.c, object-internals.h: A thread's abort
2114         exception state is now a GC handle.  To get the object it stands
2115         for, we must move it into the current app domain, if it's
2116         different than the one where it originated from.
2117
2118         * appdomain.c: Bump corlib version.
2119
2120         * domain.c, domain-internals.h: New function for setting the
2121         domain and migrate the thread abort exception or not.
2122
2123 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
2124
2125         * metadata-verify.c: Add initial verification of the
2126         field table.
2127
2128 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
2129
2130         * metadata-verify.c: Add a macro to conditionally enable
2131         dumping of verification information. Add  make_coded_token
2132         and search_sorted_table to enable search sorted tables
2133         by a given coded token.
2134
2135 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
2136
2137         * metadata-verify.c: Add array mapping from table index
2138         to description offset. Add get_col_offset and get_col_size
2139         functions.
2140
2141 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
2142
2143         * metadata-verify.c: Add remaining table descriptions offsets.
2144         Add remaining coded index descriptions.
2145
2146 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
2147
2148         * metadata-verify.c: Fixed constant table description.
2149         Fixed calculation of HasCustomAttribute coded index size.
2150         Fixed calculation of size for many table indexes. 
2151
2152 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
2153
2154         * pedump.c (dump_metadata): Dump table offset instead
2155         of useless pointer in memory.
2156
2157 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
2158
2159         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
2160
2161 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
2162
2163         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
2164         a missing of for interface types.
2165
2166 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
2167
2168         * metadata-verify.c (verify_pe_optional_header): Add comment of why
2169         the code is commented.
2170
2171         * metadata-verify.c (verify_resources_table): Remove spurious printf
2172         and don't fail if there are unmanaged resources. Gmcs generates a useless
2173         one     for all assemblies - I bet it's some MS compatibility junk.
2174
2175 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
2176
2177         * metadata-verify.c (verify_typedef_table): Verify the extends field.
2178
2179         * metadata-verify.c (mono_image_verify): Add a is_corlib.
2180
2181         * verify-internals.h: Same.
2182
2183         * pedump.c: Fix for mono_image_verify new signature.
2184
2185 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
2186
2187         * metadata-verify.c (verify_typedef_table): Verify for some invalid
2188         flags combinations.
2189
2190 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
2191
2192         * metadata-verify.c (verify_module_table): Ignore the generation field.
2193
2194 2009-04-15  Martin Baulig  <martin@ximian.com>
2195
2196         * debug-mono-symfile.c
2197         (mono_debug_symfile_lookup_location): Don't print a warning for
2198         unknown extended opcodes if they're within 0x40 and 0x7f.
2199
2200 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
2203         invoke signatures returning an enum. Fixes #494847.
2204
2205 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
2206
2207         * metadata-verify.c: Initial code to verify the typedef table.
2208
2209 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
2210
2211         * verify.c (mono_method_verify): Don't fail if an unconditional branch
2212         with non empty stack happens before the beginning of a try block.
2213
2214         Fixes #494812.
2215
2216 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
2217
2218         * metadata-verify.c: Verify typename and typenamespace fields of
2219         the typeref table.
2220
2221 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
2222
2223         * metadata-verify.c: Initial code to verify the typeref table.
2224
2225 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
2226
2227         * verify.c (verify_delegate_compatibility): Fix error message.
2228
2229 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
2230
2231         * security-core-clr.c: Fix typo
2232
2233 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2234
2235         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
2236         a MonoGHashTable to keep its values alive.
2237         (emit_marshal_boolean): Fix a warning.
2238
2239 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2240
2241         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
2242         not have any interface configured for IPv4/IPv6.
2243
2244 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2245
2246         * assembly.c: fix typo in error message.
2247
2248 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
2251         allocating the location holding the this argument to prevent
2252         'too many root sets' errors.
2253
2254         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
2255         to mark fields as special static.
2256         (mono_field_static_get_value): Handle special static fields.
2257         (mono_field_static_set_value): Ditto.
2258
2259         * class-internals.h (struct _MonoClassField): Document this.
2260
2261 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
2262
2263         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
2264           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
2265           case.  This will handle when managed code returns null to native code.
2266
2267         Code is contributed under MIT/X11 license.
2268
2269 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
2270
2271         * object.c (build_imt_slots): Changing a free to a g_free to match
2272           the g_malloc0 in add_imt_builder_entry that allocated this memory.
2273
2274         Code is contributed under MIT/X11 license.
2275
2276 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
2277
2278         * marshal.c (emit_marshal_boolean): Adding code to ensure that
2279           the correct TRUE value is passed through the marshaling layer.
2280
2281         Code is contributed under MIT/X11 license.
2282
2283 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2284
2285         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
2286         correctly. Fixes #492330.
2287         
2288         * marshal.c: Fix the embedding of object pointers into JITted code in
2289         the native-to-managed wrappers by allocating some GC tracked memory, and
2290         embedding the address of that.
2291
2292 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
2295         pointers into the vtable.
2296
2297 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
2298
2299         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
2300
2301         * verify.c (verify_ldftn_delegate): Improve error message.
2302
2303 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
2304
2305         * reflection.c (my_mono_class_from_mono_type): Remove.
2306
2307 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
2308
2309         Prepare to reduce memory usage of owner-less generic parameters (1/n)
2310         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
2311         and constraints fields into ...
2312         (MonoGenericParamInfo): ... this.
2313         (mono_generic_param_info, mono_generic_container_get_param_info):
2314         New accessors.
2315         * class.c, debug-helpers.c, icall.c: Update to changes.
2316         * metadata.c, reflection.c, verify.c: Likewise.
2317
2318 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2319
2320         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
2321
2322         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
2323         
2324         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
2325         booleans with sbytes.
2326
2327 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
2328
2329         * class.c (can_access_instantiation): Verify accesibility of element types
2330         for arrays and pointers.
2331
2332         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
2333
2334         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
2335
2336         Fixes #493068.
2337
2338 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
2339
2340         * verify.c (do_invoke_method): Improve error messages.
2341
2342 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2343
2344         * verify.c:  Fixing the MSVC build.
2345
2346         Code is contributed under MIT/X11 license.
2347
2348 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
2349
2350         * security-core-clr.c: Simplify get_reflection_caller not to call
2351         mono_method_get_last_managed (another stack walk) and adjust the
2352         callers to handle a (should not happen) NULL return value.
2353
2354 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2355
2356         Add accessors to some MonoGenericParam fields
2357         * class-internals.h (mono_generic_param_owner): New accessor.
2358         (mono_generic_param_num): Likewise.
2359         (mono_type_get_generic_param_owner): New helper.
2360         (mono_type_get_generic_param_num): New helper.
2361         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
2362
2363 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2364
2365         * class-internals.h (mono_generic_container_get_param): New wrapper.
2366         * class.c, icall.c, metadata.c, verify.c: Use it.
2367
2368 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2369
2370         Fix gtest-252.cs
2371         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
2372         the standard case/loop.  In particular, don't complain about
2373         references to generic type definitions.
2374
2375 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
2376
2377         * debug-helpers.c (dis_one): Decode string arguments.
2378
2379 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
2380
2381         * pedump.c (dump_verify_info): Dump type name correctly.
2382
2383 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
2384
2385         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
2386         are larger than code size.
2387
2388         This can happen in valid code if the try/catch block is not followed by any instruction
2389         and do a backward branch on the leave instruction.
2390
2391         Fixes #492494.
2392
2393 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
2394
2395         * security-core-clr.c: Fix typo while comparing second method names
2396         in can_avoid_corlib_reflection_delegate_optimization
2397
2398 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
2399
2400         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
2401
2402         Fixes #487738.
2403
2404 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
2405
2406         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
2407         a MVAR using a class context.
2408
2409         Fixes #490335.
2410
2411 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
2414
2415         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
2416
2417         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
2418         functions supplied by the JIT for the SGEN GC.
2419
2420         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
2421         
2422 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
2423
2424         monitor.c (mono_monitor_try_enter_internal):
2425         Added calls to profile monitor contentions.
2426         Also duplicated a small piece of code (the "get the monitor" logic)
2427         from the fast path to the slow path, and changed the relevant goto
2428         statements, so that monitor acquisition events can be emitted from the
2429         slow path (this is by Paolo Molaro).
2430
2431 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
2432
2433         * profiler.c, profiler.h, profiler-private.h:
2434         Added support for profiling monitor contentions.
2435
2436 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
2437
2438         * metadata-verify.c: Verify the modules table.
2439
2440 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
2441
2442         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
2443         using the context of the method been verifier and not of the method been called.
2444
2445         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
2446         safely inflate generic types. 
2447
2448 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
2449
2450         * security-core-clr.c: Change the strategy for checking the 
2451         "reflection using delegates optimization" to avoid unneeded 
2452         attributes in multiple class libraries.
2453
2454 2009-04-02  Mark Probst  <mark.probst@gmail.com>
2455
2456         * sgen-gc.c: Remove object element in the disappearing link struct
2457         by storing the object pointer in the link.
2458
2459 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
2460
2461         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
2462
2463 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
2464
2465         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
2466
2467         * verify.c (mono_method_verify): Do proper bounds checking of exception
2468         clause ranges.
2469
2470 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
2471
2472         * loader.c (mono_field_from_token): Don't crash if the field parent could
2473         not be decoded.
2474
2475 2009-03-31  Mark Probst  <mark.probst@gmail.com>
2476
2477         * sgen-gc.c: Execute critical finalizers after ordinary
2478         finalizers.
2479
2480         * class-internals.h, domain.c: Add CriticalFinalizerObject to
2481         mono_defaults.
2482
2483 2009-03-31 Jb Evain <jbevain@novell.com>
2484
2485         * verify.c (do_ldstr): don't check if a string is in the user strings
2486         heap if the current image is dynamic.
2487
2488 2009-03-31  Mark Probst  <mark.probst@gmail.com>
2489
2490         * sgen-gc.c: Wait until the last finalizer has executed when
2491         returning from WaitForPendingFinalizers.
2492
2493 2009-03-31  Martin Baulig  <martin@ximian.com>
2494
2495         * mono-debug-debugger.h (MonoDebuggerEvent): Add
2496         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
2497         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
2498         (mono_debugger_event_create_appdomain): New function.
2499         (mono_debugger_event_unload_appdomain): New function.
2500
2501         * appdomain.c (mono_domain_create_appdomain_internal): Call
2502         mono_debugger_event_create_appdomain().
2503
2504 2009-03-31  Martin Baulig  <martin@ximian.com>
2505
2506         * mono-debug-debugger.c
2507         (mono_debugger_register_class_init_callback): Also register the
2508         class init callback if the class is already initialized to make
2509         things work with shadow copied assemblies.
2510
2511 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
2512
2513         * security-core-clr.c
2514         (mono_security_core_clr_ensure_reflection_access_field): Let 
2515         critical code access the field (just like we do for methods). Use
2516         check_field_access helper.
2517         (mono_security_core_clr_ensure_reflection_access_method): Use 
2518         check_field_access helper.
2519
2520 2009-03-31  Mark Probst  <mark.probst@gmail.com>
2521
2522         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
2523         call the run-finalize function directly.
2524
2525         * gc.c, gc-internal.h: Make run_finalize() non-static.
2526
2527 2009-03-31  Mark Probst  <mark.probst@gmail.com>
2528
2529         * sgen-gc.c: Use a separate struct for disappearing links.
2530
2531 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
2532
2533         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
2534         * MaxIOVectorLength enabled, just ignore them.
2535         Fixes bug #349688.
2536
2537 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
2538
2539         * metadata-verify.c: Fix eglib build.
2540
2541 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * threads-types.h: Fix the win32 build.
2544
2545 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
2546
2547         * class.c: move coreclr inheritance/override checks to 
2548         security-core.clr.c
2549         * security-core.clr.c|h: add code from class.c with additional
2550         documentation. Fix override check when the method is not critical.
2551
2552 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
2555         (match_class): Ditto.
2556
2557 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
2558
2559         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
2560
2561         * metadata-verify.c: Implement table layout row size calculation. Verify
2562         the total size of the tables.
2563
2564 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
2565
2566         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
2567
2568 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
2569
2570         * appdomain.c:
2571         * console-io.[ch]: added new mono_console_init() to make sure that
2572         file descriptors 0, 1 and 2 are opened.
2573         Bug #489019 fixed.
2574
2575 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
2576
2577         * appdomain.h: Export a new callback type and a new function to
2578         set this callback. This allow a mono host to provide it's own
2579         definition for "platform code".
2580         * metadata-internals.h: Add a core_clr_platform_code flag on 
2581         _MonoImage to (cache and) know if it is representing platform 
2582         code.
2583         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
2584         on platform code images.
2585         * security-core-clr.c|h 
2586         (mono_security_set_core_clr_platform_callback): Allow the host
2587         to provide it's own platform check definition.
2588         (mono_security_core_clr_determine_platform_image): Detect if an 
2589         image is platform code (using the specified callback).
2590         (mono_security_core_clr_is_platform_image): Return cached value 
2591         for platform code.
2592
2593 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
2594
2595         * threads.c (mono_create_thread): New helper function to wrap CreateThread
2596         which has different parameter types for the 'tid' argument in windows and
2597         the io-layer.
2598
2599         * appdomain.c attach.c threads.c: Use the new helper.
2600
2601 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
2602
2603         * metadata-verify.c: Verify valid table bits.
2604
2605 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
2606
2607         * metadata-verify.c (verify_metadata_header): Store size in the size field.
2608
2609         * metadata-verify.c: Add initial table schema verification.
2610
2611 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2612
2613         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
2614         obtain the refclass argument needed by mono_param_get_objects (). Fixes
2615         #488383.
2616
2617         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
2618
2619         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
2620
2621 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
2622
2623         * security-core-clr.c: Add/update documentation
2624
2625 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2626
2627         * marshal.c (emit_marshal_object): Generate code to throw an exception
2628         instead of throwing it. Fixes #488670.
2629
2630 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
2631
2632         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
2633         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
2634         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
2635         and add a call to mono_security_core_clr_ensure_delegate_creation
2636         to do the extra checks required by CoreCLR.
2637         * security-core-clr.c|h: Add function to check delegate creation,
2638         both in the binding and accessibility, under CoreCLR.
2639
2640 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
2641
2642         * reflection.c (mono_reflection_create_dynamic_method): when 
2643         coreclr is enabled make sure that every resolved object are
2644         checked (e.g. field and method access).
2645         * security-core-clr.c|h: Add function to check objects resolved
2646         when a dynamic method is created.
2647
2648 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
2649
2650         * metadata-verify.c: Cache directory rva translations.
2651
2652         * metadata-verify.c: Add cli-header and streams verification.
2653
2654 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
2655
2656         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
2657         the wrong offset (8 instead of 6).
2658
2659 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
2660
2661         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
2662         methods, return the native function address itself. Fixes
2663         #487758.
2664
2665 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
2666
2667         * console-io.c: some of the values for control characters might not be
2668         present.
2669
2670 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
2671
2672         * exception.c|h: Add helpers to create [Field|Method]AccessException
2673         * icall.c: Add required coreclr check calls for field reflection.
2674         Move the existing (method) check logic into security-core-clr.c
2675         * security-core-clr.c: Add functions to check if the access of a
2676         field or method is allowed when reflecting under coreclr. This is
2677         mostly done using a stack walk to find the "real" caller: i.e. the
2678         code that is calling the reflection
2679
2680 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * gc-internal.h: Change location of gc_wrapper.h
2683
2684 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
2685
2686         * class.c: Simplification to coreclr checks for overrides that
2687         makes it easier to set breakpoints.
2688
2689 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
2690
2691         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
2692         mono_security_core_clr_method_level): Avoid potential 
2693         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
2694         user/application code) and make it easier to set breakpoints
2695
2696 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
2697
2698         * metadata-verify.c: Reject cli header tables that mono don't handle.
2699
2700 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
2701
2702         * pedump.c: Fix CLI header dumping.
2703
2704 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
2705
2706         * metadata-verify.c: More CLI header verification.
2707
2708 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
2711
2712 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
2713
2714         * metadata-verify.c: Initial verification of the CLI header.
2715
2716 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
2717
2718         * metadata-verify.c (verify_resources_table): Fix verification of zero
2719         sized resource section and id entries count.
2720
2721 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
2722
2723         * icall.c: Handle user types in many Type icalls. Fixes #486303.
2724
2725 2009-03-17  Jb Evain  <jbevain@novell.com>
2726
2727         * profiler.c: call mono_gc_base_init from mono_profiler_load.
2728
2729 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
2730
2731         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
2732         (mono_gc_make_descr_for_array): Ditto.
2733
2734 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
2735
2736         * verify.c (mono_verifier_is_class_full_trust): Add support for
2737         CoreCLR security mode where trusted assemblies are defined as
2738         "platform code".
2739
2740 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2741
2742         * metadata-verify.c: Add minimal PECOFF resource verification.
2743
2744 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2745
2746         * metadata-verify.c: Be less restrictive with some coff fields.
2747
2748 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2749
2750         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
2751         params as boxed values on stack. Fixes #485706.
2752
2753 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2754
2755         * console-io.c: the termios values may vary in different flavors of unix.
2756
2757 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2758
2759         * console-io.[ch]: return the entire set of control characters when
2760         initializing the terminal.
2761         * appdomain.c: bump corlib version.
2762
2763 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
2764
2765         * mono-perfcounters.c: added support for in-process custom
2766         performance counters.
2767
2768 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
2769
2770         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
2771
2772 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
2773
2774         * metadata-verify.c: Verify the data pointed by the import table. 
2775
2776 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
2777
2778         * metadata-verify.c (load_data_directories): Store data
2779         directory contents.
2780
2781         * metadata-verify.c: Verify the import table. 
2782
2783 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2784
2785         * metadata-verify.c: Verify data directories.
2786
2787 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2788
2789         * metadata-verify.c: Check section header flags.
2790
2791 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
2792
2793         * appdomain.c: if the assembly name is a shadow-copied file, return
2794         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
2795         in mono_make_shadow_copy.
2796         * icall.c: if the assembly name is a shadow-copied file, replace it
2797         with the original assembly path.
2798
2799         Bug #484244 fixed. NUnit tests for corlib can be run without
2800         --noshadow now.
2801
2802 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
2803
2804         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
2805         entries when the table is reallocated.
2806
2807         * icall.c: Allocate the memory used by the mono_ptr_array macros using
2808         mono_gc_alloc_fixed () since it contains GC refs.
2809
2810 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * reflection.c (ensure_complete_type): New helper function to call
2813         type resolve handlers for unfinished dynamic types.
2814         (resolve_object): Call it for MonoClassFields. Fixes #483852.
2815
2816 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
2817
2818         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
2819         #483247.
2820
2821 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
2822
2823         * appdomain.c (get_shadow_assembly_location): Fix memleak.
2824
2825 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
2826
2827         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
2828         between GCHandles of type WeakTrackResurrection and the objects they
2829         point to.
2830
2831         * gc.c: Partly implement the sematics of GCHandles of type 
2832         WeakTrackResurrection: these handles should only be cleared after the
2833         finalizer of the object they are pointing to has ran.
2834
2835 2009-03-06  Mark Probst  <mark.probst@gmail.com>
2836
2837         * icall.c: Partially revert r126631 because using the jump
2838         trampolines for generic shared methods makes it superfluous.
2839
2840 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
2841
2842         * threads.c (handle_store): Create the 'threads' hash table with the proper
2843         MONO_HASH_VALUE_GC type.
2844
2845 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
2846
2847         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
2848         FIRST_GC_TRACKED.
2849
2850         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
2851         and LAST_GC_TRACKED as a GC root.
2852
2853         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
2854
2855         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
2856         the static data even if it consists of 1 reference.
2857
2858         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
2859         if there is a GC descriptor.
2860
2861         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
2862         instead of through the GC since they contain no object references.
2863
2864 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2865
2866         * generic-sharing.c (instantiate_other_info): Always return a jump
2867         trampoline for method code.
2868
2869 2009-03-05  Marek Habersack  <mhabersack@novell.com>
2870
2871         * culture-info-tables.h: generated to include the en-tt culture.
2872
2873 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
2874
2875         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
2876         capture the thread context.
2877
2878         * object.c (mono_async_result_new): Cache the invoke wrappers to
2879         ExecutionContext::Capture.
2880
2881 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
2882
2883         * marshal.h: Add a prototype for what mono_compile_method returns
2884         for invoke wrappers.
2885
2886         * gc.c: Use the new prototype declaration.
2887
2888 2009-03-04  Geoff Norton  <gnorton@novell.com>
2889
2890         * boehm-gc.c: Add some MONO_LOG tracing for the GC
2891         * gc-internal.h:
2892         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
2893
2894 2009-03-04  Martin Baulig  <martin@ximian.com>
2895
2896         * mono-debug.h
2897         (mono_debugger_runtime_invoke): Removed.
2898
2899         * mono-debug-debugger.c
2900         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
2901
2902 2009-03-02  Martin Baulig  <martin@ximian.com>
2903
2904         * mono-debug.h
2905         (mono_debugger_unhandled_exception): Removed.
2906         (mono_debugger_handle_exception): Removed.
2907         (mono_debugger_throw_exception): Removed.
2908
2909         * mono-debug.c
2910         (mono_debug_debugger_version): Bump to 5.
2911
2912         * mono-debug-debugger.c: Moved the exception handling code to
2913         ../mini/debug-mini.c
2914
2915 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
2918         finalize_objects_hash.
2919
2920         * gc.c: Use the separate lock to access the finalize_objects_hash field.
2921         
2922         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
2923         field.
2924
2925         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
2926         cache.
2927
2928         * image.c (mono_image_close): Free it.
2929         
2930         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
2931         allowing a creation of a wrapper which invokes its method using a CALLVIRT
2932         on the this argument.
2933
2934         * gc.c (run_finalize): Optimize the calling of the finalizers.
2935
2936 2009-03-03  Martin Baulig  <martin@ximian.com>
2937
2938         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
2939         of the `MonoGenericInst' changes.
2940
2941 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2942
2943         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
2944         mono_array_class_get_cached to reduce locking contention. Extract
2945         a domain var.
2946
2947         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
2948         intermediary managed arrays. Use caching version of mono_array_new
2949         to allocate the result array.
2950
2951         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
2952
2953         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
2954
2955         * locales.c (create_names_array_idx):  Use mono_array_new_cached
2956         to reduce locking contention.
2957
2958 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2959                 
2960         * object.c (mono_method_add_generic_virtual_invocation): Put back the
2961         thunk builder code for the non-interface case.
2962
2963 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * object.c (get_generic_virtual_entries): New helper function to collect
2966         the virtual generic method instances which need to be added to an IMT
2967         thunk.
2968         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
2969         Instead of creating a new IMT thunk, reset the vtable slot to the
2970         trampoline, the thunk will be created the next time the trampoline is called.
2971         (build_imt_slots): Add support for virtual generic methods in interfaces by
2972         adding to the IMT thunk all the methods registered using 
2973         mono_method_add_generic_virtual_invocation ().
2974
2975         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
2976         (struct _MonoIMTCheckItem): Ditto.
2977
2978         * object.c (mono_method_add_generic_virtual_invocation): Take a
2979         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
2980         the IMT thunk to include all items.
2981         
2982         * object.c (mono_class_create_runtime_vtable): Add a missing
2983         mono_loader_unlock ().
2984
2985 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2986
2987         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2988
2989         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
2990
2991 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2992
2993         * object-internals.h: Rename _MonoReflectionEvent to
2994         MonoReflectionMonoEvent so it reflects the right managed type.
2995         Add a MonoReflectionEvent that correctly represents System.EventInfo.
2996
2997         * icall.c:
2998         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
2999         type.
3000
3001 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
3002
3003         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
3004         intermediary managed arrays. Use caching version of mono_array_new
3005         to allocate the result array.
3006
3007 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
3008
3009         * reflection.c: Use cached version of mono_array_new alongside
3010         the mono_reflection_get_custom_attrs_by_type call path.
3011
3012 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
3013
3014         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
3015         intermediary managed arrays. Use caching version of mono_array_new
3016         to allocate the result array.
3017
3018         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
3019
3020 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
3021
3022         * icall.c: Add small implementation of a growable stack bound array.
3023
3024         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
3025
3026         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
3027         intermediary managed arrays. Use caching version of mono_array_new
3028         to allocate the result array.
3029
3030 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
3031
3032         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
3033         helps Enum::CompareTo to be implemented without reboxing all enums
3034         to their underlying type.
3035 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
3038         since it acquires a global lock leading to scalability problems.
3039
3040         * profiler.c: Make the stat profiler work with multiple appdomains, this
3041         currently only works when no appdomains are unloaded.
3042
3043 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3044
3045         * appdomain.c: make the check to avoid copying when the assembly is
3046         already shadow copied actually work.
3047
3048 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3051
3052         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
3053         changes to the managed side.
3054
3055 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
3056
3057         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
3058         classes + a separate lock for it, as it is used frequently at runtime, not
3059         just during metadata loading/JIT compilation.
3060
3061         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
3062         for szarrays.
3063         
3064         * object-internals.h (mono_class_from_name_cached): New macro to cache
3065         the results of the lookup locally without having to declare a static
3066         variable to hold it.
3067         (mono_class_get_field_from_name_cached): Ditto.
3068         (mono_array_class_get_cached): Ditto.
3069
3070         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
3071         the new macros.
3072         
3073         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
3074         slower search in metadata.
3075
3076         * pedump.c: Fix a warning.
3077
3078 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3079
3080         * reflection.c (encode_locals): Add checks for user types.
3081         (method_encode_clauses): Ditto.
3082         (method_encode_code): Ditto.
3083         (mono_image_create_token): Ditto.
3084
3085         * object-internals.h: Change the type of more fields from MonoReflectionType*
3086         to MonoObject*.
3087
3088 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
3091         the a thread does not suspend within 100ms.
3092
3093         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
3094         in addition to StopRequested as well.
3095
3096         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
3097
3098         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
3099         search the method_hash before inserting a new entry, to avoid crashes when
3100         the same method is inserted multiple times, causing the old 
3101         MonoDebugMethodInfo structure to be freed by the value dtor function.
3102
3103 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3104
3105         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
3106         SO_EXLUSIVEADDRUSE where available.
3107
3108 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
3109
3110         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
3111         runtime invoke wrappers, this time it is string ctor wrappers, which
3112         pass a dummy string as 'this' instead of their obj argument. Fixes
3113         #478473.
3114
3115 2009-02-21  Jb Evain  <jbevain@novell.com>
3116
3117         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
3118         only get create_culture once.
3119
3120 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * reflection.c (mono_reflection_setup_internal_class): Move the user type
3123         check before the locking.
3124         
3125         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
3126         (mono_reflection_create_runtime_class): Ditto.
3127         (mono_reflection_sighelper_get_signature_local): Ditto.
3128         (mono_reflection_sighelper_get_signature_field): Ditto.
3129
3130         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
3131         is a System.MonoType object or similar.
3132         (monotype_cast): New helper function to cast a MonoObject to a 
3133         MonoReflectionType object.
3134
3135         * object-internals.h: Change MonoReflectionType* members in structures to
3136         MonoObject* members to force the usage of the monotype_cast () function.
3137
3138         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
3139         structures/arrays. This causes us to assert instead of crashing when 
3140         instances of user defined subclasses of System.Type are encountered.
3141
3142 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3143
3144         * cil-coff.h:
3145         * icall-def.h:
3146         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
3147         win32 resource loaded from a PE file.
3148
3149         * image.c: fix mono_image_lookup_resource.
3150
3151 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3152
3153         * icall-def.h:
3154         * threads-types.h:
3155         * threads.c: added internal call for WaitHandle.SignalAndWait.
3156
3157 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
3158
3159         * cominterop.c : Adding cominterop_type_from_handle and 
3160           registering it as an icall.  Replacing all references
3161           to type_from_handle.
3162
3163         Code is contributed under MIT/X11 license.
3164
3165 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3166
3167         * Makefile.am: Add lock-tracer.h and lock-trace.c.
3168
3169         * appdomain.c: Call the tracer init function.
3170
3171         * domain-internals.h: Enable the tracer for the domain locks.
3172
3173         * image.c: Enable the tracer for image locks.
3174
3175         * loader.c: Enable the trace for the loader lock.
3176
3177         * lock-tracer.h:
3178         * lock-tracer.c: Initial implementation of the lock trace utility.
3179         The tracer requires a compile time define to be enabled and a env var
3180         to be enabled at runtime.
3181
3182 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3183
3184         * domain.c (mono_domain_code_foreach): Improve documentation.
3185
3186 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3187
3188         * appdomain.c:
3189         * generic-sharing.c:
3190         * object.c:
3191         * reflection.c:  Adjust locking order to the new semantics where the loader lock
3192         comes first.
3193
3194 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
3195
3196         * domain.c: Add mono_domain_code_* functions that perform locking
3197         around the domain codeman.
3198
3199         * domain-internals.h: Export those functions.
3200
3201         * object.c: Use new functions instead of acquiring the domain lock.
3202
3203 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
3204
3205         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
3206         delegate. Fixes #477396.
3207
3208 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3209
3210         * reflection.c (create_custom_attr): Get rid of alloca.
3211
3212 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
3213
3214         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
3215           Adding exception handling for all CCW calls.
3216
3217         Code is contributed under MIT/X11 license.
3218
3219 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
3222
3223         * marshal.c (emit_marshal_boolean): Add null checks to the new 
3224         native->managed marshalling code. Fixes #476247.
3225
3226 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * class.c (mono_class_get_vtable_entry): Move the addition of
3229         static rgctx invoke wrappers for vtable methods here, this simplifies
3230         a lot of code and causes fewer rgctx wrappers to be created.
3231
3232         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
3233         name of the statistics to begin with an uppercase.
3234
3235 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
3236
3237         * reflection.c: Revert previous change as it breaks the build.
3238         
3239 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
3240
3241         * verify.c: Properly handle SZARRAY element type.
3242
3243         Fixes #474271.
3244
3245 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
3246
3247         * reflection.c (mono_image_create_method_token): Correctly encode
3248         MethodDef MemberRefParent token.
3249
3250         Fixes #472845.
3251
3252 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3253
3254         * image.c (mono_image_close): Delete the critical section before
3255         freeing the memory holding it.
3256
3257 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
3258
3259         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
3260         Fixes #476257.
3261
3262 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
3263
3264         * pedump.c (main): Call mono_marshal_init so pedump
3265         doesn't crash.
3266
3267 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
3268
3269         * loader.c (method_from_memberref): Properly fix #474271 and
3270         don't break the runtime bad.
3271
3272 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3273
3274         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
3275         (mono_domain_alloc0): Ditto.
3276
3277 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
3278
3279         * loader.c (method_from_memberref): Don't abort if the array
3280         method is not found. A regular loader failure is more informative
3281         and correct.
3282
3283         Fixes #474271.
3284
3285 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
3286
3287         *loader.c: Guard MonoImage::method_cache/methodref_cache
3288         using the image lock instead of the loader lock.
3289
3290         * metadata.h: Add comments about which fields are protected by
3291         the image lock.
3292
3293 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3294
3295         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
3296
3297         * generic-sharing.c (mono_method_construct_object_context): Remove the
3298         wrapper_type == NONE assert, it is not needed.
3299
3300 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
3301
3302         * reflection.c (clear_cached_object): New helper function.
3303         (mono_method_clear_object): New function to clear the cached reflection
3304         objects for a dynamic method.
3305
3306         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
3307         Partly fixes # 463323.
3308         
3309 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
3310
3311         * class.c:
3312         * loader.c:
3313         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
3314
3315 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
3316
3317         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
3318         take the image lock instead of the loader lock.
3319
3320         * metadata-internals.h: Export new functions.
3321
3322 2009-02-12  Miguel de Icaza  <miguel@novell.com>
3323
3324         * domain.c (app_config_parse): Remove another use of stat that is
3325         not necessary as g_file_get_contents already does the presence
3326         check. 
3327
3328 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
3329
3330         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
3331
3332         * marshal.c: Move the bstr handling code to cominterop.c.
3333
3334         * marshal.c: Remove some COM interop code missed previously.
3335
3336 2009-02-12  Miguel de Icaza  <miguel@novell.com>
3337
3338         More Paolo patches from the Wii port:
3339         
3340         * security.c: Remove ves_icall_System_Environment_get_UserName
3341         from here.
3342
3343         * icall.c: And put ves_icall_System_Environment_get_UserName
3344         here. 
3345
3346         * appdomain.c (mono_set_private_bin_path_from_config): Remove
3347         redundant call to stat that was only used to test for the file
3348         existence.   Patch from Paolo.
3349
3350         * gc.c (run_finalize): If COM is disabled, do not link in
3351         mono_marshal_free_ccw.
3352
3353         * generic-sharing.c: Use alloca.h here as well.
3354
3355 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
3356
3357         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
3358
3359 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
3360
3361         * cominterop.c cominterop.h: New files.
3362
3363         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
3364         function/typedefs which are needed by cominterop.c global.
3365
3366 2009-02-12  Mark Probst  <mark.probst@gmail.com>
3367
3368         * generic-sharing.c: Don't take the loader lock to guard image
3369         mempool allocs.
3370
3371 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
3372
3373         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
3374         called without the loader lock which is required to guard MonoImage:tokens.
3375
3376 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
3377
3378         * class.c:
3379         * metadata.c:
3380         * method-builder.c:
3381         * marshal.c:
3382         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
3383
3384 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
3385
3386         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
3387         Rework the code to use regular mono_image_alloc/0.
3388
3389         * loader.c: Rework the code to use regular mono_image_alloc/0.
3390
3391         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
3392
3393 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
3394
3395         * object-internals.h : Fixing a typo in the 
3396           MonoReflectionComVisibleAttribute struct.
3397
3398         * marshal.c (cominterop_com_visible): Check the implemented 
3399           interfaces for ComImport.
3400
3401         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
3402           assume that bools should be treated as VARIANTBOOLs.
3403
3404         * marshal.c (emit_marshal_boolean): Adding cases for 
3405           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
3406
3407         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
3408           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
3409
3410         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
3411           should be treated as VARIANTBOOLs.    
3412
3413         Code is contributed under MIT/X11 license.
3414
3415 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
3416
3417         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
3418         allocation with the image lock.
3419
3420 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
3421
3422         This patch is the last of a series to remove explicit reference of MonoImage::mempool
3423         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
3424
3425         * object.c: Add mono_string_to_utf8_image.
3426
3427         * object-internals.h: Export mono_string_to_utf8_image.
3428
3429         * reflection.c: Rework all explicit references to the the image mempool to go thought
3430         the mono_image_alloc set of functions.
3431
3432 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
3433
3434         This patch is the third of a series to remove explicit reference of MonoImage::mempool
3435         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
3436         and generics-sharing.c.
3437
3438         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
3439         as first argument. Note that this function remains broken as it doesn't perform locking around the
3440         mempool allocation.
3441
3442         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
3443
3444         * image.c: Add g_slist_append_image.
3445
3446         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
3447         the supplied image for allocation. Move code into mono_metadata_field_info_full.
3448
3449         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
3450         Fix all related code to do the same.
3451
3452         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
3453
3454         * metadata-internals.h: Fix the signatures.
3455
3456 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
3457
3458         This patch is the second of a series to remove explicit reference of MonoImage::mempool
3459         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
3460         and similar to work using MonoImage.
3461
3462         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
3463         MonoMemPool.
3464
3465         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
3466
3467         * class.c (mono_metadata_signature_deep_dup): Same.
3468
3469         * class.c (inflate_generic_type): Same.
3470
3471         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
3472
3473         * metadata.c (mono_metadata_signature_dup_full): Same.
3474
3475         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
3476         mono_metadata_signature_dup_full.
3477
3478         * metadata.c (mono_metadata_type_dup): Same.
3479
3480         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
3481
3482         * reflection.c: Same.
3483
3484         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
3485
3486         * metadata-internals.h: Fix the signatures.
3487
3488         * class-internals.h: Same.
3489
3490 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
3491
3492         This patch is the first of a series to remove explicit reference of MonoImage::mempool
3493         and use mono_image_alloc set of functions instead. 
3494
3495         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
3496         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
3497         of a MonoMemPool.
3498
3499         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
3500
3501         * class.c (g_list_prepend_mempool): Removed.
3502
3503         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
3504
3505         * image.c: Add g_list_prepend_image.
3506
3507         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
3508
3509         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
3510
3511
3512 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
3513
3514         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
3515         mono_image_unlock.
3516
3517         * image.c (mono_image_init): Init the lock field.
3518  
3519         * image.c (mono_image_init): Cleanup the lock field.
3520
3521         * image.c: Add mono_image_(un)lock functions.
3522
3523 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3524
3525         * class.c, class-internals.h: mono_method_get_context_general()
3526         combines the functionality of mono_method_get_context() and
3527         mini_method_get_context().
3528
3529         * generic-sharing.c, domain-internals.h:
3530         mono_method_construct_object_context() and
3531         mono_domain_lookup_shared_generic() moved from mini.
3532
3533         * icall.c (ves_icall_InternalInvoke): Handle the case where the
3534         method doesn't have the correct instantiation because it's shared
3535         generic code.  Fixes #473999.
3536
3537 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3538
3539         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
3540
3541         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
3542         
3543 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
3544
3545         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
3546
3547         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
3548
3549         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
3550         and recheck the cache for dups after it.
3551
3552         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
3553
3554         Fixes one of the deadlocks found in #473150.
3555
3556 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
3557
3558         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
3559           For Win32, add additional break conditions for accept.
3560
3561         Code is contributed under MIT/X11 license.
3562
3563 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3564
3565         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
3566         lazily initialize the native wrapper cache.
3567         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
3568         cache, since they are different from the normal wrappers.
3569
3570         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
3571
3572         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
3573         AOT compiled native wrappers.
3574
3575 2009-02-09  Geoff Norton  <gnorton@novell.com>
3576
3577         * appdomain.h:
3578         * security-core-clr.c: Allow enabling core-clr from the embedding
3579         API.
3580
3581 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3582
3583         * socket-io.c: when requesting all the local ips, if there are no
3584         interfaces up and running, MS returns 127.0.0.1.
3585
3586 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3587
3588         * mono-perfcounters-def.h: processor time is an inverse time.
3589         Fixes bug #468625.
3590
3591 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3592
3593         * socket-io.c: an empty host name returns the list of local IPs.
3594         Fixes bug #386637 part 1/2.
3595
3596 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3597
3598         * verify.c (mono_class_interface_implements_interface): Call
3599         mono_class_setup_interfaces ().
3600         (merge_stacks): Ditto.
3601
3602 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3603
3604         * class.c (mono_class_setup_interfaces): New function to lazily initalize
3605         klass->interfaces.
3606         (mono_generic_class_get_class): Don't initalize klass->interfaces.
3607         (mono_generic_class_get_class): Ditto.
3608
3609 2009-02-06  U-QUACK\miguel  <miguel@quack>
3610
3611         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
3612         they live in security.c
3613
3614         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
3615         another bit from Paolo's code.
3616
3617 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * object.c (build_imt_slots): Add a small optimization to avoid inflating
3620         methods which will be discarded by add_imt_builder_entry ().
3621
3622         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
3623         need to be boxed.
3624
3625         * loader.c: Add a statistics for the size of the memberref signature cache.
3626         
3627         * loader.c (find_cached_memberref_sig): New helper function.
3628         (cache_memberref_sig): Ditto.
3629
3630         * loader.c: Cache the result of parsing memberref signatures, since otherwise
3631         they will be parsed again for every generic instantiation, leading to unbounded
3632         memory growth.
3633
3634 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3635
3636         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
3637         parameters of generic methods.
3638
3639         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
3640         after the original method is copied to the inflated method.
3641         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
3642
3643         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
3644         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
3645
3646         * class.c metadata.c: Update after the changes above.
3647
3648 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
3649
3650         * metadata-verify.c: Simplified error handling and added
3651         section table validation.
3652
3653 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * class-internals.h (MonoClassExt): New structure containing rarely used
3656         fields of MonoClass.
3657         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
3658         through a new 'ext' field.
3659
3660         * class.c (mono_class_alloc_ext): New helper function to allocate 
3661         class->ext.
3662
3663         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
3664
3665 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3666
3667         * object.c (mono_object_get_virtual_method): Properly inflate
3668         generic methods.  Fixes #472692.
3669
3670 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
3671
3672         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
3673         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
3674         for the parent type, the created type must be ready to be used on a generic
3675         instantiation.
3676         We fill this_arg/byval_arg if the parent is a generic instance to make sure
3677         we won't have duplicated entries in generic_inst_cache.
3678
3679         Fixes #469553.
3680
3681 2009-02-05  Miguel De Icaza  <miguel@novell.com>
3682
3683         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
3684         replace with plain BSD per the comments on the bug MONO77637.
3685
3686 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3687
3688         * class.c (mono_class_get_generic_class): New accessor function.
3689         (mono_class_get_generic_container): Ditto.
3690
3691         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
3692         fields, similar to the ones in MonoMethod.
3693
3694         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
3695         (mono_class_create_from_typedef): Set klass->is_generic if needed.
3696
3697         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
3698         
3699         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
3700         the same information as element_class->byval_arg.
3701
3702         * class.c reflection.c: Remove references to class->byval_arg.
3703
3704         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
3705         klass->enum_basetype directly.
3706
3707         * verify.c metadata.c object.c icall.c reflection.c: Use 
3708         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
3709         directly.
3710
3711 2009-02-04  Miguel de Icaza  <miguel@novell.com>
3712
3713         * icall-def.h: Remove internal calls for sockets when
3714         DISABLE_SOCKET is defined, file system writing features when the
3715         OS only support reading and not writing data and Policy support if
3716         the Policy is disabled.
3717         
3718         * image.c (do_mono_image_open): Apply Paolo's patches for using
3719         mono_file_map_ APIs here.
3720
3721         * assembly.c: Add support for platforms to avoid prefix
3722         auto-detection. 
3723
3724 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3725
3726         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
3727         warning.
3728
3729         * class.c (mono_class_inflate_generic_class): New helper function.
3730
3731         * class.c: Use mono_class_inflate_generic_class in a few places. Add
3732         statistics for inflated methods/classes.
3733
3734         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
3735
3736         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
3737         the call is made from Delegate.CreateDelegate () for the invoke method of
3738         a delegate.
3739
3740         * loader.c: Add a statistics for the memory occupied by inflated signatures.
3741
3742         * metadata.c (mono_metadata_signature_size): New helper function.
3743
3744         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
3745         generic instances.
3746
3747         * metadata.c (inflated_method_in_image): Avoid calling 
3748         mono_method_signature () if the method does not already have a signature.
3749
3750 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
3751
3752         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
3753         valuetype is compatible with target type, check by inheritance as a
3754         VT is not really compatible with System.ValueType, for example.
3755
3756         * verify.c (do_invoke_method): Improve error message.
3757
3758         * verify.c (do_box_value): If boxing a nullable, use the type argument
3759         on stack instead.
3760
3761         * verify.c (do_newobj): Improve error message.  
3762
3763         Fixes #469549.
3764
3765 2009-02-03  Miguel de Icaza  <miguel@novell.com>
3766
3767         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
3768
3769 2009-02-03  Mark Probst  <mark.probst@gmail.com>
3770
3771         * generic-sharing.c: Don't hold domain lock when calling
3772         instantiate_other_info().  Fixes #471958.
3773
3774         * domain-internals.h, loader.c: Describe locking policy of domain
3775         lock vs loader lock.
3776
3777 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
3778
3779         * verify.c (mono_delegate_signature_equal): Make it possible to check
3780         first-arg-bound delegates to static method.
3781
3782         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
3783         static methods with the first arg bound.
3784
3785         Fixes #469529.
3786
3787 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
3788
3789         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
3790         errors.
3791
3792         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
3793         under strict mode. Any type, when boxed can be seen as a reference type.
3794
3795         Fixes #469528.
3796
3797 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
3798
3799         * object.h: The lower bound of an array is a signed integer value.
3800         Introduce mono_array_lower_bound_t typedef. It should be used instead of
3801         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
3802
3803         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
3804         calculate the upper bound.
3805         
3806         Fixes #471252.
3807
3808 2009-02-02  Miguel de Icaza  <miguel@novell.com>
3809
3810         From Paolo's work, refactored, cleared up:
3811         
3812         * threadpool.c, icall.c: ifdef code that requires a working socket
3813         stack.
3814
3815         * metadata.c (mono_metadata_field_info): Do not attempt to return
3816         a value from a function declared as void.
3817
3818         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
3819         from the console stack.
3820
3821         * assembly.c: use strrchr instead of rindex.
3822
3823         * class.c, object.c, marshal.c, icall.c, reflection.c: include
3824         alloca.h on systems that have it.
3825
3826         * environment.c: Avoid code that uses stuff from
3827         HAVE_SYS_UTSNAME_H
3828         
3829         * appdomain.c: Include sys/time.h.
3830
3831         * console-io.c: include sys/ioctl.h if it is available.
3832
3833 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3834
3835         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
3836
3837         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
3838         the method builder.
3839
3840         * marshal.c: Set mb->skip_visibility instead of setting it on the method
3841         after it was created and cached, as the later is not thread safe.
3842         
3843 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3844
3845         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
3846         called while the debugging module is not initialized. Fixes #471669.
3847
3848 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
3849
3850         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
3851
3852         Fixes #471255.
3853
3854 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3855
3856         * generic-sharing.c (lookup_or_register_other_info): Make sure the
3857         loader lock is not taken while the templates lock is held.  Fixes
3858         #471089.
3859
3860 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3861
3862         * metadata.c (type_in_image): Added a check to fix a monodis
3863         crash.
3864
3865 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
3868         nullable arguments.
3869
3870         * object.c (mono_runtime_invoke_array): Ditto.
3871         
3872         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
3873         freeing wrappers of dynamic methods.
3874
3875         * loader.c (mono_free_method): Call it. Fixes #463323.
3876         
3877         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
3878         methods taking vtype/byref arguments, to fix yet another bug caused by
3879         the sharing of runtime invoke wrappers. Partly fixes #471259.
3880
3881 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3882
3883         * debug-mono-symfile.c (check_line): Return NULL instead of returning
3884         <first file in file table>:1 when the IL offset does not have an associated
3885         line number.
3886
3887 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3888
3889         * mono-debug.c (mono_debug_lookup_locals): New function to return local
3890         variable info for a method.
3891
3892         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
3893         
3894 2009-01-30  Jb Evain  <jbevain@novell.com>
3895
3896         * pedump.c: reuse code from monodis to make sure pedump honors
3897         MONO_PATH, which is needed to verify net_2_1 assemblies.
3898
3899 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
3902         there is no line number info.
3903
3904 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
3905
3906         Avoid some MonoType allocations
3907         * reflection.c (mono_reflection_initialize_generic_parameter):
3908         Reuse MonoType from param->pklass rather than allocating one.
3909         (mono_dynamic_image_free): Update to changes.
3910
3911 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
3912
3913         Rearrange some code to improve consistency
3914         * reflection.c (mono_reflection_setup_generic_class): Move body ...
3915         (mono_reflection_initialize_generic_parameter): ... here.
3916
3917 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
3918
3919         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
3920         with type constraints as an experiment.
3921
3922         * boehm-gc.c (on_gc_notification): Update mono_stats.
3923
3924 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
3925
3926         Avoid some allocations
3927         * class-internals.h (_MonoGenericInst::type_argv): Convert from
3928         pointer to tail array to avoid extra allocation.
3929         * metadata.c (free_generic_inst): Update to changes.
3930         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
3931         on-stack struct.
3932
3933 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
3934
3935         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
3936         return TRUE if the two type objects are the same.
3937
3938 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3939
3940         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
3941         (mono_class_native_size): Use klass->marshal_info->min_align instead of
3942         klass->min_align, since klass->min_align contains the managed alignment,
3943         while the native alignment can be different, like for longs on x86.
3944         Fixes #469135.
3945
3946         * class-internals.h (MonoMarshalType): Add a min_align field.
3947
3948 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
3949
3950         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
3951         the 1.0 format.
3952
3953 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3954
3955         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
3956         some comments about the usage of the used_regs field.
3957
3958         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
3959         Fixes #469217.
3960
3961 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3962
3963         * appdomain.c: return NULL instead of throwing FileNotFoundException
3964         when LoadAssembly() fails.
3965
3966 2009-01-23  Mark Probst  <mark.probst@gmail.com>
3967
3968         * metadata.c (mono_metadata_generic_param_equal): Only compare the
3969         image if the owner is NULL.  Fixes the AOT failures.
3970
3971 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
3972
3973         * metadata.c (mono_metadata_load_generic_params): Initialize the 
3974         MonoGenericParam structure using memset so the image field is initialized
3975         as well.
3976
3977 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
3978
3979         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
3980         a plain store.
3981
3982 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3983
3984         * class.c (mono_class_setup_vtable_general): In the generic instance
3985         optimization, set method->slot for abstract virtual methods. Fixes part of
3986         #467834.
3987
3988 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
3989
3990         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
3991         which signals that the unloading has started but all appdomain services must
3992         remain operational.
3993
3994         * appdomain.c (mono_domain_unload): The initial state for unloading now
3995         is unloading_start and we switch to unloading after the managed call to
3996         AppDomain::DomainUnload has finished.
3997
3998         The new unloading state has to be created because managed code in the
3999         DomainUnload event can depend on things like the threadpool still working.
4000         The domain must remain fully functional while the event executes.
4001
4002         This shown as an issue due to Process::WaitForExit, which waits for
4003         async reads of stdout and stderr to complete. Since those are processed
4004         in the threadpool the code deadlocks because the DomainUnload callback 
4005         waits for the async read finished event, which should have been set by a
4006         threadpool job but has been discarded due to the domain been in unload
4007         state.
4008
4009 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4010
4011         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
4012         image must match.
4013
4014 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4015
4016         * reflection.c (resolve_object): For fields, inflate the class and
4017         then get the field in the inflated class.
4018
4019 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4020
4021         * object-internals.h (struct _MonoException): Added a comment
4022         explaining the new use of trace_ips.
4023
4024 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4025
4026         * generic-sharing.c (inflate_other_data): Inflate array methods
4027         correctly.
4028
4029         * loader.c, class-internals.h: Rename search_in_array_class() to
4030         mono_method_search_in_array_class() and make it non-static.
4031
4032 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4033
4034         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
4035         Hopefully fixes #458168.
4036
4037 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
4038
4039         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
4040         as it is performed elsewhere.
4041
4042         Code is contributed under MIT/X11 license
4043
4044 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
4045
4046         * mono-perfcounters-def.h: Add counters for asp.net requests total and
4047         requests queued.
4048         * object.c (mono_raise_exception): Increment the exceptions total
4049         counter when an exception is thrown.
4050         * class-internals.h: Add a location for storing the total number of
4051         asp.net requests served.
4052         * mono-perfcounters.c: Implement update support for asp.net counters
4053         from the class libraries. Implement read support for asp.net counters
4054         and exceptions total counter.
4055
4056 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4057
4058         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
4059         accessing klass->methods. Fixes #467385.
4060
4061 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4062
4063         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
4064         for byval arguments without an [Out] attribute. Fixes #467212.
4065
4066         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
4067         Fix compilation under android.
4068         
4069         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
4070         processed, scan them directly after they are copied, to achieve better locality
4071         and cache usage.
4072
4073         * socket-io.c: Applied patch from Koushik Dutta
4074         (koush@koushikdutta.com). Disable IPV6 when running under android.
4075
4076 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * icall.c (ves_icall_InternalExecute): Add write barriers.
4079
4080         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
4081         the GC code.
4082
4083         * sgen-gc.c: Implement write barriers in IL code.
4084
4085 2009-01-17  Geoff Norton  <gnorton@novell.com>
4086
4087         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
4088
4089 2009-01-17  Geoff Norton  <gnorton@novell.com>
4090
4091         * image.c: When unloading the image->references table, there can be gaps
4092         in it.  Ensure that we iterate every entry to avoid leaking assembly references
4093         when unloading an appdomain.
4094
4095 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
4096
4097         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
4098         speed up ptr-in-nursery checks.
4099
4100         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
4101         threads_lock () to prevent deadlocks.
4102
4103         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
4104         does not need to be scanned during minor collections, since writes to it
4105         must use write barriers.
4106
4107 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
4108
4109         * metadata-verify.c: Add pe nt header verification.
4110         
4111 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
4112
4113         * gc.c: Fix a few warnings when using SGEN.
4114
4115 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
4116
4117         * metadata-verify.c: Add pe optional header verification.
4118
4119 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
4120
4121         * sgen-gc.c: Add support for user defined marker functions, used by
4122         MonoGHashTable to avoid registering a GC root for every hash node.
4123
4124 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
4125
4126         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
4127         non-pinned roots into separate hashes to avoid having to traverse them
4128         in functions which are only interested in one kind.
4129
4130 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
4131
4132         * metadata-verify.c: Add pe header machine field verification.
4133         
4134 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
4135
4136         * metadata-verify.c: Add pe header size verification.
4137
4138 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
4141         using the GC, they don't contain references.
4142
4143         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
4144
4145 2009-01-13  Geoff Norton  <gnorton@novell.com>
4146
4147         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
4148         AppDomains created on the native side can be cleaned up on the native side.
4149
4150 2009-01-13  Geoff Norton  <gnorton@novell.com>
4151
4152         * appdomain.c: Ensure that we call mono_context_init for the embedding api
4153         as well as the managed api.
4154
4155 2009-01-13  Geoff Norton  <gnorton@novell.com>
4156
4157         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
4158         with a MonoAppDomain initialized against it.
4159
4160 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4161
4162         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
4163         
4164         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
4165
4166         * marshal.c: Avoid setting the exception clauses after a method has been entered 
4167         into the wrapper caches. Fixes #465700.
4168
4169         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
4170         method builder.
4171         (mono_mb_create_method): Set the clauses from the method builder.
4172
4173 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
4174
4175         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
4176         Patch from Makoto Kishimoto.
4177
4178 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
4181         encoding them as ROOT_DESC_COMPLEX.
4182         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
4183
4184 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
4185
4186         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
4187         no longer point to the nursery.
4188
4189         * sgen-gc.c: Add a few comments/FIXMEs.
4190         
4191         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
4192
4193         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
4194         initialization of the various _method variables thread safe. Fixes
4195         #465377.
4196
4197 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4198
4199         * domain.c, domain-internals.h: Remove the shared_generics_hash
4200         and its lookup functions.
4201
4202 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
4203
4204         * socket-io.c:  Fixing the MSVC build. 
4205
4206         Code is contributed under MIT/X11 license.
4207
4208 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
4209
4210         * metadata-verify.c: Add pe header watermark verification.
4211
4212 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
4213
4214         * metadata-verify.c: Add lfanew verification.
4215
4216 2009-01-12  Jb Evain  <jbevain@novell.com>
4217
4218         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
4219         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
4220
4221 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
4222
4223         * socket-io.c: Fix the build.
4224
4225         * environment.c: Fix an #ifdef.
4226
4227 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4228
4229         * threadpool.c (async_invoke_thread): Handle the wait function returning
4230         WAIT_IO_COMPLETION as well.
4231         (async_invoke_io_thread): Ditto.
4232
4233 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
4234
4235         * threads.c: Fixing the Windows build.
4236
4237         Code is contributed under MIT/X11 license.
4238
4239 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4240  
4241         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
4242         interrupt a wait.
4243         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
4244         the thread to wait again.
4245
4246 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
4247
4248         * metadata-verify.c: Initial skeleton of the metadata verifier.
4249
4250         * pedump.c: Add support for the metadata verifier.
4251
4252         * verify-internal.h: Export the whole assembly metadata verifier function.
4253
4254 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
4255
4256         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
4257
4258 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * Makefile.am: Upgrade dtrace-prelink.sh location.
4261
4262 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
4263
4264         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
4265         well. Otherwise the shutdown deadlock that happens on unix will can happen
4266         as well.
4267         If the main thread code finishes too fast it's possible that the finalizer
4268         thread won't have executed yet, won't record itself as the finalizer thread
4269         and the shutdown sequence will wait on it forever.
4270
4271 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
4272
4273         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
4274         with MSVC.
4275
4276 2009-01-08  Miguel de Icaza  <miguel@novell.com>
4277
4278         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
4279         Robert Jordan for pointing this out.
4280
4281 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
4282
4283         * icall.c
4284         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
4285         ves_icall_System_IO_DriveInfo_GetDriveType.
4286
4287 2009-01-07  Miguel de Icaza  <miguel@novell.com>
4288
4289         * icall.c: Wrap calls to mono_strtod in CriticalSection
4290         invocations when using eglib, to work around #464316.
4291
4292 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
4293
4294         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
4295         return value of GetCurrentDirectory to never access unitialized memory.
4296
4297 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
4298
4299         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
4300         return value of GetCurrentDirectory and expand the buffer if needed.
4301
4302         Fixes #459094.
4303
4304 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
4305
4306         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
4307           Adding a call to mono_init_com_types.
4308
4309         Code is contributed under MIT/X11 license.
4310
4311 2009-01-07  Geoff Norton  <gnorton@novell.com>
4312
4313         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
4314         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
4315         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
4316         be the value of the ip buffer.
4317
4318 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
4319
4320         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
4321         interfaces_packed here.
4322
4323         Fixes part of #463294.
4324
4325 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
4326
4327         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
4328
4329         Fixes part of #463294.
4330
4331 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
4332
4333         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
4334         is a boxed complex as well.
4335
4336         Fixes part of #463294.
4337
4338 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
4339
4340         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
4341         control if a methodspec should be created for the generic method definition from external assemblies.
4342         Caching of methodspec is done using the handleref hash table.
4343
4344         Fixes #462592.
4345
4346 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
4347
4348         * loader.c (find_method): When searching the interfaces of a class
4349         check the transitive closure of implemented interfaces.
4350
4351         Fixes #463303.
4352
4353 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
4354
4355         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
4356         
4357 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
4358
4359         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
4360         interfaces calculation to fill_valuetype_array_derived_types.
4361
4362         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
4363         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
4364         for example.
4365
4366         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
4367         interfaces for valuetypes if needed.    
4368
4369         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
4370         for their basetype as well. Types are array expanded if rank is > 0.
4371
4372         Fixes #400716.
4373
4374 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
4375
4376         * socket-io.h : Changing the signature of
4377           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
4378           the blocking state.
4379
4380         * icall-def.h :  Changing the signature of
4381           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
4382
4383         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
4384           For Windows only.  Avoid blocking when calling accept by
4385           querying for a connection via select.  The loop also queries
4386           the thread state every 1000 micro seconds for the thread
4387           stop state.  This will avoid the process hanging on shutdown
4388           when using a TcpChannel that is never connected to.
4389
4390         Code is contributed under MIT/X11 license.
4391
4392 2008-12-30  Marek Safar  <marek.safar@gmail.com>
4393
4394         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
4395
4396 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
4397
4398         * class.c (get_implicit_generic_array_interfaces): Extract common
4399         code to a helper function making it a lot easier on the eyes.
4400
4401 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
4402
4403         * class.c (get_implicit_generic_array_interfaces): If the internal
4404         enumerator is an interface inflate System.Object instead of itself.
4405
4406         Fixes #461261.
4407
4408 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
4409
4410         * object.c (mono_runtime_invoke_array): Don't assert with
4411         byref nullable types.
4412
4413         * marshal.c (mono_marshal_get_runtime_invoke): To handle
4414         byref nullables we unbox the object and store it on the
4415         stack. 
4416         We can't use the boxed object since it is the T of Nullable<T>
4417         and the boxed representation of a nullable it's underlying type
4418         or null.
4419         We could cheat and create a boxed nullable and use the same
4420         machinery of other byref VTs but this feels like a hack and
4421         using the stack has the bonus of reducing heap pressure.
4422
4423         Fixes #461941.
4424
4425 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
4426
4427         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
4428         return value.
4429
4430         Fixes #461867.
4431
4432 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
4433
4434         * icall-def.h : Adding an internal call definition for 
4435           System.Environment.internalBroadcastSettingChange.
4436
4437         * icall.c : Adding a Windows only implementation to broadcast a 
4438           WM_SETTINGCHANGE when an environment variable has changed.
4439
4440         Code is contributed under MIT/X11 license.
4441
4442 2008-12-19  Mark Probst  <mark.probst@gmail.com>
4443
4444         * class.c, class-internals.h: Made
4445         mono_class_has_parent_and_ignore_generics() non-static.
4446
4447 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
4448
4449         * image.c: deal with the mmap failing when loading an image.
4450
4451 2008-12-17  Geoff Norton  <gnorton@novell.com>
4452
4453         * threadpool.c: Ensure that the io_queue_lock is initialized
4454         in all circumstances, as we always attempt to cleanup against it.
4455
4456 2008-12-17  Miguel de Icaza  <miguel@novell.com>
4457
4458         * icall.c (ves_icall_System_Environment_get_Platform): For
4459         compatibility reasons for existing client code we will keep
4460         returning 4 for a while.   
4461
4462         For how long will depend on the documentation being updated, and
4463         for us to give client code a chance to be updated.
4464
4465         This reverts the original decison on #433108 since we did not
4466         catch roughly 33 instances of the broken code in our own source
4467         code base, we did not catch failures on the buildbots, and QA did
4468         not bring this as a problem.
4469
4470         Only today I found some customer's code breaking due to our own
4471         class libraries not being fully updated and tracked it down to
4472         this change.  I am reverting it because if we could not even get
4473         our story straight in our own code base, how can we hope that our
4474         end user code be fixed?
4475
4476         As of this morning, our Wiki page that documents how to detect
4477         Unix had not been fixed.    
4478
4479 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
4480
4481         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
4482
4483         * class.c (mono_class_get_fields): Handle loading errors.
4484
4485 2008-12-12 Mark Mason <mmason@upwardaccess.com>
4486
4487         * 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.
4488         
4489 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4490
4491         * mono-perfcounters.c: avoid warning.
4492
4493 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
4494
4495         * reflection.c (ensure_runtime_vtable): Work on generic instances and
4496         make sure all interfaces have MonoClass::interface_id set.
4497
4498         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
4499         method table is property set.
4500
4501 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
4502
4503         * class.c: New function mono_class_setup_interface_id that setup
4504         MonoClass::interface_id if needed.
4505
4506         * class-internals.h: Export new function.
4507
4508 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
4509
4510         * class.c: Add code to sanity check the vtable after setup_vtable_general
4511         has done it's work.
4512
4513 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4514
4515         * icall.c: make Assembly.GetExecutingAssembly work properly when
4516         reflection is used to invoke the method.
4517         Bug #321781 fixed.
4518
4519 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4520
4521         * metadata/generic-sharing.c: Look for constraints in all type
4522         arguments, not just the first one.
4523
4524 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4525
4526         * appdomain.c: return the correct CodeBase for an Assembly instance
4527         that was loaded from the shadow-copy directories.
4528         Bug #458190 fixed.
4529
4530 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4531
4532         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
4533
4534         * sgen-gc.c (check_object): New debugging helper function.
4535
4536         * object.c: Fix calls to mono_value_copy_array ().
4537
4538 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
4539
4540         * class.c (mono_class_setup_fields): If working on an inflated class
4541         first check if the generic definition did init with success.
4542
4543         Fixes #445361.
4544
4545 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
4546
4547         pedump.c (main): Fix a warning.
4548
4549 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
4550
4551         * object-internals.h : Adding a definition for 
4552           MonoReflectionComVisibleAttribute.
4553
4554         * marshal.c (cominterop_com_visible) :  Method added to check the 
4555           ComVisible attribute of a class.
4556
4557         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
4558           cominterop_raise_hr_exception added to consolidate common code 
4559           to raise hr exceptions.
4560
4561         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
4562           if a managed class should support IDispatch.
4563
4564         * marshal.c 
4565           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
4566           Added additional checks for managed object when getting 
4567           an IDispatch interface.
4568
4569         Code is contributed under MIT/X11 license.
4570
4571 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
4572
4573         pedump.c (main): Handle mono_get_method () returning NULL. 
4574
4575 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * marshal.h: Fix a warning.
4578
4579 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4580
4581         * marshal.c : Adding cominterop_release_all_rcws to release all
4582           runtime callable wrappers held by the runtime.
4583
4584         * marshal.h : Adding declaration for cominterop_release_all_rcws.
4585           
4586         Code is contributed under MIT/X11 license.
4587
4588 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4589
4590         * metadata.c (mono_image_alloc_lock): New helper function.
4591         (mono_image_alloc0_lock): Ditto.
4592
4593         * metadata.c: Use the alloc_lock () helper functions for allocating
4594         memory from the image mempool.
4595
4596 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * class.c (mono_class_from_generic_parameter): Document it's
4599         locking behavior. Fix double checked locking here, we stored in
4600         param->pklass a partially initialized MonoClass and no membar was used.
4601
4602 2008-12-05  Marek Habersack  <mhabersack@novell.com>
4603
4604         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
4605         (3) functions are present in the C library use them to do the
4606         job. If they are absent, make sure that the sum of int_part and
4607         dec_part is rounded before returning. This is necessary due to the
4608         division of dec_part by the power of 10 before the final addition
4609         is performed - if the result is not rounded in some cases it will
4610         yield invalid results.
4611
4612 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
4613
4614         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
4615         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
4616         instruction instead of a pointer constant.
4617
4618 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
4619
4620         * loader.c (mono_method_get_header): Do most of the work outside the
4621         loader lock, to avoid assembly load hook deadlocks.
4622
4623         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
4624         (mono_metadata_parse_type_full): Ditto.
4625
4626 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
4627
4628         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
4629         Make the stack depth fixed. Ensure proper argument passing to the backtrace
4630         funtions. Finally, use a lock to produce well ordered output.
4631
4632         The lock looks silly, as all calls to the corlib mempool should be guarded
4633         with the loader lock, but for some reason this fact doesn't help. 
4634
4635         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
4636
4637 2008-12-02  Mark Probst  <mark.probst@gmail.com>
4638
4639         * socket-io.c: 64 bit big-endian fixes.
4640
4641 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
4642
4643         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
4644         targets that require strict compatibility between the types.
4645
4646         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
4647         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
4648         Kill the strict argument and create a new one valuetype_must_be_boxed.
4649
4650         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
4651         state that all valuetypes must be boxed.
4652
4653         Fixes #448560.
4654
4655 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
4656
4657         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
4658         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
4659
4660         Contributed under MIT/X11 license.
4661
4662 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
4663
4664         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
4665         the inflate_generic_type machinery should handle it.
4666
4667         This avoids a crash when the field's flags is zero and it's type is
4668         a primitive.
4669         What happens is that mono_metadata_parse_type_full will see that opt_attrs
4670         is zero and will return one of the cached built-in primitive types. Since
4671         those types live in read-only memory, the code that copies it crashes.  
4672
4673 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4674
4675         * object.c: Don't put function descriptors into generalized IMT
4676         thunks.
4677
4678 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4679
4680         * class.c: Enable generic code sharing on PPC64.
4681
4682 2008-11-27  Mark Probst  <mark.probst@gmail.com>
4683
4684         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
4685         from mini/mini.c.
4686
4687         * generic-sharing.c: Allocate the method template slists from the
4688         image mempool so it doesn't leak.
4689
4690 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
4691
4692         * class.c (generic_array_methods): Release the linked list.
4693
4694 2008-11-27  Mark Probst  <mark.probst@gmail.com>
4695
4696         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
4697         invocation to g_utf16_to_utf8().
4698
4699 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4700
4701         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
4702         arguments on big endian archs.
4703
4704 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4705
4706         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
4707         the type name (test added in corlib).
4708
4709 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4710
4711         * pedump.c: initialize perf. counters. Fixes a segv.
4712
4713 2008-11-25  Martin Baulig  <martin@ximian.com>
4714
4715         * mono-debug-debugger.c
4716         (mono_debugger_runtime_invoke): Return the exception object if an
4717         exception was thrown.  Visual Studio displays the exception object
4718         in the locals window.
4719
4720 2008-11-24  Mark Probst  <mark.probst@gmail.com>
4721
4722         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
4723         ftnptr.
4724
4725 2008-11-24  Mark Probst  <mark.probst@gmail.com>
4726
4727         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
4728         MONO_TYPE_U are sizeof (gpointer), too.
4729
4730 2008-11-24  Mark Probst  <mark.probst@gmail.com>
4731
4732         * marshal.c (mono_type_native_stack_size): Fixed size and
4733         alignment for reference types.
4734
4735 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4736
4737         * class.c (mono_class_generic_sharing_enabled): Disable generic
4738         code sharing for PPC64.
4739
4740 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
4741
4742         * icall.c (mono_method_get_equivalent_method): Make sure
4743         method->klass->methods is inited before looping over it.
4744
4745 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
4746
4747         * object.c: when calling ExecuteAssembly in a newly created domain,
4748         the configuration file and application base are already set up.
4749         Bug #446353 take 2 fixed.
4750
4751 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
4752
4753         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
4754         Fixes #444715. Fix a warning.
4755
4756 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
4757
4758         * appdomain.c: write the full path of the assembly to the .ini file
4759         created when "shadow-copying"
4760         Bug #446353 fixed.
4761
4762 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
4765         if signature==FALSE.
4766
4767 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4768
4769         * marshal.h : Fix the cygwin build.
4770            marshal.c:12442: undefined reference to `_IID_IMarshal'
4771           
4772         Code is contributed under MIT/X11 license.
4773
4774 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4775
4776         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
4777           free threaded marshaler when QueryInterface is called on a COM callable
4778           wrapper requesting the IMarshal interface.
4779           
4780         Code is contributed under MIT/X11 license.
4781
4782 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
4785
4786         * reflection.c (mono_type_get_object): Special case the very common
4787         void type.
4788
4789         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
4790         hold typeof(void).
4791
4792 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
4793
4794         * process.h : Adding method declaration for
4795           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
4796           
4797         * process.c : Adding implementation for
4798           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
4799           
4800         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
4801           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
4802
4803         Code is contributed under MIT/X11 license.
4804
4805 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
4806
4807         * appdomain.c (unload_thread_main): Clean up threadpool by
4808         calling mono_thread_pool_remove_domain_jobs.
4809
4810         * domain-internals.h (struct _MonoDomain): Add new fields to
4811         help coordinate the cleanup of the threadpool.
4812
4813         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
4814         that cleans up the threadpool of all jobs associated with an appdomain.
4815         It does that by cleaning up the queues and making sure all active
4816         threads are accounted.
4817
4818         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
4819         unloaded or in the process of. Take this is such way that there is
4820         no race condition between another thread starting the unload and the
4821         current thread acknowledging it.
4822
4823         * threadpool.c (async_invoke_thread): Same.
4824
4825         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
4826         firing the new thread.
4827
4828         * threadpool.c (start_tpthread): Same.
4829
4830         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
4831
4832         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
4833
4834 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
4835
4836         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
4837         Add support for DuplicateHandle.
4838         
4839         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
4840         Add support for DuplicateHandle.
4841         
4842         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
4843         Add support for DuplicateHandle.
4844
4845         Code is contributed under MIT/X11 license.
4846
4847 2008-11-06  Mark Probst  <mark.probst@gmail.com>
4848
4849         * class-internals.h: Make min_align into a whole byte.
4850
4851         * class.c: Set min_align for SIMD types to 16.
4852
4853 2008-11-05  Geoff Norton  <gnorton@novell.com>
4854
4855         * attach.c: Default the attacher to enabled for all cases including
4856         embedded.
4857
4858 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
4859
4860         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
4861         change r117650.
4862
4863 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4864
4865         * monitor.c, monitor.h: New function for querying offsets of
4866         members of MonoThreadsSync.
4867
4868 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4869
4870         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
4871         to speed up this function and to avoid the boundless memory growth caused by
4872         the signature_dup () calls.
4873
4874 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4875
4876         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
4877         wrapper.
4878
4879         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
4880         by 1 bit.
4881
4882         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
4883
4884 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
4885
4886         * appdomain.c:
4887         * domain-internals.h: made mono_set_private_bin_path_from_config()
4888         "internal".
4889         * object.c: call the above function after setting the configuration
4890         file path for the root domain.
4891         Fixes bug #314478.
4892
4893 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
4894
4895         * assembly.c: when the assembly is loaded from an absolute path, end
4896         basedir with a directory separator.
4897         Bug #440781 fixed.
4898
4899 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4900
4901         * monitor.c (mono_monitor_get_fast_enter_method): If
4902         CompareExchange is not available, don't create the fastpath
4903         instead of asserting.  (The method is missing in the 1.1 profile.)
4904
4905 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4906
4907         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
4908
4909         * monitor.c, monitor.h: Code for generating Monitor.Enter and
4910         Monitor.Exit IL fastpaths.
4911
4912 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4913
4914         * class.c (mono_class_create_from_typedef): Added Vector2ul.
4915
4916 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4917
4918         * class.c (mono_class_create_from_typedef): Added Vector2l.
4919
4920 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4921
4922         * class.c (mono_class_create_from_typedef): Added Vector2d.
4923
4924 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4925
4926         * appdomain.c: translate \ into / for cache_path.
4927         * domain-internals.h: new mono_is_shadow_copy_enabled().
4928         * icall.c: (fill_reflection_assembly_name) do the same path
4929         manipulations that get_code_base does.
4930         (get_code_base) use mono_is_shadow_copy_enabled.
4931
4932 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
4933
4934         * appdomain.c: shadow-copied assemblies go to CachePath +
4935         ApplicationName when both are set. DynamicBase has nothing to do with
4936         shadow copies.
4937         Bug #406877 fixed.
4938
4939 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4940
4941         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
4942         STANDALONESIG table.
4943
4944         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
4945         standalone signatures.
4946
4947         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
4948         comparison code: instead of comparing the signatures using a custom
4949         equals function, transform them to a common signature and compare that. This
4950         works better with AOT.
4951
4952 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
4953
4954         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
4955
4956         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
4957         call for generic instances.
4958         (mono_class_setup_properties): Call setup_properties () before accessing
4959         gklass->properties.
4960
4961         * class.c (mono_class_get_virtual_methods): New helper function to iterate
4962         over the virtual methods of a class using metadata if possible, avoiding the
4963         creation of MonoMethod's for non-virtual methods.
4964         
4965         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
4966         get_virtual_methods () to iterate over the virtual methods of classes.
4967
4968 2008-10-25  Martin Baulig  <martin@ximian.com>
4969
4970         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
4971
4972 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4973
4974         * class.c (mono_class_create_from_typedef): Added Vector4i.
4975
4976 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4977
4978         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
4979         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
4980         special-casing applies to eliminate the call completely.
4981
4982 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4983
4984         * class.c (mono_class_create_from_typedef): Added Vector8s.
4985
4986 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4987
4988         * class.c (mono_class_create_from_typedef): Added Vector16sb.
4989
4990 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
4991
4992         * icall.c: get rid of annoying warning.
4993
4994 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
4995
4996         * threadpool.c: in 1.x, if you change the background status of the
4997         threadpool thread, it's not reset.
4998         Remove unnecessary calls to SetState.
4999
5000 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
5001
5002         * threadpool.c: asynchronously create a set of idle threads upon first
5003         use of the threadpool. SetMinThreads will now start the appropriate
5004         number of idle threads if they are not already running. The default is
5005         1 threadpool thread per CPU. Increased the maximum number of threads
5006         per CPU to 10.
5007
5008 2008-10-22  Martin Baulig  <martin@ximian.com>
5009
5010         Revert r116521 from Zoltan, it breaks the debugger:
5011
5012         * class.c (mono_class_get_virtual_methods): New helper function to iterate
5013         over the virtual methods of a class using metadata if possible, avoiding the
5014         creation of MonoMethod's for non-virtual methods.
5015         
5016         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
5017         get_virtual_methods () to iterate over the virtual methods of classes.
5018
5019 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
5020
5021         * threads.c: when creating a threadpool thread, set its state to
5022         'background'.
5023         * threadpool.c: reset the background state of a threadpool thread
5024         after finishing each work item
5025         Bug #437888 fixed.
5026
5027 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
5028
5029         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
5030         
5031         * class.c (mono_class_setup_vtable_general): Add an optimized version for
5032         generic instances which works by inflating the methods in the container
5033         class's vtable.
5034
5035         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
5036         variant which doesn't make a copy if no inflation was done.
5037         (mono_class_setup_fields): Use it.
5038
5039         * metadata.c (mono_metadata_get_shared_type): New helper function to
5040         return a shared instance of a given MonoType.
5041
5042         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
5043         a copy of most non-generic types.
5044
5045 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5046
5047         * threadpool.c: remove one more GetSystemInfo () call.
5048
5049 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
5050
5051         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
5052         use the code in mono-proclib.h to get processor information.
5053
5054 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
5055
5056         * appdomain.c: fixed the logic that determines whether assemblies in a
5057         directory are "shadow-copied" or not. Bug #433483 fixed.
5058
5059 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
5060
5061         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
5062         warning.
5063
5064 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5065
5066         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
5067         returning a vtype.
5068
5069         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
5070         reflection.c: Use mono_field_get_name () for accessing a field's name.
5071
5072         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
5073         class.c
5074
5075         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
5076         field.
5077
5078         * loader.c (find_method_in_class): Reenable the metadata optimization by
5079         not using it for generic instances.
5080
5081         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
5082         data/def_type fields from MonoClassField into a separate structure.
5083         (struct MonoClassField): Remove data/def_type fields.
5084         (struct _MonoClass): Add a 'field_def_values' array to store the default
5085         values/RVA for fields.
5086
5087         * class.c reflection.c: Update after the changes.
5088         
5089         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
5090         for accessing field->data.
5091
5092         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
5093
5094         * loader.c (find_method_in_class): Revert the last change for now as
5095         it breaks Mono.C5 unit tests.
5096
5097         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
5098         'field_generic_types' and 'field_objects' which contain the information
5099         previously stored in MonoInflatedField.
5100         (MonoInflatedField): Delete.
5101         (struct _MonoClassField): Delete 'generic_info' field.
5102
5103         * reflection.c: Store the information which was previously in 
5104         field->generic_info in MonoDynamicGenericClass instead.
5105
5106         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
5107         MonoClassField changes.
5108
5109 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
5110
5111         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
5112         store the value inside the data array of the MonoMethodWrapper.
5113         This saves memory, is faster and fixes the lifetime issues (methods
5114         were never removed from the hash previously). May also fix bug#436996.
5115
5116 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5117
5118         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
5119         generic instances, compute the type from the generic definition instead of
5120         looking in field->generic_info.
5121
5122         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
5123         for inflated fields, the only user was get_fieldref_token () which no
5124         longer needs it.
5125
5126         * class.c (mono_class_init): Revert the last change as it seems to cause
5127         crashes.
5128
5129         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
5130         bytes on 64 bit platforms.
5131
5132         * object.c (mono_class_create_runtime_vtable): Fix a warning.
5133         
5134         * object.c (mono_class_create_runtime_vtable): Don't initalize
5135         field->data/field->def_type here, it is done lazily by 
5136         mono_class_get_field_default_value ().
5137
5138         * icall.c (ves_icall_get_enum_info): Call 
5139         mono_class_get_field_default_value () instead of directly accessing
5140         field->data and field->def_type.
5141
5142         * object.c (get_default_field_value): Ditto.
5143
5144         * class.c (mono_field_get_data): Ditto.
5145         
5146         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
5147         call for generic instances.
5148
5149         * loader.c (find_method_in_class): If klass != from_class, then inflate
5150         the method with the context of from_class, since the caller assumes this.
5151
5152 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
5153
5154         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
5155         for accessing method->slot.
5156
5157 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
5158
5159         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
5160
5161 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * class.c (mono_method_get_vtable_index): Use
5164         mono_method_get_vtable_slot () for accessing method->slot.
5165
5166         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
5167         accessing klass->methods.
5168
5169         * class.c (mono_method_get_vtable_slot): New helper function.
5170         (mono_class_get_vtable_entry): Ditto.
5171         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
5172         accessing method->slot.
5173
5174         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
5175         method to get_inflated_method ().
5176
5177         * class.c (mono_class_get_inflated_method): New helper method to obtain
5178         a method of an inflated class without calling setup_methods ().
5179         (mono_class_get_cctor): Use get_inflated_method.
5180
5181         * generic-sharing.c (mono_class_get_method_generic): Ditto.
5182         
5183         * marshal.c image.c: Lazily create all the marshal caches.
5184
5185         * image.c (mono_image_init): Move initialization of runtime_invoke
5186         caches to marshal.c.
5187
5188         * marshal.c (get_cache): New helper function to lazily initialize a 
5189         wrapper cache.
5190         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
5191
5192         * debug-helpers.c (mono_method_full_name): Include generic arguments.
5193
5194 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
5195
5196         * loader.c: fixed check for interface type.
5197
5198 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5199
5200         * appdomain.c: check for NULL setup before it's referenced.
5201
5202 p
5203 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5204
5205         * class.c: remove the unused old vtable setup code.
5206
5207 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5208
5209         * class.c: don't depend on interface order in
5210         setup_interface_offsets (bug #435777).
5211         * reflection.c: sort the InterfaceImpl table (patch from
5212         Jb Evain  <jbevain@novell.com>).
5213
5214 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5215
5216         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
5217         the low level assemblies lock.
5218
5219 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
5220
5221         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
5222         object.c, reflection.c, socket-io.c, threads.c: introduced
5223         mono_framework_version () to return the major framewrok version,
5224         changed the code that was using more complex patterns to use it.
5225         Return the correct value for PlatformID for OSX.
5226
5227 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
5228
5229         * icall-def.h, process.h, process.c: added an icall to get info about
5230         processes using mono-proclib.
5231
5232 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
5233
5234         * mono-perfcounters.c: use the mono-proclib functions to
5235         access process information.
5236
5237 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5238
5239         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
5240         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
5241         reflection.c: remove rawbuffer usage: mmap support is more sanely
5242         provided by utils/mono-mmap.
5243
5244 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
5245
5246         * gc.c: use posix semaphores when possible so that
5247         mono_gc_finalize_notify() is signal safe.
5248
5249 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
5250
5251         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
5252         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
5253         be #ifdef-ed out, the linker will remove the rest.
5254
5255         * marshal.c: Implement DISABLE_COM.
5256
5257         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
5258
5259 2008-10-11  Miguel de Icaza  <miguel@novell.com>
5260
5261         * locales.c (string_invariant_compare_char): Optimization: do not
5262         call g_unichar_type unless we actually need the information.
5263
5264 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5265
5266         * object.c, class-internals.h: Also create remoting trampolines
5267         for generic methods.  Pass the domain to the remoting trampoline
5268         creation function, too.
5269
5270 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5271
5272         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
5273
5274 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5275
5276         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
5277         Vector4ui.
5278
5279 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5280
5281         * assembly.c:
5282         * locales.c: remove the use of g_strdown. Fixes bug #322313.
5283
5284 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5285
5286         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
5287         for the least possible amount of time (extending the fix in r113458).
5288
5289 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5290
5291         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
5292
5293 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5294
5295         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
5296         as possible simd intrinsic types.
5297         Optimized the test to check for the common prefix first.
5298
5299 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
5300
5301         * class.c: back out part of a broken optimization committed on
5302         May 23th (bug #433908).
5303
5304 2008-10-09  Mark Probst  <mark.probst@gmail.com>
5305
5306         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
5307         Win32.  Should fix #432388 for most cases until we have the new
5308         profiler on Win32.
5309
5310 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
5313         instead of using inst->id so the hash is stable for AOT.
5314
5315 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
5316
5317         * appdomain.c:
5318         * icall.c: create a .ini file for shadow-copied assemblies that
5319         contains the location of the original assembly. Use this to return the
5320         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
5321         Also fix the number of '/' for windows when returning the CodeBase.
5322         Fixes bug #430920.
5323
5324 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5325
5326         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
5327
5328         Code is contributed under MIT/X11 license.
5329
5330 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5331
5332         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
5333           if if the class vtable needs initialized.
5334
5335         Code is contributed under MIT/X11 license.
5336
5337 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5338
5339         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
5340           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
5341           STRING->BSTR, and CLASS->INTERFACE.
5342
5343         Code is contributed under MIT/X11 license.
5344
5345 2008-10-07  Marek Habersack  <mhabersack@novell.com>
5346
5347         * sysmath.h: changed the declaration of the
5348         ves_icall_System_Math_Round2 icall by adding an extra
5349         away_from_zero parameter.
5350
5351         * sysmath.c (ves_icall_System_Math_Round2): added support for
5352         away from zero rounding. The icall now takes an extra boolean
5353         parameter to signal that away from zero operation is requested.
5354
5355 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
5358         the delegate klass so it can work with full-aot.
5359         (mono_marshal_get_delegate_end_invoke): Ditto.
5360         (mono_marshal_get_delegate_invoke): Ditto.
5361
5362 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
5363
5364         * gc.c, attach.h, attach.c: remove a bad pattern:
5365         add_finalizer_callback () is not implemented correctly, it can't
5366         without adding more overhead to the finalizer loop and it's not
5367         even needed, since we know exactly what we need to call, so there is
5368         no need to do so through an expensive function pointer.
5369
5370 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
5371
5372         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
5373         for the no-gc case.
5374         * attach.c (mono_attach_init): Remove the #ifdef.
5375
5376 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
5377
5378         * attach.c (mono_attach_init): Don't use
5379         mono_gc_add_finalizer_thread_callback when compiling without GC.
5380         Fixes #432306.
5381         
5382         Code is contributed under MIT/X11 license.
5383
5384 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5385
5386         * class.c (mono_class_create_from_typedef): Remove the 
5387         #ifndef DISABLE_SIMD stuff.
5388
5389 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5390
5391         * class-internals.h (MonoClass): Added simd_type bit field.
5392
5393         * class.c (mono_class_create_from_typedef): Check if type is a simd
5394         intrinsic.
5395
5396 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5397
5398         * object.c (mono_method_add_generic_virtual_invocation): Only add
5399         instantiations to the thunk whose count is at least as large as
5400         the threshold.
5401
5402 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
5403
5404         * icall.c: changed the Type of the exception thrown when trying to
5405         invoke a constructor on an abstract class. Part of the fix for bug
5406         #324185.
5407
5408 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5409
5410         * class.c, class-internals.h (mono_method_get_vtable_index): New
5411         function which returns the index into the vtable and properly
5412         handles inflated virtual generic methods.
5413
5414 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5415
5416         * object.c, domain.c, object-internals.h, domain-internals.h:
5417         Generalize IMT thunk machinery to also handle thunks for virtual
5418         generic method invokes.  When a virtual generic method is invoked
5419         more than a number of times we insert it into the thunk so that it
5420         can be called without lookup in unmanaged code.
5421
5422         * generic-sharing.c, class-internals.h: Fetching a
5423         MonoGenericInst* for a method from an (M)RGCTX.
5424
5425 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5426
5427         * marshal.c (emit_marshal_string): Applied a variant of a patch by
5428         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
5429         marshalling. Fixes #431304.
5430
5431 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
5432
5433         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
5434           handle when ref is specified without In or Out.
5435
5436         Code is contributed under MIT/X11 license.
5437
5438 2008-09-30  Mark Probst  <mark.probst@gmail.com>
5439
5440         * loader.c (mono_get_method_constrained): Don't expand method with
5441         the class's context, because it's already a method of that class.
5442
5443 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
5444
5445         * attach.c : should be correct build fix.
5446
5447 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5448
5449         * attach.c: Fix the previous change.
5450
5451 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
5452
5453         * attach.c : quick w32 build fix.
5454
5455 2008-09-27  Miguel de Icaza  <miguel@novell.com>
5456
5457         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
5458         crashes MonoDevelop: #430455.
5459
5460 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5461
5462         * domain-internals.h (struct _MonoDomain): Move most fields used only by
5463         the JIT do MonoJitDomainInfo in ../mini/mini.h.
5464
5465         * domain.c: Remove initialization/cleanup of the removed fields.
5466
5467 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5468
5469         * class.c (mono_class_generic_sharing_enabled): Enable generic
5470         code sharing for PPC.
5471
5472 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
5473
5474         * attach.c : Fixing the Windows builds.
5475
5476         Code is contributed under MIT/X11 license.
5477
5478 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5479
5480         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
5481         the default generic sharing mode to 'all'.
5482
5483 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5484
5485         * generic-sharing.c, class-internals.h: New function for checking
5486         whether a method needs a static RGCTX invoke wrapper.  A few
5487         funtions moved from mini/generic-sharing.c.
5488
5489         * icall.c: New function used.
5490
5491 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5492
5493         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
5494         Static RGCTX invoke wrapping applies to value type methods, too.
5495
5496         * class.c (mono_class_setup_vtable_general): In generic-shared
5497         value types, wrap methods with a static RGCTX invoke wrapper.
5498
5499 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5500
5501         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
5502         osx build.
5503
5504 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5505
5506         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
5507         register a callback which is called when the finalizer thread is woken
5508         up.
5509         (finalizer_thread): Call the callback if it exists.
5510
5511         * attach.h attach.c: New files, implementing the attach mechanism.
5512
5513         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
5514         
5515         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
5516         by the previous change.
5517
5518 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
5519
5520         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
5521         loader.c, marshal.c, metadata-internals.h, metadata.c,
5522         method-builder.c, object.c, reflection.c: introduced specific functions
5523         to allocate from the domain and image mempools and cleaned up most of
5524         the code to use them (still missing a few in reflection.c).
5525         Keep the loader bytes counter updated.
5526
5527 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
5528
5529         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
5530         loader-related counters.
5531
5532 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
5533
5534         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
5535         added more MS-compatible counters.
5536
5537 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5538
5539         * class.c (mono_class_setup_fields): Call setup_fields before accessing
5540         class->blittable. Fixes #428217.
5541
5542 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
5543
5544         * reflection.c (mono_image_get_field_on_inst_token): Call 
5545         field_encode_signature () since that handles custom modifiers too.
5546         Fixes #424663.
5547
5548 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
5549
5550         * reflection.c (add_custom_modifiers): New helper function to merge custom
5551         modifiers stored in objects to a MonoType.
5552         (fieldref_encode_signature): Encode custom modifiers.
5553         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
5554         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
5555
5556 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
5557
5558         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
5559         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
5560         64-bit IL only images because imports are not resolved for IL only images.
5561         Special thanks to Bill Holmes for finding this bug and testing the patch.
5562         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
5563
5564         Contributed under MIT/X11 license.
5565
5566 2008-09-19  Miguel de Icaza  <miguel@novell.com>
5567
5568         * mono-config.c (dllmap_start): Add support for the bits keyword
5569         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
5570
5571 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5572
5573         * reflection.c (inflate_mono_method): When the class the method is
5574         to be inflated for is itself not inflated, just return the method.
5575
5576 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
5577
5578         * mono-perfcounters.c: use more user friendly process instance names.
5579
5580 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
5581
5582         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
5583           handle "[in] ref" and "[in][out] ref" cases.
5584
5585         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
5586           to mono_mb_create_method.  This was causing problems calling native to
5587           managed passing Variants by value.
5588
5589         Code is contributed under MIT/X11 license.
5590
5591 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
5592
5593         * class.c (can_access_internals): Call mono_assembly_load_friends ()
5594         before accessing the friend_assembly_names field.
5595
5596         * assembly.c (mono_assembly_load_friends): Make this callable multiple
5597         times.
5598         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
5599         called lazily when it is needed.
5600
5601         * metadata-internals.h (struct _MonoAssembly): Add 
5602         'friend_assembly_names_inited' flag.
5603
5604 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
5605
5606         * mono-perfcounters-def.h: fix the types of a few counters.
5607         * mono-perfcounters.c: implemented the instance names getter
5608         and a few bugfixes.
5609
5610 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
5611
5612         * culture-info-table.h : regenerated.
5613
5614 2008-09-17  Robert Jordan  <robertj@gmx.net>
5615
5616         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
5617         context bound objects. Fixes #415577.
5618
5619         Code is contributed under MIT/X11 license.
5620
5621 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
5622
5623         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
5624         implementation (bug #423582).
5625
5626 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
5627
5628         * object.c (mono_object_get_virtual_method): Handle the case method->slot
5629         is not set. Fixes #426309.
5630
5631 2008-09-16  Jb Evain  <jbevain@novell.com>
5632
5633         * class.c (mono_class_from_name): fix the exported type look up
5634         when the type is defined in a referenced assembly.
5635
5636 2008-09-16  Jb Evain  <jbevain@novell.com>
5637
5638         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
5639         increment the next index counter on each iteration to make that work
5640         for more than one type forwarder. Unmanaged part to fix #422929.
5641
5642 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5643
5644         * object-internals.h: enum ComInterfaceType in
5645         MonoInterfaceTypeAttribute is guint32, not guint16.
5646
5647 2008-09-12  Mark Probst  <mark.probst@gmail.com>
5648
5649         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
5650         writing code.
5651
5652 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5653
5654         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
5655         not gboolean.
5656
5657 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5658
5659         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
5660         Endianness fixes for MonoSymbolFileOffsetTable.
5661
5662 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
5663
5664         * process.c (complete_path) : Removing quotes from the 
5665           input path.  The glib file routines do not handle file paths
5666           that have quotes around them.
5667
5668         Code is contributed under MIT/X11 license.
5669
5670 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
5671
5672         * socket-io.h : Adding a comment to provide locations where 
5673           changes to MonoSocketAsyncResult need to be synced.
5674
5675         Code is contributed under MIT/X11 license.
5676
5677 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
5678
5679         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
5680         parameters as well. Fixes #425001.
5681
5682 2008-09-08  Miguel de Icaza  <miguel@novell.com>
5683
5684         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
5685         windows build.
5686
5687 2008-09-07  Miguel de Icaza  <miguel@novell.com>
5688
5689         * console-io.c: Add support for tracking the window size if it
5690         changes.
5691
5692         The setup is very simple: the TtySetup function will now return a
5693         pointer to a location in memory that tracks the current console
5694         size.  The managed code checks its current value every time its
5695         queried against the last value set, and updates accordingly.
5696
5697         With this setup we can work with multiple consoles, and we do not
5698         require to poke into managed code from a signal handler.
5699
5700         Additionally, the environment for COLUMNS and LINES is now handled
5701         in unmanaged code.
5702
5703         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
5704
5705 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5706
5707         * marshal.c (mono_type_native_stack_size): Treat
5708         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
5709
5710 2008-09-04  Jb Evain  <jbevain@novell.com>
5711
5712         * class.c (mono_class_is_assignable_from): fix assignability of nullables
5713         to nullables.
5714
5715 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
5716
5717         * verify.c (verify_type_compatibility_full): Revert change
5718         to allow converting a native int to unmanaged pointer be verifiable
5719         under non-strict mode.
5720         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
5721
5722         * verify.c: Added some TODOs.
5723
5724 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
5725
5726         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
5727           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
5728           Changed to use GlobalAlloc for the memory returned on Windows platforms.
5729
5730         Code is contributed under MIT/X11 license.
5731
5732 2008-09-02  Jb Evain  <jbevain@novell.com>
5733
5734         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
5735
5736 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
5737
5738         reflection.c (typebuilder_setup_fields): Handle classes with
5739         explicit size.
5740
5741 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
5742
5743         class.c (mono_class_setup_events): Add memory barrier due to
5744         double checked locking.
5745         
5746         class.c (mono_class_setup_properties): Same.
5747
5748 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5749
5750         * class.c (mono_class_is_assignable_from): Fix the build.
5751         
5752         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
5753         before accessing klass->interface_bitmap. Fixes #421744.
5754
5755 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5756
5757         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
5758         the runtime into no-exec mode, useful when running the AOT compiler.
5759
5760         * appdomain.c gc.c object.c: Avoid executing managed code when running
5761         in no-exec mode.
5762         
5763         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
5764
5765         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
5766         special case when the mono_assembly_loaded () returns NULL because the 
5767         search hook is not installed.
5768
5769 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5770
5771         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
5772         crashes in bstr marshalling on linux.
5773
5774 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5775
5776         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
5777         with more than one parameter.
5778
5779 2008-08-24  Miguel de Icaza  <miguel@novell.com>
5780
5781         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
5782         start/stop flow control as well when turning off ICANON (allows
5783         C-s and C-q to be read by Console.ReadKey).
5784
5785 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5786
5787         * class.c (mono_class_init): Move the initialization of nested classes
5788         into mono_class_get_nested_types (). Fixes #418433.
5789
5790         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
5791         flag.
5792
5793         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
5794         iterating tough the nested classes of a class.
5795
5796 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
5797
5798         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
5799         on arm.
5800
5801 2008-08-22  Miguel de Icaza  <miguel@novell.com>
5802
5803         * console-io.c (sigcont_handler): Support signal chaining for
5804         SIGCONT.
5805
5806         (console_set_signal_handlers): Use best practices with sigaction,
5807         clear the structure before using it. 
5808
5809 2008-08-22  Robert Jordan  <robertj@gmx.net>
5810
5811         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
5812         Fix the Windows build.
5813
5814 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
5815
5816         * class.c (mono_class_generic_sharing_enabled): Make the default
5817         sharing mode 'corlib'.
5818
5819 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5820
5821         * console-io.c (console_set_signal_handlers): Fix a warning.
5822
5823         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
5824         method normally, the JIT will take care of avoiding recursion.
5825
5826 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5827
5828         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
5829
5830         Code is contributed under MIT/X11 license.
5831
5832 2008-08-20  Miguel de Icaza  <miguel@novell.com>
5833
5834         * console-io.c (sigcont_handler): We need to restore the entire
5835         termios state, not only the original settings, as things like echo
5836         can be controlled after this (Booish exposes this issue with its
5837         own ReadLine implementation).
5838
5839         Additionally, we need to set the terminal back into keypad_xmit
5840         mode.
5841         
5842         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
5843         string as a paramter as well.   Otherwise we get different
5844         keyboard sequences.
5845
5846 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
5849         delegates with byref out parameter passing. Fixes #351520.
5850
5851         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
5852         a generic context.
5853         (mono_type_get_desc): Add the type arguments for GENERICINST.
5854         (mono_method_full_name): Stringify the class name using mono_type_full_name
5855         so it picks up generic arguments.
5856
5857 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
5858
5859         * console-io.c: Removed debug output.
5860
5861 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
5862
5863         reflection.c (mono_reflection_create_runtime_class): Alloc
5864         the nested classes linked list using the dynamic image mempool.
5865         Fixes leak in corlib compilation.
5866
5867 2008-08-19  Miguel de Icaza  <miguel@novell.com>
5868
5869         * console-io.c: Fix incredibly annoying behavior on the console
5870         after resuming execution after control-z.   This affected every
5871         console application.
5872
5873 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
5874
5875         * mempool-internals.h: Header for mono private mempool functions. The first
5876         two function are for allocating glib linked lists using pools.
5877
5878         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
5879
5880         * Makefile.am: Added mempool-internals.h.
5881
5882 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5883
5884         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
5885         (mono_domain_free): Ditto.
5886
5887         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
5888         be used by the JIT to store its domain-specific information, instead of putting
5889         it directly into MonoDomain.
5890
5891         * domain.c (mono_install_create_domain_hook): New helper function to install
5892         a hook which initializes domain->runtime_info.
5893
5894         * domain.c (mono_install_free_domain_hook): Ditto.
5895         
5896 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5897
5898         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
5899         asserting if the ares parameter is null.
5900
5901         * mono-perfcounters.c: Fix warnings.
5902
5903         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
5904         is not needed, don't check for interruptions either.
5905         (mono_marshal_get_delegate_end_invoke): Ditto.
5906
5907 2008-08-15  Marek Habersack  <mhabersack@novell.com>
5908
5909         * mono-perfcounters.c (predef_readonly_counter): added support for
5910         reading the ASP.NET Requests Queued counter from another process.
5911
5912 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5913
5914         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
5915         MonoImage to simplify the AOT code.
5916
5917 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
5918
5919         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
5920         marshalling. Fixes #416078.
5921
5922 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5923         
5924         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
5925         it is set, looking up the icall address is deferred to the JIT, since 
5926         in embedded scenarios, the icall might not be registered in the runtime
5927         doing the AOT compilation. Backported from the 2.0 branch.
5928
5929 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5930
5931         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
5932         Fixes #415621.
5933
5934 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5935
5936         * Makefile.am: added support for cross-compilation.
5937
5938 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
5939
5940         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
5941
5942 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
5943
5944         * mono-perfcounters.c: jitted methods and jitted bytes counters.
5945
5946 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
5947
5948         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
5949         mono-perfcounters.c: performance counters implementation.
5950
5951 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
5952
5953         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
5954         to gpointer, letting the AOT code decide what to store in it.
5955
5956 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
5957
5958         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
5959           mono_class_setup_methods if the methods are not initialized.
5960
5961         Code is contributed under MIT/X11 license.
5962
5963 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
5964
5965         * verify.c: Remove some debug code I commited by accident.
5966
5967         * verify.c (mono_method_is_valid_in_context): Change the return value
5968         to make possible to distinguish between invalid and unverifiable.
5969
5970         * verify.c (verifier_load_method): Don't return NULL for unverifiable
5971         methods.
5972
5973 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
5974
5975         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
5976         constraints. Fixes regression in gtest-253.
5977
5978 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
5979
5980         * verify.c (mono_verifier_verify_class): Don't allow generic types
5981         with explicit layout.
5982
5983         * verify.c (mono_method_verify): Check locals and argument types.
5984
5985 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
5988         wait if the thread is in StopRequested state.
5989
5990         * class.c (mono_class_from_name): Refactor the module searching code into
5991         a separate function so it can be reused in the AOT case too.
5992
5993 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5994
5995         * verify.c (mono_type_is_valid_in_context): Improve the error message.
5996         Check both the type and it's generic type definition for loader errors.
5997         
5998         * verify.c (mono_method_is_valid_in_context): Don't generate another
5999         error when a type errors occur, this leads to the wrong exception been
6000         thrown.
6001
6002 2008-07-28  Dick Porter  <dick@ximian.com>
6003
6004         * icall-def.h
6005         * process.c
6006         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
6007         New internal calls to duplicate and close a process handle.
6008
6009 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
6010
6011         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
6012
6013 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6014
6015         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
6016
6017 2008-07-27  Robert Jordan  <robertj@gmx.net>
6018
6019         * class.c (mono_class_init): Don't compute class.has_finalize for
6020         valuetypes. Fixes #412477.
6021
6022 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
6023
6024         * verify.c: Implement constraint equivalence checking.
6025         This is required when a generic parameter is used as
6026         argument to a constrained one.
6027
6028         Fixes #410637.
6029
6030 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6031
6032         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6033
6034         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
6035
6036         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
6037         synch with managed object layout.
6038
6039 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
6040
6041         * verify.c (do_branch_op): Handle valuetypes and generic
6042         arguments properly.
6043
6044         * verify.c (do_cmp_op): Same.
6045
6046         Fixes #410383.
6047
6048 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6049
6050         * generic-sharing.c: Fix memory leaks.
6051
6052         * class.c, class-internals.h: Make
6053         mono_class_inflate_generic_type_with_mempool() non-static.
6054
6055 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
6056
6057         * pedump.c (dump_verify_info): Dump full class name.
6058
6059 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6060
6061         * generic-sharing.c: Removed some old code that didn't do anything.
6062
6063 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
6064         * profiler.c: Added runtime_initialized_event,
6065         mono_profiler_install_runtime_initialized and
6066         mono_profiler_runtime_initialized. This new hook tells the profiler
6067         when the runtime is sufficiently initialized to be able to call
6068         mono_thread_attach on the root appdomain.
6069         * profiler.h, profiler-private.h: Likewise.
6070
6071 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
6072
6073         * verify.c (do_cast): Do boxing for generic arguments as well.
6074
6075         * class.c (is_nesting_type): Drop generic instantiations before
6076         checking for nesting.
6077
6078         * class.c (can_access_instantiation): Allow access to generic
6079         arguments.
6080
6081 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
6082
6083         * verify.c (verify_class_for_overlapping_reference_fields):
6084         On some cases, the field size might be zero, guard against that.
6085         Fix the explicit layout check to work as expected.
6086
6087 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6088
6089         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
6090         mono_thread_resume () during shutdown, since the thread we want to abort
6091         might be suspended.
6092
6093 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6094
6095         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
6096         warning.
6097
6098         * debug-mono-symfile.c: Fix a warning.
6099
6100         * mono-perfcounters.c (get_cpu_times): Fix a warning.
6101
6102         * object.c (mono_class_vtable): Check if exception_type is set, and return
6103         NULL as defined by the function comments.
6104
6105 2008-07-22  Mark Probst  <mark.probst@gmail.com>
6106
6107         * mempool.c: Use malloc for every single mempool allocation if the
6108         configure option is set.  This makes it easier to track mempool
6109         allocations with tools like Valgrind.
6110
6111 2008-07-22  Jb Evain  <jbevain@novell.com>
6112
6113         * reflection.c (create_dynamic_mono_image): emit the same
6114         metadata version that SL2 does when creating a SL2 image.
6115
6116 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
6117
6118         * icall-def.h:
6119         * icall.c: New icall System.Enum:get_hashcode. This function
6120         avoids the overhead of boxing the enum to the underlying type.
6121
6122 2008-07-21  Mark Probst  <mark.probst@gmail.com>
6123
6124         * reflection.c (mono_method_get_object): Don't let static RGCTX
6125         invoke wrappers get into MonoReflectionMethods.
6126
6127 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
6128
6129         * object-internals.h:
6130         * object.c: New mono_runtime_class_init_full function
6131         that makes throwing the exception optinal.
6132
6133         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
6134         for the case where the exception object is supplied.
6135
6136 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
6137
6138         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
6139         old ld versions.
6140
6141         Contributed under MIT/X11 license.
6142
6143 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
6144
6145         * string-icalls.c (ves_icall_System_String_InternalSplit):
6146         Optimize array allocation by caching the MonoClass of the
6147         array type.
6148
6149         * icall.c (ves_icall_Type_GetMethodsByName): Same.
6150
6151         * reflection.c (mono_param_get_objects): Same.
6152
6153 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
6154
6155         * icall-def.h:
6156         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
6157         It inflates the given type using the class context.
6158
6159 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
6160
6161         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
6162         the vtable if it already exists.
6163
6164         * object-internals.h: Add mono_class_try_get_vtable as part of the
6165         internal API.
6166
6167         * reflection.c (mono_type_get_object): Use the MonoObject from the
6168         vtable when possible. Reduces locking contention on reflection heavy
6169         code.
6170
6171 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
6172
6173         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
6174         g_bit_nth_msf () since that macro is not implemented in eglib.
6175
6176 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
6177
6178         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
6179         on platforms which do not support it.
6180
6181 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6182
6183         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
6184
6185 2008-07-11  Martin Baulig  <martin@ximian.com>
6186
6187         * mono-debug-debugger.h
6188         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
6189
6190         * mono-debug-debugger.c
6191         (_mono_debugger_interruption_request): New global volatile variable.
6192         (mono_debugger_check_interruption): New public function.
6193
6194         * threads.c
6195         (mono_thread_current_check_pending_interrupt): Call
6196         mono_debugger_check_interruption().
6197         (mono_thread_interruption_checkpoint_request): Likewise.
6198
6199 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
6200
6201         * verify.c: Add more type checks for loaded types. Verify the result
6202         handle from ldtoken.
6203
6204 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
6205
6206         * loader.c (field_from_memberref): Don't crash if the field
6207         wasn't found.
6208
6209 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
6210
6211         * verify.c: Verify if type and method instantiations
6212         don't have invalid VAR or MVAR arguments.
6213
6214 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
6215
6216         * verify.c: Fix double free of function pointer list.
6217
6218 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
6219
6220         * object.c (mono_string_to_utf8): Comment the new code as it
6221         breaks under eglib.
6222
6223 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
6224
6225         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
6226
6227 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
6228
6229         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
6230           is not throw too many times.
6231
6232         Code is contributed under MIT/X11 license.
6233
6234 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6235
6236         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
6237         debugging is turned off.
6238
6239 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
6240
6241         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
6242
6243 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6244
6245         * class-internals.h, class.c: Added new generic sharing option:
6246         Share only stuff in System.Collections.Generic, which is now the
6247         default.
6248
6249 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6250
6251         * generic-sharing.c, class-internals.h: New function for getting a
6252         generic method in a generic class given the corresponding method
6253         for a different instantiation of the class.  Partly refactored
6254         from mini-trampolines.c.
6255
6256         * class.c: Make sure generic methods have a class_inst if they are
6257         part of a generic class.
6258
6259         * metadata.c (mono_type_stack_size_internal): Handle type
6260         variables.
6261
6262 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6263
6264         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
6265         Signifies whether information on the this/vtable/mrgctx variable
6266         is available.
6267
6268 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6269
6270         * object.c, object-internals.h, icall.c: New function
6271         mono_delegate_ctor_with_method(), which does the same as
6272         mono_delegate_ctor(), but takes an explicit method argument
6273         instead of taking the method from the jit info.
6274
6275         * marshal.c: When creating a delegate with an inflated method take
6276         the "this" argument as the target class for the castclass.
6277
6278 2008-07-03  Mark Probst  <mark.probst@gmail.com>
6279
6280         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
6281         mono_jit_info_table_find() to perform very badly in some cases.
6282
6283 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6284
6285         * icall.c (type_from_typename): Handle 'string'.
6286
6287         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
6288         wrappers into the wrapper_hash, since the key is not a MonoMethod.
6289
6290 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6291
6292         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
6293
6294         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
6295         number of available managed allocator types.
6296
6297         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
6298         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
6299
6300 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6301
6302         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
6303         which is a low level lock protecting just the 'jit_code_hash' hash table.
6304
6305         * domain.c: Initialize+cleanup jit_code_hash_lock.
6306         
6307 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
6308
6309         * coree.c (mono_load_coree): Set coree_module_handle global variable only
6310         after initialization.
6311
6312         * coree.h: Make MonoFixupExe internal.
6313
6314         Contributed under MIT/X11 license.
6315
6316 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
6317
6318         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
6319         because that is platform independent. Check NumberOfRvaAndSizes in PE32
6320         as well.
6321         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
6322         image being loaded is a CLI image and _CorValidateImage gets called.
6323
6324         * coree.h: Add MonoLoadImage.
6325
6326         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
6327         instead of LoadLibrary.
6328
6329         Contributed under MIT/X11 license.
6330
6331 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
6332
6333         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
6334         for any primitive type.
6335
6336 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6337
6338         * object.c (mono_array_new_specific): Optimize this and the other allocation
6339         functions a bit.
6340         
6341         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
6342         domains too if mono_dont_free_domains is set.
6343
6344         * domain-internals.h (mono_dont_free_domains): New internal option controlling
6345         whenever to free appdomain data after it has been unloaded.
6346
6347         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
6348         
6349 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
6350
6351         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
6352         (mono_method_get_equivalent_method): Fix a warning.
6353
6354         * object.c (mono_message_init): Avoid looking up array types for each call.
6355
6356 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
6359         call.
6360
6361         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
6362         even more.
6363
6364         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
6365         each iteration.
6366
6367         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
6368         fields of an enum.
6369
6370 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
6371
6372         * object.c (mono_value_box): Fix boxing of nullables.
6373
6374 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
6375
6376         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
6377         mono_module_handle that is defined by the linker; no initialization required.
6378         * coree.h: Remove mono_module_handle, add __ImageBase, update
6379         mono_image_open_from_module_handle.
6380         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
6381         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
6382         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
6383         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
6384         to 4 GB away from image base address. IA64 version is not tested but was very
6385         easy to implement and should work if we ever need it.
6386         * domain.c (mono_init_internal): Avoid system error message boxes.
6387         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
6388         with has_entry_point. Handle do_mono_image_load fauilre correctly.
6389         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
6390         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
6391         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
6392
6393         Contributed under MIT/X11 license.
6394
6395 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
6396
6397         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
6398         as part of the private mono API.
6399         
6400         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
6401         Do proper argument checking for methods that belong to generic classes.
6402         Do proper type resolution for GMFH/2.
6403         Fixes #377324.
6404         
6405 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
6406
6407         * verify.c (do_switch): Fix a memory corruption bug with
6408         the jump index is out of bound.
6409
6410 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
6411
6412         * verify.c: Disable debug code.
6413
6414 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
6415
6416         * reflection.c (mono_image_get_methodbuilder_token): Use
6417         mono_image_get_methodspec_token_for_generic_method_definition
6418         instead of mono_image_get_memberref_token. We cache more memberef
6419         entries now.
6420
6421 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
6422
6423         * verify.c: Inflate exception clause types.
6424         Fixes #402606.
6425         
6426 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
6427
6428         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
6429         name.
6430
6431         * reflection.c (mono_image_get_ctorbuilder_token): Same.
6432
6433         * reflection.c (mono_image_create_method_token): Same.
6434
6435 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
6438         It does the same as mono_image_get_methodref_token but works on
6439         MethodBuilder.
6440
6441         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
6442         and always generate a methodspec. This follows the old behavior and fixes
6443         the regressions in System.Core. 
6444
6445 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6446
6447         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
6448         don't event mono_class_get () succeeds. Fixes #402182.
6449
6450 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
6451
6452         * metadata-internals.h: Added MonoDynamicImage::methodspec
6453         hashtable to store methodspec tokens created for MethodBuilders.
6454
6455         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
6456         MethodBuilders as open instantiations if a methodspec was requested.
6457
6458         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
6459
6460         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
6461
6462         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
6463
6464         Fixes bug #349190.
6465
6466 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
6467
6468         * loader.c (method_from_methodspec): Avoid crashing if the
6469         method lookup fails.
6470
6471 2008-06-20  Dick Porter  <dick@ximian.com>
6472
6473         * socket-io.c (get_socket_assembly): Cope with Moonlight network
6474         classes being in a different assembly.  Fixes bug 399184.
6475
6476 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
6477
6478         * loader.c (mono_loader_init): Make this callable multiple times.
6479         (mono_dllmap_insert): Call mono_loader_init () so this works even before
6480         the runtime is initialized. Fixes #401755.
6481
6482 2008-06-19  Dick Porter  <dick@ximian.com>
6483
6484         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
6485         Fixes bug 349688.
6486
6487 2008-06-19  Dick Porter  <dick@ximian.com>
6488
6489         * socket-io.c:
6490         * icall-def.h: Implement Socket generic Send() and Receive()
6491         methods.  Fixes bug 395168.
6492
6493 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
6494
6495         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
6496
6497         Contributed under MIT/X11 license.
6498
6499 2008-06-18  Martin Baulig  <martin@ximian.com>
6500
6501         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
6502         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
6503         set to 80.0.  The debugger <-> runtime interface is now frozen as
6504         well.   
6505
6506         * mono-debug.c
6507         (mono_debug_debugger_version): Bump to 4.
6508
6509 2008-06-18  Martin Baulig  <martin@ximian.com>
6510
6511         * debug-mono-symfile.c
6512         (load_symfile): Don't check the minor version.
6513
6514         * debug-mono-symfile.h: Bump the version number to 50.0.
6515
6516 2008-06-18  Martin Baulig  <martin@ximian.com>
6517
6518         * debug-mono-symfile.c
6519         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
6520         minimum required version.
6521
6522 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
6523
6524         * reflection.c (mono_custom_attrs_from_property): Fix support for
6525         retriveving cattrs of dynamic inflated generic types.
6526
6527         * reflection.c (mono_custom_attrs_from_event): Same.
6528
6529         * reflection.c (mono_custom_attrs_from_field): Same;
6530
6531         * reflection.c (typebuilder_setup_events): Same cattrs of events.
6532
6533         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
6534         Moved to metadata.c.
6535
6536         * metadata.c: New functions to retrive the equivalent field, event
6537         of property from the generic type definition.
6538
6539         * metadata-internals.h: Added new functions from metadata.c.
6540
6541 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
6542
6543         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
6544         to cached in a mempool is used.
6545
6546         * metadata.c (free_generic_class): In some situations field generic_info type
6547         is not properly dup'ed and leads to double free'ing.
6548
6549         Fixes #400643.
6550
6551 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6552
6553         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
6554         this arguments (will be needed later for generic methods).
6555         Collect stats.
6556
6557 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6558
6559         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
6560         Create a static RGCTX invoke wrapper for methods which require it.
6561
6562 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6563
6564         * object.c, class-internals.h: New function for checking whether
6565         an individual field is special static.
6566
6567 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6568
6569         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
6570         linear search since the table is sorted.
6571
6572         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
6573         Fixes #324180.
6574
6575 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
6578         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
6579
6580         * gc.c (mono_domain_finalize): Allow an infinite timeout.
6581
6582         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
6583         
6584         * threads.c (mono_thread_request_interruption): Get rid of locking, use
6585         InterlockedCompareExchange to query and modify 
6586         thread->interruption_requested.
6587
6588         * object-internals.h (struct _MonoThread): Change interruption_requested
6589         to a gint32 so it can be modified by atomic operations. Add 
6590         'critical_region_level' from the managed side, change small_id to a guint32,
6591         add new set of 'unused' fields.
6592
6593         * appdomain.c: Bump corlib version.
6594
6595 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6596
6597         * class.c (mono_class_from_name): Search modules as well. Fixes
6598         #322332.
6599
6600 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6601
6602         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
6603         templates.  Templates are generalized with an additional type_argc
6604         argument.  RGCTX templates have type_argc==0, MRGCTX templates
6605         have type_argc>0.
6606
6607         * domain-internals.h, domain.c: New hash table for looking up
6608         MRGCTXs.
6609
6610         * metadata.c, metadata-internals.h: Rename hash and equal
6611         functions for MonoGenericInst's and make them public.
6612
6613         * class-internals.h: New data structures for the MRGCTX.  Macros
6614         for distinguishing slots in the RGCTX and the MRGCTX.
6615
6616 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6617
6618         * object.c (mono_method_get_imt_slot): Put the same methods of
6619         different instantiations of the same generic interface in the same
6620         IMT slots, to make generic sharing simpler.
6621
6622 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
6623
6624         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
6625
6626         * metadata.c (mono_metadata_field_info_with_mempool): Added.
6627         This function works just like mono_metadata_field_info, but
6628         accept a mempool as argument to be used allocating memory.
6629
6630         * marshal.c (mono_marshal_load_type_info): Use new function
6631         to load marshal data into image mempool.
6632
6633 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
6634
6635         * class.c (mono_class_inflate_generic_type_with_mempool):
6636         This function allows to inflate a generic type using
6637         a mempool.
6638
6639         * class.c (inflate_generic_type): Take a mempool as argument
6640         and use it to do type dup'ing.
6641
6642         * class.c (mono_class_setup_fields): Field type for generic
6643         generic classes are allocated from the image mempool.
6644
6645         * metadata.c (free_generic_class): Inflated field type is
6646         now allocated in the image mempool.
6647
6648 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
6649
6650         * threads.c (thread_cleanup): Free MonoThread::name.
6651
6652 2008-06-12  Marek Habersack  <mhabersack@novell.com>
6653
6654         * appdomain.c (ensure_directory_exists): avoid unnecessary
6655         mkdir(2) calls when the shadow directory already exists.
6656         (mono_make_shadow_copy): copy also satellite assemblies from the
6657         private bin directories.
6658
6659 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
6660
6661         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
6662         
6663         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
6664         a page boundary. Fixes #396219.
6665
6666 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6667
6668         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
6669         due to double-checked locking.
6670
6671 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6672
6673         * assembly.c (build_assembly_name): Release memory on failure.
6674
6675         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
6676
6677 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6678
6679         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
6680         memory on failure.
6681
6682 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6683
6684         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
6685         memory on failure.
6686
6687 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6688
6689         * loader.c (field_from_memberref): Check if field signature type is equal
6690         to the non-inflated type of the field. Fixes #398980.
6691
6692 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
6693
6694         * assembly.c (mono_assembly_load_from_full): Call 
6695         mono_assembly_load_friends () outside the assemblies lock, since it can
6696         acquire the loader lock. Fixes #323696.
6697
6698         * reflection.c (resolve_object): Inflate the inst with the context for
6699         FieldOnTypeBuilderInst. Fixes #399010.
6700
6701 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6702
6703         * reflection.c (mono_image_get_field_on_inst_token): Don't
6704         inflate the field to encode it's signature. If it's a
6705         VAR or MVAR it should stay that way in the signature.
6706         Fixes #399047.
6707
6708 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6709
6710         * reflection.c (resolve_object): Release memory of inflated types.
6711
6712 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6713
6714         * loader.c (mono_method_get_signature_full): Remove assert about
6715         loading a methodspec to a generic method. We have such methods, such as
6716         System.Threading.Interlocked::CompareExchange<T>.
6717         This assert was removed since it crashes the verifier when it checks
6718         methods calling CompareExchange<T>.
6719
6720 2008-06-10  Marek Safar  <marek.safar@gmail.com>
6721
6722         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
6723         of Type array and not MonoType.
6724
6725 2008-06-10  Marek Habersack  <mhabersack@novell.com>
6726
6727         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
6728         <lupus@ximian.com>
6729
6730 2008-06-10  Martin Baulig  <martin@ximian.com>
6731
6732         * debug-mono-symfile.h
6733         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
6734         changes to the file format, but we were generating incorrect
6735         source file indices in the line number table due to a bug, which
6736         made backtraces report an incorrect source file.
6737
6738 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6739
6740         * mono-debug.c: Moved mono_debug_free_method_jit_info from
6741         mini/debug-mini.c to here.
6742
6743         * mono-debug.c (il_offset_from_address): Free memory from find_method.
6744
6745         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
6746         use it to release structs returned by mono_debug_find_method.
6747
6748 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
6749
6750         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
6751         since it needs to set method->slot for all interface methods.
6752
6753 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6754
6755         * class-internals.h: Forgot to add.
6756
6757 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6758
6759         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
6760
6761         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
6762         Lookup the custom attributes from property_hash.
6763
6764         * reflection.c (mono_save_custom_attrs): Save the custom attributes
6765         in property_hash. Allocate all data using the image mempool.
6766
6767         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
6768         for dynamic_custom_attrs to checks if the image is dynamic.
6769
6770 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6771
6772         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
6773         assemblies array.
6774         
6775         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
6776         runtime functions while holding the domain assemblies lock.
6777
6778 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6779
6780         * verify.c: Reapplied the last bit of the reverted changes.
6781
6782 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6783
6784         * verify.c: Reapplied more of the reverted changes.
6785
6786 2008-06-09  Martin Baulig  <martin@ximian.com>
6787
6788         * debug-mono-symfile.c (load_symfile): Check the major version
6789         first; if it's wrong, don't print the minor version in the error message.
6790
6791 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6792
6793         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
6794         lock instead of the domain lock to avoid deadlocks, since the thread might
6795         already hold the loader lock.
6796
6797         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
6798         (mono_thread_attach): Ditto.
6799
6800         * monitor.c: Use a TLS variable for holding the current thread id instead
6801         of calling pthread_self ().
6802         (mono_monitor_init_tls): New internal function to initialize the TLS
6803         variable.
6804         (mono_monitor_try_enter_internal): Put the owner == id check after the
6805         owner == 0 check.
6806
6807         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
6808         missed optimizations when using gcc-4.3.
6809
6810 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
6811
6812         * reflection.c (mono_dynamic_image_free): Free the memory
6813         used by MonoGenericParam in MonoDynamicImage::gen_param.
6814
6815         * reflection.c (mono_reflection_setup_generic_class): Allocate
6816         container from mempool.
6817
6818         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
6819         container from mempool.
6820
6821 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6822
6823         * threads.c (mono_set_pending_exception): New internal function to set the
6824         pending exception of the current thread.
6825         (mono_thread_get_and_clear_pending_exception): Check for 
6826         thread->pending_exception as well.
6827
6828         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
6829
6830         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
6831         it can trigger a collection.
6832
6833 2008-06-06  Martin Baulig  <martin@ximian.com>
6834
6835         Merged the `debugger-kahalo' branch.
6836
6837         * mono-debug.h
6838         (MONO_DEBUGGER_VERSION): Bumped to 72.
6839
6840         * debug-mono-symfile.h
6841         (MonoSymbolFileMethodIndexEntry): Removed.
6842         (MonoSymbolFileMethodEntry): New public typedef.
6843         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
6844         (MonoSymbolFileSourceEntry): Remove everything except `index' and
6845         `data_offset'.
6846         (MonoSymbolFileMethodEntry): Removed.
6847         (MonoSymbolFileLexicalBlockEntry): Removed.
6848         (MonoSymbolFileLineNumberEntry): Removed.
6849         (MonoDebugLexicalBlockEntry): Removed.
6850         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
6851         removed `num_il_offsets' and `il_offsets'.
6852         (MonoSymbolFile): Replace `version' with `major_version' and
6853         `minor_version'.
6854         (MONO_SYMBOL_FILE_VERSION): Replace with
6855         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
6856         `MONO_SYMBOL_FILE_MINOR_VERSION'.
6857
6858         * debug-mono-symfile.c
6859         (mono_debug_symfile_lookup_location): Add support for the new line
6860         number table format.
6861
6862 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
6863
6864         * metadata.c (free_generic_class): Release the inflated
6865         MonoClass of dynamic generic classes if it's not a generic
6866         type definition.
6867
6868 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
6869
6870         * verify.c: Reapplied more of the reverted changes.
6871
6872 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
6873
6874         * reflection.c (lookup_custom_attr): Clean the cached flag or
6875         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
6876         for SRE types.
6877
6878 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
6879
6880         * verify.c: Reapplied a small part of the reverted changes.
6881
6882 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6883
6884         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6885
6886         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
6887         previously in managed code.
6888         (mono_monitor_exit): Ditto.
6889         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
6890
6891         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
6892         the managed definition.
6893
6894 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
6895
6896         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
6897
6898 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6899
6900         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
6901         
6902         * monitor.c: Add some micro optimizations.
6903
6904         * icall.c (type_from_typename): Handle 'bool'.
6905
6906 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
6907
6908         * verify.c: Implement constructor verification per P III 1.8.1.4.
6909         Fixes #396716.
6910
6911 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
6914         holding the assemblies lock here too.
6915
6916 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6917
6918         * verify.c: Kill stack_top function.
6919
6920 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6921
6922         * verify.c: Kill stack_get function.
6923
6924 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6925
6926         * verify.c (mono_method_verify): Last change broke the build. Fixed.
6927
6928 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6929
6930         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
6931         more reliable.
6932
6933         * verify.c (mono_method_verify): Inflate params and locals to avoid
6934         mismatch when checking for compatibility.
6935
6936 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
6937
6938         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
6939         Length prefix should be size in bytes. Fix bug #339530.
6940         
6941         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
6942         Length prefix should be size in bytes. Fix bug #339530.
6943
6944         Code is contributed under MIT/X11 license.
6945
6946 2008-06-05  Bill Holmes <billholmes54@gmail.com>
6947
6948         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
6949
6950         Contributed under MIT/X11 license.
6951
6952 2008-06-05  Martin Baulig  <martin@ximian.com>
6953
6954         * mono-debug-debugger.c
6955         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
6956
6957 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6958
6959         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
6960         while holding the assemblies lock to prevent deadlocks. Handle the case
6961         where the search hook returns NULL but the assembly was still loaded.
6962         Fixes #323696.
6963
6964         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
6965         modify domain state.
6966
6967 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6968
6969         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
6970         * Makefile.am (pedump_LDADD): Post-process object files and
6971         add dtrace-generated object file, if necessary.
6972
6973         Code is contributed under MIT/X11 license.
6974
6975 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6976
6977         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
6978
6979 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6980
6981         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
6982
6983 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6984
6985         * threads.c: Try to free everything from the delayed free table
6986         when shutting down threads, and set the variable to NULL after the
6987         table is freed so that calling
6988         mono_thread_hazardous_try_free_all() when shutting down the root
6989         domain doesn't crash.
6990
6991 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6992
6993         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
6994         the caller if resulting type was inflated.
6995
6996         * class.c (mono_class_create_from_typespec): Free the MonoType if it
6997         was inflated.
6998
6999         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
7000
7001
7002 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
7003
7004         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
7005         class library tests.
7006
7007         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
7008         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
7009         #396989.
7010
7011 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7012
7013         * domain.c, domain-internals.h: The JIT infos are now freed by the
7014         JIT info table code.  They are freed immediately if there only a
7015         single JIT info table in circulation.  If there is more, the free
7016         is delayed via a queue.
7017
7018         * threads.c, threads-types.h: New hazard pointer function for
7019         freeing all freeable delayed items in one sitting.
7020
7021 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
7022
7023         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
7024
7025         * reflection.c (typebuilder_setup_properties): Same.
7026
7027         * reflection.c (typebuilder_setup_events): Same.
7028
7029 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
7030
7031         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
7032         and use it for allocating memory.
7033
7034         * reflection.c (mono_marshal_spec_from_builder): Same.
7035
7036         * reflection.c: Change code to use new signatures.
7037
7038         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
7039
7040 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7041
7042         * decimal.c (rescale128): Put back one line which was accidently commented
7043         out.
7044         
7045         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
7046         to cause crashes.
7047
7048 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
7049
7050         * reflection.c (mono_reflection_generic_class_initialize): Name must
7051         be always malloc'ed so we can free it later on. Do this for field, property
7052         and event.
7053
7054         * metadata.c (free_generic_class): Free field, property and event names.
7055
7056 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
7057
7058         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
7059         instead of g_memdup.
7060
7061         * reflection.c (typebuilder_setup_fields): Same.
7062
7063 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7064
7065         * decimal.c (rescale128): Optimize this function a bit more.
7066
7067 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
7068
7069         * metadata.c (free_generic_class): Release some memory from
7070         SRE generic classes.
7071
7072 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
7073
7074         * reflection.c (mono_image_get_generic_field_token): No reference
7075         to name is kept, free it.
7076
7077         * reflection.c (mono_reflection_generic_class_initialize): Free
7078         more memory of the inflated field.
7079
7080 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7081
7082         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
7083         code.
7084
7085 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
7086
7087         * reflection.c (mono_dynamic_image_free): Release memory used by
7088         MonoDynamicImage::array_methods elements.
7089
7090         * reflection.c (assembly_add_win32_resources): Release memory after
7091         encoding.
7092
7093 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
7094
7095         * decimal.c (log2_32): Use an optimized version for this function too.
7096         
7097         * decimal.c (log2_64): Fix this on 32 bit machines.
7098
7099 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
7100
7101         * class.c (mono_dup_array_type): Implement allocation using a mempool.
7102
7103         * class.c (mono_metadata_signature_deep_dup): Same.
7104
7105         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
7106         a mempool.
7107
7108         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
7109
7110         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
7111
7112         * metadata-internals.h: Added mono_metadata_signature_dup_full.
7113
7114         * class-internals.h: Update signatures to take a MonoMemPool.
7115
7116 2008-06-02  Dick Porter  <dick@ximian.com>
7117
7118         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
7119         * icall-def.h: Add
7120         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
7121         FormatMessage API to get the error text.  Fixes bug 321827.
7122
7123 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
7124
7125         * decimal.c: Add some micro optimizations to make decimal operations faster.
7126
7127 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
7128
7129         * reflection.c (method_encode_clauses): Take a mempool
7130         as parameter and use it to allocate the clause array.
7131
7132         * reflection.c (mono_image_get_field_on_inst_token): Free
7133         the inflated type after encoding it.
7134
7135         * reflection.c (mono_dynamic_image_free): Free each element
7136         of MonoDynamicImage::gen_params.
7137
7138         * reflection.c (reflection_methodbuilder_to_mono_method):
7139         Allocate the generic param array from the mempool.
7140         Allocate signature params from the mempool.
7141
7142         * reflection.c (mono_reflection_generic_class_initialize):
7143         Free inflated fields after been used.
7144
7145 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
7146
7147         * icall.c: Reapply the memory leak fixes as they no
7148         longer make mono crash.
7149
7150 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
7151
7152         * reflection.c (mono_type_get_object): Don't store the suplied
7153         MonoType with type_hash. A caller which pass a type that
7154         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
7155         might end with a pointer to freed memory.
7156         The solution is to use byval_arg or this_arg from the associated
7157         MonoClass of the supplied type.
7158
7159 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
7160
7161         * icall.c: Revert the rest of the last change as it breaks the build too.
7162
7163 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
7164
7165         * icall.c: Revert a leak fix as it's breaking the build.
7166
7167 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
7168
7169         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
7170
7171 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
7172
7173         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
7174
7175 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
7176
7177         * icall.c: Fix some memory leaks.
7178
7179 2008-05-29  Dick Porter  <dick@ximian.com>
7180
7181         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
7182         async socket operations from the pending list when a socket
7183         closes.  Leaving it until the threadpool services the event
7184         exposes a race condition when a socket descriptor is reused.
7185         Fixes bug 377589.
7186
7187 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
7188
7189         * object.c: Fix negative index check for array alocation.
7190
7191 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
7192
7193         * icall.c, marshal.c: Delegate wrappers should skip visibility.
7194         This check is performed by the verifier for IL created delegates
7195         and by Delegate::CreateDelegate for programatically created ones.
7196         Fixes #372406.
7197
7198 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
7199
7200         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
7201         Fix code to use mono_array_size_t instead of int.
7202
7203         Based on patch by Luis F. Ortiz.
7204         Contributed under X11 license.
7205         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
7206
7207 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
7208
7209         * icall.c: Added ves_icall_System_Array_GetLongLength and
7210         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
7211         arrays.
7212
7213         * icall.h: Export both new functions.
7214
7215         Based on patch by Luis F. Ortiz.
7216         Contributed under X11 license.
7217         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
7218
7219 2008-05-28  Martin Baulig  <martin@ximian.com>
7220
7221         The debugger now requires exactly r103463.
7222
7223         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
7224         This version is not supported by the debugger, wait for 72.
7225
7226 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
7227
7228         * object.h: Changed array related functions to use
7229         mono_array_size_t instead of guint32. Forgot to commit this file.
7230
7231         Patch by Luis F. Ortiz.
7232         Contributed under X11 license.
7233         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
7234
7235
7236 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
7237
7238         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
7239         don't define it. Use the number literal instead.
7240
7241 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
7242
7243         * icall.c: Changed array related functions to use
7244         mono_array_size_t instead of guint32.
7245
7246         * icall.c (ves_icall_System_Array_GetLength): Check for length
7247         overflow under MONO_BIG_ARRAYS.
7248
7249         Based on patch by Luis F. Ortiz.
7250         Contributed under X11 license.
7251         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
7252
7253 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
7254
7255         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
7256
7257         Based on patch by Luis F. Ortiz.
7258         Contributed under X11 license.
7259         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
7260
7261 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
7262
7263         * object.c, object.h: Changed array related functions to use
7264         mono_array_size_t instead of guint32.
7265
7266         Patch by Luis F. Ortiz.
7267         Contributed under X11 license.
7268         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
7269
7270 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
7271
7272         * object.h: Introduced mono_array_size_t typedef. This must be used
7273         in all places an array length is expected. This is 64bits wide if
7274         MONO_BIG_ARRAYS is enabled.
7275
7276         Patch by Luis F. Ortiz.
7277         Contributed under X11 license.
7278         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
7279
7280 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7281
7282         * security-manager.c class.c: Set the class exception info by calling
7283         mono_class_set_failure ().
7284
7285         * class.c (mono_class_get_exception_data): New accessor function.
7286         (mono_class_set_failure): Store exception_data in the property hash.
7287
7288         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
7289         the struct as a property.
7290
7291         * loader.c (mono_get_method_full): Store the lookup result for method
7292         tokens in method_cache, the others in methodref_cache to decrease the memory
7293         usage of hash tables.
7294
7295         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
7296         (mono_image_init): method_cache is lazy inited now.
7297
7298         * metadata-internals.h (struct _MonoImage): Change method_cache to
7299         a MonoValueHashTable, add a separate methodref_cache.
7300
7301 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
7302
7303         * number-formatter.h: Fix tables to avoid arithemtic overflow in
7304           Double.ToString as exposed by Bug #383531.
7305
7306 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7307
7308         * number-formatter.h: Make some tables static.
7309
7310         * class.c (mono_method_set_generic_container): New accessor function.
7311         (mono_method_get_generic_container): Ditto.
7312
7313         * class-internals.h (struct _MonoMethod): Remove rarely used 
7314         'generic_container' field, store it in the property hash instead. Add 
7315         'is_generic' boolean field instead.
7316
7317         * image.c (mono_image_init): Initialize property_hash.
7318         (mono_image_close): Destroy property_hash.
7319
7320         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
7321         hold rarely used fields of runtime structures belonging to this image.
7322
7323         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
7324         to get/set method->generic_container.
7325
7326         * loader.c (mono_get_method_from_token): Avoid loading the method header for
7327         generic methods.
7328
7329 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
7330
7331         * class.c (mono_class_inflate_generic_method_full): Don't increase
7332         mono_stats.inflated_method_count for methods found in the cache.
7333
7334         * threads.c (mono_thread_request_interruption): Add a comment about 
7335         QueueUserAPC ().
7336
7337 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7338
7339         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
7340         interface_offsets_packed table.
7341         
7342         * class.c (mono_class_init): Remove some dead code.
7343
7344         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
7345         mono_class_setup_vtable () when CAS is active to detect security problems.
7346
7347 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
7348
7349         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
7350
7351         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
7352         parameters as it's irrelevant for delegate checking.
7353
7354 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7355
7356         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
7357
7358         * class.c (mono_class_init): Control the creation of a generic vtable using
7359         a global which is true by default, but set to false by the runtime startup code.
7360         
7361         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
7362         Disabled for now since it breaks the embedding API.
7363         Move the setup of class->methods for arrays to mono_class_setup_methods ().
7364         (mono_class_setup_methods): Add a memory barrier.
7365
7366         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
7367         when mono_class_init () doesn't compute the generic vtable.
7368         
7369 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7370         * profiler.c: Added mono_profiler_install_statistical_call_chain,
7371         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
7372         to support call chains (backtrace) in the stat profiler.
7373         * profiler.c, profiler-private.h: Likewise.
7374
7375 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7376
7377         * generic-sharing.c: Init generic class when a method of it is
7378         requested via a runtime generic context.
7379
7380 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7381
7382         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
7383
7384         * reflection.c (mono_type_get_object): Add a FIXME.
7385
7386         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
7387
7388         * class.c (mono_class_get_method_by_index): New helper function, returning an
7389         entry in the class->methods array.
7390
7391 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7392
7393         * class.c (mono_class_init): Only do the array optimization for szarrays. 
7394         Avoid creating a generic vtable for generic instances as well.
7395         (mono_class_get_method_from_name_flags): Don't search in the metadata for
7396         generic instances.
7397
7398 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
7399
7400         * loader.c (mono_get_method_constrained): Inflate the signature
7401         with class context. Fix #325283.
7402
7403 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * object.c (mono_class_create_runtime_vtable): Add a comment.
7406
7407         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
7408         where needed.
7409         (setup_interface_offsets): Handle the case when this is called twice for arrays.
7410         (mono_class_setup_vtable_general): Add an assert.
7411         (mono_class_init): Avoid creating a generic vtable for arrays.
7412
7413         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
7414         here, let mono_class_init () do that.
7415
7416         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
7417         interfaces in mscorlib.
7418
7419         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
7420         interfaces. Add some comments.
7421         (mono_class_init): Call mono_class_setup_methods () here since it is no
7422         longer called by mono_class_setup_vtable ().
7423
7424         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
7425         not set in class->vtable.
7426         (mono_class_create_runtime_vtable): Reenable the disabled code.
7427
7428         * object.c (mono_class_create_runtime_vtable): Disable the last change for
7429         now as it causes some test failures.
7430
7431         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
7432         if using the vtable trampoline. Also remove some strange code which put the
7433         generic methods themselves into the vtable slots. Remove the AOT init_vtable
7434         stuff as it is no longer needed.
7435
7436 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
7437
7438         * pedump.c: Give make --verify all option check code as well.
7439         Using --verify code won't check for metadata now.
7440
7441 2008-05-19  Martin Baulig  <martin@ximian.com>
7442
7443         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
7444
7445         * mono-debug.c
7446         (_mono_debug_using_mono_debugger): New global variable; it's set
7447         directly by the debugger, so mono_debug_using_mono_debugger() also
7448         works after attaching.
7449
7450 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
7451
7452         * object.c (mono_class_create_runtime_vtable): Use memory barriers
7453         as we do double checked locking on MonoClass::runtime_info and
7454         MonoClassRuntimeInfo::domain_vtables.
7455
7456 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
7457
7458         * debug-helpers.c (print_field_value): Fix a warning.
7459
7460 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
7461
7462         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
7463         set in the AOT case.
7464
7465 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
7466
7467         * class.c (mono_class_setup_vtable_general): Use memory barriers
7468         as we do double checked locking on MonoClass::vtable.
7469
7470 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
7471
7472         * reflection.c (resolve_object): Inflate only if the generic context
7473         is not null. Fixes #389886.
7474
7475 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
7476
7477         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
7478         instead of g_free.
7479
7480         Code is contributed under MIT/X11 license.
7481
7482 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
7483
7484         * class.c: Revert unrelated change.
7485
7486 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
7487
7488         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
7489         a generic instantiation, use mono_class_from_mono_type instead of playing
7490         with MonoType directly.
7491
7492 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
7493
7494         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
7495         checks must ignore generic instantiations, so mono_class_has_parent is not
7496         suitable. Fixes #390128.
7497
7498 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
7499
7500         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
7501         it to avoid registering tokens during metadata generation. Fixes #390023.
7502
7503 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
7504
7505         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
7506         consistent.
7507
7508         Contributed under MIT/X11 license.
7509
7510 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
7511
7512         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
7513         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
7514         to fixup the EXE image.
7515         (mono_cleanup): Use mono_close_exe_image.
7516         (mono_close_exe_image): New function.
7517         * image.c: Include "marshal.h".
7518         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
7519         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
7520         counting when the image is loaded outside of mono_image_open_full. Set status
7521         based on GetLastError.
7522         * coree.c: Include required headers. Add init_from_coree.
7523         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
7524         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
7525         (_CorExeMain): Set init_from_coree.
7526         (CorExitProcess): Only call ExitProcess for now.
7527         (CorBindToRuntimeEx): New stub implementation.
7528         (CorBindToRuntime): New function.
7529         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
7530         (MonoFixupExe): ILONLY executables require no fixups.
7531         (mono_set_act_ctx): New function to set activation context.
7532         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
7533         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
7534         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
7535         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
7536         as MONO_INTERNAL.
7537         * domain-internals.h: Add mono_close_exe_image.
7538
7539         Contributed under MIT/X11 license.
7540
7541 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
7542
7543         * metadata.c (mono_metadata_compute_size): Correctly calculate field
7544         size for generic param and event tables. Fixes #388977.
7545
7546 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
7547
7548         * loader.c (mono_method_signature): Use memory barriers because of the double
7549         checked locking pattern.
7550
7551         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
7552         aborting or aborted as well. Fixes #376391.
7553         
7554         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
7555         existing runtime state in the Suspend handler during shutdown.
7556
7557 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
7558
7559         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
7560
7561         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
7562         which are starting up or shutting down.
7563
7564         * threads.c (mono_threads_set_shutting_down): Don't return a value since
7565         this function never returns if the runtime is already shutting down.
7566
7567         * icall.c (ves_icall_System_Environment_Exit): Update after 
7568         mono_threads_set_shutting_down () signature change.
7569         
7570 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
7571
7572         * class.c: Added can_access_instantiation to verify if the instantiation
7573         is visible. Fix access check for nested types as they returned TRUE
7574         before doing type and generic instantiation visibility checks.
7575
7576 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
7577
7578         * reflection.c (mono_reflection_create_generic_class): The created type
7579         must have a different container from its TypeBuilder. Otherwise they
7580         will end sharing generic arguments, which is wrong.
7581
7582         Due to the sharing, making a generic instance of the created type using
7583         the TypeBuider generic arguments resulted in the generic type definition
7584         been returned, which is wrong as well.
7585
7586         As a bonus the code was leaking the type_params array. This memory should
7587         be allocated from the image mempool.
7588
7589         This fixes bug #354047.
7590
7591 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
7592
7593         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
7594         to here         as they are now used in assembly.c new code.
7595         Added a skipverification flag to MonoAssembly.
7596         New internal function mono_assembly_has_skip_verification.
7597
7598         * assembly.c: New function mono_assembly_has_skip_verification. It checks
7599         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
7600         part of #387274.
7601
7602 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7603
7604         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
7605         needed. Fixes #387034.
7606
7607         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
7608
7609 2008-05-06  Miguel de Icaza  <miguel@novell.com>
7610
7611         * assembly.c (mono_assembly_load_reference): Prevent crash while
7612         disassembling Silverlight 2.0 executables while we still do not
7613         have GACed libraries.
7614
7615 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7616
7617         * reflection.c: Special case generic type definitions as well. Fixes #383444.
7618
7619 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
7622         of the dynamic case. Fixes #387404.
7623
7624 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
7625
7626         *verify.c (mono_verifier_is_class_full_trust): If under
7627         verify_all and the verifier mode was not set, only
7628         gac and corlib types are fulltrust. This makes --verify-all
7629         usable to detect unverifiable code, which is the expected
7630         use case.
7631
7632 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
7633
7634         * verify.h: Ops, commited the header with debug
7635         enabled.
7636
7637 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
7638
7639         * verify.c (merge_stack): Use the new value on unverifiable
7640         stack merges.
7641
7642         * verify.c (verify_type_compatibility_full): Comparison
7643         of nullable types can't use mono_class_is_assignable_from.
7644
7645         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
7646         that makes all verification errors be reported.
7647
7648         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
7649         mono_method_verify.
7650
7651 2008-05-05  Robert Jordan  <robertj@gmx.net>
7652
7653         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
7654         support for value types. See #386415.
7655
7656         * object.c: comments.
7657
7658         Code is contributed under MIT/X11 license.
7659
7660 2008-05-05  Martin Baulig  <martin@ximian.com>
7661
7662         * debug-mono-symfile.h
7663         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
7664         for old pre-terrania symbol files.
7665
7666 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
7667
7668         * mono-config.c: Add ppc64 architecture.
7669
7670         Code is contributed under MIT/X11 license.
7671
7672 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
7673
7674         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
7675           PPC64 uses function descriptors as well.
7676
7677         Code is contributed under MIT/X11 license.
7678
7679 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
7680
7681         * object.c (compute_class_bitmap): Ignore literal static fields.
7682
7683         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
7684         var has an invalid format.
7685         (describe_ptr): Add some sanity checks for the vtable.
7686         (add_nursery_frag): Clear unused nursery fragments.
7687         (major_collection): Clear all remaining nursery fragments.
7688
7689 2008-05-03  Robert Jordan  <robertj@gmx.net>
7690
7691         * image.c, metadata-internals.h: add thunk_invoke_cache.
7692
7693         * marshal.c, marshal.h: implement
7694         mono_marshal_get_thunk_invoke_wrapper ().
7695
7696         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
7697
7698         Code is contributed under MIT/X11 license.
7699
7700 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
7701
7702         * verify.c (do_leave): Empty the stack.
7703
7704 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
7705
7706         * class.c (mono_class_is_assignable_from): Variance
7707         doesn't work between reference and value types. For example,
7708         given type C<T+>, C<int32> is not assignable to C<object>.
7709         Break the argument checking loop on first error. 
7710
7711 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
7712
7713         * icall.c : base64_to_byte_array() needs some more strict
7714           check for sequence of '=' characters. Patch by Santa
7715           Marta (http://deee.g.hatena.ne.jp/santamarta).
7716
7717           Contributed under MIT/X11 license.
7718           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
7719
7720 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
7721
7722         * domain.c: Disable LoadLibrary support to fix Win32 build.
7723
7724         Code is contributed under MIT/X11 license.
7725
7726 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
7727
7728         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
7729         to help with cache behaviour.
7730
7731 2008-05-01  Miguel de Icaza  <miguel@novell.com>
7732
7733         * appdomain.c (mono_domain_from_appdomain): Add new accessor
7734         method. 
7735
7736 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
7737
7738         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
7739
7740 2008-05-01  Dick Porter  <dick@ximian.com>
7741
7742         * process.c (process_get_fileversion): Only pass 16 bits of
7743         language ID to VerLanguageName.  Fixes bug 381204.
7744
7745 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
7746
7747         * verify.c (mono_method_verify): Fix the comparison
7748         operator for code bounds check.
7749
7750 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
7751
7752         * verify.c (mono_method_verify): Check the bounds of
7753         all access of the code array.
7754
7755 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
7756
7757         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
7758
7759 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
7760
7761         * image.c (mono_image_strong_name_position): Fix return value when the rva is
7762         not valid.
7763
7764 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
7765
7766         * loader.c (mono_get_method_from_token, mono_method_signature): Add
7767         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
7768         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
7769         fixup main EXE images when using mono.exe for mixed-mode assembly support.
7770         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
7771         mono_runtime_load.
7772         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
7773         runtime initialization from metadata.
7774         * assembly.c: Remove obsolete ceGetModuleFileNameA.
7775         (mono_set_rootdir): Use mono_get_module_file_name.
7776         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
7777         handles.
7778         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
7779         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
7780         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
7781         MonoCLIImageInfo. Add support for module handles.
7782         (load_cli_header): Update mono_cli_rva_image_map signature.
7783         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
7784         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
7785         (mono_image_rva_map): Add support for module handles.
7786         (mono_image_ensure_section_idx): Add support for module handles.
7787         (mono_image_close): Add support for module handles.
7788         (do_load_header): Add support for module handles.
7789         (mono_image_open_from_module_handle): New function for internal use.
7790         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
7791         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
7792         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
7793         handles.
7794         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
7795         * image.h: Add mono_image_fixup_vtable.
7796         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
7797         support.
7798         * coree.h: New file.
7799         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
7800         unsupported native code.
7801         (mono_marshal_set_callconv_from_modopt): New function splitted from
7802         mono_marshal_get_managed_wrapper.
7803         (mono_marshal_get_managed_wrapper): Use
7804         mono_marshal_set_callconv_from_modopt.
7805         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
7806         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
7807         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
7808         that results in a deadlock when the runtime is loaded in _CorDllMain.
7809         * Makefile.am: Add coree.c and coree.h.
7810
7811         Contributed under MIT/X11 license.
7812
7813 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7814
7815         * generic-sharing.c: Search for type arguments in array element
7816         types as well.
7817
7818 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7819
7820         * class-internals.h, generic-sharing.c: New, small runtime generic context.
7821
7822         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
7823
7824         * object.c: Don't setup the RGCTX when the vtable is created,
7825         because we're setting it up lazily now.
7826
7827 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
7830         64 bit support.
7831
7832 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
7833
7834         * verify.c (verify_class_for_overlapping_reference_fields): 
7835         If class is under fulltrust allow reference types to overllap
7836         if they have the same RVA.
7837
7838 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
7839
7840         * pedump.c: Added new flag valid-only, that makes the verifier
7841         behaves just like --security=validil. It won't fail type load
7842         due to unverifiable restrictions.
7843
7844 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
7845
7846         * class-internals.h (struct MonoMethod): Added a verification_success
7847         field to cache verifier executions. Reduced MonoMethod:slot size by
7848         one bit.
7849
7850 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7851
7852         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
7853         instead of a 'vt' argument to save an indirection and to allow these to be used
7854         for valuetypes.
7855         (scan_vtype): New helper function to scan an area using a gc descriptor.
7856         (mono_gc_wbarrier_value_copy): Implement this.
7857         (handle_remset): Add support for REMSET_VTYPE.
7858         (find_in_remset_loc): Ditto.
7859         (mono_gc_base_init): Allow some debugging options to be controlled through the
7860         use of the MONO_GC_DEBUG env variable.
7861         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
7862         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
7863
7864 2008-04-23  Martin Baulig  <martin@ximian.com>
7865
7866         * domain.c (mono_domain_create): Move the call to
7867         mono_debug_domain_create() down, after allocating the domain id.
7868
7869 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
7870
7871         verify.c (verify_class_for_overlapping_reference_fields): Skip
7872         static fields while verifying for overlapping fields as they
7873         don't matter at all.
7874
7875 2008-04-23  Marek Habersack  <mhabersack@novell.com>
7876
7877         * domain-internals.h: added a declaration of
7878         mono_make_shadow_copy.
7879
7880         * assembly.c (mono_assembly_open_full): shadow copying of
7881         assemblies moved to here, so that all the assemblies within the
7882         application domain's private binary directories can be
7883         processed. Fixes bug #380546
7884
7885         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
7886         mono_make_shadow_copy and made non-static. The decision whether
7887         to shadow-copy an assembly is made based on its location - it's
7888         copied if it's in one of the private application domain binary
7889         directories and its different to the target file in the shadow
7890         directory. Fixes bug #380546
7891
7892 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7893
7894         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
7895
7896         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
7897         types.
7898
7899         * reflection.c (mono_image_create_token): Handle 
7900         Method/ConstructorOnTypeBuilderInst.
7901         (resolve_object): Ditto.
7902         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
7903         so it can be called from resolve_object. Also handle the case when the inflated
7904         class already has its methods setup.
7905
7906 2008-04-21  Martin Baulig  <martin@ximian.com>
7907
7908         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
7909
7910 2008-04-20  Geoff Norton  <gnorton@novell.com>
7911
7912         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
7913         pointer dereference.
7914
7915 2008-04-15  Marek Habersack  <mhabersack@novell.com>
7916
7917         * appdomain.c (try_load_from): if IOMAP is in effect, call the
7918         portability API to look up the assembly file. Fixes behavior in
7919         situations when the application has a bin/ directory, but the
7920         assembly search patch refers to Bin/ (and thus the requested file
7921         name is Bin/SomeLibrary.dll). Fixes bug #379888
7922
7923 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7924
7925         verify.c (mono_type_is_generic_argument): Extracted this check
7926         from a dozen places to here.
7927
7928         verify.c: Fixed all issues related to boxing generic arguments
7929         and their constraints.
7930
7931 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7932
7933         verify.c (mono_class_interface_implements_interface): Fix win32 build.
7934
7935 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7936
7937         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
7938         isn't finished yet. Fixes #363447.
7939
7940 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
7941
7942         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
7943         Fixes #346419.
7944
7945 2008-04-13  Jb Evain  <jbevain@novell.com>
7946
7947         * domain.c: update the 2.1 profile versions.
7948         Merged from the Moonlight 2 branch.
7949
7950 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
7951
7952         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
7953         mscorlibs for the non-refonly case as well.
7954
7955         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
7956         in mono_assembly_load_from_full (). Fixes #378924.
7957
7958 2008-04-11  Geoff Norton  <gnorton@novell.com>
7959
7960         * icall.c: The global extern environ doesn't exist on Mac.  We
7961         need to call NSGetEnviron instead.
7962
7963 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         verify.c: Add generic method constraint verification.
7966
7967 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7968
7969         class.c (mono_class_inflate_generic_method_full): Add a long
7970         explanation to the is_mb_open hack. Remove the FIXME.
7971
7972 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7973
7974         * verify.c (mono_method_verify): Mark all unknown opcodes
7975         as invalid. Mark jmp as unverifiable.
7976
7977 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7978
7979         * verify.c: Add code to do type constraint verification on class instances.
7980
7981         * verify.c (mono_verifier_verify_class): Use the type constraint 
7982         verification code.
7983
7984 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7985
7986         * class.c (mono_class_get_field_default_value): Don't pass cindex
7987         as hint to mono_metadata_get_constant_index. The local is not initialized
7988         and should contain garbage most of the time. This could only work
7989         with a lot of luck.
7990
7991 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7992
7993         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
7994
7995 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7996
7997         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
7998
7999         * class.c (mono_class_from_generic_parameter): Save the token of the
8000         generic param in MonoClass::sizes.generic_param_token.
8001
8002         * reflection.c (mono_custom_attrs_from_class): If the class type is
8003         VAR or MVAR retrieve the attributes of the generic param.
8004
8005 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
8006
8007         * class.c (mono_class_init): Do class verification if the verifier
8008         is enabled.
8009
8010 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
8011
8012         * verify-internal.h: Added mono_verifier_verify_class.
8013
8014         * verify.c: Added mono_verifier_verify_class. It checks for
8015         classes with explicit layout that have overlapping reference fields.
8016
8017         * pedump.c: Init the verifier state prior to verification. Fixed
8018         command line arguments.
8019
8020 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
8021
8022         * Makefile.am: Added verify-internals.h, hopefully fix the build.
8023
8024 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8025
8026         * verify-internals.h: Fix a warning.
8027
8028 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
8029
8030         * verify-internals.h: New header with the verifier configuration
8031         extracted from mini.c.
8032
8033         * verify.c: Implemented the new functions exported by verify-internals.h.
8034
8035 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
8036
8037         * verify.c: Add proper verification of ckfinite.
8038
8039 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
8040
8041         * verify.c (do_conversion): Improved error message to something
8042         more meanfull.
8043
8044         * verify.c (check_is_valid_type_for_field_ops): Fix to work
8045         with primitive types.
8046
8047 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
8048
8049         * verify.c: Added tail prefix checking. Marked icall
8050         as unverifible.
8051
8052 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
8053
8054         * verify.c: Fix the detection of branches to the middle
8055         of an instruction.
8056
8057 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
8058
8059         * verify.c: Implemented verification of volatile. and
8060         unaligned. prefix. Check if a type is valid after retrieving it.
8061
8062 2008-04-01  Dick Porter  <dick@ximian.com>
8063
8064         * process.c (process_get_fileversion): If there's no string block,
8065         set the file language to en_US.  Fixes the other new part of bug
8066         374600.
8067
8068 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
8069
8070         * class.c: New functions mono_method_can_access_field_full and
8071         mono_method_can_access_method_full. They perform type visibility
8072         and type site check.
8073
8074         * class-internal.h: Added exported functions.
8075
8076         * verify.c: Use new functions to implement proper visibility checks.
8077
8078 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
8079
8080         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
8081
8082 2008-03-28  Dick Porter  <dick@ximian.com>
8083
8084         * process.c (process_get_fileversion): Use the first language ID
8085         we see, rather than insisting on an invariant language.  Fixes bug
8086         374600.
8087
8088 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
8089
8090         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
8091         the streams to fix reading of invalid memory later.
8092
8093         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
8094         to ease debugging.
8095
8096 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
8097
8098         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
8099         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
8100
8101 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
8102         * threads.h: Added MonoThreadManageCallback type and
8103         mono_thread_set_manage_callback prototype
8104         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
8105         (used to store the mono_thread_manage callback).
8106         * threads.c: Added mono_thread_set_manage_callback, and handle
8107         "MonoThread->manage_callback" in build_wait_tids.
8108
8109 2008-03-26  Dick Porter  <dick@ximian.com>
8110
8111         * process.c (process_get_fileversion): Set FileVersionInfo strings
8112         to Empty when the resource doesn't have the particular info.
8113         Fixes bug 355717.
8114
8115 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
8116
8117         * verify.c (mono_method_verify): Proper prefix validation.
8118
8119 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
8120
8121         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
8122         itself in a separate argument instead of throwing them. Fixes #373448.
8123
8124         * appdomain.c: Bump corlib version.
8125
8126 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
8127
8128         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
8129
8130 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
8131
8132         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
8133         version macros.
8134
8135 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8136
8137         * generic-sharing.c, class-internals.h: Code for putting
8138         reflection types into the runtime generic context.
8139
8140 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
8141
8142         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
8143         Fixes #340662. 
8144
8145
8146 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
8147
8148         * verify.c (VerifyContext): Added instruction prefix data to the struct.
8149
8150         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
8151
8152         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
8153
8154         * verify.c (do_cast): Let the result value keep the boxed status.
8155
8156         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
8157
8158 2008-03-17  Jb Evain  <jbevain@novell.com>
8159
8160         * reflection.c: when running on a 2.0 runtime, emit
8161         unconditionally the #~ header version as 2.0, and the
8162         CLI header version as 2.5, for symmetry's sake with csc.
8163
8164 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
8165
8166         * class.c: Remove the unused cache_interface_offsets stuff.
8167
8168         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
8169         profiler.c: Fix warnings.
8170
8171 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8172
8173         * generic-sharing.c, class-internals.h: Support for putting
8174         methods into the runtime generic context.
8175
8176 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
8177
8178         * class.c (mono_class_setup_fields): Ignore calls made to this function for
8179         classes which are generic instances of not-yet finished typebuilders. Fixes
8180         #351172.
8181
8182         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
8183
8184 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
8185
8186         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
8187
8188         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
8189         field, replace it with a hash table in MonoDynamicImage.
8190
8191         * reflection.c (inflate_mono_method): Access the generic definition object from
8192         image->generic_def_objects instead of imethod->reflection_info.
8193
8194         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
8195
8196         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
8197         
8198         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
8199         function in reflection.c so it is easier to keep in sync with the dynamic image
8200         creation code.
8201
8202         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
8203         mono_image_close ().
8204
8205 2008-03-15  Mark Probst  <mark.probst@gmail.com>
8206
8207         * class.c (mono_class_generic_sharing_enabled): Disable generic
8208         sharing for all architectures except AMD64 and x86 to fix build.
8209
8210 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
8211
8212         * verify.c: Use the generic definition MonoGenericContext when available.
8213         Remove code for checking generics instance compatibility in favor of
8214         mono_class_is_assignable_from.
8215
8216 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8217
8218         * marshal.c, marshal.h, metadata-internals.h, image.c,
8219         wrapper-types.h: New wrapper for invoking a shared static method
8220         without having to pass the runtime generic context argument.
8221
8222 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
8223
8224         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
8225
8226 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8227
8228         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
8229         
8230         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
8231         create a token from a FieldOnTypeBuilderInst.
8232         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
8233         (resolve_object): Ditto.
8234
8235         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
8236         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
8237
8238 2008-03-14  Martin Baulig  <martin@ximian.com>
8239
8240         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
8241
8242         * debug-mono-symfile.h
8243         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
8244         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
8245
8246 2008-03-10  Martin Baulig  <martin@ximian.com>
8247
8248         * debug-mono-symfile.h
8249         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
8250         `lexical_block_table_offset'.
8251         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
8252         `lexical_blocks'.
8253         (MonoSymbolFile): Added `version'.
8254
8255         * mono-debug.h
8256         (MonoDebugLexicalBlockEntry): Removed.
8257         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
8258         `lexical_blocks'.
8259
8260         * mono-debug.c (mono_debug_add_method): Don't compute lexical
8261         blocks here; the debugger now does this internally.
8262
8263 2008-02-27  Martin Baulig  <martin@ximian.com>
8264
8265         * object.c (mono_runtime_exec_main): Call
8266         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
8267         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
8268
8269 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
8270
8271         * verify.c (verify_type_compatibility_full): Allow native int to be converted
8272         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
8273
8274 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
8275
8276         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
8277         ldftn with a virtual method.
8278
8279 2008-03-13  Geoff Norton  <gnorton@novell.com>
8280
8281         * decimal.c:  Only include memory.h if the platform has it.
8282
8283 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
8284
8285         * assembly.c, class.c, metadata-internals.h: make sure public key
8286         tokesns are compared in a case-insensitive way. Also, all
8287         the lookups in the GAC use a lowercase public key token
8288         (gaacutil already does the lowercasing on install). Fixes
8289         bug #369541.
8290
8291 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
8292
8293         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
8294         and return value.
8295
8296 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
8297
8298         * image.c: when someone loads a mscorlib from a file, return the
8299         currently loaded mscorlib (fixes bug #369253).
8300
8301 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
8302
8303         * class.c: handle types with no parents by forcing them to have
8304         System.Object as a parent and marking them as broken (this currently
8305         allows the first part of bug #369173 to work as well, likely because
8306         we don't check for typeload exceptions everywhere yet).
8307
8308 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
8309
8310         * class.c: more complete check that types belong to corlib
8311         (fixes second part of bug #369173).
8312
8313 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
8314
8315         * generic-sharing.c:  Including glib.h for the MSVC builds to define
8316           "inline" to "__inline" before including mono-membar.h.
8317           
8318         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
8319           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
8320           MSVC builds.
8321
8322         Contributed under MIT/X11 license.
8323
8324 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
8325
8326         * verify.c (do_invoke_method): Remove return type validation.
8327
8328         * verify.c (do_ret): Do return type validation at return site instead of
8329         call site.
8330
8331 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
8332
8333         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
8334
8335         * verify.c: Some todos cleaned and improved a few error messages.
8336
8337 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
8338
8339         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
8340
8341 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8342
8343         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
8344         system types correctly.
8345
8346         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
8347         function.
8348
8349 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8350
8351         * assembly.c (build_assembly_name): Fix a warning.
8352
8353 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8354
8355         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
8356         the called function takes an object type argument. Fixes storing or
8357         valuetypes across remoting as well as reducing memory usage.
8358         * image.c, metadata-internals.h: remove now unused ldfld_remote and
8359         stfld_remote wrapper caches.
8360
8361 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8362
8363         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
8364         is not found.
8365
8366         * reflection.c (mono_image_register_token): New helper function to save
8367         a token->object mapping.        
8368
8369         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
8370         managed code.
8371
8372         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
8373         one dimension arrays. Fixes #367670.
8374         (mono_reflection_get_type_internal): Ditto.
8375
8376 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8377
8378         * marshal.c: mono_load_remote_field_new() always returns object.
8379         so use the proper signature (fixes bug #366445).
8380
8381 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8382         
8383         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
8384         add an 'inline_failure' flag instead.
8385
8386 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8387
8388         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
8389         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
8390         contains the location of "this", used for exception handling.
8391
8392 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8393
8394         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
8395         their size on all platforms for perf reasons.
8396
8397 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
8398
8399         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
8400         object-internal.h
8401
8402         * object-internal.h: Same.
8403
8404 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
8405
8406         * reflection.h: Fix the build I just broke.
8407
8408 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
8409
8410         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
8411         Test if a token is valid, this remove explicit usage of 
8412         MonoDynamicImage::tokens from the verifier code.
8413
8414         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
8415
8416         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
8417         instead of direct access to MonoDynamicImage::tokens.
8418
8419 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
8420
8421         * verify.c (token_bounds_check): Fix the build I just broke.
8422
8423 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
8424
8425         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
8426
8427         * verify.c (verifier_load_method): Fixed the errors message.
8428
8429         * verify.c (mono_method_verify): Fixed a debug message.
8430
8431 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
8432
8433         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
8434         mono-perfcounters.h, class-internals.h: support for predefined
8435         writable counters, query of categories and counters, bugfixes.
8436
8437 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
8438
8439         * verify.c (do_refanytype): Verify the refanytype opcode.
8440
8441         * verify.c (mono_method_verify): Use do_refanytype.
8442
8443 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
8444
8445         * verify.c (do_mkrefany): Verify the mkrefany opcode.
8446
8447         * verify.c (mono_method_verify): Use do_mkrefany.
8448
8449 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
8450
8451         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
8452         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
8453         implementation.
8454
8455 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
8458         the type load exception.
8459
8460 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
8461
8462         * verify.c: Added a few FIXME for method signatures
8463
8464         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
8465         of mono_method_get_signature and get vararg call working. Removed unused
8466         checks for return value.
8467
8468         * verify.c (do_refanyval): Verify the refanyval opcode.
8469
8470         * verify.c (mono_method_verify): Implemented verification of arglist and
8471         use do_refanyval.
8472
8473 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8474
8475         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
8476         vtypes to marshal.c.
8477
8478         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
8479         it works for AOT as well.
8480
8481 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
8482
8483         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
8484         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
8485         the system time is adjusted.
8486
8487 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
8488
8489         * icall.c, icall-def.h: use the new time functions (fixes the
8490         non-monotonic behaviour of TickCount).
8491
8492 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8493
8494         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
8495         it breaks the build.
8496         
8497         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
8498         cattr is not finished yet.
8499
8500 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
8501
8502         * verify.c: Proper token validation for field, method and type.
8503
8504 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
8505
8506         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
8507
8508         * loader.c (method_from_memberref): Generate type load error instead of method missing
8509         if the type is not found.
8510
8511 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8512
8513         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
8514         some of the conversions caused the generation of a marshal directive exception.
8515
8516 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
8517
8518         verify.c: Report which exception should be thrown by the JIT.
8519         Added a lot of FIXME notes.
8520
8521 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8522
8523         * generic-sharing.c: Runtime generic context slots are not
8524         instantiated on init anymore.  Instead, provide function to do the
8525         instantiating on demand.
8526
8527         * class-internals.h: Added vtable to runtime generic context.
8528         Macros for encoding direct and indirect slot offsets in one
8529         guint32.
8530
8531 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8532
8533         * object.c, generic-sharing.c: Moved some generic sharing code
8534         from object.c to generic-sharing.c.
8535
8536         * generic-sharing.c: Added support for extensible runtime generic
8537         context.
8538
8539         * metadata-internals.h: Two new hash tables in MonoImage for
8540         extensible runtime generic context support.
8541
8542         * domain.c: Unregister generic vtables upon domain unloading.
8543
8544         * image.c: Destroy new hash tables upon image unloading.
8545
8546         * metadata.c: Unregister generic subclasses upon image unloading.
8547
8548         * class-internals.h: New data structure for runtime generic
8549         context template.  New fields in the runtime generic context for
8550         extensible part.
8551
8552         * Makefile.am: Added generic-sharing.c.
8553
8554 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
8555
8556         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
8557         there is a pending loader exception, raise it.
8558
8559         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
8560         same.
8561
8562         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
8563         same.
8564
8565         Fixes #363450.
8566
8567 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8568
8569         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
8570
8571         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
8572         
8573         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
8574         ref-only requests for compatibility with MS.
8575
8576 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
8577
8578         * reflection.c (mono_custom_attrs_from_method): Don't silently
8579         return an empty list for generic method instances.
8580         (mono_custom_attrs_from_param): Likewise.
8581
8582 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
8583             Raja R Harinath  <harinath@hurrynot.org>
8584
8585         Fix #354757
8586         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
8587         * class.c (mono_class_inflate_generic_method_full): Initialize it
8588         when a fully-open method is instantiated.
8589         * metadata.c (inflated_method_equal, inflated_method_hash): Update
8590         to new field.
8591         * reflection.c (inflate_mono_method): Don't create a temporary context.
8592
8593 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
8594
8595         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
8596         Compute correct value, to prepare for imethod->reflection_info going away.
8597
8598 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
8601
8602 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
8603
8604         * verify.c: Implement skip visibility flag.
8605
8606 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
8607
8608         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
8609         which contains an extra field to tell the kind of exception that should be thrown.
8610
8611         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
8612
8613 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
8614
8615         * loader.c (mono_method_get_param_names): Initialize 'klass' after
8616         'method' is updated.
8617
8618 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
8619
8620         * class.c (mono_class_layout_fields): Set class->min_align for classes using
8621         explicit layout as well. Fixes #360375.
8622
8623 2008-02-11  Geoff Norton  <gnorton@novell.com>
8624
8625         * loader.c: Guard and dereference against inflated generic methods
8626
8627 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
8628
8629         * class.c: Include Retargetable spec in assembly name.
8630         * assembly.c: Always include PublicKeyToken spec in assembly name
8631         (with value "null" if assembly is not signed), and include
8632         Retargetable spec.
8633         * icall-def.h: Added icall for Assembly.get_fullname.
8634         * icall.c: Added icall returning the fullname of an assembly.
8635
8636 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8637
8638         * class.c (mono_class_setup_vtable_general): Add a missing call to
8639         mono_class_setup_methods () which is needed in the AOT case.
8640
8641 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
8642
8643         * verify.c (mono_type_get_stack_name): Added. Return the name for the
8644         stack type of the given MonoType.
8645
8646         * verify.c (verify_type_compatibility_full): Handle the void type.
8647
8648         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
8649         way stack merging works.
8650
8651         * verify.c (store_local): Improved verification message.
8652
8653         * verify.c (do_branch_op): If the merging is invalid, the method
8654         is unverifiable and not invalid. Improved error message.
8655
8656         * verify.c (merge_stacks): Properly merge a boxed valuetype and
8657         a reference type diferent than System.Object. Improved error
8658         message.
8659
8660 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
8661
8662         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
8663
8664         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
8665         type of an enum even if the argument is byref.
8666
8667         * verify.c: Replace all explicit uses of enumtype and enum_basetype
8668         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
8669
8670         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
8671
8672         *verify.c (verify_type_compatibility_full): Make enum types
8673         compatible with their base types.
8674
8675         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
8676         types are compatible for the special case of a boxed valuetype and
8677         System.Object.
8678
8679         * verify.c (verify_stack_type_compatibility): The function
8680         is_compatible_boxed_valuetype was extracted from here.
8681
8682         * verify.c (push_arg): Only set ctx->has_this_store if the method
8683         is not static.
8684
8685         * verify.c (do_ldelem): Fixed a typo in an error message and added
8686         strict check for mixing int32 and native int as the array type
8687         and ldelem type.
8688
8689         * verify.c (merge_stacks): Consider boxed valuetypes in the
8690         compatibility checks.
8691
8692 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
8693         * profiler.h: (MonoGCEvent): Added start-stop the world events.
8694
8695 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
8696         *class.c: use_new_interface_vtable_code: renamed the env var to have
8697         a "MONO_" prefix, and fix the logic to enable it by default.
8698
8699 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
8700         *class.c:
8701         mono_class_setup_vtable_general: rewrote the way in which interface
8702         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
8703         makes the code more maintainable.
8704         For now the old code is still there, and can be activated setting
8705         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
8706
8707 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
8708
8709         * verify.c: guarded some debug functions around and #ifdef.
8710
8711         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
8712
8713 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8714
8715         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
8716         changes for now since they seem to break too many things.
8717
8718 2008-02-05  Mark Probst  <mark.probst@gmail.com>
8719
8720         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
8721         mono_marshal_find_nonzero_bit_offset): Added macro and function
8722         for finding the byte- and bit-offset of a bitfield within a
8723         struct.
8724
8725 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
8726
8727         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
8728         (mono_marshal_get_struct_to_ptr): Ditto.
8729
8730         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
8731         cctor_signature.
8732
8733 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
8734
8735         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
8736         between methods for non-corlib types.
8737
8738 2008-02-02  Geoff Norton  <gnorton@novell.com>
8739
8740         * loader.c (mono_method_get_param_names): Populate the parameter name for 
8741         generic parameters as well. (Fixes #342536)
8742
8743 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
8744
8745         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
8746
8747         * verify.c (do_invoke_method): Fix for calling with byref structs.
8748
8749         * verify.c (do_cast): push a boxed value type based on the type token and not
8750         the type of stack.
8751
8752 2008-01-31  William Holmes  <billholmes54@gmail.com>
8753
8754         * process.c (process_module_string_read): Check the size returned form 
8755           VerQueryValue to avoid out of memory exception. 
8756
8757 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
8758
8759         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
8760         Handle properly modules which are not in the moduleref table. Fixes
8761         #356938.
8762
8763 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
8766         the dynamic case which is now in managed code.
8767         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
8768
8769         * marshal.c (mono_string_to_bstr): Fix a warning.
8770         (init_com_provider_ms): Ditto.
8771
8772         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
8773
8774         * exception.c (mono_get_exception_out_of_memory): New helper function.
8775
8776 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
8777
8778         * marshal.c: Add support for BSTR marshalling
8779         using other COM systems.
8780
8781         Code is contributed under MIT/X11 license.
8782
8783 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
8784
8785         * object.c (mono_runtime_invoke_array): reverted previous
8786         commit as it breaks the build.
8787
8788 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
8789
8790         * object.c (mono_runtime_invoke_array): Verify arguments for
8791         invalid types. Fixes #348522.
8792
8793 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
8794
8795         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
8796         non-final virtual calls using call. 
8797
8798         * verify.c (do_invoke): fixed some TODOs.
8799
8800         * verify.c (push_arg): set has_this_store for "ldarga 0".
8801
8802 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
8803
8804         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
8805         which belong to an inflated class. Fixes #356531.
8806
8807 2008-01-26  Robert Jordan  <robertj@gmx.net>
8808
8809         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
8810         which resort to FindFirstFile when a certain error condition
8811         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
8812         Code is contributed under MIT/X11 license.
8813
8814 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
8815
8816         * marshal.c (emit_marshal_string): Fix out string marshalling
8817         to use specified encoding. Fixes #323900.
8818
8819         Code is contributed under MIT/X11 license.
8820
8821 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
8822
8823         * class.c (mono_class_inflate_generic_method_full): Don't modify
8824         iresult->context after cache check.
8825
8826 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
8827
8828         * class.c (mono_class_inflate_generic_method_full): Change the
8829         struct assignments to memcpy for better visibility and add some comments.
8830
8831 2008-01-23  Dick Porter  <dick@ximian.com>
8832
8833         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
8834         procedure, and make it work on windows.
8835
8836 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
8839         a MonoReflectionTypeBuilder since it is always of that type.
8840
8841         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
8842
8843         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
8844
8845         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
8846         
8847         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
8848
8849         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
8850
8851         * reflection.c (mono_reflection_create_runtime_class): Remove already created
8852         instantiations from the type cache.
8853
8854 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8855
8856         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
8857
8858         * verify.c (do_unbox_value): push a controled mutability managed pointer.
8859
8860 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8861
8862         * verify.c (do_ldstr): added, verifies if the #US token is valid.
8863
8864         * verify.c (mono_method_verify): removed old TODO
8865
8866 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8867
8868         * verify.c (do_newobj): add visibility check.
8869
8870 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8871
8872         * verify.c (do_load_function_ptr): add visibility check.
8873
8874 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
8875         *class.c:
8876         mono_generic_class_get_class: hook profiler events.
8877         mono_field_get_offset: added to support heap-shot in the new profiler.
8878         *class.h: exported mono_field_get_offset.
8879         * reflection.c:
8880         mono_reflection_setup_internal_class: hook profiler events.
8881
8882 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
8883
8884         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
8885         argument here too and use it to avoid checking for pending exceptions if 
8886         possible.
8887
8888 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
8889
8890         * assembly.c (build_assembly_name): add arg for passing the assembly
8891         flags. Do not consider a PublicKey with value "null" valid.
8892         (mono_assembly_name_parse_full): added boolean argument that will be
8893         set if the assembly name contains a PublicKeyToken spec. Added support
8894         for the Retargetable spec for which only Yes or No are allowed as valid
8895         value. Consider assembly name invalid if Retargetable spec is set, but
8896         either version, culture or public key (token) are not specified.
8897         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
8898         with implementation in assembly.c.
8899         * icall.c (fill_reflection_assembly_name): also copy assembly flags
8900         from MonoAssemblyName.
8901         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
8902         introduced argument for mono_assembly_name_parse_full to know if the
8903         assembly name has a PublicKeyToken spec, and if it has instruct
8904         fill_reflection_assembly_name to use default value for keyToken (if
8905         PublicKeyToken is null).
8906
8907 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
8908
8909         * verify.c (mono_method_verify): fixed ovf ops with
8910         float values. They are unverifiable now.
8911
8912 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
8913
8914         * class.c (set_failure_from_loader_error): add BadImageException to the
8915         list of exceptions that can cause a type to fail to load.
8916
8917         * class.c (mono_class_get_exception_for_failure): same.
8918
8919 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
8920
8921         * verify.c (in_any_exception_block): added, check if offset
8922         is part of any exception handling clause.
8923
8924         * verify.c (get_stack_type): added VAR and MVAR types.
8925
8926         * verify.c (do_stobj): better error messages.
8927
8928         * verify.c (do_cpobj): added, check cpobj.
8929
8930         * verify.c (do_initobj): added, check initobj.
8931
8932         * verify.c (do_sizeof): added, check sizeof.
8933
8934         * verify.c (do_localloc): added, check localloc.
8935
8936         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
8937
8938 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8939
8940         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
8941         save_lmf/restore_lmf opcodes.
8942
8943         * threads.c (mono_threads_install_notify_pending_exc): New function to
8944         install a callback notifying the JIT there is a pending exception on a thread.
8945         (mono_thread_request_interruption): Call the new callback.
8946         (mono_thread_get_and_clear_pending_exception): New function to return the
8947         exception pending on a thread.
8948
8949         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
8950         to turn off checking for pending exceptions.
8951         (mono_marshal_get_native_wrapper): Ditto.
8952
8953 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8954
8955         * threads-types.h: Get rid of the unnecessary extern declarations.
8956
8957 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
8958
8959         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
8960         return field from parent class if not private.
8961         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
8962         returns fields from parent class if they are not private.
8963         (method_nonpublic): added function to determine if a given method
8964         should be considered non-public. Returns false for private methods
8965         on parent class, and internal methods from parent on the 1.0 profile.
8966         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
8967         use method_nonpublic function to determine whether method should be
8968         returned.
8969         (property_accessor_public): use newly introduced method_nonpublic
8970         function to determine whether accessor is non-public. 
8971         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
8972         event from parent class if not private. Only return static event if
8973         Static flag is set, and only return static event from parent class if
8974         FlattenHierarchy flag is set.
8975         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
8976         include non-private events from parent class.
8977
8978 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
8981         warning.
8982
8983 2008-01-16  Wade Berrier <wberrier@novell.com>
8984
8985         * security.c: Add assembly.h header to appease some warnings
8986
8987 2008-01-16  Dick Porter  <dick@ximian.com>
8988
8989         * process.c (process_module_string_read): Remove trailing null
8990         when saving string.
8991
8992 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8993
8994         * class-internals.h: A new data structure describing the layout of
8995         a runtime generic context (MonoRuntimeGenericContextTemplate).
8996
8997         * metadata-internals.h: Added a hash table to MonoDomain that maps
8998         from open generic classes to their runtime generic context
8999         templates.
9000
9001         * object.c: Building of the runtime generic context, including
9002         proper handling of generic type arguments of superclasses.
9003         Building of the runtime generic context according to the template.
9004
9005 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
9006
9007         * class.c (mono_class_setup_fields): Set field.count for generic instances.
9008         Fixes #350856.
9009
9010         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
9011         mono_portability_find_file (). Fixes #325466.
9012         (mono_image_get_public_key): Fix a warning.
9013
9014 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9015
9016         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
9017         Fixes #353550.
9018         (mono_class_from_name_case): Ditto.
9019
9020 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
9021
9022         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
9023           common storage for the tables used in the System/NumberFormatter class.
9024
9025 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
9026
9027         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
9028
9029 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
9030
9031         * verify.c (get_boxable_mono_type): check if the token is valid.
9032
9033         * verify.c (set_stack_value): changed to add an error if an
9034         invalid type is set on stack. Changed all callers due to signature change.
9035
9036         * verify.c (do_stobj): implement stobj validation.
9037
9038 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9039
9040         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
9041         set container->is_method, it was set earlier.
9042
9043         * metadata.c (type_in_image): Handle MVARs which belong to not finished
9044         generic methods.
9045
9046         * reflection.c (mono_reflection_initialize_generic_parameter): Set
9047         is_method of the generic container to TRUE for methods.
9048
9049 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9050
9051         * metadata.c (type_in_image): Handle type parameters properly.
9052
9053         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
9054         memory ownership of this structure.
9055
9056 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
9057
9058         * verify.c (get_boxable_mono_type): make typedref types been just
9059         unverifiable. check for void type.
9060
9061         * verify.c (do_unbox_any): added, verify opcode unbox.any.
9062
9063         * verify.c (do_load_function_ptr): accept method spec tokens.
9064
9065 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9066
9067         * marshal.c (mono_class_native_size): Always set *align even if this is called
9068         recursively.
9069
9070 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
9071
9072         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
9073         out-of-date.
9074
9075 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
9076
9077         * verify.c: removed some old unused tables. A huge bunch of small fixes
9078         to things found while testing the verifier with mono basic.
9079
9080         * verify.c (dump_stack_value): dump null literal flag to.
9081
9082         * verify.c (verify_type_compatibility_full): fix comparison
9083         for types that have a generic super type.
9084
9085         * verify.c (verify_stack_type_compatibility): fix compatibility
9086         between null literals and reference types. fix compatibility between
9087         boxed valuetypes and object. fix corner case test for enums.
9088
9089         * verify.c (do_cmp_op): proper verification of cgt.un in case
9090         of reference types.
9091
9092         * verify.c (do_invoke_method): fix error message.
9093
9094         * verify.c (do_store_indirect
9095
9096         * verify.c (check_is_valid_type_for_field_ops): proper verification
9097         of managed pointers to valuetypes and boxed valuetypes. proper verification
9098         of null literals.
9099
9100         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
9101         allow token to be a reference type.
9102
9103         * verify.c (do_cast): proper handling of boxes valuetypes.
9104
9105         * verify.c (do_stelem): proper handling of storing a boxed valuetype
9106         in object[].
9107
9108         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
9109         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
9110         fixed the decoding of unbox_any
9111
9112 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9113
9114         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
9115
9116 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
9117
9118         * verify.c (do_newobj): do delegate verification.
9119
9120         * verify.c (verify_delegate_compatibility): perform delegate
9121         verification.
9122
9123         * verify.c (verify_ldftn_delegate): perform tests related to
9124         ldftn delegates.
9125
9126         * verify.c (mono_delegate_signature_equal): perform the
9127         slightly diferent signature comparison required by delegates.
9128
9129         * metadata.c (mono_metadata_type_equal_full): added and exported
9130         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
9131         allows signature only comparison.
9132
9133         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
9134         as MONO_INTERNAL.
9135
9136 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * verify.c: added a bunch of stack_slot_* functions to
9139         make access to stack slot type easier. This is required to
9140         allow optional flags, like null literal, boxed value and
9141         this pointer.
9142         All access paths to IlStackDesc::stype have been changed 
9143         to use these new funcions.
9144         Removed a bunch of unused functions and cleared all warnings.
9145         This patch introduces the usage of the this pointer and 
9146         boxed value flags.
9147
9148 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
9149
9150         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
9151
9152 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9153
9154         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
9155         match managed version.
9156
9157         * appdomain.c: Bump corlib version.
9158         
9159         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
9160         argument.
9161
9162 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
9163
9164         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
9165         Set public key token to zero-length byte array if assembly is not
9166         strongnamed.
9167
9168 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9169
9170         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
9171         writing a vtype array elem.
9172
9173 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
9174
9175         * assembly.c (build_assembly_name): return FALSE if length of token is
9176         not 16 (if not "null").
9177         (mono_assembly_name_parse_full): return FALSE if value of version,
9178         culture, token or key is 0.
9179         * icall.c (fill_reflection_assembly_name): add boolean arguments to
9180         specify whether public key and public key token must be set to default
9181         value (zero-length byte array) if not available. Set versioncompat to
9182         SameMachine. If public key is available or the default is set, then
9183         set PublicKey flag.
9184         (ves_icall_System_Reflection_Assembly_FillName): if no public key
9185         is available, use empty byte array as default value. On the 2.0
9186         profile, use default value for public key token if not set.
9187         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
9188         profile, use default value for public key if not set. On the 2.0
9189         profile, use default value for public key token if not set.
9190         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
9191         default values for public key and public key token.
9192
9193 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9194
9195         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
9196         field to keep it in synch with the managed object.
9197
9198         * marshal.c (emit_marshal_object): Add support for byref marshalling of
9199         delegates. Fixes #351520.
9200
9201         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
9202         contains defined memory.
9203         
9204         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
9205
9206         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
9207         
9208         * sgen-gc.c (check_consistency): New helper function to do a consistency check
9209         of the GC data structures.
9210
9211         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
9212
9213         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
9214         
9215         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
9216         barrier.
9217         (mono_array_clone_in_domain): Ditto.
9218         (mono_array_clone_in_domain): Ditto.
9219
9220         * threads.c (start_wrapper): Register the thread start argument as a GC root.
9221         (cache_culture): Use a write barrier.
9222
9223         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
9224         (ves_icall_get_property_info): Ditto.
9225
9226         * object.h (MONO_STRUCT_SETREF): New macro.
9227
9228         * class-internals.h (MonoStats): Add some GC statistics.
9229
9230         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
9231
9232 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
9233
9234         * exception.c (mono_exception_from_name_two_strings):
9235         Break from loop after method is found.
9236
9237 2008-01-04  Dick Porter  <dick@ximian.com>
9238
9239         * process.c (process_module_string_read): Rename variable to
9240         reflect correct usage, after fixing bug 345972.
9241
9242 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
9243
9244         * verify.c (mono_type_create_fnptr_from_mono_method): 
9245         created a MonoType function pointer instance to be used during
9246         verification. The verifier releases this memory at end.
9247
9248         * verify.c (mono_method_is_constructor): extracted repeated
9249         checks for constructor into a single class.
9250
9251         * verify.c (do_push_field): use new extracted method
9252         for constructor check.
9253
9254         * verify.c (do_newobj): same.
9255
9256         * verify.c (do_ldftn): renamed to do_load_function_ptr
9257         and make it verify ldvirtftn too.
9258
9259         * verify.c (mono_method_verify: proper verification
9260         of ldvirtftn. release created MonoMethod instances.
9261
9262 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
9263
9264         * verify.c (token_bounds_check): added.
9265
9266         * verify.c (do_ldftn): added.
9267
9268         * verify.c (mono_method_verify): proper verificartion of ldftn.
9269
9270 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
9271
9272         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
9273         than the table row count. It's the resposibility of the caller to
9274         make the bounds check and raise the correct error.
9275
9276         * metadata.c (mono_metadata_decode_row_col): Same.
9277
9278         * loader.c (mono_get_method_from_token): perform bounds check
9279         on token for methoddef table.
9280
9281 2007-12-29  Miguel de Icaza  <miguel@novell.com>
9282
9283         * icall.c
9284         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
9285         assert into a negative result, the managed code already coped with
9286         that.
9287
9288         Some folks on Windows reported this error. 
9289
9290 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
9291
9292         * appdomain.c: Bump corlib version.
9293         * icall.c:
9294         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
9295         CultureInfo.CreateCulture to create CultureInfo for name.
9296         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
9297         create CultureInfo for name. Fixes bug #347174.
9298
9299 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
9300
9301         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
9302         flags.
9303
9304         * verify.c (is_valid_branch_instruction): allow branching to the
9305         first instruction of the protected block.
9306
9307         * verify.c (is_valid_cmp_branch_instruction): same.
9308
9309         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
9310         avoid double initialization.
9311
9312         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
9313         detect which cases the eval stack should just be copied.
9314
9315         * verify.c (mono_method_verify): check if the eval stack
9316         is empty when entering a protected block.
9317
9318 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
9319
9320         * verify.c: added is_clause_in_range, is_clause_inside_range,
9321         is_clause_nested and verify_clause_relationship. They perform
9322         the verifications stated in P1 12.4.2.7.
9323
9324         * verify.c (mono_method_verify): remove some unused variables,
9325         add the new exception clause checks, add instruction border
9326         checks for protected block start/end, improved some error 
9327         messages and fixed a bug in the way invalid instruction access
9328         is detected.
9329
9330 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9331
9332         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
9333         from GC 7.0 if available.
9334
9335         * object.c: Remove an unused define.
9336         
9337         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
9338
9339         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
9340
9341         * null-gc.c (mono_gc_make_descr_for_array): Implement.
9342
9343         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
9344
9345         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
9346         to take the same arguments as the other make_descr functions.
9347
9348         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
9349
9350         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
9351         directly.
9352
9353         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
9354         mini.c.
9355
9356         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
9357         call to boehm-gc.c.
9358
9359         * boehm-gc.c (mono_gc_register_root): Fix a warning.
9360
9361         * null-gc.c (mono_gc_register_root): Fix a warning.
9362
9363         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
9364
9365         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
9366         (mono_gc_base_init): Call GC_init ().
9367
9368         * null-gc.c: Define mono_gc_register_root () as a no-op.
9369
9370         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9371
9372 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
9373
9374         * verify.c: add prototype for merge_stacks at top
9375
9376         * verify.c (do_switch): added.
9377
9378         * verify.c (merge_stacks): on some cases the stack merging
9379         was not happening properly. Unequal stack sizes at merge
9380         points should be invalid.
9381
9382         * verify.c (mono_method_verify): added more debug info on stack state.
9383         verify switch properly.
9384
9385 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
9386
9387         * method-builder.h: New file, moved the mono_mb_ declarations here from 
9388         marshal.h.
9389
9390         * boehm-gc.c marshal.c: Include method-builder.h.
9391
9392         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
9393
9394         * marshal.c: Remove some code which is now in method-builder.c.
9395
9396 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9397
9398         * method-builder.c: New file, extraction of the method builder functionality 
9399         from marshal.c.
9400
9401         * marshal.c: Move the mb functions into method-builder.c.
9402
9403         * marshal.h marshal.c: Export some mono_mb_... functions.
9404
9405         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
9406
9407         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
9408         the caller.
9409
9410         * class.c (mono_class_get_full): Check the token type in the dynamic case.
9411
9412         * loader.c (mono_field_from_token): Ditto.      
9413
9414         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
9415         type as well.
9416         
9417         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
9418         Fixes #342565.
9419
9420         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
9421         a helper function for setting it.
9422
9423         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
9424
9425         
9426         * assembly.c: Significally simplify code now that referenced assemblies are 
9427         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
9428
9429         * threads.h: Don't include  the internal threads-types.h header file. Fixes
9430         #349952.
9431
9432 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
9435         instructions that were target of branches or are at protected block boundaries.
9436
9437         * verify.c (in_same_block): handle filter clauses.
9438
9439         * verify.c (is_valid_branch_instruction): added. checks the target of
9440         instructions br or brtrue/false.
9441
9442         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
9443         binary branch instructions such as beq and bge.
9444
9445         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
9446         and made it pin the instruction as been part of the exception block.
9447
9448         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
9449         of in_same_block.
9450
9451         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
9452         of in_same_block.
9453
9454         * verify.c (do_ret): ret from a protected block is unverifiable and
9455         not invalid.
9456
9457         * verify.c (do_static_branch): verify br and br.s instructions.
9458
9459         * verify.c (merge_stacks): add extra param to support detection
9460         of branches in the middle of instructions.
9461         
9462         * verify.c (mono_method_verify): verify branches and exception blocks
9463         that target the middle of instructions. Proper verification of br and br.s.
9464
9465 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9466
9467         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
9468         skip_visibility field.
9469         (reflection_methodbuilder_from_dynamic_method): Ditto.
9470
9471         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
9472         registrations. Fixes #348193.
9473
9474         * threads.h: Move the internal mono_thread_get_pending_exception () to
9475         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
9476
9477 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9478
9479         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
9480         icall registration. Fixes #348193.
9481
9482         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
9483         for corlib classes into object. Fixes #349621.
9484
9485 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
9486
9487         * icall.c (property_accessor_nonpublic): new function to determine
9488         whether an accessor allows a property to be considered non-public.
9489         Returns false for private accessor(s) from parent class, and internal
9490         accessor(s) from parent on 2.0 profile (and higher).
9491         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
9492         to determine whether property should be included if NonPublic flag
9493         is set. Fixes bug #349078.
9494
9495 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
9496
9497         * verify.c (init_stack_with_value): added.
9498
9499         * verify.c (mono_method_verify): extracted common
9500         code for exception initialization into init_stack_with_value.
9501
9502         * verify.c (mono_method_verify): initialize the exception
9503         for handler clauses as well.
9504
9505         * verify.c (mono_method_verify): fix the exception clause
9506         ordering rules, it should use handler end offset and not
9507         start offset.
9508
9509 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
9510
9511         * rawbuffer.c: remove useless warning.
9512
9513 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
9514
9515         * threads.h, threads-types.h: move functions to the correct header
9516         (fixes bug#349952).
9517
9518 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
9519
9520         * verify.c (mono_method_verify): proper verification
9521         of exception handling clauses ranges and fallthru in
9522         and out of protected blocks.
9523
9524 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
9525
9526         * verify.c (mono_method_verify): fixed compilation issue.
9527
9528 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
9529
9530         * verify.c (mono_method_verify): a printf slipped in, changed
9531         to use verifier debug macro.
9532
9533 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
9534
9535         * verify.c (is_correct_leave): check for filter clauses.
9536
9537         * verify.c (do_filter): added.
9538
9539         * verify.c (mono_method_verify): property verification of leave.
9540
9541
9542 2007-12-18  Mark Probst  <mark.probst@gmail.com>
9543
9544         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
9545         Win32 build, until we figure out how to do the proper thing on
9546         Win32.
9547
9548 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
9549
9550         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
9551         by the previous patch.
9552         
9553         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
9554         the assembly resolve handler for refonly assemblies.
9555
9556 2007-12-17  Mark Probst  <mark.probst@gmail.com>
9557
9558         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
9559         Make sure only one thread is allowed to commence shutdown, and
9560         don't allow new threads to be started once shutdown is in
9561         progress.
9562
9563 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
9564
9565         * verify.c (is_correct_endfilter): added.
9566
9567         * verify.c (is_unverifiable_endfilter): added.
9568
9569         * verify.c (do_endfilter): added.
9570
9571         * verify.c (mono_method_verify): property verification of endfilter
9572         and fixed a corner case or endfinally.
9573
9574 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
9575
9576         * verify.h: new flags to support fail fast of unverifiable code and
9577         do non-strict verification. Non-strict verification is required to
9578         have MS runtime compatibility. There are a huge amount of unverifiable
9579         code that it accepts as verifiable. The strict mode verifies the code
9580         as the specs says.
9581         Non-strict mode will be required in cases where code needs to be
9582         accepted as verifiable but fails under strict mode.
9583
9584         * pedump.c: added support to fail fast and non-strict verification.
9585
9586         * verify.c: added support for both fail fast and non-strict verification.
9587
9588 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
9589
9590         * verify.c (is_correct_endfinally): added.
9591
9592         * verify.c (mono_method_verify): property verification of endfinally.
9593
9594 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9595
9596         * verify.c (in_any_block): check for filter clauses.
9597
9598         * verify.c (is_correct_rethrow): added.
9599
9600         * verify.c (mono_method_verify): property verification of rethrow.
9601
9602         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
9603
9604 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9605
9606         * verify.c (do_throw): added.
9607
9608         * verify.c (mono_method_verify): property verification of throw
9609
9610 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
9611
9612         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
9613         assemblies. Fixes #346425.
9614
9615 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
9616
9617         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
9618         FieldBuilders.
9619
9620         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
9621
9622         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
9623         prevent asserts when this is called with a token which might not be valid.
9624
9625         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
9626         lookup_dynamic_token_class with valid_token == FALSE.
9627
9628         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
9629
9630         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
9631
9632         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
9633         
9634 2007-12-10  Mark Probst  <mark.probst@gmail.com>
9635
9636         * gc.c: Don't delay threadpool thread finalization unless Mono is
9637         shutting down.
9638
9639 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9640
9641         * threads.c: turn an assert into a non-fatal warning.
9642
9643 2007-12-09  Robert Jordan  <robertj@gmx.net>
9644
9645         * icall.c (GetVirtualMethod): Add missing argument validation.
9646
9647 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
9648
9649         * verify.c (do_cast): added.
9650
9651         * verify.c (mono_method_verify): property verification of castclass and isinst.
9652
9653
9654 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
9655
9656         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
9657
9658         * verify.c (do_stelem): added.
9659
9660         * verify.c (mono_method_verify): property verification of stelem.X.
9661
9662 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9663
9664         * class.c, class-internals.h: Introduce an environment variable
9665         (MONO_GENERIC_SHARING) through which the extent of generic code
9666         sharing can be controlled (share all classes, share only corlib
9667         classes, or share nothing).
9668
9669         * object.c: Only create runtime generic context for classes for
9670         which sharing is enabled.
9671
9672 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
9673
9674         * verify.c (do_ldelem): refactor it to work with ldelem.any.
9675
9676         * verify.c (mono_method_verify): property verification of ldelem.any.
9677
9678 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
9679
9680         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
9681         added ldelem.X opcodes.
9682
9683         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
9684
9685         * verify.c: proper verification of ldelem.X 
9686
9687 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9688
9689         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
9690
9691 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
9692
9693         * verify.c (mono_method_verify): null literal requires special handling,
9694         the value pushed on stack need to be flagged as so.
9695
9696         * verify.c (do_ldelema): Verify ldelema properly.
9697
9698 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
9699
9700         * verify.c: Verify ldlen properly.
9701
9702 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
9703
9704         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
9705         to the target object's type. Fixes #346160.
9706
9707 2007-12-05  Dick Porter  <dick@ximian.com>
9708
9709         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
9710         Solaris needs the same workaround as BSD-derived systems.  Fixes
9711         bug 323524, patch by Burkhard Linke
9712         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
9713
9714 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
9715
9716         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
9717         handle to use when error dialog is shown; otherwise, update mask
9718         to show no error dialog when an error occurs.
9719
9720 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9721
9722         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
9723
9724         * class.c (mono_class_get_field_default_value): New helper function to initialize
9725         field->def_type and field->data.
9726
9727 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9728
9729         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
9730         the general one.
9731
9732         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
9733
9734         * marshal.c: Avoid depending on delegate->method_info being set.
9735
9736         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
9737         
9738         * object.c (mono_delegate_ctor): Set delegate->method.
9739
9740         * object-internals.h (struct _MonoDelegate): Add 'method' field.
9741
9742         * appdomain.c: Bump corlib version.
9743
9744 2007-11-27  Raja R Harinath  <harinath@gmail.com>
9745
9746         * metadata.c (mono_generic_inst_equal_full): Short-circuit
9747         equality check if we're comparing canonicalized MonoGenericInsts.
9748
9749 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9750
9751         * class.c (generic_array_methods): Call mono_class_setup_methods () before
9752         accessing class->methods.
9753
9754 2007-11-22  Dick Porter  <dick@ximian.com>
9755
9756         * threads.c: Ensure that the synch_cs is set before trying to use
9757         it.
9758
9759 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
9760
9761         * profiler.c: r89126 broke the statistial profiler, unbreak.
9762
9763 2007-11-22  Martin Baulig  <martin@ximian.com>
9764
9765         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
9766
9767         * mono-debug.c
9768         (mono_debug_debugger_version): Bump to 3.
9769         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
9770         -> mono_debugger_class_initialized().
9771
9772         * mono-debug-debugger.c
9773         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
9774
9775         * class.c
9776         (mono_debugger_start_class_init_func): Removed.
9777         (mono_debugger_class_loaded_methods_func): Added.
9778         (mono_class_setup_methods): Call it here.
9779
9780 2007-11-22  Martin Baulig  <martin@ximian.com>
9781
9782         * mono-debug.c
9783         (mono_debug_add_delegate_trampoline): New public method.
9784         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
9785
9786         * mono-debug.h
9787         (MonoSymbolTable): Added `global_data_table'.
9788         (MonoDebuggerTypeKind): Removed.
9789
9790 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
9791
9792         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
9793         these methods.
9794
9795         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
9796         
9797 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
9798
9799         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
9800
9801 2007-11-20  Martin Baulig  <martin@ximian.com>
9802
9803         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
9804
9805         * mono-debug-debugger.c
9806         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
9807         (mono_debugger_remove_breakpoint): Likewise.
9808         (mono_debugger_check_breakpoints): Likewise.
9809         (mono_debugger_register_class_init_callback): New public method.
9810         (mono_debugger_remove_class_init_callback): Likewise.
9811         (mono_debugger_add_type): Likewise.
9812
9813         * mono-debug-debugger.h
9814         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
9815
9816 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
9817
9818         * class.c: more interface implementations needed for the
9819         array enumerator (fixes bug #341112).
9820
9821 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
9822
9823         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
9824         fix ParamName of ArgumentNullExceptions.
9825
9826 2007-11-17  Miguel de Icaza  <miguel@novell.com>
9827
9828         * reflection.c (mono_reflection_encode_sighelper): Generate the
9829         modopts and modreqs.   I have a useless test that crashes monodis,
9830         but that shows the code working.
9831
9832 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9833
9834         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
9835         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
9836
9837 2007-11-15  Dick Porter  <dick@ximian.com>
9838
9839         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
9840         When joining a thread, it's the thread that's calling Join that
9841         gets WaitSleepJoin state not the target.  Fixes the standalone
9842         test case in bug 334740, and hopefully the whole bug too.
9843
9844 2007-11-15  Dick Porter  <dick@ximian.com>
9845
9846         * process.c: Read file version info from the files pointed at by
9847         process modules, not the current process.  Fixes bug 315969.
9848
9849         Use windows typedef names in some places to fix warnings on the
9850         windows build.
9851
9852 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9853
9854         * image.c, metadata-internals.h: Added a generic_class_cache hash
9855         to MonoImage for looking up generic classes when sharing generics.
9856
9857 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9858
9859         * sgen-gc.c: warning cleanups.
9860
9861 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
9864         inherited properties.
9865
9866 2007-11-14  Mark Probst  <mark.probst@gmail.com>
9867
9868         * object.c, class-internals.h: Added more information to the
9869         runtime generic context.
9870
9871 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9872
9873         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
9874         instead of just the target method. Generalize the abstract method handling to
9875         handle any non-static method.
9876
9877         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
9878         mono_marshal_get_delegate_invoke () signature change.
9879
9880 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9881
9882         * class.c, class-internals.h: Made
9883         mono_type_get_basic_type_from_generic () public.  Fixed member
9884         access check for shared generics.
9885
9886         * loader.c: Don't insert field into field cache if it's part of a
9887         non-inflated generic class.
9888
9889         * domain.c, domain-internals.h: The generic sharing context is now
9890         part of the jit info data structure.  Added two accessor
9891         functions.
9892
9893 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9894
9895         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
9896         the array Get/Set/Address methods, since the JIT inlines them.
9897
9898         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
9899
9900         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
9901         (mono_image_init): Initialize runtime_invoke_direct_cache.      
9902
9903         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
9904         mono_marshal_get_delegate_invoke signature change.
9905
9906         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
9907         an additional argument. Add support for invoking abstract methods.
9908
9909         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
9910
9911         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
9912
9913 2007-11-09  Mark Probst  <mark.probst@gmail.com>
9914
9915         * class.c: Do field layout for open generic classes as well.
9916
9917 2007-11-09  Mark Probst  <mark.probst@gmail.com>
9918
9919         * gc.c, gc-internal.h: Don't finalize threadpool threads with
9920         other objects, because the threadpool is still around.  Put them
9921         in a list instead and after finalizing all other objects in the
9922         root domain shut down the thread pool and then finalize the
9923         threads.  Fixes bug #337383.
9924
9925         * threads.c, thread-types.h: New mono_thread_create_internal()
9926         function for marking a thread with the threadpool flag before it
9927         started.  Set synch_cs to NULL after freeing it.
9928
9929         * threadpool.c: Mark threadpool threads before they start.
9930
9931 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9932
9933         * reflection.h, reflection.c: don't export random functions
9934         and lazy load dbnull and missing objects.
9935
9936 2007-11-07  Jonathan Chambers <joncham@gmail.com>
9937
9938         * class.c: Initialize COM types if COM interfaces
9939         are present (not just COM classes).
9940         
9941         Code is contributed under MIT/X11 license.
9942
9943 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9944         * reflection.c:
9945         create_dynamic_mono_image: hook module profiler events (dynamic case).
9946         mono_image_basic_init: hook assembly profiler events (dynamic case).
9947
9948 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9949         * profiler.c:
9950         simple_appdomain_unload: completely terminate the profiler
9951         instead of only processing the statistical samples.
9952         simple_shutdown: make sure this is really called exactly once,
9953         even in multithreaded applications, and always listen to
9954         appdomain events.
9955         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
9956         here, the "[un]load" functions will do it.
9957         Fixes bugs #333791 and #325261.
9958
9959 2007-11-07  Geoff Norton  <gnorton@novell.com>
9960
9961         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
9962         rather than depend on __APPLE__.
9963
9964 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9965
9966         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
9967
9968 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
9969
9970         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
9971         UTF16 MonoString. Fix the crash from bug #335488
9972
9973 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
9974
9975         * marshal.c: Correct (for non-Win32 OS) length != size in 
9976         mono_string_from_bstr. Fix #339530.
9977
9978 2007-11-06  Geoff Norton  <gnorton@novell.com>
9979
9980         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
9981         to succeed
9982
9983 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
9984
9985         * process.c: Added run-time GetProcessId API detection for Windows.
9986
9987 2007-11-04  Miguel de Icaza  <miguel@novell.com>
9988
9989         * reflection.c  (mono_param_get_objects): If a parameter has the
9990         attribute [System.Runtime.InteropServices.Optional] we should
9991         set the DefaultValue of the ParameterInfo to be
9992         System.Reflection.Missing instead of DBNull.
9993
9994         See bug #339013.
9995
9996         (mono_get_reflection_missing_object): New method,
9997         returns the System.Reflection.Missing.Value singleton instance.
9998
9999 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
10000
10001         * culture-info-table.h : regenerated.
10002
10003 2007-11-02  Jonathan Chambers <joncham@gmail.com>
10004
10005         * icall.c: Use GetEnvironmentStrings on windows
10006         so we are using the same environment block as 
10007         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
10008         #333740.
10009         
10010         Code is contributed under MIT/X11 license.
10011
10012 2007-10-31  Martin Baulig  <martin@ximian.com>
10013
10014         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
10015
10016         * mono-debug-debugger.h
10017         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
10018
10019 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
10020
10021         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
10022         classes.
10023
10024 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
10025
10026         * culture-info-table.h : regenerated.
10027
10028 2007-10-30  Robert Jordan  <robertj@gmx.net>
10029
10030         * icall-def.h, icall.c:
10031         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
10032
10033         Code is contributed under MIT/X11 license.
10034
10035 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
10036
10037         * class.c (mono_class_setup_vtable): Find the inflated methods in the
10038         inflated class instead of inflating them again.
10039         
10040         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
10041         dynamic case.
10042
10043         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
10044         Call setup_supertypes () after klass->parent is set.
10045         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
10046
10047         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
10048         for inflated instances of not yet created dynamic generic classes.
10049         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
10050         times from inflated_method.
10051         (methodbuilder_to_mono_method): Ditto.
10052
10053 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
10054
10055         * gc.c: code cleanup and removed old untested option of not creating the
10056         finalizer thread.
10057
10058 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
10059
10060         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
10061         creating a jump trampoline for dynamic methods.
10062
10063 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
10064
10065         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
10066         generic TypeBuilders when called from another method of the same type (bug #335131).
10067
10068
10069 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
10070
10071         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
10072         doesn't seem to work perfectly.
10073         
10074         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
10075         called multiple times.
10076         (methodbuilder_to_mono_method): Ditto.
10077         (resolve_object): Inflate FieldBuilder's.
10078
10079 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10080
10081         * string-icalls.c, string-icalls.h, appdomain.c: patch from
10082         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
10083         RemoveEmptyEntries in the string.Split implementation (bug #322375).
10084
10085 2007-10-26  Dick Porter  <dick@ximian.com>
10086
10087         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
10088         Thread initialisation changes
10089
10090 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
10091
10092         * verify.c: fix compatibility check between arrays and System.Array
10093
10094 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
10097         too. Fixes #336999.
10098
10099 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
10100
10101         * object.c (mono_value_box): Use typed allocation here.
10102
10103 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
10104
10105         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
10106         trampoline instead of compiling the method right away.
10107
10108         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
10109
10110 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
10111
10112         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
10113         related fields for dynamic classes. Fixes #334493.
10114
10115 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
10116
10117         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
10118         
10119         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
10120
10121         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
10122         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
10123
10124         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
10125
10126         * reflection.c (create_generic_typespec): Initialize klass->generic_container
10127         if needed.
10128         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
10129
10130 2007-10-18  Jonathan Chambers <joncham@gmail.com>
10131
10132         * marshal.c: Use correct key when removing item
10133         from ccw_hash.
10134         
10135         Code is contributed under MIT/X11 license.
10136
10137 2007-10-17  William Holmes  <billholmes54@gmail.com>
10138
10139         *marshal.c: Adding a case to marshal booleans to U1
10140
10141         Code is contributed under MIT/X11 license.
10142
10143 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
10144
10145         * class.c (mono_class_from_name): Search the modules compromising dynamic
10146         assemblies. Fixes #331601.
10147
10148 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
10149
10150         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
10151         exception if the type name contains an assembly component. Fixes #334203.
10152
10153         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
10154         modules inside dynamic assemblies. Fixes #334200.
10155         
10156         * reflection.c: Set image->public_key and image->public_key_length;
10157
10158         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
10159         fields.
10160
10161         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
10162         
10163 2007-10-16  Mark Probst  <mark.probst@gmail.com>
10164
10165         * metadata.c: Implemented correct comparing of generic classes.
10166         An inflated generic class can be equal to a non-inflated one if it
10167         is inflated with generic type variables as type arguments.  Fixes
10168         bug #333798.
10169
10170 2007-10-15  Dick Porter  <dick@ximian.com>
10171
10172         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
10173         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
10174         81646.
10175
10176         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
10177         instead of a monitor lock.  This means that monitor_try_enter and
10178         co can set the thread state safely.
10179         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
10180         thread_interrupt_requested, so interrupt actually works.
10181
10182         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
10183         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
10184         state accessor function
10185
10186 2007-10-15  Martin Baulig  <martin@ximian.com>
10187
10188         * mono-debug.h
10189         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
10190         the debugger with the current runtime.
10191
10192 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10193
10194         * object.c, object-internals.h: added the ability to set a single
10195         trampoline for all the slots in a vtable.
10196
10197 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10198
10199         * marshal.c: deal with a possible race condition during multicast
10200         delegate invocation.
10201
10202 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10203
10204         * class.c: ensure value type methods don't have the synchronized
10205         flag set.
10206
10207 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
10208
10209         * string-icalls.c, string-icalls.h: reverted unapproved patch that
10210         breaks the build.
10211
10212 2007-10-11  Joel Reed  <joelwreed@comcast.com>
10213
10214         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
10215         to take an options parameter so that empty entries can be removed during
10216         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
10217
10218 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10219
10220         * marshal.c: make sure we don't store the signature from a dynamic
10221         method into the runtime invoke cache (bug #327189).
10222
10223 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10224
10225         * marshal.c: make sure the wrapper methods are properly initialized.
10226
10227 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10228
10229         * metadata.c, metadata-internals.h: Generalized
10230         mono_type_stack_size() to mono_type_stack_size_internal() which
10231         takes an additional argument specifying whether it allows open
10232         types.
10233
10234 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10235
10236         * verify.c (do_invoke_method): handle typedbyref params
10237         correctly and check for unverifiable return values.
10238
10239         * verify.c (do_newobj): fix a warning.
10240
10241 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
10242
10243         * verify.c: don't tread typedbyref as allways unverifable,
10244         so uses, like (ld/st)loc.0 are valid. verify for the cases
10245         that it matters, like boxing related operations.
10246
10247 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
10248
10249         * verify.c: add verification of the newobj opcode. verification
10250         of delegate instantation still missing due ldftn and virldftn not
10251         pushing the function type on stack
10252
10253 2007-10-08  Mark Probst  <mark.probst@gmail.com>
10254
10255         * class-internals.h: Runtime generic context data structure
10256         definition.
10257
10258         * object.c: Initialization of runtime generic context at runtime
10259         vtable creation time.
10260
10261 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
10262         * class.c (mono_class_create_from_typedef,
10263         mono_class_from_generic_parameter, mono_ptr_class_get,
10264         mono_fnptr_class_get, mono_bounded_array_class_get)
10265         * domain.c (mono_domain_create, mono_domain_free)
10266         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
10267         * image.c (do_mono_image_load, mono_image_close):
10268         Hooked up load-unload profiler events.
10269
10270 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10271
10272         * domain.c: track statistics about the actual amount of native code
10273         allocated.
10274
10275 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10276
10277         * class.c: the valuetype enumerators don't have the additional
10278         supertypes interfaces.
10279
10280 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10281
10282         * class.c: need more interfaces setup for the IEnumerator<T>
10283         object created for arrays (tests/ienumerator-interfaces.2.cs).
10284
10285 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
10286
10287         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
10288
10289 2007-10-05  Alp Toker  <alp@atoker.com>
10290
10291         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
10292         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
10293         #315863.
10294
10295 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
10296
10297         * verify.c (verify_type_compatibility_full): verification of
10298         compatibility improved, validates correctly non-strict checks between
10299         native int and I4 types different than (unsigned)int32.
10300
10301         * verify.c (do_store_indirect): added, do all verification of
10302         ldind.X opcodes. 
10303
10304         * verify.c (get_load_indirect_mono_type): renamed to
10305         get_indirect_op_mono_type, as it now returns the MonoType for 
10306         ldind.X and stind.X opcodes.
10307
10308 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
10309
10310         * reflection.c: Fix the encoding of generic type definition for
10311         TypeBuilders.
10312
10313         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
10314         mono_image_typedef_or_ref but allows to specify if typespec lookups should
10315         be made. Typespec check is done prior to typeref cache lookup.
10316
10317         * reflection.c (mono_image_typedef_or_ref): now just delegate to
10318         mono_image_typedef_or_ref_full.
10319
10320         * reflection.c (encode_generic_class): encode the generic class
10321         directly instead of calling encode_type.
10322
10323         * reflection.c (encode_type): encode the generic type definition
10324         MonoClass as a generic instantiation.
10325
10326         * reflection.c (create_typespec): cache typespec tokens in
10327         the assembly->typespec cache. Don't create typespec for a generic
10328         instance MonoClass. Create typespec for the generic type defintion.
10329
10330         * reflection.c (create_generic_typespec): encode the generic
10331         class directly instead of calling encode_type.
10332
10333         * reflection.c (mono_image_create_token): encode the generic
10334         type definition not using a typespec for MonoType instances.
10335
10336
10337 2007-10-04  Raja R Harinath  <rharinath@novell.com>
10338
10339         Fix #328812
10340         * class.c (mono_image_init_name_cache): Don't return nested
10341         'protected internal' classes.
10342         (mono_class_from_name_case): Likewise.
10343
10344 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
10345
10346         * icall-def.h, icall.c : get_bundled_machine_config() is now the
10347           common function used by both DefaultConfig in System.dll and
10348           InternalConfigurationHost in System.Configuration.dll.
10349
10350 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10351
10352         * class.c: automatically add to vectors only a few essential explicit
10353         generic interfaces. The rest of the interfaces that arrays should
10354         provide are currently implicitly added (but still not lazily, see the
10355         design in the discussion of bug#325495 for the details of what is
10356         needed for that). Additionally, implicit interfaces are assigned the
10357         same vtable slot as the explicit interfaces (as they are compatible):
10358         this enables huge memory savings since we don't need to instantiate
10359         as many memthods and as large vtables anymore. Also, Since
10360         GetEnumerator<T> returns an instance of a type that is required to
10361         support a similarly large set of interfaces as arrays, we add
10362         implicit interfaces and interface offset sharing support to those
10363         types, too. This change adds all the required interfaces so that
10364         the anonarray.cs test case in the bug report works (we don't add
10365         all the interfaces to arrays of arrays 3-level deep and more because
10366         of the memory requirements explained in the bug and since they are much
10367         less common: the lazy-loading support will enabled them to work, too).
10368
10369 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
10370
10371         * verify.c (merge_stacks): major clean up, all type compatibility
10372         checks are done by verify_type_compatibility. This fix my earlier lack
10373         of understanding of the CLR type system and merge_stacks no longer looks
10374         scary.
10375
10376         * verify.c: fixed some bad spelling.
10377
10378 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
10379
10380         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
10381         a given stack slock.
10382         
10383         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
10384         verify_type_compatibility_full. This removed a near indentical function and fixed
10385         handling of Int32 and IntPtr across all opcodes.
10386
10387 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10388
10389         * class.c: only vectors have the additional generic interfaces.
10390
10391 2007-10-01  Jonathan Chambers <joncham@gmail.com>
10392
10393         * mono-config.c: Use g_strcasecmp instead of
10394         strcasecmp like everywhere else to fix
10395         compilation with MSVC.
10396         
10397         Code is contributed under MIT/X11 license.
10398
10399 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10400
10401         * object.c, object-internals.h: refactored the IMT code to enable
10402         building a single slot at a time and lazily creating the IMT trampolines
10403         and thunks.
10404
10405 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
10406
10407         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
10408
10409         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
10410         Fixes #328501.
10411         
10412 2007-09-29  Raja R Harinath  <harinath@gmail.com>
10413
10414         * loader.c (method_from_methodspec): Rearrange to avoid
10415         un-necessary exposition.  Don't assert out if the method's
10416         declaring type is a generic type definition.
10417
10418 2007-09-28  Martin Baulig  <martin@ximian.com>
10419
10420         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
10421
10422 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10423
10424         * class-internals.h: optimize field layout of MonoClass to
10425         requires less cachelines at runtime and save a few bytes on 64 bit
10426         systems.
10427
10428 2007-09-28  Jb Evain  <jbevain@novell.com>
10429
10430         * reflection.c: when encoding type names in custom attributes,
10431         if the type is a closed generic type, its generic arguments
10432         have to be serialized as AssemblyQualifiedName, so that when
10433         they are deserialized, it's possible to re-create them properly.
10434         Fixes #329450.
10435
10436
10437 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10438
10439         * object.c, class-internals.h: added delegate-creation counter.
10440
10441 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10442
10443         * class.c: cleanup of the code that synthetizes interfaces for
10444         arrays in 2.0: saves quit a bit of corlib mempool memory.
10445         Code to fix bug #325495 ifdeffed out for now until the issues
10446         with memory usage and O(n^2) behaviour are fixed.
10447
10448 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10449
10450         * marshal.c: when possible, do not duplicate the name of the methods
10451         in the method builder and in the generated MonoMethod.
10452
10453 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
10454         * verify.c: added support for type checking ldind_* opcodes.
10455
10456 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
10457
10458         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
10459         which is used to distinguish the fully open instantiation of a TypeBuilder
10460         with the rest. This temporary hack is required to restore the property that
10461         the fully open instantiation is the same type of the generic type definition.
10462
10463         * class-internals.h (mono_generic_class_is_generic_type_definition):
10464         new function as part of the internal API.
10465
10466         * class.c (inflate_generic_type): return NULL when the generic inst is
10467         fully open. The fully open generic type is now the same as the generic type
10468         definition for non TypeBuilder types.
10469
10470         * class.c (mono_generic_class_get_class): removed assert since it is
10471         no longer valid, gklass->cached_class can point to the generic type definition.
10472
10473         * class.c (mono_generic_class_is_generic_type_definition): new.
10474
10475         * metadata.c (mono_generic_class_hash): added is_tb_open field
10476         to the hash calculation.
10477
10478         * metadata.c (free_generic_class): if the generic class is associated
10479         with the generic type definition, its field will come from the mempool and
10480         must not be freed.
10481
10482         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
10483         new, this function identifies the corner case of a TypeBuilder fully open
10484         instantiation.
10485
10486         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
10487         for lookup. Set gclass->cached_class to be the container class in case of
10488         the fully open instantiation of non TypeBuilder types.
10489
10490         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
10491         to compare generic classes.
10492
10493         * reflection.c (method_encode_methodspec): remove assert that
10494         no longer is valid.
10495
10496         * reflection.c (mono_reflection_generic_class_initialize): add
10497         an aditional assert to ensure the proper type is used.
10498
10499 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
10500
10501         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
10502         to enjoy it.
10503
10504 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
10505
10506         * verify.c (push_arg): Fixed support for ldarga
10507         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
10508         MonoType used as first arg in case of instance calls.
10509
10510 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
10511
10512         * verify.c: Support for verifying VAR and MVAR types, 
10513
10514 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
10515
10516         * icall.c (ves_icall_get_property_info): Set the reflected type of the
10517         accessors correctly.
10518
10519 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10520
10521         * threads.c: support OSX and other systems in
10522         mono_thread_get_stack_bounds (bug #328026).
10523
10524 2007-09-25  Martin Baulig  <martin@ximian.com>
10525
10526         * mono-debug.h
10527         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
10528
10529 2007-09-24  Martin Baulig  <martin@ximian.com>
10530
10531         * mono-debug.h
10532         (MonoDebugClassEntry): Moved the definition of this struct into
10533         mono-debug.c to make it private.
10534
10535         * mono-debug.c
10536         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
10537         type table per symbol file, we don't need to store the symfile id
10538         any longer.
10539
10540 2007-09-24  Martin Baulig  <martin@ximian.com>
10541
10542         Create one type table per symbol file, since a `MonoClass *' gets
10543         invalid when its image is unloaded.
10544
10545         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
10546         (MonoDebugHandle): Added `type_table'.
10547
10548 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10549
10550         * mempool.c, mempool.h: added mono_mempool_new_size () API
10551         to be able to specify a smaller initial size for the pool.
10552         Adjusted the code to slowly increase pool size before using
10553         the previous default size.
10554         * image.c: use a small initial size for image mempools.
10555
10556 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
10557
10558         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
10559         Fixes ##320990.
10560
10561         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
10562         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
10563
10564 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * metadata.c (mono_type_create_from_typespec): Remove an invalid
10567         free. Fixes #327438.
10568
10569 2007-09-21  Raja R Harinath  <harinath@gmail.com>
10570
10571         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
10572         generic instantiations, etc.
10573         <MONO_TYPE_ARRAY>: Likewise.
10574
10575 2007-09-21  Martin Baulig  <martin@ximian.com>
10576
10577         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
10578         these structs were never defined.
10579         (MonoDebugHandle): Removed the `_priv' field, it was never used.
10580
10581 2007-09-21  Martin Baulig  <martin@ximian.com>
10582
10583         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
10584
10585 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
10586
10587         * image.c: removed the guid hash tables: we can get the same info
10588         without the additional memory usage hit (partially fixes also bug #327052).
10589
10590 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
10591
10592         * profiler.h, profiler-private.h, profiler.c: add a new profiler
10593         event to handle unloading methods. After the event is called, the
10594         corresponding MonoMethod* must be considered invalid.
10595         * loader.c (mono_free_method): call the new mono_profiler_method_free
10596         event.
10597
10598 2007-09-20  Mark Probst  <mark.probst@gmail.com>
10599
10600         * domain-internals.h: New flag in MonoJitInfo which marks shared
10601         generic methods.  New hash table (shared_generics_hash) in
10602         MonoDomain to keep track of shared generic methods.  Prototypes
10603         for functions to register and lookup shared generic methods.
10604
10605         * domain.c: Support for registering and looking up shared generic
10606         methods via a hash table (shared_generics_hash) in MonoDomain.
10607
10608         * class-internals.h: New exception to signal failure of shared
10609         compilation of a generic method.  New counters for generics
10610         sharing in MonoStats.
10611
10612 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10613
10614         * image.c, metadata-internals.h: don't keep a file descriptor open
10615         for loaded assemblies (bug#325988).
10616
10617 2007-09-19  Raja R Harinath  <rharinath@novell.com>
10618
10619         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
10620         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
10621         use the corresponding datatypes.
10622         (type_in_image): Update to changes.
10623         (CleanForImageUserData): Simplify.
10624         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
10625         Avoid quadratic behaviour in handling the "stolen" list by
10626         separating the filter predicate out, and by prepending the stolen
10627         items rather than appending them.
10628         (steal_ginst_in_image): Likewise.
10629         (mono_metadata_clean_for_image): Update to changes.
10630
10631 2007-09-19  Martin Baulig  <martin@ximian.com>
10632
10633         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
10634
10635 2007-09-19  Martin Baulig  <martin@ximian.com>
10636
10637         * mono-debug.c (mono_debug_cleanup): Don't call
10638         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
10639
10640 2007-09-19  Raja R Harinath  <harinath@gmail.com>
10641
10642         Fix crash on 'make run-test' in mcs/errors
10643         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
10644         Avoid more potential allocations in mono_class_from_mono_type.
10645         (ginst_in_image): Update to changes.
10646         (gclass_in_image): Rearrange slightly.
10647
10648 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
10649
10650         * class.c (mono_class_init): Move the code that sets up class->methods to 
10651         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
10652
10653         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
10654         canonical instance of an inflated generic signature.
10655         (mono_type_create_from_typespec): Remove an invalid free.
10656
10657         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
10658
10659 2007-09-18  Marek Habersack  <mhabersack@novell.com>
10660
10661         * domain-internals.h: added a declaration of the
10662         mono_assembly_load_full_nosearch internal function.
10663
10664         * assembly.c (mono_assembly_load_with_partial_name): use
10665         mono_try_assembly_resolve return value properly.
10666         (mono_assembly_load_full_nosearch): copied the function body from
10667         mono_assembly_load_full, without the code to invoke assembly
10668         search hooks.
10669         (mono_assembly_load_full): calls the above new function and if the
10670         assembly is not resolved, invokes the search hooks.
10671
10672         * appdomain.c (mono_runtime_init): restore the global postload
10673         assembly search handlers.
10674
10675 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
10676
10677         * class.c (mono_class_init): Make sure class->methods and class->properties
10678         are never NULL in the generics case.
10679
10680         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
10681
10682 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
10683
10684         * metadata.c (free_generic_class): Disable some code to fix the build.
10685
10686         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
10687
10688         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
10689         from the image mempool.
10690
10691         * metadata.c (free_generic_class): Free more data from the inflated class.
10692
10693         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
10694
10695         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
10696         mempool.
10697         (mono_type_create_from_typespec): Ditto.
10698
10699         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
10700         MonoImage to the caller.
10701         (mono_init_internal): Save the opened image in a global variable.
10702         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
10703
10704         * reflection.c (resolve_object): Fix a leak.
10705
10706         * metadata.c: Fix the freeing of data in the generics caches.
10707         
10708         * metadata.c (free_generic_inst): Comment this out to fix the build.
10709         (free_generic_class): Ditto.
10710
10711         * metadata.c: Free cached generic methods, instantinations and classes when
10712         they are removed from the caches.
10713         (mono_metadata_free_type): Free the type itself.
10714
10715         * class.c: Free the result of mono_class_inflate_generic_type () in a few
10716         places.
10717
10718 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10719
10720         * boehm-gc.c: restrict managed allocs to __thread supporting
10721         architectures.
10722
10723 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
10726         (mono_generic_class_get_class): Fix a leak.
10727
10728         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
10729         mono_metadata_free_type ().
10730         (mono_metadata_inflate_generic_inst): Fix a leak.
10731
10732 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10733
10734         * mono-debug.c (free_header_data): Fix a leak missed earlier.
10735
10736         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
10737         mempool.
10738
10739         * mono-debug.c (mono_debug_close_image): Fix call to 
10740         g_hash_table_remove ().
10741
10742 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
10743
10744         * icall-def.h: redirect all the string ctor to the managed
10745         CreateString () methods.
10746         * string-icalls.c, string-icalls.h: removed dead code for string
10747         ctors and icalls.
10748
10749 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10750
10751         * mono-debug.c: Fix memory leaks.
10752
10753 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10754
10755         * threads-types.h: Implement mono_hazard_pointer_set and 
10756         mono_hazard_pointer_clear macros using do/while(0) to fix
10757         compilation with MSVC.
10758         
10759         Code is contributed under MIT/X11 license.
10760
10761 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10762
10763         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
10764         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
10765
10766 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10767
10768         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
10769         icalls.
10770
10771 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10772
10773         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
10774         managed-code allocated as well.
10775
10776 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10777
10778         * class.c (mono_class_is_assignable_from): Add support for generic variance.
10779
10780 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
10781
10782         * boehm-gc.c: fixed the build after the AOT changes.
10783
10784 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10785
10786         * wrapper-types.h: Add an ALLOC wrapper type.
10787
10788         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
10789         reference managed allocator methods.
10790
10791 2007-09-12  Marek Safar  <marek.safar@gmail.com>
10792
10793         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
10794         of Type array and not MonoType, a fix suggested by Hari.
10795         
10796 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10797
10798         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
10799         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
10800         
10801         Code is contributed under MIT/X11 license.
10802
10803 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
10804
10805         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
10806
10807 2007-09-12  Marek Habersack  <mhabersack@novell.com>
10808
10809         * image.c (do_mono_image_open): if assembly file fails to open and
10810         MONO_IOMAP is in effect, try to find the path in a
10811         case-insensitive way.
10812
10813         * appdomain.c (mono_runtime_init): do not install postload hooks -
10814         tests show that MS.NET doesn't use anything of that sort to
10815         trigger the AppDomain.AssemblyResolve event.
10816         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
10817         made non-static.
10818         (mono_runtime_init): init portability helpers here.
10819
10820         * assembly.c (mono_assembly_load_with_partial_name): if other   
10821         attempts fail, trigger the AppDomain.AssemblyResolve event handler
10822         to resolve the assembly.
10823
10824         * domain-internals.h: added mono_try_assembly_resolve and marked
10825         it as internal.
10826
10827 2007-09-11  Jb Evain  <jbevain@novell.com>
10828
10829         * object-internals.h (MonoReflectionDynamicMethod): add
10830         a `MonoReflectionType *owner` field. The owner is used
10831         * reflection.c:
10832         (mono_reflection_create_dynamic_method): use the owner of the dynamic
10833         method as the class declaring the dynamic method.
10834         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
10835         dynamic method to the declaring type of the methodbuilder.
10836
10837 2007-09-11  Mark Probst  <mark.probst@gmail.com>
10838
10839         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
10840         rules for calling methods via reflection.
10841
10842 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
10843
10844         * reflection.c (resolve_object): Add support for MonoGenericClass. 
10845         Inflate MonoType's.
10846
10847 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10848
10849         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
10850         provide a managed method that does fast allocations without needing
10851         a managed->unmanaged transition. Boehm GC implementation currently
10852         enabled for ptrfree objects on sane architectures.
10853
10854 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
10855
10856         * marshal.c, marshal.h: exported a couple of useful functions and
10857         added mono_mb_get_label () to easily handle backward branches.
10858
10859 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
10860
10861         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
10862
10863 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
10864
10865         * loader.c (find_method): Fixed the regression introduced while
10866         fixing bug #81466.
10867
10868 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
10869
10870         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
10871         well.
10872         
10873         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
10874         icall.c reflection.c: Pass a MonoGenericContext argument to 
10875         mono_lookup_dynamic_token ().
10876
10877         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
10878         #82744.
10879         
10880 2007-09-09  Robert Jordan  <robertj@gmx.net>
10881
10882         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
10883         for generic methods.
10884
10885         * object.c (mono_object_get_virtual_method): Handle generic methods.
10886         Fixes bug #78882.
10887
10888         Code is contributed under MIT/X11 license.
10889
10890 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10891
10892         * image.c: fix locking in mono_image_load_file_for_image ().
10893
10894 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
10895
10896         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
10897         used only as a cache: added an icall to fill it.
10898
10899 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
10900
10901         * reflection.h: exposed mono_reflection_free_type_info
10902         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
10903         since mono_reflection_bind_generic_parameters makes a copy of it.
10904         * reflection.c (free_type_info): subinfos should be freed.
10905         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
10906         made non static.
10907         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
10908         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
10909         this fixes #82695 and #81726.
10910    
10911
10912 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
10913
10914         * process.h, process.c:  added support for user profile/info in
10915           ProcessStartInfo. For now only Windows works.
10916
10917 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10918
10919         * metadata.c: consider the generic arguments when comparing
10920         signatures (bug #82614).
10921
10922 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10923
10924         * cil-coff.h, image.c: updated assembly loader to cope with the
10925         PE32+ 64 bit file format.
10926
10927 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10928
10929         * assembly.c, class.c, domain.c, loader.c: remove useless
10930         inclusion of cil-coff.h.
10931
10932 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
10933
10934         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
10935         if interface is marked with CoClassAttribute. 
10936    
10937         Code is contributed under MIT/X11 license.
10938
10939 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10940
10941         * sgen-gc.c: ensure no object from the to space is copied again or finalized
10942         if it's seen twice in major collections.
10943
10944 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10945
10946         * sgen-gc.c: big objects are not copied to the gray area, but they
10947         need to be considered for scanning, too, if they are brought alive
10948         by an object ready for finalizations or a survived one.
10949
10950 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10951
10952         * sgen-gc.c: properly account the number of disappearing links when
10953         they are nullified.
10954
10955 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
10956
10957         * sgen-gc.c: share the code to scan the registered roots between the
10958         different types of collections.
10959
10960 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10961
10962         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
10963
10964 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
10967         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
10968
10969 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10970
10971         * security-manager.c (mono_security_manager_get_methods):
10972         LinkDemandSecurityException now has 2 arguments instead of 3.
10973
10974 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
10975
10976         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
10977         platforms which need it.
10978
10979 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10980
10981         * sgen-gc.c: unregister thread data structures with a pthread_key_t
10982         dtor.
10983
10984 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
10985
10986         * threads.c: free the thread static data on thread exit.
10987
10988 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
10989
10990         * class.c: walk the hierarchy to find the generic definition for
10991         a class (fixes runtime part of bug #82498).
10992
10993 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
10994
10995         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
10996         ...
10997
10998         * image.c (mono_image_close): Here. Hopefully fixes #82510.
10999
11000 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11001
11002         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
11003
11004 2007-08-24  Robert Jordan  <robertj@gmx.net>
11005
11006         * appdomain.c: don't perform the ':'->';' substitution on Win32.
11007
11008 2007-08-24  Jb Evain  <jbevain@novell.com>
11009
11010         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
11011         for byref types.
11012
11013 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11014
11015         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
11016         #82286.
11017
11018 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * assembly.c: Fix a warning.
11021         
11022 2007-08-23  Marek Habersack  <mhabersack@novell.com>
11023
11024         * appdomain.c: parse the <runtime> section looking for the probing
11025         element with the 'privatePath' attribute, which sets additional
11026         directories in which the runtime should look for assemblies.
11027
11028 2007-08-23  Robert Jordan  <robertj@gmx.net>
11029
11030         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
11031         Fixes #82499.
11032
11033 2007-08-23  Martin Baulig  <martin@ximian.com>
11034
11035         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
11036         _mono_debug_init_corlib() and remove it from the header file.
11037
11038 2007-08-23  Martin Baulig  <martin@ximian.com>
11039
11040         * mono-debug-debugger.c
11041         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
11042         don't notify the debugger about it.
11043
11044         * mono-debug-debugger.h
11045         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
11046
11047 2007-08-23  Robert Jordan  <robertj@gmx.net>
11048
11049         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
11050         Code is contributed under MIT/X11 license.
11051
11052 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11053
11054         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
11055
11056 2007-08-22  Martin Baulig  <martin@ximian.com>
11057
11058         * mono-debug.c: Store debugging info on a per-domain basis and
11059         free it on domain unload.  Add support for unloading symbol files.
11060
11061         * mono-debug.h
11062         (MonoDebugList): New typedef.
11063         (MonoSymbolTable):
11064         - add `data_tables and `type_table'.
11065         - replace 'symbol_files' and `num_symbol_files' with a
11066           `MonoDebugList *'.
11067         (mono_debug_data_table): Removed.
11068         (mono_debug_list_add): New public function.
11069         (mono_debug_list_remove): New public function.
11070         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
11071         (mono_debug_init_2_memory): Renamed into
11072         mono_debug_open_image_from_memory().
11073         (mono_debug_close_image): New public function.
11074         (mono_debug_domain_create): Likewise.
11075         (mono_debug_domain_unload): Likewise.
11076         (MONO_DEBUGGER_VERSION): Bump to 60.
11077
11078         * mono-debug-debugger.h
11079         (MonoDebuggerEvent):
11080         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
11081         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
11082         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
11083         - rename `THREAD_CREATED' and `THREAD_EXITED' into
11084           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
11085         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
11086           meaning.
11087         (mono_debugger_add_symbol_file): Removed.
11088         (mono_debugger_add_type): Removed.
11089         (mono_debugger_lookup_type): Removed.
11090         (mono_debugger_lookup_assembly): Removed.
11091
11092         * domain.c
11093         (mono_domain_create): Call mono_debug_domain_create().
11094         (mono_init_internal): Call mono_debug_init_corlib().
11095
11096         * assembly.c
11097         (mono_assembly_close): Call mono_debug_close_image().
11098
11099 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
11100
11101         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
11102         mmap call.
11103
11104 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
11105
11106         * sgen-gc.c: ensure section->pin_queue_end is initialized
11107         correctly when non pinning objects in the section have been found.
11108
11109 2007-08-22  Marek Habersack  <mhabersack@novell.com>
11110
11111         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
11112         containing a list of directories separated by ':'. MSDN docs say
11113         the directories should be separated with ';'. Part of a bugfix for
11114         bug #81446
11115
11116 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
11117
11118         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
11119         it should MonoType and not MonoClass.
11120
11121 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
11122
11123         * culture-info-table.h : regenerated.
11124
11125 2007-08-20  William Holmes  <billholmes54@gmail.com>
11126
11127         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
11128          to call ReplaceFile Kernel32 on windows or in io-layer.
11129         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
11130         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
11131          as an internal call.
11132
11133         Code is contributed under MIT/X11 license.
11134
11135 2007-08-20  Jb Evain  <jbevain@novell.com>
11136
11137         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
11138         and MONO_EXCEPTION_FIELD_ACCESS.
11139
11140         * debug-helpers.[c|h]: new mono_field_full_name function.
11141
11142 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11143
11144         * class.c: Removed class_security_level() and moved it to
11145         security-core-clr.c.
11146
11147         * security-core-clr.c, security-core-clr.h: class_security_level()
11148         is now public and renamed to mono_security_core_clr_class_level().
11149         It also looks for security attributes in the classes a class is
11150         nested in.
11151
11152 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11153
11154         * security-core-clr.c, security-core-clr.h: CoreCLR security
11155         utility functions.
11156
11157         * Makefile.am: Added security-core-clr.[ch].
11158
11159         * security-manager.c, security-manager.h: Functions and enum for
11160         setting and getting the security mode.
11161
11162         * class.c: CoreCLR security checks.
11163
11164 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11165
11166         * icall-def.h, process.c, process.h: implemented icall to get
11167         user/system processor times.
11168
11169 2007-08-17  Mark Probst  <mark.probst@gmail.com>
11170
11171         * domain.c, threads.c, class-internals.h, domain-internals.h: New
11172         reader-lock-free jit_info_table.
11173
11174 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
11175
11176         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
11177
11178         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
11179
11180         * object-internals.h (MonoException): Add missing _data member.
11181
11182 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
11183
11184         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
11185         checking that only methods with matching qname or fqname are picked
11186         from implemented interfaces.
11187
11188 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
11189
11190         * verify.c (do_newarr):added, do type verification of
11191         newarr ops, push the right value on the eval stack.
11192         * verify.c (mono_method_verify): use do_newarr
11193
11194
11195 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
11196
11197         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
11198         factored the common code into get_boxable_mono_type, which
11199         is now using mono_type_get_full, this fixed byref related tests.
11200
11201 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
11202
11203         * class.c: added mono_type_get_full, this function has the same
11204         behavior of mono_class_get_full but the returned MonoType has
11205         all metadata of the associated token in case of a typespec token.
11206         * class.c: added mono_type_retrieve_from_typespec, used by 
11207         mono_type_get_full to retrieve the token type.
11208         * class.c (mono_class_create_from_typespec): changed to use
11209         mono_type_retrieve_from_typespec.
11210         * class.c (mono_ldtoken): changed to use mono_type_get_full
11211         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
11212         * class-internals.h: exported mono_type_get_full for internal use.
11213
11214 2007-08-16  Jb Evain  <jbevain@novell.com>
11215
11216         * domain.c (supported_runtimes): add entry for
11217         the 'moonlight' runtime version.
11218
11219 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
11220
11221         * verify.c (mono_method_verify): small typo sliped in.  
11222
11223 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
11224
11225         * verify.c (do_unbox_value): added, do type verification of
11226         unboxing ops
11227         * verify.c (mono_method_verify): use do_unbox_value
11228
11229
11230 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
11231
11232         * verify.c (dump_stack_value): fixed typo, was printing string
11233         instead of object on stack.
11234         * verify.c (do_box_value): moved the byref check up as it leads
11235         to invalid code and should be done earlier.
11236         * verify.c: improved error messages for and ldobj
11237
11238 2007-08-15  William Holmes  <billholmes54@gmail.com>
11239
11240         * marshal.c (emit_marshal_custom): Omit the call to 
11241           marshal_native_to_managed when calling native to managed 
11242           and the argument is specified as an out argument.
11243
11244         Code is contributed under MIT/X11 license.
11245
11246 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
11247
11248         * verify.c: fixed the type checks for generics, function pointers and vectors.
11249         Added type verification for ldobj and ldtoken. The verifier
11250         would segfault if header or signature of a method contained references
11251         to non-existant types.
11252
11253 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
11254
11255         * marshal.c (cominterop_get_ccw): Patch from
11256         Bill Holmes to no walk up interface hierarchy. 
11257         All parent methods should be present in the interface for COM.
11258    
11259         Code is contributed under MIT/X11 license.
11260
11261 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
11262
11263         * marshal.c (emit_marshal_com_interface): Patch from
11264         Bill Holmes to handle COM Interfaces as return values
11265         for native->managed calls.
11266    
11267         Code is contributed under MIT/X11 license.
11268
11269 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
11270
11271         * marshal.c (cominterop_get_idispatch_for_object): Implement
11272         for runtime callable wrappers.
11273    
11274         Code is contributed under MIT/X11 license.
11275
11276 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
11277
11278         * pedump.c (main): changed from mono_init to mono_init_from_assembly
11279         so 2.0 types are accessible
11280
11281
11282 2007-08-13  Miguel de Icaza  <miguel@novell.com>
11283
11284         * domain.c (mono_init_internal): Call mono_assembly_load_friends
11285         once we load mscorlib.   Due to the order in which we initialize,
11286         the mono_assembly_load_full routine that loads mscorlib did not
11287         load friends.   We now load it once we load the
11288         mono_defaults.internals_visible_class class. 
11289
11290         * assembly.c: Expose the mono_load_friend_assemblies method.
11291
11292 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
11293
11294         * verify.c: improved the handling of boxing, better
11295         type checking for unary ops and conversion. Fix bug
11296         regarding managed pointer compatibility checking
11297
11298 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
11299
11300         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
11301
11302         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
11303
11304 2007-08-09  Raja R Harinath  <rharinath@novell.com>
11305
11306         * reflection.c (dup_type): Remove.
11307         * class.c (dup_type): Remove.
11308         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
11309         instead of the dodgy 'dup_type'.
11310         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
11311         handle the case where 'dup_type' needed the second argument.
11312
11313 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
11314
11315         * domain.c: Fix a warning.
11316
11317 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
11318
11319         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
11320         checking that methods with the same fqname are not overridden
11321         with a method from an ancestor.
11322
11323 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
11324
11325         * threads.c (free_thread_static_data_helper): Avoid a crash if
11326         thread->static_data is not yet set.
11327
11328 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
11329
11330         * marshal.c: Use correct image when emitting
11331         native wrapper for COM calls.
11332    
11333         Code is contributed under MIT/X11 license.
11334
11335 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
11336
11337         * icall-def.h, security.c, security.h :
11338           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
11339
11340 2007-08-07  Martin Baulig  <martin@ximian.com>
11341
11342         * mono-debug-debugger.h
11343         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
11344
11345         * domain.c (mono_domain_free): Call
11346         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
11347
11348 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11349
11350         * verify.c (check_underflow, check_overflow): error message now returns IL offset
11351         * verify.c (in_same_block): code should test if either offset is inside the clauses
11352         * verify.c (mono_method_verify): push the exception into the eval stack of exception
11353         and filter blocks
11354
11355 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * image.c (mono_image_close): Fix a leak.
11358
11359         * object.c (mono_runtime_invoke_array): Avoid using alloca.
11360
11361         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
11362
11363 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11364
11365         * domain.c, threads.c, threads-types.h: fix memory retention issue
11366         with thread static variables not being cleared on domain unload.
11367         Reuse thread static slots after domain unload.
11368
11369 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
11372         nullable type.
11373
11374         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
11375         now done in mono_runtime_invoke_array.
11376
11377         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
11378         receiver is a nullable type.
11379
11380         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
11381         generic parameter.
11382
11383 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
11384
11385         * marshal.c: Implement COM Objects as return type for 
11386         managed->unmanaged calls. Added Release calls for COM Object
11387         out/return values in managed->unmanaged calls.
11388
11389         Code is contributed under MIT/X11 license.
11390
11391 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11392
11393         * threads.h, threads-type.h: move the hazard pointer declarations
11394         to the private header.
11395
11396 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11397
11398         * file-io.c, appdomain.c: memory leak fixes.
11399
11400 2007-08-02  Dick Porter  <dick@ximian.com>
11401
11402         * socket-io.c
11403         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
11404         SO_REUSEADDR setting into io-layer/sockets.c.
11405
11406 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
11407
11408         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
11409         from Object when called on a generic parameter. Fixes #82211.
11410
11411 2007-08-01  Dick Porter  <dick@ximian.com>
11412
11413         * file-io.c (convert_share): Test FileShare values bit-by-bit.
11414         Fixes bug 79250 yet again.
11415
11416 2007-07-30  Martin Baulig  <martin@ximian.com>
11417
11418         Merged the `debugger-dublin' branch.
11419
11420         * mono-debug.h
11421         (MonoDebugDataTable): New typedef.
11422         (MonoDebugMethodAddressList): New typedef.
11423         (MonoDebugWrapperData): Removed.
11424         (MonoDebugSymbolTable): Removed `current_data_table',
11425         `current_data_table_size', `current_data_table_offset'.
11426         (MonoDebugDataItemType): Moved into mono-debug.c.
11427         (MonoDebugMethodJitInfo): Remove `address'.
11428         (mono_debug_data_table): New global variable.
11429         (mono_debug_lookup_method_addresses): New public function.
11430         (mono_debug_find_method): Take a `MonoMethod *', not a
11431         `MonoDebugMethodInfo *'.
11432
11433         * mono-debug.c: Drop support for the old symbol tables.
11434
11435 2007-06-28  Martin Baulig  <martin@ximian.com>
11436
11437         * mono-debug.c (mono_debug_debugger_version): New public variable.
11438
11439 2007-07-31  William Holmes  <billholmes54@gmail.com>
11440
11441         * metadata.c Changed mono_type_create_from_typespec to not insert
11442           the type into the hash map until after
11443           do_mono_metadata_parse_type has completed.
11444         Fixes Bug #82194
11445         Code is contributed under MIT/X11 license.
11446
11447 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
11448
11449         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
11450         generic parameter. Fixes #82211.
11451
11452 2007-07-27  Jb Evain  <jbevain@novell.com>
11453
11454         * pedump.c (dump_metadata, dump_metadata_header): dump
11455         versions contained in the metadata header.
11456
11457 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11458
11459         * threads.c: register small_id_table with the GC.
11460
11461 2007-07-27  Mark Probst  <mark.probst@gmail.com>
11462
11463         * threads.c, threads.h, class-internals.h, object-internals.h:
11464         Hazard pointers, to be used by lock-free parallel algorithms.
11465
11466 2007-07-26  Dick Porter  <dick@ximian.com>
11467
11468         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
11469         routine on non-windows platforms, as I've not managed to think of
11470         a non-kludgy way of doing this.  Finishes off bug 78739.
11471
11472 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11473
11474         * object.c: properly setup interface_bitmap in proxy vtables.
11475
11476 2007-07-25  Marek Habersack  <mhabersack@novell.com>
11477
11478         * appdomain.c (get_shadow_assembly_location): do not use TickCount
11479         to create unique shadow copy target directories, use the domain's
11480         serial number instead. Each domain gets a unique target directory
11481         that way.
11482
11483         * domain.c (mono_domain_create): added code to increment domain
11484         shadow copy serial number and cache the value in the current
11485         domain structure.
11486
11487         * domain-internals.h (struct _MonoDomain): added a new field -
11488         shadow_serial to hold the serial number used in generation of
11489         shadow-copy directories. This is to make sure that the directory
11490         name is unique for each and every domain created. We avoid a race
11491         condition with overriding assemblies already in use by other app
11492         domains.
11493
11494 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
11495
11496         * class.c (mono_bounded_array_class_get): fixed memory leak when 
11497         binding generic parameters.
11498
11499 2007-07-24  Raja R Harinath  <rharinath@novell.com>
11500
11501         * metadata.c (do_mono_metadata_parse_generic_class): Use
11502         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
11503         error.
11504
11505 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11506
11507         * loader.c, class-internals.h, reflection.c: removed the per-method
11508         generics hashtable: we use the global one through the call of
11509         mono_class_inflate_generic_method ().
11510
11511 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11512
11513         * class.c, metadata.c, class-internals.h: introduce yet another
11514         generics global cache for inflated methods (fixes 98% of the perf
11515         issue in bug #81806).
11516
11517 2007-07-23  Raja R Harinath  <rharinath@novell.com>
11518
11519         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
11520         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
11521         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
11522         return a MonoGenericInst containing (a copy) of those types.
11523         (mono_metadata_inflate_generic_inst): Update to changes.
11524         (mono_metadata_parse_generic_inst): Likewise.
11525         (mono_get_shared_generic_inst): Likewise.
11526         * reflection.c (mono_class_bind_generic_parameters): Likewise.
11527         (mono_reflection_bind_generic_method_parameters): Likewise.
11528         * metadata-internals.h: Likewise.
11529         * icall.c (free_generic_context): Kill.
11530         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
11531
11532         * reflection.c (reflection_methodbuilder_to_mono_method): Use
11533         mono_metadata_type_dup.
11534         * marshal.c (mono_mb_create_method): Likewise.
11535
11536         * metadata.c (mono_metadata_type_dup): Rename from
11537         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
11538         MonoImage.  Handle a few more cases, esp. when no mempool is given.
11539         * marshal.c, metadata-internals.h: Update to changes.
11540
11541 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
11542
11543         * class.c: fixed a small leak for array classes and removed warning.
11544
11545 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * loader.c (mono_method_get_param_token): Make this work on generic methods.
11548         Return 0x8000000 for return parameters. Fixes #82161.
11549
11550 2007-07-21  Marek Habersack  <grendello@gmail.com>
11551
11552         * appdomain.c (get_shadow_assembly_location): append the current
11553         ticks value to the path. Avoids overwriting the same assemblies by
11554         several threads at the same time.
11555
11556 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
11557         and Raja R Harinath  <rharinath@novell.com>
11558
11559         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
11560         Simplify slightly.
11561         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
11562         property for testing if a method is a generic method definition.
11563
11564 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
11565
11566         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
11567
11568 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
11569
11570         * verify.c: used function from private branch, reverted to the one in class.h 
11571
11572 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
11573
11574         * verify.c: a typo slipped in and the code wont compile
11575
11576 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
11577
11578         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
11579         disabled box instruction as it is doing the wrong thing
11580         improved stack dump messages, now it is easier to debug type related issues
11581
11582
11583 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
11584
11585         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
11586
11587 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
11588
11589         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
11590         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
11591         grouped with class and valuetype. This change will simply 
11592         the code as it should be handled just like unmanaged pointers.
11593
11594 2007-07-19  Mark Probst  <mark.probst@gmail.com>
11595
11596         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
11597
11598 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
11599
11600         * verify.c: several stack merge issues fixed, reference comparisons now
11601         check the type size. strict type check now works correctly.
11602         added more uses of IS_MANAGED_POINTER macro.
11603         fixed issues pointed by running the test suite against .net.
11604         
11605
11606 2007-07-19  Mark Probst  <mark.probst@gmail.com>
11607
11608         * class.c, loader.c, class-internals.h: Removed the
11609         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
11610         defines.
11611
11612         * icall.c: Better error checking in some internal reflection
11613         methods.
11614
11615 2007-07-18  William Holmes  <billholmes54@gmail.com>
11616
11617         * filewatcher.c : removed unused variable 'filename' in 
11618           ves_icall_System_IO_FSW_SupportsFSW
11619
11620 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11621
11622         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
11623         obsolete, removed.
11624
11625 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
11626
11627         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
11628         
11629         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
11630
11631 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
11632
11633         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
11634         Implement generics support.
11635         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
11636
11637         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
11638         type_args and method_args arguments.
11639         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
11640         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
11641         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
11642
11643 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
11644
11645         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
11646           It adds a rootimage parameter to mono_reflection_get_type_internal,
11647           adds new function mono_reflection_get_type_with_rootimage and use
11648           the rootimage to resolve the types instead of the current image
11649
11650 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11651
11652         * culture-info-table.h: Forgot to update after r78304.
11653
11654 2007-07-13  Raja R Harinath  <rharinath@novell.com>
11655
11656         * class.c (mono_class_is_open_constructed_type)
11657         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
11658
11659 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
11660
11661         * class.c (mono_bounded_array_class_get):  method fails if used with
11662         an incomplete TypeBuilder enum (no basetype field), fixed it by 
11663         avoiding calculating the size for such array as it cannot be instantiated.
11664         Fix bug #82015
11665
11666 2007-07-12  Raja R Harinath  <rharinath@novell.com>
11667
11668         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
11669         field.
11670         * metadata.c, reflection.c: Update to changes.
11671
11672 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
11673
11674         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
11675         mono_class_is_valid_enum, they are used to valide a enum when loading.
11676         * reflection.c: used new functions to throw TypeLoadException when and
11677         invalid enum is build with TypeBuilder. Fixes #82018
11678   
11679 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
11680
11681         * object.c: forgot commit of mono_class_setup_methods () to access
11682         iface->methods.
11683         * object-internals.h: added a few more handy fields to
11684         MonoIMTCheckItem.
11685
11686 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11687
11688         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
11689         iface->methods.
11690
11691 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
11692
11693         * class-internals.h, object-internals.h, object.c: IMT-based
11694         interface invocation core from Massimiliano Mantione
11695         (massi@ximian.com) with a reworked arch-specific interface,
11696         bsearch implementation and a few bugfixes and memory savings by me.
11697
11698 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
11699
11700         * class.c (mono_class_create_from_typedef): mono would segfault if 
11701         an enum did not have a __value field. It now throws a TypeLoadException
11702         for such cases. Fix bug #82022
11703
11704 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11705
11706         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
11707
11708 2007-07-09  Mark Probst  <mark.probst@gmail.com>
11709
11710         * class.c (mono_class_init): If a class is already inited but has
11711         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
11712
11713 2007-07-09  Mark Probst  <mark.probst@gmail.com>
11714
11715         * class.c: Properly handle the case of an unimplemented interface
11716         method.  Fixes: 81673.
11717
11718 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11719
11720         * class-internals.h, object.c: cleanup patch from massi: use
11721         MonoVTable->interface_bitmap since the vtable interfaces offset array
11722         is going away.
11723
11724 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11725
11726         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
11727         GetMDStreamVersion icall instead.
11728
11729 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
11730
11731         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
11732         not use mono_dl_build_path() with a full library name: makes
11733         fallbacks to libgaim and libfam work.
11734
11735 2007-07-06  William Holmes  <billholmes54@gmail.com>
11736
11737         * assembly.c: Added a continue statement in probe_for_partial_name when
11738          parse_assembly_directory_name fails.  Fixes : 82002
11739
11740 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
11741
11742         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
11743         and added a verification  for TYPEDBYREF.
11744         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
11745         make native int interchangeable with int32 and some small cleanup and formating.
11746         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
11747         handle byref of byref.
11748         * verify.c (push_local): handle byref of byref.
11749         * verify.c (do_binop): invalid mix of values is unverifiable
11750         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
11751         added visibility checks
11752         * verify.c (field related method): added visibility checks
11753         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
11754
11755 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
11756
11757         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
11758         string.
11759
11760 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * profiler.c (mono_profiler_load): Fix an off-by-one error.
11763
11764         * marshal.c (emit_marshal_string): When returning a string from managed code,
11765         allways make a copy even for unicode strings. Fixes #81990.
11766
11767 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
11768
11769         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
11770         of byref generic inst types (bug #81997).
11771
11772 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
11773
11774         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
11775         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
11776
11777 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
11778
11779         * marshal.c (emit_marshal_string): Add support for unicode strings in
11780         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
11781
11782 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
11783
11784         * verify.c: field load/store are now verified, missing only access checks now
11785
11786 2007-06-28  Martin Baulig  <martin@ximian.com>
11787
11788         * mono-debug.c (mono_debug_debugger_version): New public variable.
11789
11790 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
11791
11792         * locales.c: When constructing DateTimeFormat or NumberFormat for
11793         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
11794         MonoCultureInfo contructed from the current locale is always
11795         read-only and has UseUserOverride set to true. All MonoCultureInfo
11796         instances returned for GetCultures have both IsReadOnly and
11797         UseUserOverride set to true. Fixes part of bug #81930.
11798
11799 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
11800
11801        * icall-def.h: Update System.__ComObject icalls
11802        * marshal.c: Avoid managed transition (and object creation)
11803        when looking up COM interface in RCW.
11804        * marshal.h: Ditto.
11805        
11806        Code is contributed under MIT/X11 license.
11807
11808 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
11809
11810         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
11811         to avoid crashes during assembly unloading.
11812
11813 2007-06-22  Raja R Harinath  <rharinath@novell.com>
11814
11815         Fix MethodInfo.IsGenericMethodDefinition
11816         * reflection.c (mono_reflection_bind_generic_method_parameters):
11817         Rearrange code to ensure we always uses a generic method definition.
11818         * class.c (mono_class_inflate_generic_method_full): Set
11819         'generic_container' field only for generic method definitions.
11820         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
11821         Use presense of 'generic_container' field as indication of being a
11822         generic method definition.
11823
11824 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
11825
11826         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11827
11828         * object-internals.h: Reflect changes in the layout of the managed Delegate
11829         class.
11830         
11831         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
11832         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
11833         runtime memory used by the dynamic method. Fixes #77146.
11834
11835 2007-06-21  Dick Porter  <dick@ximian.com>
11836
11837         * file-io.h: 
11838         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
11839         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
11840         81767.
11841
11842 2007-06-21  Raja R Harinath  <rharinath@novell.com>
11843
11844         * reflection.c (method_encode_methodspec): Add a tripwire.
11845         * class.c (inflate_generic_type): The fully open generic type is
11846         not the same as the generic type definition.
11847
11848 2007-06-21  Martin Baulig  <martin@ximian.com>
11849
11850         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
11851
11852         * mono-debug-debugger.h
11853         (MonoDebuggerBreakpointInfo): Removed.
11854         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
11855         (mono_debugger_remove_breakpoint): Likewise.
11856         (mono_debugger_breakpoint_callback): Likewise.
11857         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
11858
11859 2007-06-21  Raja R Harinath  <rharinath@novell.com>
11860
11861         * metadata.c (mono_metadata_lookup_generic_class): The fully open
11862         generic type is not the same as the generic type definition.
11863         * class.c (mono_generic_class_get_class): Likewise.
11864
11865 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
11866
11867         * icall.c: The second argument to 
11868         System.Reflection.MethodBase.GetMethodFromHandleInternalType
11869         is a MonoType not a MonoClass.
11870
11871 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
11872
11873         * verify.c: support for function pointers in the verifier
11874
11875 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
11876
11877         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
11878
11879 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11880
11881         * assembly.c: removed Mono.Data.SqliteClient from the list of
11882         forward-compatible assemblies as it breaks the ABI (bug #81899).
11883
11884 2007-06-19  Raja R Harinath  <rharinath@novell.com>
11885
11886         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
11887         lookup/update with the loader lock.
11888         * reflection.c (mono_class_bind_generic_parameters): No need to
11889         protect mono_metadata_lookup_* with the loader lock.
11890         * class.c (inflate_generic_type): Likewise.
11891         
11892         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
11893         on a generic instantiated type.
11894
11895 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
11896
11897         *verify.c: produce meanfull error messages on verification error
11898         *verify.c: fixed some cases of verification errors reported as validation errors
11899         *pedump.c: fixed the error name array, now it shows validation errors properly
11900         *verify.h: fixed the contant that should be used for verification errors
11901
11902 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11903
11904         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
11905         for bug #77596, 81858 and 80743 (generics data structures on domain
11906         unload).
11907
11908 2007-06-15  Raja R Harinath  <rharinath@novell.com>
11909
11910         Avoid allocating 'MonoGenericContext' on the heap.
11911         * class-internals (_MonoMethodInflated::context): Make field
11912         inline, not a pointer.
11913         * loader.c (method_from_methodspec): Allocate 'new_context' on the
11914         stack.  Use the context embedded within the inflated method as the
11915         hash key, rather than 'new_context'.
11916         * class.c (inflate_generic_context): Simplify.  Return a struct
11917         rather than allocating on the heap.
11918         (mono_class_inflate_generic_method_full): Update to changes.  Now,
11919         doesn't salt away a copy of the context -- simplifying the
11920         lifetime rules of a 'MonoGenericContext *'.
11921         (mono_method_get_context): Return pointer to embedded context.
11922         (setup_generic_array_ifaces): Allocate temporary context on stack.
11923         * reflection.c (inflate_mono_method): Likewise.
11924         (mono_reflection_bind_generic_method_parameters): Likewise.
11925         Use the context embedded within the inflated method as the hash key.
11926
11927         Avoid a source of allocation of 'MonoGenericContext'.
11928         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
11929         and 'cached_context' fields into embedded 'MonoGenericContext' field.
11930         * class.c: Update to changes.
11931         (mono_generic_class_get_context): Simplify drastically.  Now just
11932         returns a pointer to the field.
11933         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
11934         argument as a const pointer.
11935         (mono_metadata_generic_context_equal): Likewise.
11936         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
11937         Update to changes.
11938
11939 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
11940
11941         * verify.c improved the handling of brtrue/brfalse, factored out common code
11942
11943 2007-06-14  Raja R Harinath  <rharinath@novell.com>
11944
11945         Kill MonoGenericMethod.
11946         * class-internals.h (MonoGenericContext::method_inst): Rename from
11947         'gmethod' and convert to a MonoGenericInst.
11948         (MonoGenericMethod): Remove.
11949         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
11950         * loader.c (method_from_methodspec): Update to changes.  Use a
11951         MonoGenericContext as the key to the hashtable.
11952         * metadata.c (mono_metadata_generic_context_equal): Rename from 
11953         'mono_metadata_generic_method_equal' and take MonoGenericContext.
11954         (mono_metadata_generic_context_hash): Likewise from
11955         'mono_metadata_generic_method_hash'.  Change hash function.
11956         (mono_metadata_load_generic_params): Update to changes.
11957         (mono_get_shared_generic_method): Remove.
11958         * metadata-internals.h (mono_get_shared_generic_method): Remove.
11959         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
11960         (inflate_generic_context): Likewise.
11961         (mono_class_inflate_generic_method_full): Likewise.
11962         (setup_generic_array_ifaces): Likewise.
11963         (mono_class_create_from_typespec): Likewise.
11964         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
11965         (method_encode_methodspec): Update callsite.
11966         (reflection_methodbuilder_to_mono_method): Update to changes.
11967         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
11968         MonoGenericContext as the key to the hashtable.
11969         (inflate_mono_method): Update to changes.
11970
11971         * class-internals.h (MonoGenericMethod::container): Remove.
11972         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11973
11974 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11975
11976         * profiler-private.h, profiler.c, profiler.h: added API to profile
11977         exception events.
11978
11979 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
11980
11981         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
11982
11983 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
11984
11985         * verify.c: method invocation is now validated, now we verify parameter types on stack.
11986         Fixed overflow and underflow not aborting the verification process.
11987
11988 2007-06-13  Mark Probst  <mark.probst@gmail.com>
11989
11990         * class-internals.h (MonoStats): Added stats entries for dynamic
11991         code allocations.
11992
11993 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
11994
11995         * loader.c (mono_free_method): Free header->locals and header->clauses.
11996
11997         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
11998         dynamic case.
11999
12000         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
12001
12002         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
12003
12004 2007-06-12  Raja R Harinath  <rharinath@novell.com>
12005
12006         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
12007         the tables.
12008
12009 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
12010
12011         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
12012
12013 2007-06-11  Raja R Harinath  <harinath@gmail.com>
12014
12015         MonoGenericMethod on a diet
12016         * class-internals.h (_MonoMethodInflated::reflection_info): Move
12017         here ...
12018         (_MonoGenericMethod::reflection_info): ... from here.
12019         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
12020         Update to changes.
12021         * reflection.c (inflate_mono_method): Likewise.
12022         (mono_reflection_bind_generic_method_parameters): Likewise.
12023
12024 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
12025
12026         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
12027         *verify.c: factored long ldarg forms to share code with short forms
12028
12029 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
12030
12031         *verify.c: fixed code formating factored some duplicate code
12032         into a new function
12033
12034         *verify.h: fixed binary incompatibility introduced earlier
12035
12036         *pedump.c: fixed formating
12037
12038 2007-06-11  Raja R Harinath  <harinath@gmail.com>
12039
12040         Fix assertion when disassembling Mono.C5.dll
12041         * loader.c (method_from_methodspec): Avoid inflating a method
12042         twice with the same context.  If the methodref is inflated, use
12043         the declaring method instead.
12044
12045         * class.c (mono_class_from_generic_parameter): Fix case similar to
12046         bug #81830 handled below, but for method containers.
12047
12048 2007-06-10  Raja R Harinath  <harinath@gmail.com>
12049
12050         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
12051         get_shared_generic_class.  Directly inflate the instance.
12052         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
12053         (inflate_generic_class): Delete.
12054         (get_shared_generic_class): Delete.  Move setting of
12055         'cached_class' and 'cached_context' ...
12056         * metadata.c (mono_metadata_lookup_generic_class): ... here.
12057
12058         * metadata.c (mono_metadata_lookup_generic_class): Change
12059         signature to take the components of a MonoGenericClass rather than
12060         an allocated MonoGenericClass.  Change semantics to be intern-like.
12061         * reflection.c (mono_class_bind_generic_parameters): Update to
12062         changes.  Make locking region tighter.
12063         * class.c (inflate_generic_class): Update to changes.
12064         (get_shared_generic_class): Likewise.
12065         * metadata-internals.h: Likewise.
12066
12067         * reflection.c (mono_class_bind_generic_parameters): Take and
12068         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
12069         (mono_reflection_bind_generic_parameters): Use
12070         'mono_class_bind_generic_parameters' rather than duplicate the code.
12071         * class.c (mono_bounded_array_class_get): Update to changes.
12072         * object-internals.h: Likewise.
12073
12074         * reflection.c (mono_class_bind_generic_parameters): Only support
12075         parameterizing generic type definitions.  Remove support for other
12076         open types.
12077
12078 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
12079
12080         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
12081
12082         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
12083         in the dynamic case.
12084
12085 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
12086
12087         * threads.c: When cleaning up thread, reset the Background bit.
12088         Fixes bug #81720.
12089
12090 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
12091
12092        * metadata.c: Move variable declarations to top of scope.
12093        * verify.c: Move variable declarations to top of scope.
12094
12095        Code is contributed under MIT/X11 license.
12096
12097 2007-06-08  Raja R Harinath  <rharinath@novell.com>
12098
12099         * reflection.c (mono_class_bind_generic_parameters): Replace
12100         open-coded loop with mono_metadata_inflate_generic_inst.
12101
12102         * class.c (get_shared_generic_class): Don't call
12103         mono_get_shared_generic_inst.  Use the container's own
12104         'class_inst'.
12105
12106         * metadata.c (mono_metadata_load_generic_params): Move
12107         initialization of 'context' field here from ...
12108         * class.c (mono_class_create_from_typedef): ... here, and ...
12109         * loader.c (mono_get_method_from_token): ... here.
12110
12111         * class.c (get_shared_generic_class): Rename from
12112         mono_get_shared_generic_class and make static.
12113         (mono_get_shared_generic_inst): Move to metadata.c.
12114         * loader.c (mono_get_shared_generic_method): Likewise.
12115         * class-internals.h, metadata-internals.h: Update to changes.
12116
12117         Fix #81830
12118         * class.c (mono_class_from_generic_parameter): Don't assume a
12119         generic container owner exists.  Generic containers from monodis
12120         don't have any.
12121
12122 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
12123
12124         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
12125         * verify.h: new typedefs to returns the non-verifiable status
12126         * verify.c: initial implementation of generics, stack merging and object compatibility check
12127
12128 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12129
12130         * class.c, image.c, class-internals.h (MonoImage): class_cache is
12131         a MonoInternalHashTable again (fixed bug in internal hash table
12132         code).
12133
12134 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12135
12136         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
12137         MonoInternalHashTable again (fixed bug in internal hash table
12138         code).
12139
12140 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12141
12142         * class.c, image.c, class-internals.h, domain.c,
12143         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
12144         changes.  Have to figure out what makes them break the SWF
12145         regression.
12146
12147 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12148
12149         * class.c, image.c, class-internals.h (MonoImage): class_cache is
12150         a MonoInternalHashTable now.
12151
12152 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12153
12154         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
12155         MonoInternalHashTable now.
12156
12157 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
12158
12159         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
12160         invoke_impl code.
12161
12162         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
12163
12164         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
12165         dependent trampoline.
12166
12167         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12168
12169         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
12170
12171 2007-05-29  Robert Jordan  <robertj@gmx.net>
12172
12173         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
12174
12175 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
12176
12177         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
12178
12179 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
12180
12181        * marshal.c: Fix interface lookup loops for
12182        cominterop_get_com_slot_for_method and 
12183        cominterop_get_method_interface. Only need to lookup
12184        if type is a class, else use interface type method is on.
12185
12186        Code is contributed under MIT/X11 license.
12187
12188 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
12189
12190         * reflection.c: HasSecurity can be present even if no specially 
12191         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
12192         SecurityAttribute). Fix CAS regression tests on buildbot.
12193
12194 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
12195
12196        * appdomain.c: Add configure checks for header files.
12197        * image.c: Add configure checks for header files.
12198        * file-io.c: Add configure checks for header files.
12199        * debug-mono-symfile.c: Add configure checks for header files.
12200        * threadpool.c: Add configure checks for header files.
12201        * console-io.c: Add configure checks for header files.
12202        * profiler.c: Add configure checks for header files.
12203        * rawbuffer.c: Add configure checks for header files.
12204        * icall.c: Add configure checks for header files.
12205        * rand.c: Add configure checks for header files.
12206        * socket-io.c: Add configure checks for header files.
12207
12208        Code is contributed under MIT/X11 license.
12209
12210 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
12211
12212         * reflection.c (mono_custom_attrs_from_builders): Remove the 
12213         assertion as it breaks the build.
12214         
12215         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
12216
12217         * reflection.c (lookup_custom_attr): Make a copy here too.
12218
12219         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
12220         dynamic images.
12221
12222         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
12223         images.
12224
12225         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
12226         info.
12227
12228 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
12229
12230         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
12231         (load_cattr_value): Ditto.
12232
12233 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
12234
12235         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
12236
12237 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
12238
12239         * threads.c: In "start_wrapper", set apartment_state to MTA if
12240         apartment_state is Unknown and we're running on 2.0 profile or
12241         higher.
12242         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
12243         to main method, then set apartment_state to Unknown on 1.0 profile,
12244         and MTA on 2.0 profile.
12245
12246 2007-05-16  Jb Evain  <jb@nurv.fr>
12247
12248         * class-internals.h (MonoDefaults): Add an attribute_class and
12249           customattribute_data_class.
12250         * domain.c (mono_init_internal): Populate them.
12251         * reflection.c: Use them to remove duplicates. Make a vew
12252         MonoClass variables `static'.
12253
12254 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12255
12256         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
12257         step in implementing IMT, so that all isinst checks now can go
12258         through the bitmap.
12259         This was needed because vtables for TransparentProxy need to look
12260         like the vtable of the "target" class, so they need to point to
12261         its interface bitmap directly.
12262
12263         * object.c: inside "mono_class_create_runtime_vtable" and
12264         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
12265
12266 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
12267
12268         * object-internals.h
12269           culture-info.h : added territory field in MonoCulture and
12270           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
12271         * locales.c : fill territory field above too.
12272         * culture-info-table.h : regenerated.
12273
12274 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
12277         Fixes #81599.
12278
12279 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
12280
12281         * object.c: Always initialize apartment, even if 
12282         there is no custom attributes on entry point.
12283         
12284         Code is contributed under MIT/X11 license.
12285
12286 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
12287
12288         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
12289         * metadata.c: If no encoding is set, check for unicode
12290         on class.
12291         
12292         Code is contributed under MIT/X11 license.
12293
12294 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
12295
12296         * threads.c: Handle if mono_thread_current returns NULL 
12297         
12298         Code is contributed under MIT/X11 license.
12299
12300 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
12301
12302         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
12303         in start_wrapper. Added mono_thread_init_apartment_state and
12304         mono_thread_cleanup_apartment_state.
12305         * object.c: Initialize thread apartment state on main thread
12306         by checking for STAThreadAttribute on entry point.
12307         * object-internals.h: Add apartment_state field to MonoThread.
12308         * threads-types.h: Add unmanaged definition of 
12309         System.Threading.ApartmentState, MonoThreadApartmentState.
12310         
12311         Code is contributed under MIT/X11 license.
12312         
12313 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
12314
12315         * class.c: Fix windows build.
12316         * class-internals.h: Fix windows build.
12317         
12318         Code is contributed under MIT/X11 license.
12319
12320 2007-05-08  Robert Jordan  <robertj@gmx.net>
12321
12322         * process.c (CreateProcess_internal):
12323         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
12324         .CreateNoWindow was specified. Fixes #81496.
12325
12326 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12327
12328         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
12329         step in implementing IMT, replaced it with two compact arrays
12330         (interfaces_packed and interface_offsets_packed) and a bitmap that
12331         is used for isinst checks (interface_bitmap).
12332
12333         * class.c: (compare_interface_ids): compare function to pass to
12334         bsearch when looking for an interface with a given id.
12335         (mono_class_interface_offset): reimplemented using bsearch on
12336         interfaces_packed, getting the offset from interface_offsets_packed.
12337         (print_implemented_interfaces): utility debugging function.
12338         (setup_interface_offsets): reworked to initialize interfaces_packed,
12339         interface_offsets_packed and interface_bitmap.
12340
12341         * object.c: replaced all accesses to "MonoClass.interface_offsets"
12342         with uses of interfaces_packed and interface_offsets_packed.
12343
12344 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12345
12346         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
12347         mono_class_interface_offset prototype to wrap all accesses to
12348         "MonoClass.interface_offsets".
12349
12350         * class.c: Implemented mono_class_interface_offset, and wrapped all
12351         accesses to "MonoClass.interface_offsets".
12352
12353         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
12354         "MonoClass.interface_offsets".
12355
12356 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
12357
12358         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
12359         GetMethodFromHandle overloads (bug #78637).
12360
12361 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12362
12363         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
12364         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
12365
12366 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
12367
12368         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
12369         #81498.
12370
12371         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
12372         gracefully.
12373         (mono_custom_attrs_from_index): Ditto.
12374
12375         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
12376         Fixes #81501.
12377
12378 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12379
12380         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
12381         is now allocated from a mempool.
12382
12383 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
12384
12385         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
12386         caller holds threads_lock, leading to deadlocks. Fixes #81476.
12387
12388 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12389
12390         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
12391         mono_loader_clear_error () too late. Fixes #81463.
12392
12393 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
12394
12395         * culture-info-table.h : regenerated.
12396
12397 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12398
12399         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
12400         is missing.
12401
12402 2007-04-25  Dick Porter  <dick@ximian.com>
12403
12404         * Makefile.am: Put the mingw enforced-optimisation back into the
12405         PLATFORM_WIN32 section.
12406
12407 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12408
12409         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
12410         patch.
12411
12412         * image.c (mono_image_load_module): New API function to load a module reference.
12413
12414         * image.c (load_modules): Load modules lazily. Fixes #80812.
12415
12416         * class.c (mono_class_from_typeref): Use mono_image_load_module.
12417         
12418         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
12419
12420         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
12421         to mono_image_load_module_dynamic.
12422
12423 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
12424
12425         * marshal.c: Fix calling convention for CCW on non-windows
12426         platforms. STDCALL on windows, CDECL everywhere else to work 
12427         with XPCOM and MainWin COM.
12428         
12429         Code is contributed under MIT/X11 license.
12430
12431 2007-04-23  Martin Baulig  <martin@ximian.com>
12432
12433         Fix #80969.
12434
12435         * loader.c
12436         (method_from_memberref): Added `gboolean *used_context' argument.
12437         (mono_get_method_from_token): Likewise.
12438         (mono_get_method_full): Don't insert the method in the cache when
12439         `used_context' is true.
12440
12441 2007-04-23  Raja R Harinath  <rharinath@novell.com>
12442
12443         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
12444
12445         * reflection.c (mono_reflection_bind_generic_parameters): Don't
12446         create new MonoTypes for returned types.
12447         * class.c (mono_generic_class_get_class): Export mono-internal.
12448         * class-internals.h: Update to changes.
12449
12450 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
12451
12452         * threadpool.c, threadpool.h, icall-def.h: patch from
12453         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
12454
12455 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
12456
12457         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
12458         
12459         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
12460
12461         * threads.c (mono_thread_get_stack_bounds): New helper function.
12462
12463         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
12464         Correctly compute stack bounds when attaching. Fixes #81394.
12465
12466 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
12467
12468         * reflection.c: fix handling of doubles in custom attributes
12469         for the arm-fpa format (bug #81368).
12470
12471 2007-04-18  Raja R Harinath  <rharinath@novell.com>
12472
12473         * reflection.c (assembly_add_win32_resources): Mildly relax an
12474         bounds check to let the end pointer point just past the end of the
12475         allocated buffer.  (may fix #81384)
12476
12477 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
12478
12479         * culture-info-table.h : regenerated.
12480
12481 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
12482
12483         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
12484         the thread is aborted early.
12485
12486 2007-04-05  Dick Porter  <dick@ximian.com>
12487
12488         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
12489         FindFirstFile()/FindNextFile() to find entries.  This lets the
12490         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
12491         81038.
12492
12493         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
12494         the parameters of
12495         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
12496
12497 2007-04-04  Martin Baulig  <martin@ximian.com>
12498
12499         * debug-helpers.c
12500         (mono_method_desc_full_match): Add support for nested classes.
12501
12502 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
12503
12504         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
12505
12506 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
12507
12508         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
12509         waiting for too many threads.
12510
12511 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
12512
12513         * environment.c: Fix return value check on uname so we can get the 
12514         executing version on Solaris operating systems.
12515
12516 2007-03-28  Jb Evain  <jbevain@gmail.com>
12517
12518         * class.c (mono_type_get_name_recurse): Complete the
12519         fix for the creation of assembly qualified names for
12520         pointer types. Fixes #81208.
12521
12522 2007-03-27  Dick Porter  <dick@ximian.com>
12523
12524         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
12525         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
12526         changed.
12527
12528         * threads.c
12529         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
12530         the value of ReleaseMutex().
12531
12532 2007-03-27  Dick Porter  <dick@ximian.com>
12533
12534         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
12535         in little-endian order, not network endian, so must be converted
12536         to host endian here.  Fixes bug 80593.
12537
12538 2007-03-22  Jb Evain  <jbevain@gmail.com>
12539
12540         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
12541         qualified names for pointer types. Fixes #81208.
12542
12543 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
12544
12545         * marshal.c: Add support for PreserveSigAttribute. 
12546         
12547         Code is contributed under MIT/X11 license.
12548
12549 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * process.c: Fix endianness issues. Fixes #81126.
12552
12553         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
12554         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
12555
12556         * image.c (mono_image_lookup_resource): Make this work on big-endian
12557         machines.Change API contract so the caller needs to free the return value.
12558         
12559         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
12560         API change.
12561         
12562 2007-03-14  Martin Baulig  <martin@ximian.com>
12563
12564         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
12565         mono_type_get_desc() as well.
12566
12567 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12568
12569         * icall.c:  Fix environ access in VS.  
12570         
12571 2007-03-13  Alp Toker  <alp@atoker.com>
12572
12573         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
12574         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
12575         #63841.
12576
12577 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
12580         circular references among dynamic methods. Fixes #81091.
12581
12582         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
12583
12584 2007-03-09  Martin Baulig  <martin@ximian.com>
12585
12586         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
12587
12588 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
12589
12590         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
12591         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
12592         
12593         Code is contributed under MIT/X11 license.
12594         
12595 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
12596
12597         * loader.c: Reapply patch for bug #79424.
12598
12599 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12600
12601         * metadata.c (mono_type_to_unmanaged): Only convert object to
12602         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
12603
12604 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
12605
12606         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
12607         (and incorrectly set) is_reference field from MonoGenericInst.
12608
12609 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12610
12611         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
12612         a little earlier.
12613
12614         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
12615
12616         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
12617
12618 2007-03-05  Miguel de Icaza  <miguel@novell.com>
12619
12620         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
12621         FileOptions.1 value to mean "temporary", map that to
12622         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
12623
12624         Fixes 80688
12625
12626 2007-03-03  Marek Habersack  <mhabersack@novell.com>
12627
12628         * appdomain.c: implement MS .Net style shadow copying. Copies of
12629         the assemblies are made in a subdirectory of the dynamic base
12630         directory, the assembly names are preserved.
12631         Copy .mdb and .config files along with the assemblies being shadowed.
12632
12633 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
12634
12635         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
12636         (emit_marshal_handleref): Ditto.
12637
12638         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
12639         on Visual C++. Fixes #80671.
12640
12641 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12642
12643         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
12644         for clone operations.
12645
12646 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
12647
12648         * marshal.c: Fix warnings.
12649
12650 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
12651
12652         * loader.c: allow case-insensitive matching of the dll name
12653         in dllmap handling when prefixed with "i:".
12654
12655 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
12656
12657         * threads.c: Fix #ifdef for dummy_apc function for VS.
12658
12659 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
12660
12661         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
12662
12663 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
12664         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
12665         giving precedence to the methods with a fully qualified name
12666         (InterfaceName.MethodName) when building the interface sections
12667         of the vtable.
12668
12669 2007-02-16  Dick Porter  <dick@ximian.com>
12670
12671         * threadpool.c (append_job): Fix fast-path array handling, so it's
12672         less likely the array will grow exponentially when the load is
12673         heavy.
12674
12675 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12676
12677         * metadata-internals.h, loader.c: fix dllmap lookup order
12678         for non-function maps, too, and prepare for fallback code.
12679
12680 2007-02-12  Robert Jordan  <robertj@gmx.net>
12681
12682         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
12683         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
12684         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
12685         GlobalFree. Fixes a part of bug #77075.
12686
12687 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
12688
12689         * loader.c: implemented typedef parent in field memberref.
12690
12691 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
12692
12693         * marshal.c: Fix warnings and remember to call Release on
12694         IUnknown of RCW.
12695         
12696         Code is contributed under MIT/X11 license.
12697
12698 2007-02-10  Miguel de Icaza  <miguel@novell.com>
12699
12700         * class-internals.h: Add MonoHandleRef definition, and
12701         handleref_class to mono_defaults. 
12702
12703         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
12704         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
12705
12706         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
12707         (do nothing on this stage)
12708         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
12709         (emit_marshal_handleref): New method, used for argument handling
12710         of HandleRefs. 
12711
12712 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
12713
12714         * class.c (mono_class_setup_parent): Lazily init com types.
12715         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
12716         init com types.
12717         * object.c (mono_remote_class_vtable): Lazily init com types.
12718         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
12719         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
12720         * domain-internals.h: Expose mono_init_com_types.
12721         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
12722         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
12723         Add support for COM Callable Wrapper marshalling.
12724         * marshal.h: Add icall definitions.
12725         * gc.c: Handle freeing of CCWs in finalizer code.
12726         
12727         Code is contributed under MIT/X11 license.
12728
12729 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
12730
12731         * reflection.c: changed all the signature encoding code to use
12732         a variable-sized buffer.
12733
12734 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12735
12736         * marshal.c: locking fixes: never take the loader lock
12737         or other runtime locks when holding the marshal lock
12738         (fixes bug#80664).
12739
12740 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
12741
12742         * marshal.c: make the delegate function pointer mapping
12743         work for the moving GC.
12744
12745 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
12746
12747         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
12748         for bug #80618.
12749
12750 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12751
12752         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
12753         gmodule.
12754
12755 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12756
12757         * threadpool.c: made the code moving-GC safe.
12758
12759 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
12760
12761         * assembly.c, boehm-gc.c, class-internals.h, class.c,
12762         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
12763         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
12764         warning cleanup.
12765         * reflection.c: warning cleanup, some threading and moving GC fixes.
12766
12767 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
12768
12769         * class.c, loader.c: create the needed Set/Get/Address array methods
12770         as well as the .ctors in mono_class_init (), fixes bug #80567.
12771
12772 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
12773
12774         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
12775         we doesn't decrease its alignment. Should fix the sparc build.
12776
12777 2007-01-24  Dick Porter  <dick@ximian.com>
12778
12779         * socket-io.c
12780         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
12781         Create the returned object if we need to ignore an unsupported
12782         socket option.  Fixes a segfault reported by Atsushi.
12783
12784 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12785
12786         * class.c, object.c: restrict GC-tracked fields to
12787         UIntPtr fields used inside corlib, so we provide better
12788         type info to the GC and also allow broken packing as in
12789         bug #80580.
12790
12791 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
12792
12793         * sgen-gc.c: removed duplicated function.
12794
12795 2007-01-19  Miguel de Icaza  <miguel@novell.com>
12796
12797         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
12798         value that means that the value is not supported, but that we
12799         should not return a failure, but instead report this as a
12800         successful operation.
12801
12802 2007-01-19  Raja R Harinath  <rharinath@novell.com>
12803
12804         Fix tests/bug79956.2.il
12805         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
12806         (mono_generic_class_get_class): If the generic definition in an
12807         enum, copy over other fields related to it.
12808
12809 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12810
12811         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
12812         genericinst enums (bug #79215).
12813
12814 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
12815         * class.c: Fix bug 80307.
12816
12817 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
12818
12819         * image.c: if the file table is not present, try to load
12820         all the modules, since we don't have info about them
12821         having or not metadata (bug #80517).
12822         * assembly.c: allow mono_assembly_load_references () to
12823         work for netmodules.
12824
12825 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12826
12827         * image.c, metadata-internals.h, object.c: execute module
12828         cctors when running on the 2 runtime if present (bug #80487).
12829
12830 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
12831
12832         * icall.c: optimized InitializeArray() on bigendian.
12833
12834 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
12835
12836         * icall.c: fix for the broken ARM FPA double format.
12837
12838 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12839
12840         * icall.c: handle endian issues for r4 and r8 types, too, in
12841         the InitializeArray() icall.
12842
12843 2007-01-15  Miguel de Icaza  <miguel@novell.com>
12844
12845         * loader.c (mono_loader_error_prepare_exception): Clear the error
12846         once we have extracted the information from it, do this before we
12847         call into the JIT's class loading mechanisms.
12848
12849         * object.c (mono_class_create_runtime_vtable): Do not clear the
12850         loader error before calling mono_class_get_exception_for_failure
12851         as the loader error is needed inside
12852         mono_class_get_exception_for_failure to throw the error (thinko).
12853
12854         Fixes #80521
12855         
12856 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12857
12858         * reflection.c: align fields rva data so it's faster to load at
12859         runtime.
12860
12861 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12862
12863         Prepare to simplify GenericMethod handling.
12864         * class-internals.h (mono_method_get_context): New accessor function.
12865         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
12866         rather than directly accessing '->context' field.
12867
12868         * class-internals.h (_MonoGenericParam.method): Move ...
12869         (_MonoGenericContainer): ... here.  Add into union with klass field.
12870         * class.c, icall.c, loader.c, metadata.c, reflection.c:
12871         Update to changes.
12872
12873 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
12874
12875         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
12876         the wrapper type enum and reduce relocations.
12877
12878 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12879
12880         * reflection.c (inflate_mono_method): Reuse method instantiation
12881         from the generic method, if available.
12882
12883 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
12884
12885         * marshal.c (emit_marshal_variant): Fix conv_arg
12886         type in last commit, based on whether parameter is byref.
12887         
12888 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
12889
12890         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
12891         marshalling.
12892         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
12893         MONO_TYPE_OBJECT back for VARIANT support.
12894
12895 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
12896
12897         * marshal.c, marshal.h, icall-def.h: Implement 
12898         Marshal.ReAllocCoTaskMem.
12899
12900 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
12901
12902         * marshal.c: memory retention fixes: use the proper
12903         image cache for runtime_invoke method lookups.
12904
12905 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12906
12907         * mempool.c: added code to help debug mempool allocations.
12908
12909 2007-01-11  Dick Porter  <dick@ximian.com>
12910
12911         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
12912         support (experimenting with faking it with IP_MTU_DISCOVER for
12913         systems that don't have IP_DONTFRAGMENT.)
12914         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
12915         icall.
12916
12917         * icall-def.h: new System.Net.Sockets.Disconnect icall.
12918
12919         * socket-io.h: Add new fields to MonoSocketAsyncResult
12920         corresponding to the new ones in Socket.cs.
12921
12922 2007-01-11  Raja R Harinath  <rharinath@novell.com>
12923
12924         Fix IronPython regression mentioned in #80249
12925         * metadata.c (do_mono_metadata_parse_generic_class): Clear
12926         'cached_context' field, since it may have been initialized as a
12927         side-effect of metadata parsing.
12928
12929         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
12930         (_MonoGenericClass.cached_class): Move here and rename from lone
12931         remaining field of ...
12932         (_MonoInflatedGenericClass): ... this.  Remove.
12933         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
12934         to changes.
12935
12936         Fix mcs/tests/test-128.cs regression.
12937         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
12938         2007-01-10 change below.
12939         [MONO_TYPE_OBJECT]: Recurse into array case.
12940
12941 2007-01-11  Raja R Harinath  <harinath@gmail.com>
12942
12943         * class-internals.h (mono_get_inflated_generic_class): Remove.
12944         * class.c (mono_get_inflated_generic_class): Remove.
12945         (mono_generic_class_get_class): Rename from
12946         mono_class_create_generic.
12947         (mono_class_from_mono_type) [GENERICINST]: Use it.
12948         * reflection.c, metadata.c: Update to changes.  Use
12949         'mono_class_from_mono_type'.
12950
12951 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12952
12953         * reflection.c: use passed type when encoding an array element
12954         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
12955
12956 2007-01-09  Robert Jordan  <robertj@gmx.net>
12957
12958         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
12959         result arguments (someDelegate.EndInvoke (unrelatedAres)).
12960         Fixes bug #80392.
12961
12962 2007-01-09  Raja R Harinath  <rharinath@novell.com>
12963
12964         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
12965
12966         * object.c (set_value): Avoid aliasing between type->data.klass
12967         and type->data.generic_class.
12968
12969         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
12970
12971 2007-01-08  Raja R Harinath  <rharinath@novell.com>
12972
12973         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
12974         between type->data.klass and type->data.generic_class.
12975
12976 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
12977
12978         * marshal.c: In MS.NET, StringBuilder objects are not copied by
12979         value in out parameters.
12980
12981 2007-01-08  Raja R Harinath  <rharinath@novell.com>
12982
12983         Simplify invariant for MonoGenericClass::klass field.
12984         * class.c (mono_class_create_generic): Verify 'klass' is null.
12985         * metadata.c (do_mono_metadata_parse_generic_class): Don't
12986         initialize 'klass' field.
12987
12988 2007-01-05  Raja R Harinath  <rharinath@novell.com>
12989
12990         Ongoing work to avoid redundant data and simplify invariants.
12991         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
12992         'generic_class', and change type to a GenericInst.
12993         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
12994         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
12995
12996 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
12997
12998         * class.c : skip io-layer under PLATFORM_WIN32.
12999
13000 2007-01-03  Tor Lillqvist  <tml@novell.com>
13001
13002         Fix #80305: In a bundled executable, look in the bundled exe
13003         assembly to determine the runtime version. Add the possibility to
13004         bundle also the machine.config file.
13005         
13006         * assembly.c (mono_assembly_open_from_bundle): Make
13007         non-static. Allow being called even if we have no bundled
13008         assemblies, and return NULL right away in that case.
13009
13010         * domain-internals.h: Declare mono_assembly_open_from_bundle()
13011         here.
13012
13013         * domain.c (app_config_parse): Take an assembly exe file name as
13014         parameter instead of a config file name. Check for a bundled
13015         config file for that assembly by calling
13016         mono_config_string_for_assembly_file() (see below) before looking
13017         for one in the file system.
13018         (get_runtimes_from_exe): Corrsponding change to call of
13019         app_config_parse().
13020         (get_runtimes_from_exe): Check for bundled assembly exe file first
13021         by calling mono_assembly_open_from_bundle(). If no bundled
13022         assembly exe file is found, call mono_image_open() as before to
13023         look it up in the file system.
13024
13025         * mono-config.c: Add variable bundled_machinec_onfig.
13026         (mono_config_string_for_assembly_file): New function.
13027         (mono_config_for_assembly): Move code snippet that looks for a
13028         bundled assembly .config file into the above new function. Call
13029         it.
13030         (mono_register_machine_config, mono_get_machine_config): New
13031         functions to set and retrieve
13032
13033         * assembly.h: Declare mono_register_machine_config().
13034
13035         * mono-config.h: Declare mono_get_machine_config() and
13036         mono_config_string_for_assembly_file().
13037
13038         * icall.c: No declaration of environ necessary on Win32. It is
13039         declared (as a macro expanding to a function call) in stdlib.h.
13040         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
13041         New internal mono function. Returns the value of
13042         mono_get_machine_config() as a Mono string.
13043
13044         * icall-def.h: Add get_bundled_machine_config().
13045
13046 2007-01-04  Raja R Harinath  <rharinath@novell.com>
13047
13048         Remove redundant field
13049         * class-internals.h (_MonoGenericContext.container): Remove field.
13050         * loader.c (mono_method_get_signature_full): Don't parse a
13051         "container" for a signature parse when the signature is inflated
13052         immediately.
13053         (method_from_methodspec): Likewise, for a generic_inst.
13054         * class.c, metadata.c, reflection.c: Update to changes.
13055
13056 2006-01-04  Raja R Harinath  <rharinath@novell.com>
13057
13058         * class-internals.h (_MonoGenericClass): Rename 'context' field to
13059         'cached_context', and change semantics -- it starts off NULL, and
13060         is initialized on demand.
13061         * class.c (mono_generic_class_get_context): New accessor to
13062         replace 'context' field accesses.
13063         (mono_class_get_context): New helper.
13064         (*): Update to changes.
13065         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
13066
13067 2007-01-03  Miguel de Icaza  <miguel@novell.com>
13068
13069         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
13070         before the memcpy.   Fixes Marshal2 regression.
13071
13072 2007-01-02  Jb Evain  <jbevain@gmail.com>
13073
13074         * blob.h: add a MONO_TYPE_ENUM definition
13075         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
13076         fix the encoding of arrays of enums in custom attributes.
13077
13078         Fixes #79666.
13079
13080 2007-01-01  Miguel de Icaza  <miguel@novell.com>
13081
13082         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
13083         string is null terminated, but only cut the string short if it
13084         overflows the buffer.   
13085         
13086         (mono_string_to_byvalstr): Also fix this routine.   The code here
13087         was not properly terminating a string (it was only terminated
13088         because of the previous catch-all memset). 
13089
13090         I left the memset, because I do not know if applications expect
13091         the runtime to clear this region. 
13092
13093         Fixes #79944.
13094
13095         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
13096         Clear the error before returning to unmanaged code to prevent the
13097         runtime from being confused later on (fixes  80420).
13098         (ves_icall_type_from_name): Always call mono_loader_clear_error
13099         after parsing a type that could have failed.
13100         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
13101
13102         * loader.c (mono_loader_clear_error): Fix indentation.
13103
13104 2006-12-28  Martin Baulig  <martin@ximian.com>
13105
13106         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
13107
13108 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13109
13110         * reflection.c: patch from Rolf Bjarne Kvinge to fix
13111         getting a token for an EnumBuilder.
13112
13113 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
13114
13115         * reflection.c: be more careful in case resource generation
13116         fails to create the data array.
13117
13118 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13119
13120         * sgen-gc.c: write barrier for clone and fix unregister handles.
13121
13122 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13123
13124         * reflection.c: some fixes needed in the generics code for the moving GC.
13125
13126 2006-12-22  Robert Jordan  <robertj@gmx.net>
13127
13128         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
13129         account. Fixes bug #80299.
13130
13131 2006-12-21  Raja R Harinath  <rharinath@novell.com>
13132
13133         Fix WaitHandle usage in delegates.
13134         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
13135         * object.c (mono_wait_handle_new): Use the property set method to
13136         initialize the handle.
13137         (mono_wait_handle_get_handle): New.
13138         * threadpool.c (mono_async_invoke): Use it.
13139         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
13140         Likewise.
13141         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
13142
13143 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
13144
13145         * marshal.c (emit_marshal): Call emit_marshal_variant and
13146         emit_marshal_com_interface when applicable.
13147         (emit_marshal_variant, emit_marshal_com_interface): Add
13148         methods for this case and remove if's from emit_marshal_object.
13149         
13150 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
13151
13152         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
13153
13154 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
13155
13156         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
13157         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
13158         and GlobalFree on Windows. Remove FIXME.
13159
13160 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13161
13162         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
13163         implementation for managed objects.
13164
13165 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13166
13167         * object.c: implemented code to be used for checking
13168         that no reference field overlaps with non-references.
13169
13170 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13171
13172         * threadpool.c: fix queue code to be compatible with the
13173         moving GC.
13174
13175 2006-12-18  Miguel de Icaza  <miguel@novell.com>
13176
13177         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
13178         in structures by throwing ArgumentNullException.
13179
13180         (emit_marshal_safehandle): Also when they are null parameters.
13181
13182         (emit_marshal_safehandle): Add support for ref
13183         SafeHandles parameters
13184
13185 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13186
13187         * profiler.c: updated to use the mono-dl API instead of
13188         gmodule.
13189
13190 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13191
13192         * profiler.c: updated to use the mono-dl dynamic loading
13193         API instead of gmodule.
13194
13195 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
13196
13197         * profiler.c: use readlink, older versions of glib don't have
13198         g_file_read_link ().
13199
13200 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
13201
13202         * profiler.c: try to detect the path to mono if libc fails to provide
13203         a useful name (bug #80286).
13204
13205 2006-12-16  Raja R Harinath  <rharinath@novell.com>
13206
13207         Fix #80242
13208         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
13209         instance, use the generic type definition instead.
13210         (ves_icall_Type_GetNestedTypes): Likewise.
13211         * class.c (mono_class_create_generic): Always set the
13212         nested_classes of a generic instance to NULL, even if the generic
13213         type definition has nested types.
13214
13215 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
13216
13217         * marshal.c (mono_string_from_bstr): Revert previous Windows change
13218         and fix on Linux.
13219         
13220 2006-12-15  Miguel de Icaza  <miguel@novell.com>
13221
13222         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
13223         my arguments were in the wrong order.   I also fixed the Windows
13224         version which seems to have had the same issue.
13225
13226         (mono_free_bstr): On Unix, this is g_free.
13227         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
13228         conversions (for the tests in corlib to pass).
13229
13230 2006-12-14  Miguel de Icaza  <miguel@novell.com>
13231
13232         * marshal.c (emit_ptr_to_object_conv): For now, ignore
13233         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
13234         exception if a ref SafeHandle in a struct has changed).
13235         
13236         (emit_struct_conv): Do not perform layout checks for classes
13237         derived from SafeHandle, as those are specially handled. 
13238
13239         (emit_object_to_ptr_conv): Add support for
13240         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
13241
13242         (emit_marshal_safehandle): Implement conversion of return values
13243         of safehandles (MARSHAL_ACTION_CONV_RESULT).
13244         
13245         * threads.c: WaitHandle now is compiled with two different handles
13246         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
13247         for 2.0.
13248         
13249         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
13250         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
13251         these routines to cope with both kinds of fields.
13252
13253 2006-12-12  Miguel de Icaza  <miguel@novell.com>
13254
13255         * metadata.c (mono_type_to_unmanaged): Handle the case where
13256         type->data.klass is a SafeHandle, and in that case, return the
13257         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
13258         MONO_MARSHAL_CONV_SAFEHANDLE. 
13259
13260 2006-12-11  Miguel de Icaza  <miguel@novell.com>
13261
13262         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
13263         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
13264         calling emit_marshal_object.
13265
13266         (emit_marshal_safehandle): Implement marshalling of
13267         SafeHandle parameters (no ref support yet).
13268
13269         (MarshalAction): Document the defines as I implement
13270         them for SafeHandle.
13271
13272         (emit_marshal_object): indentation police.
13273
13274         * class-internals.h: Define MonoSafeHandle.
13275         Add safehandle_class to MonoDefaults type.
13276
13277         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
13278         list of classes to check for fields. 
13279
13280         * domain.c (mono_init_internal): Add SafeHandle to the list of
13281         mono_defaults loaded.
13282
13283 2006-12-15  Raja R Harinath  <rharinath@novell.com>
13284
13285         Fix #80253
13286         * reflection.c (mono_reflection_bind_generic_parameters): If the
13287         generic type definition is a type builder, ensure that it is fully
13288         initialized before instantiating it.  Kill some dead code.
13289
13290 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13291
13292         * object.c: clear the loader_error () before loading
13293         more metadata stuff (bug #80258).
13294
13295 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
13296
13297         * icall.c, icall-defs.h: type modifiers icalls for
13298         parameters and properties.
13299
13300 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
13301
13302         * object.c, icall.c: fixed warnings.
13303
13304 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13305
13306         * marshal.c: fixed a couple of leaks and coding style in a few places.
13307
13308 2006-12-08  Dick Porter  <dick@ximian.com>
13309
13310         * process.c: Cope with NULL ProcessStartInfo arguments on windows
13311         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
13312         80173.
13313
13314 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13315
13316         * process.c: ProcessStartInfo may have only filename set and
13317         arguments can be NULL.
13318
13319 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
13320
13321         * icall.c: fix leak found by Robert Jordan.
13322
13323 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13324
13325         * marshal.c, marshal.h: generate managed method to access an element
13326         of a multi-dimensional array.
13327
13328 2006-11-30  Paolo Molaro (lupus@ximian.com)
13329
13330         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
13331
13332 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13333
13334         * icall.c: back out GetFields () fix until the serialization code is
13335         fixed to not depend on the incorrect behaviour.
13336
13337 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13338
13339         * profiler.c: provide defaults if none are set.
13340
13341 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13342
13343         * Makefile.am, attrdefs.h: new public header file with
13344         constants for attributes for use by embedders.
13345
13346 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13347
13348         * icall.c: GetFields () fix for bug #80064.
13349
13350 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
13351
13352         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
13353         removed long unused icalls.
13354
13355 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
13356   
13357         * marshal.c: 
13358                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
13359                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
13360                 can be generated without a delegate class.
13361                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
13362         
13363         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
13364
13365 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13366
13367         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
13368         #80069.
13369
13370 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13371
13372         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
13373         icall-def.h: added icalls needed by System.GC.
13374
13375 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
13376
13377         * loader.c: ensure the class in catch clauses is handled
13378         correctly for generics methods (fixes bug#79980).
13379
13380 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
13381
13382         * monitor.h, monitor.c: added mono_locks_dump () function
13383         to help debug deadlocks involving managed locks.
13384
13385 2006-11-13  Dick Porter  <dick@ximian.com>
13386
13387         * file-io.c (get_file_attributes): If the file is a symlink try
13388         and get the stat data for the target, but also add the
13389         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
13390         the specs for the windows symlink support, but will probably have
13391         to be reworked when I have test data from a vista machine.  Fixes
13392         bug 79887.
13393
13394 2006-11-13  Dick Porter  <dick@ximian.com>
13395
13396         * gc.c (mono_domain_finalize): 
13397         * marshal.c (mono_delegate_begin_invoke): 
13398         * threadpool.c (socket_io_init, mono_thread_pool_init)
13399         (mono_thread_pool_finish): 
13400         * monitor.c (mono_monitor_try_enter_internal): 
13401         * threads.c (mono_thread_resume, mono_thread_init)
13402         (mono_thread_suspend_all_other_threads)
13403         (mono_thread_execute_interruption): 
13404         * appdomain.c (mono_domain_unload): Check for NULL error returns
13405         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
13406         75733.
13407
13408 2006-11-11  Miguel de Icaza  <miguel@novell.com>
13409
13410         * process.c
13411         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
13412         Only close the handle if the value of the handle is not
13413         INVALID_HANDLE_VALUE.  This just makes the process a bit more
13414         robust.
13415
13416         Improvement for #75733, so that we do not run into this problem. 
13417
13418         
13419         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
13420         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
13421         internal variables.  Fixes #79462 
13422         
13423
13424 2006-11-09  Dick Porter  <dick@ximian.com>
13425
13426         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
13427         Use poll() not select().  Fixes bug 79397.
13428
13429 2006-11-09  Raja R Harinath  <rharinath@novell.com>
13430
13431         Fix #79872
13432         * assembly.c (mono_assembly_load_from_full): Check that the given
13433         image has an assembly manifest.
13434
13435 2006-11-09  Ankit Jain  <jankit@novell.com>
13436
13437         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
13438         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
13439         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
13440
13441 2006-11-07  Dick Porter  <dick@ximian.com>
13442
13443         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
13444         Put the old resolver behaviour back for pre-2.0 profiles.
13445
13446 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
13447
13448         * threadpool.c: precise GC and locking fixes.
13449
13450 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13451
13452         * class.c: don't load types that have an explicit unaligned
13453         managed reference. Provide better info in the TypeLoad exception.
13454         Part of the fix for bug #79744.
13455         * object.c: use the correct check for class type load issues.
13456
13457 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
13458
13459         * class.c: enforce alignment of fields with managed references
13460         even when Pack=1 is forced by the user (bug #77788).
13461
13462 2006-11-03  Dick Porter  <dick@ximian.com>
13463
13464         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
13465         If the address reverse lookup fails, return it as the hostname
13466         anyway.  Fixes bug 79721.
13467
13468 2006-11-03  Dick Porter  <dick@ximian.com>
13469
13470         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
13471         Fix build on Windows.
13472
13473 2006-11-02  Dick Porter  <dick@ximian.com>
13474
13475         * icall-def.h: 
13476         * object-internals.h: 
13477         * exception.c (mono_get_exception_thread_interrupted): 
13478         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
13479         Fixes bug 74525.
13480
13481         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
13482         Check for pending Thread.Interrupt.
13483
13484 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
13485         * loader.c: Fixed bug 79684.
13486
13487 2006-10-27  Dick Porter  <dick@ximian.com>
13488
13489         * file-io.c (get_file_attributes): Force symlinks to directories
13490         to be returned as a regular file.  Fixes bug 79733.
13491 2006-10-26  Dick Porter  <dick@ximian.com>
13492
13493         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
13494         CreateFile to open a directory then we need to set the
13495         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
13496
13497 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
13498
13499         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
13500         friends.
13501
13502 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
13503
13504         * sgengc.c: small cleanup of timer code.
13505
13506 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13507
13508         * sgen-gc.c: fix some warnings and start adding support for
13509         complete object removal on domain unload.
13510
13511 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
13512
13513         * assembly.c: build_assembly_name should not consider a version
13514         number without build or revision number invalid. Fixes bug #79715.
13515
13516 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
13517
13518         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
13519         call kernel32 function OutputDebugString directly.
13520         
13521         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
13522         
13523 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
13524
13525         * reflection.c: small cleanup, using a function to insert a MonoString
13526         in the string heap.
13527
13528 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
13529
13530         * reflection.c: moving GC fixes.
13531
13532 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13533
13534         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
13535         all the objects with finalizers belonging to an unloading appdomain.
13536
13537 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
13538
13539         * sgen-gc.c: added ability to allocate even when the nursery is fully
13540         pinned and fixed a couple of bugs.
13541
13542 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * threads.h: Revert the last change for now.
13545
13546         * threads.h (mono_thread_get_pending_exception): Rename this to
13547         mono_thread_get_undeniable_exception ().
13548
13549 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
13550
13551         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
13552         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
13553         when fname does not refer to valid assembly. This result in a more
13554         meaningful error message.
13555         * exception.c: added mono_get_exception_bad_image_format2 which 
13556         constructs a BadImageFormatException using the ctor taking a custom
13557         message and the file name. Passing in a NULL msg results in a default
13558         message.
13559         * exception.h: define mono_get_exception_bad_image_format2 function.
13560         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
13561         when file name pointed to an invalid IL image. Use 
13562         mono_get_exception_file_not_found2 to construct FileNotFoundException,
13563         as this results in a more meaningful error message.
13564
13565 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13566
13567         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
13568         #79465.
13569
13570 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
13571
13572         * metadata.c (mono_type_size): Change the align parameter to guint32 for
13573         consistency with the other _size functions.
13574         (mono_type_stack_size): Ditto.
13575
13576         * class.c object.c icall.c: Fix warnings caused by the above change.
13577
13578         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
13579
13580         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
13581
13582         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
13583
13584 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
13585
13586         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
13587         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
13588         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
13589         threadpool.h, threads-types.h: mark more internal functions.
13590
13591 2006-10-11  Dick Porter  <dick@ximian.com>
13592
13593         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
13594         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
13595         reproduce the bug even before applying the fix.)
13596
13597 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
13598
13599         * reflection.c: allow retrieving attributes for arguments in generic
13600         methods (bug #79241).
13601
13602 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
13603
13604         * debug-mono-symfile.c: properly check fopen () result (found by
13605         coverity).
13606
13607 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
13608
13609         * reflection.c: make error message clearer and fixed two
13610         issuelets found by Coverity.
13611
13612 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
13613
13614         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
13615
13616 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
13617
13618         * object-internals.h, gc-internal.h, profiler-private.h:
13619         mark internal functions.
13620
13621 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13622
13623         * reflection.c: put data in the text section.
13624         * icall.c: recognize more types in type_from_typename ().
13625         * process.c, marshal.c: added some GC FIXMEs.
13626
13627 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13628
13629         * loader.c: check for NULL before initializing.
13630
13631 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * gc.c (finalizer_thread): Use a non-alertable wait here.
13634
13635         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
13636         until the correct solution is found.
13637
13638 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
13639
13640         * reflection.c (mono_module_get_object): Avoid an assert when operating on
13641         modules with no metadata. Fixes #79596.
13642
13643         * image.c (load_metadata_ptrs): Put back the error message when
13644         the #- heap is encountered since the support is not complete yet.
13645
13646 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13647
13648         * gc.c: do not allow the user to SuppressFinalize () a
13649         delegate because it would leak the trampoline if present.
13650
13651 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
13652
13653         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
13654         PropertyPtr table.
13655
13656 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
13657
13658         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
13659
13660         * metadata.c (mono_metadata_get_param_attrs): Ditto.
13661
13662         * row-indexes.h: Add definitions for *Ptr tables.
13663
13664         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
13665
13666         * metadata.c (mono_metadata_translate_token_index): New helper function to
13667         translate table indexes used in uncompressed metadata.
13668         (mono_metadata_decode_table_row): Ditto.
13669         (mono_metadata_decode_table_row_col): Ditto.
13670
13671         * metadata.c: Add table schema for *Ptr tables.
13672
13673         * class.c loader.c: Use the new helper function to access the affected metadata
13674         tables.
13675         
13676         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
13677         #38532.
13678         
13679 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
13680
13681         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
13682         sequences which can be unbounded in size. Fixes #79583.
13683
13684 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13685
13686         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
13687         static initialization.
13688
13689         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
13690
13691         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
13692
13693         * domain.c (mono_domain_free): Free up type_init_exception_hash.
13694
13695         * object.c (mono_runtime_class_init): Implement correct semantics when a static
13696         ctor fails, i.e. throw the same exception on subsequent accesses.
13697         
13698 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
13699
13700         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
13701         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
13702         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
13703         Handle marshalling of interfaces and VARIANTs contained in structs.
13704         
13705         Code is contributed under MIT/X11 license.
13706         
13707 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13708
13709         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
13710         
13711         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
13712         mempool.
13713
13714 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13715
13716         * console-io.c: ignore previous SIGINT handler.
13717
13718 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13719
13720         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
13721         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
13722         #79460, #79461, #79485.
13723
13724         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
13725
13726         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
13727         #79217.
13728
13729 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13730
13731         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
13732         could be generated from it.
13733
13734 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
13735
13736         * rand.c: fix read loop to correctly handle EINTR.
13737
13738 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
13739
13740         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
13741         internal calls are defined to keep methods closer to the declaring
13742         type and allow a significant reduction in runtime relocations and
13743         memory usage.
13744
13745 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
13746
13747         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
13748         exception message to have FileNotFoundException use the default
13749         assembly load error message. Fixes bug #79426.
13750         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
13751
13752 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13753
13754         * threadpool.c: (start_thread_or_queue) use the root domain when
13755         creating the thread instead of the async object one.
13756
13757 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
13758
13759         * class.c, object.c, class-internals.h, reflection.c:
13760         for arrays, store element_size inside MonoClass (speedup
13761         for array object creation).
13762
13763 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
13764
13765         * icall.c: fixed CodeBase to use the file name and not the module
13766         name (bug #79365).
13767
13768 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
13769
13770         * mono-debug.c, mono-debug.h: export find_method as
13771         mono_debug_find_method ().
13772
13773 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
13774
13775         * debug-helpers.c, class-internals.h: added a few functions useful
13776         when debugging under gdb.
13777
13778 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13779
13780         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
13781         characters that need special handling.
13782
13783 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13784
13785         * mono-config.c: make the os/cpu specification more flexible,
13786         allowing lists and negation.
13787
13788 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
13789
13790         * marshal.c: COM Interop fixes. Handle case where method->klass.
13791         is interface. Handle BSTR/MonoString when null. Use CDECL as 
13792         calling convention on non-windows platforms. This is for
13793         compatibility with XPCOM and MainWin COM.
13794         
13795         Code is contributed under MIT/X11 license.
13796         
13797
13798 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
13799
13800         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
13801         correctly. Fixes #79217.
13802
13803         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
13804
13805 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
13806
13807         * mono-config.c: allow both an os and cpu attribute for dllmap
13808         and dllentry elemnets to enable a single config file to be used
13809         for multiple architectures.
13810
13811 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
13812
13813         * loader.c: MonoLoaderError was cleared too soon on load failure.
13814         Fixes bug #79424.
13815
13816 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
13817
13818         * icall.c: use the defining class vtable when accessing a
13819         static field, not a pobblibly derived class.
13820
13821 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13822
13823         * icall.c string-icalls.c: Remove references to unicode.h.
13824
13825         * unicode.h unicode.c Makefile.am: Remove these unused source files.
13826
13827         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
13828
13829         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
13830         indicating the image where custom marshaller types should be looked up.
13831         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
13832         custom marshallers, instead of corlib. Fixes #79425.
13833
13834 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
13835
13836         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
13837
13838 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
13839
13840         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
13841         Implement Environment.ProcessorCount.
13842         
13843         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
13844         Implement Environment.ProcessorCount.
13845         
13846         * icall.c: 
13847         Add Environment.ProcessorCount icall.
13848         
13849         Patch by Jason McFall.
13850
13851 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13852
13853         * assembly.c: don't append .exe/.dll when the filename already contains
13854         one of those extensions.
13855
13856 2006-09-12  Martin Baulig  <martin@ximian.com>
13857
13858         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
13859         to array interfaces.
13860
13861 2006-09-11  Martin Baulig  <martin@ximian.com>
13862
13863         * reflection.c (mono_image_build_metadata): Create the
13864         MethodImpl's after emitting all types and methods, so we don't
13865         need another fixup pass for them.
13866
13867 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13868
13869         * class.c (mono_class_from_name_case): Fix regression introduced by the last
13870         change.
13871
13872 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
13873
13874         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
13875         unload.
13876
13877 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
13878
13879         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
13880         args is not set. Fixes #78926.
13881
13882 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13883
13884         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
13885
13886         * image.c (load_class_names): Move this to class.c, and rename it to 
13887         'mono_image_init_name_cache'.
13888         (load_modules): Fix a warning.
13889
13890         * class.c icall.c image.c: Initialize image->name_cache lazily.
13891
13892         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
13893         on its name using information in the AOT file.
13894
13895         * class.c (mono_class_from_name): Use the new hook function.
13896
13897 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
13898
13899         * reflection.c (mono_param_get_objects): Handle enum default parameter values
13900         correctly.
13901
13902         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
13903         Fixes #79289.
13904         
13905 2006-09-06  Martin Baulig  <martin@ximian.com>
13906
13907         * icall.c (mono_lookup_internal_call): Small fix.
13908
13909 2006-09-05  Raja R Harinath  <rharinath@novell.com>
13910
13911         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
13912         double g_free.
13913
13914 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
13915
13916         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
13917         when --debug is specified.
13918
13919 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * class.c (setup_generic_array_ifaces): Fix a warning.
13922
13923 2006-09-04  Miguel de Icaza  <miguel@novell.com>
13924
13925         * Temporarily remove the patch to assemly.c that checks the
13926         assembly versions as it breaks our gacutil.
13927
13928 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13929
13930         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
13931
13932         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
13933         a net 1.0 runtime.
13934
13935         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
13936         created using the default ctor. Fixes #79152.
13937         (mono_string_builder_to_utf16): Ditto.
13938
13939 2006-09-01  Martin Baulig  <martin@ximian.com>
13940
13941         Fix handling of the generic array interfaces.
13942
13943         * class-internals.h
13944         (MonoDefaults): Removed `generic_array_class' and added
13945         `generic_ilist' class.
13946
13947         * class.c
13948         (mono_bounded_array_class_get): Add the new generic array interfaces.
13949         (setup_generic_array_ifaces): New static method; create vtable
13950         entries for each method in the generic array interfaces.
13951
13952         * metadata.c
13953         (select_container): Allow "parent-less" generic methods.
13954
13955         * marshal.c
13956         (mono_marshal_get_generic_array_helper): New public method.
13957
13958         * icall.c
13959         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
13960         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
13961         moved the interncall into System.Array.
13962
13963 2006-09-01  Raja R Harinath  <rharinath@novell.com>
13964
13965         A few more cases of avoiding work on types with ->byref set.
13966         Has the real fix for #79238
13967         * icall.c (is_generic_parameter): New helper.
13968         (ves_icall_Type_GetGenericParameterPosition): Use it.
13969         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
13970         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
13971         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
13972         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
13973         reference types.
13974         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
13975         reference types.
13976         (ves_icall_Type_get_IsGenericInstance): Likewise.
13977         (ves_icall_Type_get_IsGenericType): Likewise.
13978
13979 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13980
13981         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
13982         class if possible.
13983
13984         * mempool.h (mono_mempool_get_allocated): New helper function.
13985
13986         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
13987         change.
13988
13989         * mempool.c: Fix warnings and the calculation of stats.
13990
13991         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
13992
13993         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
13994
13995         * loader.c (mono_get_method_from_token): Update method_count stat.
13996
13997         * class-internals.h (MonoStats): Add some stats.
13998
13999 2006-08-31 Robert Jordan  <robertj@gmx.net>
14000
14001         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
14002         with managed variants.
14003         All code is contributed under the MIT/X11 license.
14004         
14005 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
14006
14007         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
14008         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
14009
14010         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
14011
14012         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
14013         with cycles in classes.
14014
14015         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
14016
14017         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
14018         missing a [MarshalAs] directive. Fixes #79203.
14019
14020         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
14021         klass->marshal_info. Fixes #79217.
14022
14023 2006-08-30  Martin Baulig  <martin@ximian.com>
14024
14025         Committing a patch from Joachim Ante <joe@otee.dk>:
14026         Add support for binary data symbol stores.
14027
14028         * debug-mono-symfile.c
14029         (mono_debug_open_mono_symbol_file): Renamed into
14030         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
14031         arguments.
14032
14033         * mono-debug.c
14034         (mono_debug_open_image): Added `raw_contents' and `size' args.
14035         (mono_debug_init_2_memory): New public function.
14036
14037 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
14038
14039         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
14040
14041 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14042
14043         * appdomain.c: implement support for ShadowCopyFiles.
14044
14045 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
14046
14047         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
14048         when value is NULL (and should remove CID #51).
14049
14050 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14051
14052         * image.c: moved 2 functions to ../utils.
14053
14054 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
14055
14056         * gc.c: cope with the target object of a GC handle being NULL
14057         (bug #78877).
14058
14059 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14060
14061         * class.c: recursively check parent's explicit implementations
14062         of interface methods (fixes bug #79125).
14063
14064 2006-08-19  Miguel de Icaza  <miguel@novell.com>
14065
14066         * filewatcher.c: Avoid warnings when building, do not redefine
14067         constants that are defined.
14068
14069         Remove warnings.
14070
14071 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14072
14073         * image.c: don't fail when the link points to an absolute path.
14074
14075 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
14076
14077         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
14078         Fix CID #3.
14079
14080 2006-08-17  Miguel de Icaza  <miguel@novell.com>
14081
14082         * image.c (full_path): A new method used to obtain the actual path
14083         of an assembly even in the presence of symbolic links.  
14084
14085         This is necessary for the case where we are running a binary that
14086         has been GACed, but we are using the "published" path name
14087         ($prefix/mono/1.0/blah.exe) which happens to point to the real
14088         file in the GAC.
14089
14090         This was the source of the failure for the `xsp' command with the
14091         recent AppDomain changes, as far as the runtime was concerned,
14092         there were two different assemblies: $prefix/mono/1.0/blah.exe and
14093         $prefix/mono/gac/blah/version/blah.exe.
14094
14095         (do_mono_image_open): use full path
14096
14097 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14098
14099         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
14100
14101 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
14102
14103         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
14104         domain_id is supplied. Fix CID #241 and corlib's unit tests.
14105
14106 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14107
14108         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
14109         small structures. Fixes #78990.
14110
14111 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14112
14113         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
14114
14115         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
14116
14117 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14118
14119         * appdomain.c:
14120         * marshal.c: don't load all the assemblies from a domain into newly
14121         created ones. The new domains might have different rules and load
14122         assemblies from different locations. Fixes bug #76757.
14123
14124         Patch by Lluis. Conflicts resolved by Brian Crowell.
14125
14126 2006-08-16  Alp Toker  <alp@atoker.com>
14127
14128         * socket-io.c: First half of the fix for #79084.
14129         Set sa_size to the length of the content, not that of the struct.
14130         Don't add NULL suffix to the content, this should be done in
14131         managed code if needed.
14132
14133 2006-08-14  Raja R Harinath  <rharinath@novell.com>
14134
14135         Fix part of #79012
14136         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
14137         mono_metadata_parse_type returns NULL.
14138
14139 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
14140
14141         * normalization-tables.h : new file for string normalization data.
14142         * locales.c, locales.h, icall.c :
14143           added load_normalization_resource() for string normalization,
14144           and icall as well.
14145         * Makefile.am : added normalization-tables.h to the sources.
14146
14147 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
14148
14149         * marshal.c: Add more helper functions to reduce code duplication and use them
14150         everywhere.
14151
14152 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
14153
14154         * marshal.c: Fix non-x86 stdcall warnings.
14155         
14156         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
14157         them everywhere.
14158
14159 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
14160
14161         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
14162         type check on multi-dimensional arrays. Fixes #79000.
14163
14164 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
14165
14166         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
14167         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
14168         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
14169         * class-internals.h: add is_com_object to class structure.
14170         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
14171         null checks to COM object marshalling. Fix .ctor call on RCW.
14172         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
14173         
14174         All code is contributed under the MIT/X11 license.
14175
14176 2006-08-09  Dick Porter  <dick@ximian.com>
14177
14178         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
14179         racing mono_monitor_allocator_lock() somewhere, so don't delete
14180         the critical section for now.  Found by running and exiting
14181         monodevelop.
14182
14183 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
14186         (ves_icall_System_ComObject_FindInterface): Ditto.
14187         (ves_icall_System_ComObject_CacheInterface): Ditto.
14188
14189         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
14190         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
14191
14192 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14193
14194         * threadpool.c: treat pipes from process asynchronous reads as sockets
14195         when reading from them, so we get select/poll or epoll to wait for
14196         data.
14197
14198 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
14199
14200         * loader.c: Fix a typo (CID #233) in the null check.
14201
14202 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
14203
14204         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
14205         Hopefully fixes #78949.
14206         
14207         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
14208         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
14209         bytes. Fixes #78972.
14210
14211 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14212
14213         * filewatcher.c: we need to set errno here.
14214
14215 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14216
14217         * filewatcher.c: let Win32Exception get the error value.
14218
14219 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14220
14221         * filewatcher.c: translate errno into win32 errors for Win32Exception
14222         to know what happened.
14223
14224 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
14225
14226         * threadpool.c: Fix more warnings.
14227
14228         * assembly.c (search_loaded): Fix warnings.
14229
14230         * threadpool.c (mono_thread_pool_finish): Fix warnings.
14231         (mono_async_invoke): Ditto.
14232
14233 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
14234
14235         * object.c (mono_remote_class_vtable): Need to create proxy vtable
14236         entries for __ComObject type in addition to ComImport types.
14237         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
14238         about hash table.
14239         
14240         All code is contributed under the MIT/X11 license.
14241
14242 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
14243
14244         * image.c: avoid tentative loading of modulerefs that contain
14245         no metadata (P/Invoke library names).
14246
14247 2006-07-28  Dick Porter  <dick@ximian.com>
14248
14249         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
14250         mono_loader_lock() somewhere, so don't delete the critical section
14251         for now.  Found by running and exiting monodevelop.
14252
14253 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14254
14255         * filewatcher.c: define the inotify syscalls when we're building on
14256         linux and have sys/syscall.h. The build system might not have support
14257         for inotify but the target system might have it.
14258
14259 2006-07-26  Miguel de Icaza  <miguel@novell.com>
14260
14261         * domain.c: Documentation updates.
14262
14263         * loader.c (mono_free_method): Do not release the method
14264         information if we are being profiled, as profilers will use this
14265         information at shut down to present some data to the user.
14266
14267         This is needed so that the profiler does not crash, as the
14268         profiler tends to keep MonoMethods around, and they might become
14269         invalid if we free these.
14270
14271         (mono_get_method_constrained): Return the original CIL stream
14272         method as well, so verification can be performed against it.
14273
14274 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14275
14276         * filewatcher.[ch]: support for inotify file system watcher.
14277         * icall.c: add new internal calls for the inotify file system watcher.
14278
14279 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14280
14281         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
14282         #78888.
14283
14284 2006-07-20  Dick Porter  <dick@ximian.com>
14285
14286         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
14287         warning.
14288
14289 2006-07-20  Dick Porter  <dick@ximian.com>
14290
14291         * threads.c (start_wrapper): Do the thread cleanup while we still
14292         hold a reference to its object.  Fixes bug 78123.
14293
14294 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
14295
14296         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
14297         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
14298           "managed-to-managed".
14299         * icall.c: Redirect string constructors that take sbyte* to
14300           ves_icall_System_String_ctor_RedirectToCreateString.
14301         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
14302           to CreateString () methods with matching signature.
14303         * reflection.c: Use original security informations for
14304           MONO_WRAPPER_MANAGED_TO_MANAGED.
14305         * security-manager.c: Use original security informations for
14306           MONO_WRAPPER_MANAGED_TO_MANAGED.
14307         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
14308           that is a placeholder and only its address should be used.
14309         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
14310           that is a placeholder and only its address should be used.
14311
14312 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
14313
14314         Begin implementing COM Interop.
14315         * appdomain.c: Increment corlib version.
14316         * class.c: Set ComImport classes' parent to __ComObject.
14317         * loader.c: Mark cominterop methods as such.
14318         * domain.c: Add __ComObject class to MonoDefaults structure.
14319         * image.c: Add 2 hashtables to the image for COM Interop related methods
14320         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
14321         using the mempool allocator
14322         
14323         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
14324         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
14325         declaration for mono_metadata_type_dup_mp.
14326         
14327         * debug-helpers.c: Added strings for two additional wrapper types
14328         * object.c: Create proxy objects for ComImport classes
14329         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
14330         and added __ComObject class to MonoDefaults structure.
14331         
14332         * object-internals.h: Finish MonoRealProxy definition, and add definition of
14333         MonoComInteropProxy and MonoComObject.
14334         
14335         * marshal.c: Added support for COM Interop
14336         (signature_cominterop): Converts managed signature to corresponding
14337         unmanaged COM signature.
14338         (cominterop_get_function_pointer): gets unmanaged function pointer via
14339         COM object vtable
14340         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
14341         (cominterop_get_method_interface): returns interface type that method is defined on
14342         (mono_mb_emit_cominterop_call): emits native call to function pointer
14343         gotten from vtable
14344         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
14345         that matches signature of unmanaged function.
14346         (cominterop_get_native_wrapper): wrapper around adjusted method call.
14347         (cominterop_get_invoke): forwards call from proxy to __ComObject
14348         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
14349         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
14350         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
14351         
14352         * marshal.h: Added Marshal icall declarations.
14353         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
14354         so we can access them in finalizer
14355         
14356 2006-07-14  Dick Porter  <dick@ximian.com>
14357
14358         * object.c (mono_type_initialization_cleanup): Fix a race
14359         condition by temporarily commenting out the critical section
14360         deletion.
14361
14362 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
14363
14364         * reflection.c (create_custom_attr): Fix some warnings.
14365         (create_custom_attr_data): Ditto.
14366         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
14367         types. Fixes #78855.
14368
14369 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
14370
14371         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
14372
14373         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
14374
14375 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14376
14377         * reflection.c (resolve_object): Add support for DynamicMethod.
14378
14379         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
14380         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
14381
14382 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
14383
14384         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
14385         don't leak GPtrArray's pdata has we have no use (nor free) for it.
14386
14387 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
14388
14389         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
14390         Fixes #77888.
14391
14392 2006-06-30  Raja R Harinath  <rharinath@novell.com>
14393
14394         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
14395         slightly: remove a shadow local variable.
14396
14397 2006-06-29  Raja R Harinath  <rharinath@novell.com>
14398
14399         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
14400         definition that introduces the virtual function slot.
14401         Also fix Coverity #105.
14402
14403 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
14404
14405         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
14406         for dynamic assemblies. Fixes #78724.
14407
14408 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
14409
14410         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
14411         Fixes #78722.
14412
14413 2006-06-21  Martin Baulig  <martin@ximian.com>
14414
14415         * reflection.c
14416         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
14417         fixes #76484.
14418
14419 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14420
14421         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
14422
14423 2006-06-20  Raja R Harinath  <rharinath@novell.com>
14424
14425         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
14426         nor TYPEREFs.
14427         * class.c (mono_class_create_from_typespec): Add 'context' argument.
14428         Inflate result if necessary.
14429         (mono_class_get_full): Remove old version.  Rename from
14430         'mono_class_get' and add 'context' argument.  Pass it to
14431         ..._create_from_typespec.
14432         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
14433         (mono_ldtoken): Revert change below.
14434
14435 2006-06-20  Martin Baulig  <martin@ximian.com>
14436
14437         * class.c (mono_ldtoken): Don't pass the generic context to
14438         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
14439
14440 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
14441
14442         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
14443         and later freeing it. Fixes #78638.
14444
14445 2006-06-15  Miguel de Icaza  <miguel@novell.com>
14446
14447         * icall.c (mono_class_get_throw): Revert over-zealous error
14448         throwing, the caller for mono_class_get_throw will cope with
14449         errors when classes are not properly initialized already.
14450
14451         The code still copes with loader exceptions though.
14452
14453         Fixes the regression in reftype1 and reftype3 from the CAS tests.
14454         
14455 2006-06-14  Miguel de Icaza  <miguel@novell.com>
14456
14457         Fixes the `make run1' version of RuntimeAbort (to be commited,
14458         source is in Bugzilla).
14459         
14460         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
14461         FALSE on class loading failure instead of returning true.
14462
14463         * class.c (mono_class_create_from_typedef): It is possible for
14464         mono_metadata_interfaces_from_typedef_full to fail if a class is
14465         not found, cope with this.
14466         
14467
14468 2006-06-14  Dick Porter  <dick@ximian.com>
14469
14470         * socket-io.c: 
14471         * process.c: Fix a bunch of signed/unsigned warnings from gcc
14472         4.1.1
14473
14474 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
14475
14476         * culture-info-table.h : oops, forgot to make it nsync with r61548.
14477
14478 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14479
14480         * icall.c: Another fix for building mono in Visual Studio.
14481
14482 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14483
14484         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
14485         
14486 2006-06-09  Martin Baulig  <martin@ximian.com>
14487
14488         * debug-mono-symfile.c: Put this back and really fix it this
14489         time. Sorry for all the trouble.
14490
14491 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14492
14493         * icall.c (mono_class_get_throw): Fix a warning.
14494         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
14495         ReflectionTypeLoadException if needed. Fixes #78606.
14496
14497         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
14498         (mono_class_init): Ditto.
14499
14500         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
14501         ref_only exceptions.
14502         (mono_loader_clear_error): Make this work even if there is no error.
14503
14504 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
14505
14506         * object-internals.h marshal.c marshal.h icall.c: Implement method 
14507         Marshal.GetComSlotForMethodInfo using internal call.
14508
14509 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
14510
14511         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
14512         a function for signalling it.
14513
14514         * class.c (mono_class_from_typeref): Use the new kind of loader error when
14515         a referenced assembly is not found.
14516
14517         * loader.c (mono_loader_error_prepare_exception): Add support for 
14518         LOADER_ERROR_ASSEMBLY. Fix formatting.
14519
14520 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
14521
14522         * domain.c appdomain.c class-internals.h marshal.c: Add support 
14523         for VARIANT marshalling on windows and increment corlib version
14524         since Variant struct was added.
14525
14526 2006-06-03  Miguel de Icaza  <miguel@novell.com>
14527
14528         * debug-mono-symfile.c: Revert Martin's previous patch which broke
14529         stack trace line information:
14530
14531         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
14532         (Martin) when looking up B which is between A and C, return A not C.
14533
14534         Bug is #78573.
14535
14536         Thanks to Alexander Olk for tracking this down.
14537
14538 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
14539
14540         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
14541         
14542         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
14543         avoid clobbering its value.
14544         (mono_string_to_lpstr): Fix a warning on windows.
14545
14546 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
14547
14548         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
14549
14550         * reflection.c loader.c: Removed references to 'dummy' flag.
14551
14552         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
14553
14554         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
14555         it gets GC tracking.
14556
14557         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
14558         GC tracking.
14559         
14560         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
14561
14562         * marshal.c threadpool.c: Update callers of mono_async_result_new.
14563
14564         * appdomain.c: Bump corlib version.
14565
14566 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
14567
14568         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
14569         CEE_STIND_REF when working with object references.
14570
14571 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
14572
14573         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
14574         Fixes #78539.
14575
14576 2006-05-30  Miguel de Icaza  <miguel@novell.com>
14577
14578         * loader.c (method_from_memberref): Fix argument value for
14579         mono_loader_set_error_method_load (I was passing the MonoClass
14580         instead of the class name char *).
14581
14582 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
14583
14584         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
14585         CEE_STIND_REF when working with object references.
14586
14587 2006-05-30  Martin Baulig  <martin@ximian.com>
14588
14589         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
14590         mono_method_full_name() change and replace the ':' with a '.'
14591         here.
14592
14593 2006-05-30  Martin Baulig  <martin@ximian.com>
14594
14595         * debug-mono-symfile.c
14596         (mono_debug_symfile_lookup_location): Fix the algorithm:
14597         when looking up B which is between A and C, return A not C.
14598
14599 2006-05-29  Martin Baulig  <martin@ximian.com>
14600
14601         * mono-debug.h
14602         (MonoDebugMethodInfo): Make the typedef public.
14603         (MonoDebugSourceLocation): New public struct.
14604
14605         * mono-debug.c
14606         (mono_debug_source_location_from_address): Removed.
14607         (mono_debug_source_location_from_il_offset): Removed.
14608         (mono_debug_il_offset_from_address): Removed.
14609         (mono_debug_address_from_il_offset): Removed.
14610         (mono_debug_lookup_method): New public function.
14611         (mono_debug_lookup_source_location): New public function; replaces
14612         the old mono_debug_source_location_from_*() functions; see the
14613         inline documentation.
14614         (mono_debug_free_source_location): New public function.
14615         (mono_debug_print_stack_frame): New public function; see the
14616         inline documentation.
14617
14618         * debug-mono-symfile.c
14619         (mono_debug_find_source_location): Renamed into
14620         mono_debug_symfile_lookup_location(); only take a
14621         `MonoDebugMethodInfo *' and an `offset' argument; added inline
14622         documentation.
14623         (mono_debug_find_method): Renamed into
14624         mono_debug_symfile_lookup_method().
14625
14626 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
14627
14628         * assembly.c (mono_assembly_open_full): Dont overwrite the status
14629         returned by mono_image_open_full ().
14630
14631         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
14632         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
14633         #78517.
14634
14635         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
14636         #78518.
14637
14638 2006-05-27  Miguel de Icaza  <miguel@novell.com>
14639
14640         * class.c (mono_class_from_typeref): handle missing images
14641         earlier, deals with bug #78418.   Refactor code; 
14642
14643         Fix a warning introduced in my previous commit (some stale code
14644         from before I revisited my patch).
14645
14646         * class.c (mono_class_create_from_typedef): On failure, remove the
14647         class from the MonoImage->class_cache as the class is not
14648         initialized;   Fixes the leak pointed out by Paolo.
14649
14650 2006-05-25  Dick Porter  <dick@ximian.com>
14651
14652         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
14653         DeleteCriticalSections until I figure out which one may still be
14654         sometimes locked when mono_thread_cleanup is called.
14655
14656 2006-05-24  Dick Porter  <dick@ximian.com>
14657
14658         * threads.c (mono_thread_cleanup): Move the threading cleanup out
14659         of mono_thread_manage and back into its own function, so it can be
14660         called after the finalizer thread has finished.
14661
14662         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
14663
14664 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
14665
14666         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
14667         Fixes #78495.
14668
14669         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
14670         with non-blittable elements.
14671         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
14672
14673 2006-05-24  Martin Baulig  <martin@ximian.com>
14674
14675         * mono-debug-debugger.h (MonoDebuggerEvent): Added
14676         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
14677
14678         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
14679         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
14680         `mono_debugger_event_handler' to NULL.
14681
14682 2006-05-24  Martin Baulig  <martin@ximian.com>
14683
14684         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
14685
14686 2006-05-24  Martin Baulig  <martin@ximian.com>
14687
14688         * mono-debug-debugger.h
14689         (mono_debugger_create_notification_function): Added
14690         `MonoCodeManager *' argument.
14691
14692 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
14693
14694         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
14695
14696 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
14697
14698         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
14699         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
14700         implementation.
14701
14702 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
14703
14704         * icall.c: precise GC support: objects can't be stored in unmanaged
14705         memory anymore, even if they are kept alive by other references: since
14706         they can move the GC needs to be able to always find them.
14707
14708 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14709
14710         * object.c: precise GC support for static fields. Support
14711         for moving GCs: write barriers and pinned allocation for interned
14712         strings.
14713
14714 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
14715
14716         * domain.c, domain-internals.h: precise GC support for the MonoDomain
14717         structure.
14718
14719 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14720
14721         * class.c, gc.c: sgen and precise GC updates.
14722
14723 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14724
14725         * marshal.h, marshal.c: added write barrier wrapper and precise type
14726         fixes.
14727
14728 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
14729
14730         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
14731         support.
14732
14733 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14734
14735         * reflection.c: precise and sgen GC updates.
14736
14737 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14738
14739         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
14740
14741 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
14742
14743         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
14744
14745 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
14746
14747         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
14748         MONO_TYPE_OBJECT. Fixes #78462.
14749
14750 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14751
14752         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
14753         and blittable types.
14754
14755 2006-05-17  Miguel de Icaza  <miguel@novell.com>
14756
14757         * class.c (mono_class_get_exception_for_failure): Implement parts
14758         of a TODO: if the loader error is set (instead of the class
14759         error), we return a Loader exception that can be properly thrown
14760         elsewhere.
14761
14762         This was exposed by some Winforms 2.0 code that I tried to run
14763         (Atsushi pointed me to it).
14764
14765 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
14766
14767         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
14768         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
14769         
14770         * marshal.c (emit_marshal_vtype): Add limited support for 
14771         UnmanagedType.LPStruct. Fixes #78427.
14772
14773         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
14774         Applied a patch from kangaroo to fix #77523.
14775
14776 2006-05-17  Martin Baulig  <martin@ximian.com>
14777
14778         * threads.c
14779         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
14780         (debugger_thread_created): Removed.
14781         (debugger_thread_exited): Removed.
14782
14783 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
14784
14785         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14786
14787         * object-internals.h (MonoReflectionResource): Sync with managed version.
14788
14789 2006-05-12  Wade Berrier <wberrier@novell.com>
14790
14791         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
14792
14793 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
14794
14795         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
14796         functions try to allocate from the image mempool.
14797
14798 2006-05-12  Dick Porter  <dick@ximian.com>
14799
14800         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
14801
14802 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
14803
14804         * object.c: The FieldGetter and FieldSetter methods require the full
14805         name of the class, not only the name. Fixes bug #78277.
14806
14807 2006-05-11  Miguel de Icaza  <miguel@novell.com>
14808
14809         * loader.c (method_from_memberref): Do not pass the NULL klass to
14810         mono_loader_set_error_() methods.  Pass the non-NULL value
14811         (class). 
14812
14813 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14814
14815         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
14816         (mono_assembly_close): Null out assembly->image->references after freeing it.
14817
14818         * image.c (mono_image_close): Free image->references.
14819         
14820         * reflection.c (mono_image_basic_init): Fix a small memory leak.
14821
14822 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
14823
14824         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
14825         before checking if it's NULL (g_assert).
14826
14827 2006-05-10  Martin Baulig  <martin@ximian.com>
14828
14829         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
14830         I thought I already killed that two months ago, but now it somehow reappeared.
14831
14832 2006-05-10  Martin Baulig  <martin@ximian.com>
14833
14834         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
14835
14836 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14837
14838         * reflection.c: Allocate memory for dynamically created methods in the image
14839         mempools.
14840
14841 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
14842
14843         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
14844         don't use the ad pointer before checking if it's NULL (g_assert).
14845
14846 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14847
14848         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
14849         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
14850
14851         * marshal.c: Allocate all signatures from mempools.
14852
14853         * marshal.c: Allocate some more signatures from mempools.
14854
14855 2006-05-09  Miguel de Icaza  <miguel@novell.com>
14856
14857         * object.c (mono_load_remote_field): The code used to provide a
14858         temporary variable for returning results if the user did not
14859         provide a result pointer.  But our temporary variable was allocted
14860         on the satck.
14861
14862         Fix calling code to always pass a result area.   Coverity ID 103.
14863
14864 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14865
14866         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
14867         value, not the old. Fixes #78312.
14868         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
14869
14870         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
14871         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
14872         per-image cache.
14873
14874         * assembly.c (mono_assembly_close): Free image->references.
14875
14876         * assembly.c (mono_assembly_names_equal): Fix a warning.
14877         (mono_assemblies_cleanup): Cleanup more global data.
14878
14879         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
14880
14881         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
14882         ptr_cache and image->modules.
14883
14884         * image.c (mono_image_init): Allocate array_cache lazily.
14885         
14886 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14887
14888         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
14889         behavior was changed recently and has bad side effects.
14890
14891 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14892
14893         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
14894         
14895         * assembly.c (mono_assembly_close): Remove a debug printf.
14896
14897         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
14898
14899         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
14900         to also allow for temporary references between mono_image_open ()/close ().
14901
14902         * domain.c (get_runtimes_from_exe): Add a FIXME.        
14903
14904 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14905
14906         * marshal.c: Fix support for dynamic methods.
14907
14908         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
14909
14910         * marshal.c (mono_marshal_cleanup): New cleanup function.
14911
14912         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
14913         image mempools.
14914
14915         * class.c (mono_class_init): Fix leaking class->nested_classes.
14916
14917         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
14918
14919         * image.c (mono_image_init): Initialize the new cashes.
14920
14921         * image.c (mono_image_close): Destroy the new cashes.
14922
14923         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
14924
14925         * mempool.c (mono_mempool_strdup): New helper function.
14926
14927         * class-internals.h: Add prototype for mono_loader_unlock ().
14928
14929         * domain.c (mono_jit_info_table_find): Fix a warning.
14930         (mono_debugger_check_runtime_version): Ditto.
14931
14932         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
14933         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
14934         functions to these modules.
14935
14936         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
14937         metadata modules.
14938         
14939         * marshal.c (mono_free_bstr): Fix a warning.
14940
14941         * assembly.c (mono_assembly_open_full): Fix another small leak.
14942
14943         * object.c: Fix some unload leaks in the remoting code.
14944
14945         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
14946         function.
14947
14948         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
14949
14950         * reflection.c: Fix some unload leaks in dynamic assemblies.
14951
14952 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
14953
14954         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
14955         * marshal.h: Add BSTR support on Win32
14956         * icall.c: Add BSTR icalls
14957         * metadata.h: Add BSTR enums
14958
14959 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14960
14961         Work to catch the crash from #76795 and turn it into an
14962         exception.   As I stubbed out pieces of the VisualBasic support,
14963         I found a number of places where the code was failing and I added
14964         checks to those places. 
14965         
14966         * metadata.c (do_mono_metadata_parse_generic_class): Make this
14967         function return a status code.  If we fail to parse the signature
14968         from mono_metadata_parse_generic_inst, return FALSE.
14969
14970         * loader.c (mono_get_method_from_token): If we fail to load the
14971         method (mono_class_get) return NULL.   
14972
14973         * (method_from_memberref): Return NULL if we are unable to parse
14974         the method signature
14975
14976         (mono_loader_error_prepare_exception): Since we now use the
14977         loader_error flag internally to stop processing, and obtaining
14978         exceptions that might be thrown will walk this code path the
14979         proper way of going from a MonoLoaderError into a
14980         MonoException was convoluted.   This new routine encapsulates the
14981         process of turning the error into an exception and *clearing* the
14982         error afterwards.
14983         
14984 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14985
14986         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
14987         with missing assemblies), and to cope with:
14988
14989                 * Missing fieldref from a non-existing assembly.
14990                 * Missing methodref from a non-existing assembly.
14991
14992         The first batch of work to address *some* of the issues from 76661.
14993         
14994         * object.c (mono_class_create_runtime_vtable): If we fail to
14995         initialize the class raise the exception here. 
14996
14997         * metadata.c (mono_class_get_overrides_full): If any methods fail
14998         to load return the failure to the caller.
14999
15000         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
15001         flagging assemblies that failed to load.   
15002
15003         Do not crash if we are unable to load the assembly.
15004
15005         (mono_assembly_close): Do nothing with REFERENCE_MISSING
15006         assemblies. 
15007
15008         * loader.c (mono_loader_set_error_type_load): Change the
15009         convention to always pass unallocated strings, so we make our own
15010         copies (I know our own code had duplicated strings before, but
15011         this keeps the normal conventions).
15012         (method_from_memberref): Call mono_loader_set_error_method_load
15013         for all possible failures of loading the class. 
15014         Remove assert, turn into a loader error.
15015
15016         (mono_loader_error_to_exception): Move this routine from mini
15017         (mini_loader_error_to_exception) there was no need to have that in
15018         mini. 
15019
15020         * class.c (mono_class_from_typeref): If we were not able to load
15021         the assembly with mono_assembly_load_reference, call the
15022         mono_loader_set_error_type_load to register the problem.
15023
15024         (mono_class_setup_fields): If we fail to load the type from
15025         mono_metadata_parse_type_full, call mono_class_set_failure and
15026         break from the loop.
15027
15028         If class->exception_type is set, we do not layout the fields as
15029         that might crash the runtime, and instead return (from breaking
15030         from the previous loop).
15031
15032         (mono_class_setup_vtable): This now returns a boolean indicating
15033         whether the table was properly setup.   The decision is driven by
15034         mono_class_get_overrides_full which might run into non-existing
15035         methods. 
15036         
15037         (mono_class_init): Returns TRUE on success or FALSE if there was a
15038         problem in loading the type (incorrect assemblies, missing
15039         assemblies, methods, etc).
15040
15041         When we call mono_class_setup_fields we also check for a potential
15042         error inside this call (either a class exception or a general
15043         loader exception).
15044
15045         (mono_class_create_from_typedef): If the parent fails to load
15046         (calling mono_class_get_full) return NULL.
15047         
15048         ** Important **
15049
15050         calls to mono_metadata_parse_type_full should be checked
15051         everywhere and set the mono_class_set_failure
15052         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
15053
15054         The current patch checks the places where my manually constructed
15055         tests show the errors are showing up, but we should do it
15056         everywhere. 
15057
15058         ** Important2 **
15059
15060         mono_class_init return values should be tested everywhere, like
15061         the previous case this is something that we should audit
15062         everywhere and not only on the cases exposed by the tests I
15063         created. 
15064
15065 2006-04-26  Miguel de Icaza  <miguel@novell.com>
15066
15067         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
15068         boolean parameter and instead pass the information on `options'
15069         parameter (FileOptions).
15070
15071         * icall.c: Register the new signature for MonoIO.Open.
15072
15073         * debug-helpers.c (dis_one): Trying to understand how coverity
15074         works.  Fix Run 5, item 78.
15075
15076 2006-04-26  Dick Porter  <dick@ximian.com>
15077
15078         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
15079         dereference.
15080
15081 2006-04-25  Martin Baulig  <martin@ximian.com>
15082
15083         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
15084
15085         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
15086         debugger_thread_created().
15087         (debugger_gc_push_all_stacks): Don't handle the main thread in any
15088         special way.
15089         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
15090         (mono_debugger_finalize_threads): New function; undo the effects
15091         of mono_debugger_init_threads().
15092         (mono_debugger_create_all_threads): Removed.
15093
15094 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15095
15096         * image.c (mono_image_close): Tidy up trace messages.
15097
15098         * assembly.c (mono_assembly_close): Ditto.
15099
15100         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
15101         no longer references an already freed assembly. Fixes #78168.
15102
15103 2006-04-21  Dick Porter  <dick@ximian.com>
15104
15105         * threads.c (mono_thread_detach): Fix reference counting when
15106         detaching threads.
15107
15108 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
15109
15110         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
15111         #78155.
15112
15113 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15114
15115         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
15116         (mono_type_to_stind): Ditto.
15117
15118         * marshal.c: Use the new helper functions to simplify code.
15119
15120         * image.c (mono_image_close): Add some code for help debug assembly unloading
15121         problems.
15122
15123         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
15124         image mempool.
15125
15126         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
15127         assembly was already loaded in another appdomain. Fixes #78083.
15128
15129 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
15130
15131         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
15132         referenced assemblies.
15133         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
15134
15135         * domain.c (mono_domain_free): Add a trace message.
15136
15137         * appdomain.c (add_assemblies_to_domain): Ditto.        
15138
15139         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
15140         field.  
15141
15142 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15143
15144         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
15145
15146 2006-04-12  Martin Baulig  <martin@ximian.com>
15147
15148         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
15149         `USE_INCLUDED_LIBGC'.   
15150
15151 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15152
15153         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
15154         the patch contains ../ and a small directory name later. Hopefully fixes
15155         #78035.
15156
15157 2006-04-10  Martin Baulig  <martin@ximian.com>
15158
15159         Clean up the debugger's thread-handling code.
15160
15161         The debugger's thread-handling code has been moved from
15162         ../mini/debug-debugger.c to threads.c.  We now iterate directly
15163         over the `threads' hash, keep track of exiting threads and also
15164         use proper locking.
15165
15166         We can now debug XSP and XSP based applications with the debugger.
15167
15168         * object-internals.h (MonoThread): Added `gpointer end_stack'.
15169
15170         * threads.h
15171         (MonoThreadCallbacks): Removed; this was only used by the debugger.
15172         (mono_install_thread_callbacks): Likewise.      
15173
15174         * threads.c (mono_thread_callbacks): Removed.
15175         (debugger_thread_created, debugger_thread_exited): New static functions.
15176         (start_wrapper): Call debugger_thread_created().
15177         (thread_cleanup): Call debugger_thread_exited().
15178         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
15179         (mono_debugger_init_threads): New public function.
15180         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
15181         iterate directly over the `threads' hash and also use proper locking.
15182
15183         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
15184
15185         * mono-debug-debugger.h
15186         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
15187
15188 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15189
15190         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
15191         argument type=array. Fixes #78057.
15192
15193 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
15194
15195         * culture-info-table.h : regenerated. Fixed bug #69652.
15196
15197 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15198
15199         * loader.c metadata.c: Reapply a variant r59116.
15200         
15201         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
15202
15203         * class.c (mono_class_setup_interface_offsets): New internal function.
15204
15205         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
15206         interfaces too. Fixes #77398.
15207
15208         * reflection.c (encode_cattr_value): Add support for 
15209         parameter type=object, argument type=array.
15210         (load_cattr_value): Ditto. Fixes #77916.
15211
15212         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
15213         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
15214
15215         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
15216         a byval char array and CharSet is Ansi.
15217
15218         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
15219
15220 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
15221
15222         * metadata.c: Add some locking comments.
15223         
15224         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
15225         mempool.
15226         (mono_metadata_free_method_signature): Don't free the signature itself.
15227
15228         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
15229
15230         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
15231         reference the same MonoImage.
15232         (mono_assembly_load_from_full): Add an assert.
15233
15234 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15235
15236         * image.c (mono_image_close): Don't put the image we are about to free into the
15237         loaded_images_guid_hash.
15238
15239         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
15240         to reduce code duplication.
15241
15242         * marshal.c: Register the native functions called by this module as icalls, to
15243         somewhat centralize the creation of MonoMethodSignature's.
15244
15245         * loader.c (mono_method_signature): Add a cache for method signatures.
15246
15247         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
15248         the parameter attributes of a method.
15249         (mono_metadata_parse_method_signature_full): Refactored the computation of
15250         parameter attributes into a separate function. Also avoid one allocation in
15251         most cases.
15252
15253         * assembly.c (mono_assembly_close): Ditto.
15254
15255         * image.c (mono_image_close): Log trace messages with INFO level.
15256
15257         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
15258
15259         * image.c reflection.c: Correct reference counting of image modules.
15260         
15261         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
15262         of this function from the image mempool.
15263         
15264         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
15265         to allow more cached types to be used.
15266
15267         * mono-debug.c (mono_debug_add_method): Appled patch from
15268         David S. Miller  <davem@sunset.davemloft.net>: Access 
15269         minfo->lexical_blocks[] entry elements using read32().
15270
15271 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15272
15273         * loader.c (mono_free_method): No longer free the method header for non-dynamic
15274         methods as it is allocated from the mempool.
15275
15276         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
15277         image mempool.
15278
15279         * metadata-internals.h: Add comments describing the reference counting scheme
15280         used for MonoImage and MonoAssembly.
15281
15282         * image.c assembly.c reflection.c: Rework reference counting of images and 
15283         assemblies so they are freed when the runtime is shut down. Free some 
15284         additional memory structures when an image is unloaded.
15285         
15286 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15287
15288         * class.c loader.c reflection.c: Allocate more data structures in
15289         the image mempool.
15290
15291 2006-03-31  Miguel de Icaza  <miguel@novell.com>
15292
15293         * icall.c
15294         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
15295         build on pre glib 2.4 systems.
15296
15297 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15298
15299         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
15300
15301         * icall.c: Fix some warnings.
15302
15303 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
15304
15305         * culture-info-table.h : regenerated.
15306
15307 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
15308
15309         * threads.c, object-internals.h, verify.c: changed the culture caching
15310         code to use a normal MonoArray for storage so the GC can keep track of
15311         them easily. Fixed bits of the cache logic, too and simplified the
15312         code.
15313
15314 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
15315
15316         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
15317         thread for non-Boehm GCs.
15318
15319 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
15320
15321         * domain.c, object.c, domain-internals.h: reduce the amount of memory
15322         needed to keep track of the data for static fields.
15323
15324 2006-03-29  Raja R Harinath  <rharinath@novell.com>
15325
15326         Fix #75172
15327         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
15328         for interface classes.  Use 'num_methods' instead.
15329         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
15330         before using '->vtable_size' field.
15331
15332 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15333
15334         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
15335         doesn't contain managed pointers, so use a normal hashtable.
15336
15337 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15338
15339         * reflection.c, class-internals.h, domain.c: fixed handling of types
15340         used as values for objects in custom attributes (bug #77915):
15341
15342 2006-03-24  Martin Baulig  <martin@ximian.com>
15343
15344         * class.c (mono_class_setup_fields): Added support for generic
15345         instances; fixes #77580.
15346
15347 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15348
15349         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
15350
15351 2006-03-24  Dick Porter  <dick@ximian.com>
15352
15353         * file-io.c (get_file_attributes): More stat macro breakage.
15354         Fixes bug 77759.
15355
15356 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
15357
15358         * profiler.c: added the file=filename option in the default profiler
15359         to output the profile data to filename.
15360
15361 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15362
15363         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
15364         bug #77877.
15365
15366 2006-03-22  Martin Baulig  <martin@ximian.com>
15367
15368         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
15369         allocated `MonoClassField *' in `fb->handle'.
15370
15371 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15372
15373         * class.c, image.c, metadata-internals.h: implemented new mechanism to
15374         allocate interface ID to save memory and allow better ID reuse on
15375         appdomain unload. setup_generic_vtable () removal from Martin.
15376
15377 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
15378
15379         * object.h, appdomain.c, domain.c, exception.c, icall.c,
15380         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
15381         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
15382         write barriers for reference stores with managed objects accessed with
15383         C structures in the runtime and in embedding programs.
15384
15385 2006-03-20  Raja R Harinath  <rharinath@novell.com>
15386
15387         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
15388         'interface_id' and 'max_interface_id' fields of MonoClasses
15389         representing open generic types.
15390
15391 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
15392
15393         * object.h, object.c, icall.c: added functions to deal with
15394         storing valuetypes that contain references in managed objects.
15395         * reflection.c, string-icalls.c, threads.c, marshal.c: small
15396         fixes and comments around uses of mono_array_addr ().
15397
15398 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
15399
15400         * object.h, icall.c, monitor.c: object.GetHashCode ()
15401         implementation that supports the moving garbage collector.
15402
15403 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15404
15405         * icall.c, threads-types.h, threads.c: implemented finalizer for
15406         LocalDataStoreSlot.
15407
15408 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
15409
15410         * metadata.c (mono_type_size): Add a fixme.
15411         (mono_type_stack_size): Ditto.
15412
15413         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
15414         'type_forwarders' field.
15415
15416         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
15417         attribute from net 2.0.
15418
15419         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
15420         from class.c.
15421
15422         * class.c (mono_class_setup_fields): Fix a warning.
15423         
15424         * class.c (mono_class_from_name): Add support for assemblyref entries
15425         in the EXPORTEDTYPE table.
15426
15427         * reflection.c: Add support for handling type forwarders under net 2.0.
15428
15429         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
15430         
15431 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
15432
15433         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
15434         overwriting entries in ModuleBuild->types, also clean up the code
15435         a little. Fixes #77774.
15436
15437 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15438
15439         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
15440         load friend assembly info when present.
15441
15442 2006-03-14  Raja R Harinath  <rharinath@novell.com>
15443
15444         Fix crasher on gtest-158.cs.
15445         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
15446         the return value if the MonoClass we want is yet in an
15447         inconsistent state.
15448         * class.c (mono_class_create_from_typedef): Add an comment
15449         explaining an order dependency between mono_class_setup_parent and
15450         mono_class_setup_mono_type.
15451
15452 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15453
15454         * class.c: documentation updates and events bug fix.
15455
15456 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
15457
15458         * class.c: some cleanup, locking fixes.
15459
15460 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15461
15462         * class.c: fix the generics code to setup nested
15463         type info to the instantiated type (bug #77770).
15464
15465 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15466
15467         * marshal.c: fixed a few type correctness issues.
15468
15469 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15470
15471         * loader.c: the Set/Get/Addrtess array methods should be public.
15472
15473 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15474
15475         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
15476         
15477         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
15478         info->wrapper.
15479
15480 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
15481
15482         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
15483
15484         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
15485
15486         * mempool.c (mono_mempool_alloc): Speed this up a bit.
15487         (mono_mempool_alloc0): Ditto.
15488
15489 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15490
15491         * socket-io.c:
15492         (create_object_from_sockaddr): it was allocating 4 extra bytes
15493         for the AF_UNIX data. Fixes bug #77747.
15494
15495 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
15496
15497         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
15498
15499 2006-03-09  Dick Porter  <dick@ximian.com>
15500
15501         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
15502         Fixes bug 76966 again.
15503
15504 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
15505
15506         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
15507         names from r57532
15508         * appdomain.c: Bumped corlib version to 48 (due to r57532)
15509
15510 2006-03-07  Martin Baulig  <martin@ximian.com>
15511
15512         * object.c
15513         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
15514
15515 2006-03-07  Martin Baulig  <martin@ximian.com>
15516
15517         * class.c
15518         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
15519         regression introduced in r56970; see gtest-252.cs.
15520
15521         * loader.c (mono_get_method_constrained): Correctly handle generic
15522         methods; see gtest-253.cs.
15523
15524 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
15525
15526         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
15527
15528 2006-03-04  Martin Baulig  <martin@ximian.com>
15529
15530         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
15531         compute the parent type at runtime, just like we're already doing
15532         it for interfaces.
15533
15534         * reflection.c
15535         (mono_reflection_bind_generic_parameters): Don't compute the
15536         parent type anymore.
15537
15538         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
15539
15540 2006-03-04  Martin Baulig  <martin@ximian.com>
15541
15542         * mono-debug-debugger.h
15543         (mono_debugger_create_notification_function): Allocate memory at
15544         runtime and return a pointer to it.
15545
15546 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
15547
15548         * assembly.c: Fix windows build.
15549         
15550         * assembly.c: Fix build.
15551
15552         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
15553
15554         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
15555         
15556 2006-03-03  Dick Porter  <dick@ximian.com>
15557
15558         * process.c
15559         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
15560         Check parameters before dereferencing them.  Fixes Aaron's part of
15561         bug 77393.
15562
15563 2006-03-03  Raja R Harinath  <rharinath@novell.com>
15564
15565         Fix performance regression.
15566         * loader.c (find_method_in_class): Add 'from_class' argument.
15567         Rename 'klass' argument to 'in_class'.  The signature is compared
15568         against the method in 'in_class', and the corresponding method is
15569         returned from 'from_class'.
15570         (find_method): Walk both 'in_class' and 'from_class' in parallel.
15571         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
15572         type definition and generic instantiation in parallel.
15573         (mono_get_method_constrained): Update to changes.
15574
15575 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15576
15577         * threads.c: make sure the domain is correct, too when doing
15578         mono_thread_attach ().
15579
15580 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
15581
15582         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
15583         windows. Fixes #77683.
15584
15585 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15586
15587         * object.h, *: introduced specific way to set elements of an array
15588         of references to be used as write barrier. Still need to audit the
15589         uses of mono_array_addr.
15590
15591 2006-03-01  Miguel de Icaza  <miguel@novell.com>
15592
15593         * object-internals.h: New field to cache the assmebly name, patch
15594         from Tambet Ingo (tambet@ximian.com)
15595
15596 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
15597
15598         * decimal.h, class-internals.h, metadata-internals.h,
15599         file-io.h: mark a few function declarations as internal, to
15600         reduce the number of PLT entries.
15601
15602 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15603
15604         * file-io.c: fix typo in warning message.
15605
15606 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
15607
15608         * loader.c: on unix, lookup the "*A" version of a function
15609         if charset is auto as a second option before failing.
15610
15611 2006-02-28  Raja R Harinath  <rharinath@novell.com>
15612
15613         * class.h (mono_class_inflate_generic_method): Revert to two
15614         argument version.
15615         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
15616         (mono_class_inflate_generic_method_full): Add.
15617         * class.c (mono_class_inflate_generic_method_full): Rename from
15618         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
15619         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
15620         * loader.c, reflection.c: Update to changes.
15621
15622 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
15623
15624         * icall.c: const fixes and small improvements.
15625
15626 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15627
15628         * threadpool.c: for asynchronous connect(), enable the same workaround
15629         for BSD 6 as for the Mac. Fixes bug #77637.
15630
15631 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
15632
15633         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
15634         formatted classes. Fixes #77524.
15635
15636 2006-02-24  Raja R Harinath  <rharinath@novell.com>
15637
15638         * class.c (inflate_generic_type): Add a couple more
15639         micro-optimizations.
15640         (inflate_generic_context): Don't use the 'gmethod' from
15641         'inflate_with'.
15642         (mono_class_inflate_generic_method): If the method has generic
15643         parameters, but the passed-in context doesn't have a 'gmethod',
15644         create one.  Use the possibly simplified generic instantiation
15645         from the declaring class instead of the one passed in.
15646
15647 2006-02-24  Raja R Harinath  <harinath@gmail.com>
15648
15649         Make generic method signature and method header handling lazy.
15650         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
15651         (inflate_generic_header): Likewise.
15652         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
15653         parameter to avoid inflating types.
15654         (mono_get_inflated_method): Empty out.
15655         * class.h (mono_class_inflate_generic_method): Update to changes.
15656         * loader.c (mono_get_method_from_token): Don't parse signature for
15657         generic methods, nor methods of generic classes.
15658         (mono_method_signature): Rename from 'mono_method_signature'.
15659         Inflate signature on demand.
15660         (mono_method_get_header): Inflate method header on demand.
15661         * reflection.c: Update to changes.
15662
15663 2006-02-23  Raja R Harinath  <rharinath@novell.com>
15664
15665         * metadata.c (mono_metadata_inflate_generic_inst): If the
15666         instantiation is closed, don't bother expanding it in the new
15667         context.
15668         * class.c (inflate_generic_class): If the generic instantiation
15669         doesn't change after inflation, return the argument itself.
15670         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
15671         Add bounds checks.
15672         (inflate_generic_context): If neither the generic class nor the
15673         generic method instantiations change, return the original context.
15674         * reflection.c (mono_method_get_object): Do
15675         'mono_get_inflated_method' before accessing the ->klass field.
15676         (inflate_mono_method): Don't create a MonoGenericMethod unless
15677         necessary.
15678         (inflate_method): Don't pass a constructed type as the declaring
15679         type of a methodbuilder.
15680
15681 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
15682
15683         * object.c: fix memory overwrite.
15684
15685 2006-02-22  Dick Porter  <dick@ximian.com>
15686
15687         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
15688         it doesn't work any more.
15689         (mono_threads_request_thread_dump): Fix unused variable warnings.
15690
15691 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15692
15693         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
15694         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
15695         the public header file.
15696
15697 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
15698
15699         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
15700
15701 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15702
15703         * class-internals.h, object.c: reduce the size of MonoVTable
15704         and store the interface_offsets array at negative offsets.
15705
15706 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15707
15708         * metadata.c: tweak table descriptors data structures to reduce
15709         size and runtime relocations.
15710
15711 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15712
15713         * marshal.c: fix some types and opcodes to be type-safe
15714         in marshaling wrappers.
15715
15716 2006-02-21  Ankit Jain  <jankit@novell.com>
15717
15718         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
15719
15720 2006-02-21  Raja R Harinath  <rharinath@novell.com>
15721
15722         * metadata.c (get_constraints): Relax debugging checks for monodis.
15723
15724 2006-02-21  Ankit Jain  <jankit@novell.com>
15725
15726         * metadata.c (mono_metadata_load_generic_params): Move the code
15727         checking for ambiguous generic params from here to mono/dis/get.c
15728         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
15729
15730 2006-02-21  Raja R Harinath  <harinath@gmail.com>
15731
15732         Fix assertion triggered when compiling nemerle.
15733         * class.c (mono_get_shared_generic_inst): Rename from
15734         get_shared_inst and make non-static.
15735         * loader.c (mono_get_shared_generic_method): New.  Used to create
15736         the MonoGenericContext-equivalent of a MonoGenericContainer.
15737         (mono_get_method_from_token): Initialize the 'context' field of
15738         the created MonoGenericContainer.
15739         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
15740         * metadata.c (get_constraints): Add sanity check.
15741         * class-internals.h: Add new internal methods.
15742
15743         * reflection.c (verify_safe_for_managed_space): New sanity check.
15744         Currently checks that owner-less generic parameters aren't allowed
15745         in managed space.
15746         (mono_type_get_object): Use it.
15747         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
15748         that are now in mono_type_get_object.
15749         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
15750
15751 2006-02-19  Raja R Harinath  <harinath@gmail.com>
15752
15753         * metadata.c (mono_type_create_from_typespec): Rename from
15754         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
15755         argument and caching of types in the generic container.
15756         (unwrap_arrays, find_generic_param): Remove.
15757         * metadata-internals.h: Update.
15758         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
15759
15760 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * class.c (mono_class_get_exception_for_failure): Fix a warning.
15763
15764         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
15765         return values. Fixes #77581.
15766
15767         * class.c (mono_fnptr_class_get): Switch name and name_space.
15768
15769         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
15770         classes and add support for [In, Out] attributes.
15771         (mono_marshal_free_asany): Ditto. Fixes #77524.
15772
15773 2006-02-18  Raja R Harinath  <harinath@gmail.com>
15774
15775         * class.c (mono_class_from_generic_parameter): Make more robust to
15776         incomplete MonoGenericContainers from monodis.
15777
15778 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
15779
15780         * class-internals.h: added some more exception types.
15781         * class.c, metadata.c: added a few checks to handle missing
15782         types.
15783
15784 2006-02-17  Raja R Harinath  <rharinath@novell.com>
15785
15786         Use owner-less generic-params some more.
15787         * class.c (my_mono_class_from_generic_parameter): Remove.
15788         (mono_class_from_generic_parameter): Handle null image,
15789         param->name and param->owner.
15790         (mono_class_from_mono_type): Update.
15791         (mono_class_create_from_typespec): Remove 'container' parameter.
15792         If that parameter is non-null, the result is always inflated by
15793         'mono_class_get_full' anyway.
15794         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
15795         parameter.
15796         (mono_class_get_full): Update.
15797
15798         * class.c (inflate_generic_type) [GENERICINST]: If the generic
15799         instance is not open, don't bother inflating.
15800         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
15801         parse metadata for inflated classes.
15802         (_mono_class_get): Change GenericContext* parameter to
15803         GenericContainer*.
15804         (mono_class_create_from_typespec): Likewise.  Simplify, and
15805         implement trivially.  All the cases are handled in
15806         mono_class_from_mono_type.  Don't inflate returned class.
15807         (mono_class_get_full): Delegate GENERICINST optimization to
15808         inflate_generic_type.
15809         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
15810
15811 2006-02-16  Dick Porter  <dick@ximian.com>
15812
15813         * socket-io.c (create_object_from_sockaddr): Fix typo.
15814         (create_sockaddr_from_object): Check array lengths before
15815         potentially accessing items off the end.
15816         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
15817         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
15818         (ves_icall_System_Net_Sockets_Socket_Send_internal)
15819         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
15820         length checks to avoid wraparound overflows.
15821         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
15822         contents of the array of sockets
15823         (hostent_to_IPHostEntry2)
15824         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
15825         Check return value of inet_ntop ().
15826         (addrinfo_to_IPHostEntry): Fix typo
15827
15828 2006-02-16  Raja R Harinath  <rharinath@novell.com>
15829
15830         Type metadata parsing doesn't use generic-instantiation information.
15831         * metadata.c (mono_metadata_parse_array_full): Change
15832         MonoGenericContext* parameter to MonoGenericContainer*.
15833         (mono_metadata_parse_type_full): Likewise.
15834         (mono_type_create_from_typespec_full): Likewise.
15835         (mono_metadata_parse_mh_full): Likewise.
15836         (mono_metadata_parse_generic_inst): Likewise.
15837         (do_mono_metadata_parse_generic_class): Likewise.
15838         (do_mono_metadata_parse_type): Likewise.
15839         * metadata-internals.h: Update to changes.
15840         * class.c (mono_class_find_enum_basetype): Likewise.
15841         (mono_class_setup_fields): Likewise.
15842         (mono_class_create_from_typespec): Likewise.
15843         * loader.c (method_from_methodspec): Likewise.
15844         (mono_get_method_from_token): Likewise.
15845         (mono_method_get_header): Likewise.
15846
15847 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15848
15849         * marshal.c: handle additional GENERICINST case (patch from
15850         Thong Nguyen <tum@veridicus.com>).
15851         Fix a few cases where LDIND_I/STIND_I was used for references.
15852
15853 2006-02-16  Raja R Harinath  <rharinath@novell.com>
15854
15855         * reflection.c (mono_reflection_get_token): Remove unused variable.
15856
15857 2006-02-16  Martin Baulig  <martin@ximian.com>
15858
15859         * reflection.c (mono_reflection_get_token): Add support for fields
15860         in instantiated generic types.
15861
15862         * icall.c
15863         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
15864
15865 2006-02-15  Martin Baulig  <martin@ximian.com>
15866
15867         * icall.c
15868         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
15869         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
15870         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
15871         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
15872
15873 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
15874
15875         * class.c, metadata.c, metadata.h, object.c, icall.c,
15876         marshal.c: changed mono_type_get_underlying_type () to do
15877         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
15878         Fixed handling of instantiated generic valuetypes (bug #75479).
15879
15880 2006-02-15  Raja R Harinath  <rharinath@novell.com>
15881
15882         * metadata.c (mono_metadata_decode_signed_value): Simplify.
15883         Delegate to mono_metadata_decode_value, and work on the returned value.
15884
15885         * icall.c (ves_icall_MonoType_GetGenericArguments):
15886         Add consistency check here too.
15887         
15888 2006-02-15  Ankit Jain  <jankit@novell.com>
15889
15890         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
15891         char/short etc.
15892
15893 2006-02-15  Ankit Jain  <jankit@novell.com>
15894
15895         * metadata.c (mono_metadata_decode_signed_value): New function to decode
15896         signed values, used only for representing lower bounds of arrays.
15897         (mono_metadata_parse_array_full): Use new
15898         mono_metadata_decode_signed_value to decode lower bounds.
15899
15900 2006-02-14  Martin Baulig  <martin@ximian.com>
15901
15902         * reflection.c
15903         (mono_reflection_get_token): Support "MonoGenericMethod" and
15904         "MonoGenericCMethod" and allow generic instances / methods.
15905
15906 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
15907
15908         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
15909         to obtain the terminal size using an ioctl.
15910
15911         * object.c (mono_nullable_init): Revert this as nullable reference
15912         types are not valid.
15913         (mono_nullable_box): Ditto.
15914
15915 2006-02-09  Dick Porter  <dick@ximian.com>
15916
15917         * threads.c (mono_thread_detach): Drop a reference to the thread
15918         we're detaching.
15919
15920 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
15921
15922         * object.c (mono_nullable_init): Handle nullable reference types.
15923         (mono_nullable_box): Ditto. Fixes #77446.
15924
15925 2006-02-07  Martin Baulig  <martin@ximian.com>
15926
15927         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
15928
15929 2006-02-07  Ankit Jain  <jankit@novell.com>
15930
15931         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
15932         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
15933         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
15934         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
15935         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
15936         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
15937
15938 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
15939
15940         * class.c (mono_class_create_generic): Set type_token as well.
15941
15942         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
15943         compatible with MS.
15944
15945 2006-02-02  Martin Baulig  <martin@ximian.com>
15946
15947         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
15948         has never been used so far.
15949
15950 2006-02-02  Martin Baulig  <martin@ximian.com>
15951
15952         * mono-debug-debugger.h: Changed comment at the top of this file;
15953         the header is not installed, but it's safe to #include it from
15954         within the JIT.
15955
15956         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
15957         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
15958
15959 2006-02-02  Martin Baulig  <martin@ximian.com>
15960
15961         * mono-debug.h
15962         (MonoSymbolTable): Removed the `metadata_info' field.
15963
15964         * mono-debug.c
15965         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
15966
15967         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
15968         (mono_debugger_add_builtin_types): Removed.
15969         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
15970         (mono_debugger_create_notification_function): We now operate on a
15971         pre-allocated area; take a `gpointer' and return `void'.
15972
15973         * mono-debug-debugger.c
15974         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
15975         (mono_debugger_add_builtin_types): Removed.
15976
15977 2006-02-02  Martin Baulig  <martin@ximian.com>
15978
15979         * threads.c (mono_debugger_create_all_threads): New public method.
15980
15981 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
15982
15983         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
15984         breaks on several platforms.
15985
15986 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
15987
15988         * assembly.c: the VS.NET build doesn't supply default values for
15989         MONO_ASSEMBLIES and MONO_CFG_DIR.
15990
15991 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15992
15993         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
15994         helper function.
15995
15996         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
15997
15998         * loader.c (method_from_memberref): Fix a warning.
15999
16000         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
16001
16002         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
16003         with explicit layout. Fixes #77433.
16004
16005 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16006
16007         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
16008         max_interface_id is initialized before using it. Fixes #77398.
16009         (ves_icall_Type_GetInterfaces): Ditto.
16010
16011 2006-01-30  Raja R Harinath  <rharinath@novell.com>
16012
16013         * metadata.c (mono_metadata_parse_method_signature_full): Don't
16014         allocate memory for parameter attributes when parsing memberref
16015         signatures.
16016         * loader.c (mono_loader_set_error_method_load): Don't warn.
16017         (method_from_memberref): Ensure MissingMethodException gets thrown
16018         if method is not found.  Make warning more informative.
16019
16020 2006-01-29  Raja R Harinath  <harinath@gmail.com>
16021
16022         Fix #77397
16023         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
16024         return true if is byref.
16025         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
16026         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
16027         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
16028
16029 2006-01-27  Raja R Harinath  <rharinath@novell.com>
16030
16031         Fix tests/find-method.2.il
16032         * loader.c (find_method, find_method_in_class): Remove is_inflated
16033         argument.  Revert 2006-01-18 change.
16034         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
16035         is generic, search for method in its generic definition.
16036         * class.c (mono_class_setup_vtable_general): Print generic
16037         arguments of generic types in debugging printf.
16038
16039 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16040
16041         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
16042
16043         * threads.c (mono_threads_request_thread_dump): New helper function.
16044
16045 2006-01-25  Raja R Harinath  <rharinath@novell.com>
16046
16047         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
16048
16049 2006-01-25  Ankit Jain  <jankit@novell.com>
16050
16051         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
16052         move definition to ..
16053         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
16054         
16055 2006-01-25  Ankit Jain  <jankit@novell.com>
16056             Raja R Harinath  <rharinath@novell.com>
16057
16058         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
16059         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
16060         as necessary.
16061
16062 2006-01-25  Martin Baulig  <martin@ximian.com>
16063
16064         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
16065         `MonoDebuggerThread' into debug-debugger.c.
16066
16067 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16068
16069         * profiler.c: fix printing of data.
16070
16071 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
16072
16073         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
16074           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
16075
16076 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16077
16078         * object.c: fix deadlock related to string interning.
16079
16080 2006-01-23  Martin Baulig  <martin@ximian.com>
16081
16082         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
16083
16084         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
16085
16086 2006-01-23  Martin Baulig  <martin@ximian.com>
16087
16088         * mono-debug.h: Moved the prototypes of some functions which are
16089         used by the JIT here from mono-debug-debugger.h.
16090
16091 2006-01-21  Martin Baulig  <martin@ximian.com>
16092
16093         * Makefile.am: Don't install mono-debug-debugger.h.
16094
16095 2006-01-21  Martin Baulig  <martin@ximian.com>
16096
16097         * mono-debug-debugger.h: Enforce the private status of this header
16098         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
16099         Moved some stuff from mono-debugger-jit-wrapper.h here.
16100
16101 2006-01-20  Raja R Harinath  <rharinath@novell.com>
16102
16103         * class.c (mono_class_from_typeref): Add a sanity test to help
16104         catch lack of assembly load/search hooks.
16105
16106 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
16107
16108         * marshal.c (emit_struct_conv): Relax the fields with same offset
16109         check even more. Fixes #77230.
16110
16111 2006-01-18  Martin Baulig  <martin@ximian.com>
16112
16113         * loader.c (find_method_in_class): Added `gboolean is_inflated'
16114         argument; if false, we compare the uninstantiated signatures.
16115         (method_from_memberref): Compare the uninstantiated signatures;
16116         fixes #76417.
16117
16118 2006-01-18  Robert Jordan  <robertj@gmx.net>
16119
16120         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
16121         Clear the weak link. Fixes bug #77170.
16122
16123         * gc.c (mono_gchandle_free):
16124         Reflect *-gc.c changes (tiny optimization).
16125
16126 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
16127
16128         * metadata.c (mono_metadata_signature_dup): Applied patch from
16129         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
16130         Fixes #77288.
16131
16132 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16133
16134         * marshal.c (emit_struct_conv): Allow fields with the same offset when
16135         marshalling from native to managed code. Fixes #77230.
16136
16137 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16138
16139         * threadpool.c: fix problem (Mac only) when more than one asynchronous
16140         connect. Fixes bug #77020.
16141
16142 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16143
16144         * class.c: fixed id assignement for nested interfaces (bug #77275).
16145         Added also better info for --print-vtable debugging.
16146
16147 2006-01-12  Martin Baulig  <martin@ximian.com>
16148
16149         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
16150         interfaces on-the-fly; fixes #76625.
16151
16152         * class-internals.h
16153         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
16154         don't need that anymore.
16155
16156 2006-01-12  Miguel de Icaza  <miguel@novell.com>
16157
16158         * socket-io.c
16159         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
16160         To avoid initing the nested_classes when not needed I turned the
16161         PeerCredData as a toplevel internal class, as it has to be shared
16162         anyways. 
16163
16164         Fixes the CASA issue.
16165
16166 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16167
16168         * domain.c: Accessors for MonoJitInfo
16169
16170         * profiler-private.h: Add jitinfo to the end jit hook
16171
16172         * profiler.[ch]: Define new hooks, called after jitting which give
16173         the MonoJitInfo that was compiled
16174
16175 2006-01-10  Martin Baulig  <martin@ximian.com>
16176
16177         * class.c (mono_class_setup_events): Add support for generic
16178         classes; fixes #76440.
16179
16180 2006-01-06  Raja R Harinath  <rharinath@novell.com>
16181
16182         Fix #77160.
16183         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
16184         on passed-in method.
16185
16186 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16187
16188         * object.c (mono_runtime_invoke_array): Add Nullable support.
16189
16190         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
16191
16192 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
16193
16194         * file-io.c: Don't consider sockets as directory and avoid an endless
16195         loop. Fix bug #76966.
16196
16197 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16198
16199         * object.c (mono_nullable_init): New helper function.
16200         (mono_nullable_box): Ditto.
16201
16202         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
16203
16204         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
16205
16206         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
16207         
16208 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
16209
16210         * class.c (mono_class_is_assignable_from): Make T assignable to 
16211         Nullable<T>.
16212
16213 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
16214
16215         * appdomain.c: Bump corlib version to 46.
16216         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
16217         serialization purpose) and changed ves_icall_System_Reflection_
16218         Assembly_get_code_base signature to accept a boolean (to escape, or 
16219         not, the assembly code base).
16220
16221 2005-12-23  Dick Porter  <dick@ximian.com>
16222
16223         * icall.c: 
16224         * threads-types.h: 
16225         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
16226         CreateEvent icall now returns "created" boolean parameter.
16227
16228 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16229
16230         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
16231         #76967.
16232
16233         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
16234         when attr_klass is an interface. Fixes #77045.
16235
16236 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
16237
16238         * marshal.c (emit_struct_conv): Fix previous patch.
16239         
16240         * marshal.c (emit_struct_conv): Add a check for fields with the same
16241         offset.
16242
16243 2005-12-20  Raja R Harinath  <rharinath@novell.com>
16244
16245         Fix regression in Mono.C5.
16246         * class.c (mono_class_create_generic): If 'klass' is an interface
16247         set up the interface offsets.
16248         (mono_class_is_assignable_from): Don't throw away generic arguments.
16249
16250 2005-12-19  Raja R Harinath  <rharinath@novell.com>
16251
16252         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
16253         type parameters.
16254
16255 2005-12-15  Raja R Harinath  <rharinath@novell.com>
16256
16257         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
16258         dead store.
16259         (do_mono_metadata_parse_generic_class): Don't pass the current
16260         generic context when parsing the type being instantiated: it
16261         cannot use it, anyway.
16262
16263         * loader.c (method_from_memberref): Don't inflate a signature if
16264         it doesn't contain any type parameters.
16265
16266 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16267
16268         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
16269
16270 2005-12-14  Martin Baulig  <martin@ximian.com>
16271
16272         * class.c
16273         (mono_type_get_name_recurse): Don't return null for type
16274         parameters and open generic classes.
16275         (mono_class_setup_methods): Don't exclude generic instances.
16276         (mono_get_unique_iid): Use different IDs for different
16277         instantiations of the same generic type.
16278         (mono_class_setup_vtable): Only use setup_generic_vtable() for
16279         open generic instances; create a normal vtable for closed generic
16280         instances.
16281         (mono_class_setup_vtable_general): We're now also called for
16282         closed generic instances.
16283
16284         * reflection.c
16285         (mono_reflection_bind_generic_parameters): Correctly use
16286         mono_metadata_lookup_generic_inst() everywhere.
16287
16288 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
16289
16290         * object.c (mono_class_create_runtime_vtable): Call 
16291         mono_class_setup_vtable ().
16292
16293         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
16294         function.
16295         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
16296         #76959.
16297
16298         * loader.c (mono_loader_set_error_type_load): Print the type load
16299         warnings to the console so they are more visible to the user.
16300         (mono_loader_set_error_method_load): Ditto.
16301
16302         * reflection.c (ensure_runtime_vtable): Revert the last change as it
16303         is still broken.
16304         
16305         * reflection.c (ensure_runtime_vtable): Fix build.
16306
16307         * reflection.c (ensure_runtime_vtable): Disable an optimization which
16308         doesn't work in all cases.
16309
16310 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
16311
16312         * object.c (mono_array_new_full): Treat a single dimensional array
16313         with 0 lower bounds as an szarray. Fixes #76973.
16314
16315         * reflection.c (custom_attr_visible): Really fix this.
16316
16317 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
16318
16319         * reflection.c (custom_attr_visible): Allow nested public attributes
16320         as well.
16321
16322         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
16323         interface check.
16324
16325 2005-12-12  Raja R Harinath  <harinath@gmail.com>
16326
16327         * class.c (set_generic_param_owner): Delete.
16328         (mono_class_create_from_typedef): Don't set ->owner field of
16329         generic parameters to "param containers" of enclosing classes.
16330         * reflection.c (mono_reflection_initialize_generic_parameter):
16331         Likewise.
16332
16333 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
16334
16335         * reflection.c (custom_attr_visible): Fix build.
16336
16337 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
16338
16339         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
16340         private attributes.
16341         
16342         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
16343         handling of null parameter defaults.
16344
16345 2005-12-09  Raja R Harinath  <rharinath@novell.com>
16346
16347         * class.c (mono_class_from_generic_parameter): Don't set
16348         klass->generic_container.
16349         (my_mono_class_from_generic_parameter): Likewise.
16350
16351 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16352
16353         * reflection.c (load_public_key): Fix a warning.
16354         (method_encode_code): Fix unaligned accesses.
16355
16356 2005-12-07  Martin Baulig  <martin@ximian.com>
16357
16358         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
16359
16360         * reflection.c
16361         (write_generic_param_entry): Encode our custom attrs.
16362
16363         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
16364
16365 2005-12-07  Martin Baulig  <martin@ximian.com>
16366
16367         * reflection.c (encode_new_constraint): Removed; we don't use the
16368         `NewConstraintAttribute' anymore.
16369
16370 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16371
16372         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
16373         not fire a TypeResolve event when Assembly.GetType () is called.
16374
16375 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16376
16377         Beginning of support for nullable types in the runtime. Parts of
16378         this patch are from Martin.
16379
16380         * appdomain.c (MONO_CORLIB_VERSION): Bump
16381
16382         * domain.c (mono_init_internal): get the nullable type
16383
16384         * class.c (mono_class_is_nullable): New method
16385         (mono_class_get_nullable_param): New mehod
16386         (mono_class_create_generic): In types T? set cast_class to T
16387
16388         * class-internals.h (MonoDefaults): new nullable default class
16389         (mono_class_get_nullable_param, mono_class_get_nullable_param):
16390         new methods.
16391
16392 2005-12-05  Raja R Harinath  <rharinath@novell.com>
16393
16394         * metadata.c (select_container): New.  Refactor code to select the
16395         appropriate GenericContainer given the type of generic parameter
16396         we are looking for.
16397         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
16398         not a MonoGenericContext.  Use select_container.  Update parameters.
16399         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
16400         and MONO_TYPE_MVAR.
16401         (unwrap_arrays): Remove duplicate tests.
16402         (find_generic_param): Rename from 'has_same_context'.  Now walks a
16403         generic instantiated class to find any arguments that are generic
16404         parameters.
16405         (mono_type_create_from_typespec_full): Use find_generic_param to
16406         avoid evicting some generic instantiations from the typespec
16407         cache.
16408
16409 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
16410
16411         * reflection.c: fixed writing of doubles on ARM FPA.
16412
16413 2005-12-02  Robert Jordan  <robertj@gmx.net>
16414
16415         * icall.c: Fixed EventInfo.ReflectedType (#76829).
16416
16417 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16418
16419         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
16420         least on SUSE 10 they are not the same (on debian, they are just the
16421         same thing).
16422
16423 2005-12-01  Raja R Harinath  <rharinath@novell.com>
16424
16425         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
16426         DeclaringType for VARs and MVARs.
16427         * class.c (set_generic_param_owner): Fix initialization of owner
16428         fields.
16429
16430 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
16431
16432         * icall.c: fixed Enum.ToObject() to correctly convert the values.
16433
16434 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16435
16436         * threadpool.c: workaround for a bug that shows up on the Mac:
16437         select()+connect() on a blocking socket is not like it should
16438         be, so we proceed to connect() in that case, wasting the I/O
16439         threadpool thread until connect succeedes. Fixes bug #75436.
16440
16441 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16442
16443         * threadpool.c: fix typo when setting file descriptor states.
16444
16445 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16446
16447         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
16448         * metadata.c (mono_metadata_parse_method_signature_full): Don't
16449         create a temporary signature container.
16450         (mono_metadata_parse_generic_param): Update to changes.
16451         (mono_type_create_from_typespec_full): Update to changes.
16452         * loader.c (method_from_memberref): Don't use a
16453         MonoGenericContainer while parsing a memberref signature.
16454         (method_from_methodspec): Remove dead-store of the 'container'
16455         variable.  It's overwritten before use.
16456
16457         * metadata.c (mono_type_create_from_typespec_full): Make debugging
16458         checks tighter.
16459         (mono_metadata_parse_generic_param): Likewise.
16460         * loader.c (find_method_in_class): Does not need a
16461         MonoGenericContainer.  Use 'mono_method_signature' rather than
16462         'mono_method_signature_full'.
16463         (find_method, mono_get_method_constrained, method_from_memberref):
16464         Update to changes.
16465
16466         * metadata.c (mono_type_create_from_typespec_full): Ensure that
16467         owner-less generic-parameters are never evicted from the typespec
16468         cache.
16469
16470         * loader.c (method_from_memberref): Don't use the current context
16471         when parsing signatures.
16472         (method_from_methodspec, mono_get_method_from_token): Update to changes.
16473
16474         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
16475         side-effects in g_assert.
16476         * loader.c (mono_get_method_from_token): Resolve klass earlier so
16477         that we don't potentially lose information.
16478
16479 2005-11-26  Dick Porter  <dick@ximian.com>
16480
16481         * icall.c:
16482         * threads.c: icalls to implement basic (ie, not named)
16483         System.Threading.Semaphore.
16484
16485 2005-11-24  Dick Porter  <dick@ximian.com>
16486
16487         * process.c
16488         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
16489         Use GetProcessId() if it's available.
16490
16491 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
16492
16493         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
16494
16495 2005-11-23  Raja R Harinath  <rharinath@novell.com>
16496             Ankit Jain  <jankit@novell.com>
16497
16498         * loader.c (mono_get_method_from_token): Initialize 'method' field
16499         of all generic parameters before parsing the signature.  Remove
16500         code that "fixed"-up MVAR references.
16501
16502 2005-11-23  Ankit Jain  <jankit@novell.com>
16503
16504         * metadata.c (mono_metadata_has_generic_params):
16505         (mono_metadata_load_generic_param_constraints):
16506         (mono_metadata_load_generic_params): Move duplicate code ...
16507         (mono_metadata_get_generic_param_row): ... here. Returns the
16508         first row-id in GenericParam table for a given owner (token).
16509         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
16510         prototype.
16511
16512 2005-11-23  Raja R Harinath  <rharinath@novell.com>
16513             Ankit Jain  <jankit@novell.com>
16514
16515         * metadata.c (mono_metadata_class_equal): Pass signature_only when
16516         comparing VARs too.
16517         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
16518         type->data.generic_param only if the type is an MVAR.
16519         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
16520         leak owner-less VARs and MVARs into managed space.
16521
16522 2005-11-21  Martin Baulig  <martin@ximian.com>
16523
16524         * class-internals.h
16525         (MonoMethod): Moved the `generic_container' here from
16526         `MonoMethodNormal' since we now also need it for
16527         `MonoMethodPInvoke';
16528         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
16529         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
16530         an union containing both `MonoMethodNormal' and
16531         `MonoMethodPInvoke'.
16532
16533         * loader.c
16534         (mono_get_method_from_token): Allow implementing generic methods
16535         as interncalls.
16536
16537         * threads.c
16538         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
16539         icall.
16540
16541 2005-11-17  Dick Porter  <dick@ximian.com>
16542
16543         * icall.c: 
16544         * process.h: 
16545         * process.c: Split the Process Start_internal icall into
16546         ShellExecuteEx_internal and CreateProcess_internal, which are
16547         called depending on whether UseShellExecute is true.  Fixes bug
16548         76670.
16549
16550         * appdomain.c (MONO_CORLIB_VERSION): Incremented
16551
16552 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16553
16554         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
16555         'msize' parameters, use the information in 'mspec' instead.
16556         (emit_object_to_ptr_conv): Ditto.
16557
16558         * marshal.c (emit_struct_conv): Handle explicit layout structs with
16559         fields out of order. Fixes #76733.
16560
16561 2005-11-17  Ankit Jain  <jankit@novell.com>
16562
16563         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
16564
16565 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
16566
16567         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
16568           bug #76575.
16569
16570 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
16571
16572         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
16573         for types with non-auto layout. Fixes #76717.
16574
16575 2005-11-16  Ankit Jain  <jankit@novell.com>
16576
16577         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
16578         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
16579         if generic_context is null.
16580           (mono_metadata_generic_param_equal): param->owner can be null.
16581           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
16582         null.
16583
16584 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
16585
16586         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
16587         the correct value.
16588
16589 2005-11-15  Martin Baulig  <martin@ximian.com>
16590
16591         * object.c (set_value): Use mono_class_from_mono_type() instead of
16592         the hack for generic instances; fixes #76136.
16593
16594 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
16595
16596         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
16597         fields.
16598
16599         * image.c (load_metadata_ptrs): Initialize the new fields.
16600
16601         * reflection.c (create_dynamic_mono_image): Ditto.
16602
16603         * reflection.c (build_compressed_metadata): Use the new fields.
16604
16605         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
16606         icall.
16607
16608         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
16609         icall.
16610         
16611 2005-11-15  Ankit Jain  <jankit@novell.com>
16612             Raja R Harinath  <harinath@gmail.com>
16613
16614         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
16615         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
16616         new per-generic_container cache if the cached MonoType's context matches
16617         the current context.
16618           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
16619         to the expected context.
16620           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
16621
16622 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16623
16624         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
16625         we changed the signature of an icall.
16626         * icall.c: Modify to mono_double_ParseImpl return true/false 
16627         depending on the success, instead of throwing the exception. This will
16628         help us in Double.TryParse methods.
16629         
16630 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
16631
16632         * marshal.c (emit_marshal_object): Throw an exception when
16633         marshalling 'object' instead of crashing. Fixes #76696.
16634
16635 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16636
16637         * class-internals.h: Add prototype for mono_type_get_full_name ().
16638
16639 2005-11-11  Dick Porter  <dick@ximian.com>
16640
16641         * threads.c (mono_thread_manage): Make sure the main thread has
16642         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
16643
16644 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16645
16646         * loader.c (mono_loader_set_error_type_load): Log a warning to the
16647         console about the missing type.
16648         (mono_loader_set_error_method_load): Ditto.
16649
16650 2005-11-09  Miguel de Icaza  <miguel@novell.com>
16651
16652         * mono-config.c (mono_get_config_dir): Set the system defaults if
16653         none is specified.
16654
16655         * assembly.c (mono_set_dirs): New API entry point to set the
16656         assembly and the config directory in one call
16657
16658 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
16659
16660         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
16661         the ftnptr was created from a delegate in a domain other than the
16662         current domain. Fixes #75377.
16663
16664         * exception.h exception.c: Add mono_get_exception_not_supported ().
16665
16666 2005-11-08  Martin Baulig  <martin@ximian.com>
16667
16668         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
16669
16670 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
16671
16672         * security-manager.h: Added definitions to deal with strongname key 
16673         pairs bigger (and smaller) than 1024 bits.
16674         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
16675         adjust wrt the public key length being used.
16676
16677 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
16678
16679         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
16680           Windows build (r51396-51397).
16681
16682 2005-11-03  Martin Baulig  <martin@ximian.com>
16683
16684         * class.c (mono_class_setup_vtable_general): Also add generic
16685         methods to the vtable; fixes #76581.
16686
16687 2005-11-01  Miguel de Icaza  <miguel@novell.com>
16688
16689         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
16690         sure that we lookup GetString method from the System.Text.Encoding
16691         class, not the derived class or we get an empty method.
16692
16693         Fixed class #76612.
16694
16695 2005-10-25  Miguel de Icaza  <miguel@novell.com>
16696
16697         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
16698         if it has been previously set (embedders). 
16699
16700         Make mono_set_rootdir available also on Unix.
16701
16702 005-10-24  Robert Jordan  <robertj@gmx.net>
16703
16704         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
16705
16706 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16707
16708         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
16709         only calls which are made to native code use this flag.
16710
16711         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
16712
16713 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16714
16715         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
16716         Add support for FieldBuilders.
16717
16718 2005-10-29  Martin Baulig  <martin@ximian.com>
16719
16720         * mono-debug.c
16721         (mono_debug_using_mono_debugger): New public method; returns
16722         whether we're running inside the debugger.
16723
16724 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
16725
16726         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
16727         for Method/Constructor/FieldBuilders.
16728
16729 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16730
16731         * reflection.c (module_add_cattrs): Save custom attributes for global methods
16732         and fields as well.
16733
16734 2005-10-26  Martin Baulig  <martin@ximian.com>
16735
16736         * mono-debug-debugger.c
16737         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
16738
16739 2005-10-24  Raja R Harinath  <harinath@gmail.com>
16740
16741         * icall.c (base64_to_byte_array): Don't pass an out-of-range
16742         integer to isspace.
16743
16744 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16745
16746         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
16747         when passing valuetypes byref. Fixes #76502.
16748
16749 2005-10-19  Jackson Harper  <jackson@ximian.com>
16750
16751         * profiler.c: Don't put a . in front of types that are not in a
16752         namespace.
16753
16754 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16755
16756         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
16757
16758 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
16759
16760         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
16761         #76436.
16762         (mono_marshal_get_ldflda_wrapper): Fix a warning.
16763
16764 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16765
16766         * assembly.c metadata-internals.h icall.c: Define an additional
16767         parameter for mono_assembly_name_parse_full, so we can avoid creating
16768         S.R.AssemblyName.Version when no version info wasn't passed.
16769         
16770 2005-10-09  Miguel de Icaza  <miguel@novell.com>
16771
16772         * class.c (mono_type_get_full_name): Reimplement method that was
16773         removed. 
16774
16775         * image.c: Some docs
16776
16777 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16778
16779         * profiler.c (output_newobj_profile): Fix printing of Total memory
16780         on x86.
16781
16782 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16783
16784         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
16785
16786 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
16787
16788         * threads.c: remove debug output.
16789
16790 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16791
16792         * threads.c (mono_thread_manage): Fix crashes if more than 64
16793         threads need to be aborted. Hopefully fixes #75899.
16794
16795         * assembly.c (mono_stringify_assembly_name): New helper function.
16796
16797         * class.c: Use mono_stringify_assembly_name instead of the similar
16798         static function.
16799
16800         * assembly.h assembly.c: Add support for calling a postload search 
16801         hook if an assembly cannot be loaded.
16802
16803         * appdomain.c: Register new search hooks which call the AssemblyResolve
16804         events in AppDomain. Fixes #75231
16805
16806 2005-10-07  Martin Baulig  <martin@ximian.com>
16807
16808         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
16809         methods without debug info.
16810
16811 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16812
16813         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
16814         wrappers.
16815
16816 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16817
16818         * file-io.c: now that we return symlinks, use lstat and, when the file
16819         is a symbolic link, stat, to get the file attributes. Also avoid the
16820         conversion to/from utf16/external.
16821
16822 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
16823
16824         * class.c (mono_class_layout_fields): Compute klass->has_references
16825         correctly if an embedded valuetype is not yet initialized. Fixes
16826         #76331.
16827
16828 2005-10-04  Martin Baulig  <martin@ximian.com>
16829
16830         * metadata.c
16831         (mono_metadata_load_generic_param_constraints): New public
16832         function; splitted the constraints loading out from
16833         mono_metadata_load_generic_params().
16834
16835         * class.c (mono_class_create_from_typedef): Call
16836         mono_metadata_load_generic_param_constraints() after setting up
16837         the type and creating our parent; fixes #75329.
16838
16839 2005-10-04  Martin Baulig  <martin@ximian.com>
16840
16841         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
16842         non-dynamic parent classes.
16843
16844 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
16845
16846         * file-io.c : win32 build fix (ETXTBSY seems not found).
16847
16848 2005-10-04  Martin Baulig  <martin@ximian.com>
16849
16850         * reflection.c
16851         (mono_image_get_methodspec_token): Make the cache actually work;
16852         fixes #75974.
16853
16854 2005-10-04  Martin Baulig  <martin@ximian.com>
16855
16856         * class.c (mono_class_name_from_token): Removed the unneccessary
16857         `MonoGenericContext *' argument.
16858
16859 2005-10-04  Martin Baulig  <martin@ximian.com>
16860
16861         * loader.c
16862         (method_from_methodspec): Make the caching work again; fixes the
16863         performance regression from #76262.
16864
16865 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16866
16867         * file-io.c:
16868         * file-io.h:
16869         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
16870         GetFileSystemEntries that performs the same work but without going
16871         into io-layer, locking, etc.
16872
16873 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16874
16875         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
16876         ThreadState_Stopped as well. Fixes #76047.
16877
16878 2005-09-29  Martin Baulig  <martin@ximian.com>
16879
16880         * class.c
16881         (inflate_generic_context): If the new context has a `gmethod', set
16882         its `container' that that gmethod's `container'.
16883
16884         * metadata.c
16885         (mono_metadata_parse_generic_param): Simplify things;
16886         `generic_container = generic_context->container;' is just fine.
16887
16888         * loader.c (method_from_methodspec): Code cleanups.
16889
16890 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16891
16892         * decimal.c: fix warning (and let gcc generate correct
16893         code on ARM with optimizations).
16894
16895 2005-09-28  Martin Baulig  <martin@ximian.com>
16896
16897         * loader.c
16898         (method_from_memberref): Added `MonoGenericContext *class_context'
16899         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
16900         (method_from_methodspec): If we're a memberref, use the enclosing
16901         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
16902
16903 2005-09-28  Martin Baulig  <martin@ximian.com>
16904
16905         * object.c (mono_runtime_invoke_array): Added support for
16906         MONO_TYPE_GENERICINST; fixes #75917.
16907
16908 2005-09-27  Martin Baulig  <martin@ximian.com>
16909
16910         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
16911         `k->byval_arg.type' to determine the actual type.
16912
16913         * loader.c (method_from_methodspec): Removed some hacks.
16914
16915 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16916
16917         * class-internals.h (mono_field_is_deleted): Do the test for
16918         rtspecialname before we check the actual name of the field. This
16919         prevents us from dereferencing a pointer into the string table,
16920         saving us from accessing a few pages
16921
16922         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16923         macros. This will allow a deadlock debugger to easily be plugged
16924         in.
16925
16926 2005-09-27  Martin Baulig  <martin@ximian.com>
16927
16928         * loader.c (method_from_methodspec): Create a "signature"
16929         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
16930
16931 2005-09-27  Martin Baulig  <martin@ximian.com>
16932
16933         * class.c
16934         (inflate_generic_class): Correctly set the new context's
16935         container.
16936
16937         * loader.c
16938         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
16939         instead of a `MonoGenericContext *'.
16940         (mono_method_signature_full): Take a `MonoGenericContainer *'
16941         instead of a `MonoGenericContext *'.
16942
16943         * metadata.c
16944         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
16945         instead of a `MonoGenericContext *'.
16946         (mono_metadata_parse_method_signature_full): Likewise.
16947
16948 2005-09-26  Martin Baulig  <martin@ximian.com>
16949
16950         * class.c
16951         (mono_class_from_generic_parameter): Set `klass->generic_container'
16952         (mono_class_from_generic_parameter): Likewise.
16953         (mono_bounded_array_class_get): We inherit the generic container
16954         from the element class.
16955
16956         * loader.c
16957         (find_method, find_method_in_class): Take a `MonoGenericContext *'
16958         argument rather than computing it here.
16959         (method_from_memberref): Correctly set the generic context before
16960         parsing the signature.  Fixes #75681.
16961
16962 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16963
16964         * object.c (mono_class_has_special_static_fields): Fix warnings.
16965
16966 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16967
16968         * assembly.c: Add parse_public_key function, to
16969         par the public keys. Also added mono_assembly_name_parse_full,
16970         to define it the parsed key should be freed or not.
16971         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
16972         to parse a long format assembly name.
16973         * metadata-internals.h: Keep mono_assembly_name_parse_full as
16974         private, since calling it to preserve the key requires
16975         freeing it manually.
16976         
16977 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
16978
16979         * locales.c : removed HAVE_ICU part.
16980
16981 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16982
16983         * object.c (mono_class_create_runtime_vtable): Avoid calling 
16984         field_is_special_static if the klass has no special static fields.
16985
16986         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
16987         (MonoCachedClassInfo): Likewise.
16988
16989         * object.c (mono_class_has_special_static_fields): New helper function.
16990
16991 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16992
16993         * class.c (mono_class_create_from_typedef): Don't call 
16994         interfaces_from_typedef_full for enums.
16995         (mono_class_create_from_typedef): Compute the base types of enums directly
16996         without calling mono_class_setup_fields ().
16997         (mono_class_find_enum_basetype): New helper function.
16998
16999         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
17000         one place inside the string heap.
17001         
17002 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
17003
17004         * class.c: locking fixes, code cleanups, some docs added.
17005         Allocate some data structures in the image mempool.
17006
17007 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17008
17009         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
17010         the example code.
17011         
17012 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
17013
17014         * class-internals.h, class.c, reflection.c: reduce memory taken by
17015         MonoClass.
17016
17017 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
17018
17019         * metadata.c, metadata.h, loader.h: documentation updates, code and
17020         API cleanups.
17021
17022 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17023
17024         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
17025         the example code.
17026
17027         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
17028         page faults caused by the runtime while reading metadata.
17029
17030 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17031
17032         * socket-io.c: the field names were changed 3 months ago and no one
17033         realized until bug #76077 got filed!
17034
17035 2005-09-20  Martin Baulig  <martin@ximian.com>
17036
17037         * icall.c (assembly_icalls): Removed some unused debugger icalls.
17038
17039 2005-09-20  Martin Baulig  <martin@ximian.com>
17040
17041         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
17042         write the rank into the class entry.
17043
17044 2005-09-20  Martin Baulig  <martin@ximian.com>
17045
17046         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
17047
17048 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
17049
17050         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17051
17052         * icall.c (custom_attrs_defined_internal): New icall.
17053
17054         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
17055         function.
17056         (mono_custom_attrs_construct_by_type): New helper function.
17057
17058 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
17059
17060         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
17061         terminate the resulting string. Fixes #76123.
17062
17063 2005-09-16  Martin Baulig  <martin@ximian.com>
17064
17065         * mono-debug.c
17066         (mono_debug_add_method): Ignore inflated methods for the moment.
17067
17068 2005-09-14  Martin Baulig  <martin@ximian.com>
17069
17070         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
17071
17072 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
17073
17074         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
17075         return a success/failure indication.
17076         (mono_metadata_interfaces_from_typedef_full): Ditto.
17077         (get_constraints): Ditto.
17078
17079 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17080
17081         * marshal.c (emit_marshal_array): Fix handling of null arrays.
17082         
17083         * marshal.c (emit_marshal_array): Add support for returning string
17084         arrays from delegates. Fixes #76063.
17085
17086         * marshal.c: Use the emit_ldloc/stloc macros where possible.
17087
17088 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17089
17090         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
17091         icall.
17092
17093 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17094
17095         * reflection.c icall.c: Fix after mono_get_exception_type_load
17096         signature change.
17097
17098         * assembly.c (mono_assembly_get_assemblyref): New helper function.
17099         (mono_assembly_load_reference): Use the new helper.
17100
17101         * class-internals.h (MonoLoaderError): New structure containing 
17102         information about type loading errors.
17103
17104         * class-internals.h loader.c: Add APIs to store per-thread loader
17105         error information.
17106
17107         * loader.c class.c: Set the loader error if needed.
17108
17109         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
17110
17111 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
17112
17113         * decimal.c: fixed to handle the broken ARM fp format.
17114
17115 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
17116
17117         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
17118         broken.
17119
17120 2005-09-06  Martin Baulig  <martin@ximian.com>
17121
17122         * domain.c (supported_runtimes): Added v2.0.50727.
17123
17124 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
17125
17126         * culture-info.h: reduce the size of some structures.
17127
17128 2005-09-05  Martin Baulig  <martin@ximian.com>
17129
17130         Reflect latest API changes in the August CTP.
17131
17132         * icall.c
17133         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
17134         ("MonoType.HasGenericArguments"): Removed.
17135         ("MonoMethod.BindGenericParameters"): Renamed to
17136         "MakeGenericMethod".
17137         ("MethodBuilder.BindGenericParameters"): Renamed to
17138         "MakeGenericMethod".    
17139
17140 2005-09-05  Martin Baulig  <martin@ximian.com>
17141
17142         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
17143
17144 2005-09-05  Martin Baulig  <martin@ximian.com>
17145
17146         Applying a patch from Michal Moskal <malekith@nemerle.org>.
17147
17148         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
17149         generic_container is non-NULL.
17150
17151 2005-09-05  Martin Baulig  <martin@ximian.com>
17152
17153         Applying a patch from Michal Moskal <malekith@nemerle.org>.
17154
17155         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
17156
17157 2005-08-29  Michal Moskal  <malekith@nemerle.org>
17158
17159         * reflection.c (encode_locals,
17160         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
17161         for large generic types.
17162
17163 2005-09-05  Martin Baulig  <martin@ximian.com>
17164
17165         Applying a patch from Michal Moskal <malekith@nemerle.org>.
17166
17167         * class.c (mono_dup_array_type): New public method.
17168         (mono_metadata_signature_deep_dup): New public method.
17169         (dup_type): Correctly duplicate array and function types.
17170
17171 2005-09-05  Martin Baulig  <martin@ximian.com>
17172
17173         Applying a patch from Michal Moskal <malekith@nemerle.org>.
17174
17175         * reflection.c (get_default_param_value_blobs): Handle generic types
17176         and generic methods.
17177
17178 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
17179
17180         * class.c: Fixed error reporting (method/class were inversed) for 
17181         inheritance demands.
17182         * security-manager.c|h: Added the AppDomain when calling the managed
17183         System.Security.SecurityManager.InheritanceDemand method.
17184
17185 2005-09-01  Raja R Harinath  <rharinath@novell.com>
17186
17187         * reflection.c (encode_marshal_blob): 'marshaltype' and
17188         'marshaltyperef' are alternate sources for the custom marshaler
17189         name.
17190
17191 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
17192
17193         * class.c: fix creation of array classes with rank == 1
17194         (patch by Ankit Jain <jankit@novell.com>).
17195
17196 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
17197
17198         * object.c: fix check for creating the bound data for arrays vs
17199         szarrays.
17200
17201 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17202
17203         * object.c: configuration file name is now based on the executable name,
17204         not the image name. Fixes bug #75931.
17205
17206 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17207
17208         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
17209         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
17210
17211 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17212
17213         * rand.c: Use wincrypt.h instead of WinCrypt.h.
17214
17215 2005-08-24  Ankit Jain  <jankit@novell.com>
17216             Raja R Harinath  <rharinath@novell.com>
17217
17218         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
17219           called by it recursively.
17220           (mono_class_init): Remove special case in pending_init handling, since it's
17221           superseded by the fix to mono_class_from_typeref.
17222
17223 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17224
17225         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
17226         BROKEN_THREAD_START stuff.
17227
17228 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17229
17230         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
17231         trampoline.
17232
17233         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
17234         
17235         * object.c (mono_delegate_ctor): Replace the original function address with
17236         a delegate trampoline.
17237
17238 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
17239
17240         * icall.c: add boolean argument to base64_to_byte_array and 
17241         InternalFromBase64String to control whether a whitespace-only string
17242         is allowed (or should casue a FormatException to be thrown). We need
17243         this as the behavior has changed between MS.NET 1.x and 2.0, and we
17244         to match the MS behaviour in both profiles.
17245         * appdomain.c: Bump corlib version.
17246
17247 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17248
17249         This patch implements a big portion of publisher policy
17250         support, used to bind assembly versions and redirect
17251         one assembly from version A to version B.
17252
17253         * assembly.c:
17254         New GSList loaded_assembly_bindings, for storing the cached
17255         assembly bindings.
17256         (assembly_binding_maps_name): New static function for checking if a 
17257         assembly binding information maps an assembly name.
17258         (mono_assembly_binding_info_free): New function for freeing
17259         assembly binding information resources.
17260         (get_publisher_policy_info): New static function for retrieving 
17261         assembly binding information from a MonoImage.
17262         (compare_versions): New static function for comparing an assembly
17263         binding information data and the version of an assembly name.
17264         (check_policy_versions): New static function for checking if an
17265         assembly binding info mapping an assembly name is valid for it.
17266         (mono_assembly_load_publisher_policy): New static function for
17267         loading the 'policy.major.minor.MyAssembly' image for an assembly
17268         with an assembly name 'aname'.
17269         (mono_assembly_bind_version): New static function for updating
17270         assembly redirection.
17271         (mono_assembly_apply_binding): New static function for applying
17272         assembly binding.
17273         (search_binding_loaded): New static function for searching 
17274         loaded assembly binding infos in the cache domain.
17275         (mono_assembly_load_full): Don't apply assembly binding for
17276         reflection only assemblies.
17277
17278         * metadata-internals.h: Add MonoAssemblyBindingInfo,
17279         which contains information about assembly binding. Also
17280         declare signature for mono_config_parse_publisher_policy ()
17281         function, used to retrieve pub policy info.
17282         
17283         * mono-config.c:
17284         (publisher_policy_start): New static function used to parse publisher 
17285         policy config files.
17286         (publisher_policy_parser): New static MonoParseHandler containing 
17287         the functions used when parsing config files.
17288         (mono_config_parse_publisher_policy): New function for parsing
17289         publisher policy files.
17290         
17291 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17292
17293         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
17294
17295         * marshal.c (mono_delegate_free_ftnptr): Ditto.
17296
17297         * object.c (mono_get_addr_from_ftnptr): New helper function.
17298
17299         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
17300
17301         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17302
17303 2005-08-19  Dick Porter  <dick@ximian.com>
17304
17305         * threads.c, threads.h, appdomain.c, appdomain.h,
17306         profiler-private.h, monitor.c, object.c, object-internals.h,
17307         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
17308         store the thread ID, so it can hold a 64 bit value if needed.
17309
17310 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17311
17312         * reflection.c (mono_reflection_create_dynamic_method): Store the
17313         handle class into the method references as well so ldtoken works in
17314         dynamic methods.
17315
17316         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
17317         types.
17318
17319 2005-08-19  Ankit Jain <jankit@novell.com>
17320
17321         Fix #75847.
17322         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
17323           here rather than using the method signature of a arbitrary function
17324           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
17325           two arguments.
17326           Hack done with Harinath.
17327
17328 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17329
17330         * threadpool.c: disable printing stack traces when we get a exception
17331         in a threadpool thread. I need to do more testing to figure out which
17332         cases actually print this. Fixes bug #75828.
17333
17334 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17335
17336         * icall.c: there might be ignored whitespace after the last '='. This
17337         fixes length computation and bug #75840.
17338
17339 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
17340
17341         * assembly.c (mono_assembly_load_full): Consider .exe extension as
17342         well. Fixes #75809.
17343
17344         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
17345         #75784.
17346         
17347         * reflection.c (create_custom_attr_data): Ditto.
17348
17349 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
17350
17351         * locales.c, culture-info.h : removed RegionLCIDMap.
17352         * culture-info-tables.h : regenerated.
17353
17354 2005-08-16  Martin Baulig  <martin@ximian.com>
17355
17356         * class.c (mono_type_get_name_recurse): Small fix.
17357
17358 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
17359
17360         * locales.c : indentation fixie.
17361
17362 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
17363
17364         * object-internals.h,
17365           locales.h,
17366           locales.c,
17367           culture-info.h,
17368           icall.c : added RegionInfo table support.
17369         * culture-info-table.h : regenerated for region support.
17370
17371 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
17372
17373         * reflection.c (resolve_object): handle all kinds of MonoMethod
17374         including generic ones
17375
17376 2005-08-12  Ankit Jain <jankit@novell.com>
17377
17378         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
17379           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
17380
17381 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
17382
17383         * process.c: Don't close a thread handle when it's NULL. This is a
17384         workaround for bug #75733.
17385
17386 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17387
17388         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
17389
17390 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
17391
17392         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
17393
17394 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17395
17396         * threadpool.c: if a work item in the thread pool has a callback that
17397         catches a exception, don't propagate it after invoking the callback.
17398         Fixes bug #75336.
17399
17400 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17401
17402         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
17403
17404         * class-internals.h (MonoCachedClassInfo): Add some new fields.
17405
17406         * class.c (mono_class_init): Load field info lazily in the AOT case.    
17407
17408         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
17409
17410 2005-08-03  Ankit Jain  <jankit@novell.com>
17411
17412         Fix #75683.
17413         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
17414           PInvoke calling convention is 0.
17415
17416 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
17417
17418         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
17419         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
17420
17421 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
17422
17423         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
17424         to handle threads not started by the GC (patch by Michael Meeks
17425         <michael.meeks@novell.com>).
17426
17427 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
17428
17429         * reflection.c: Make buffer used in emitting types larger for some
17430         big generic types (patch by Michal Moskal).
17431
17432 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17433
17434         * mono-debug.c: Fix some (not all) alignment problems.
17435
17436 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17437
17438         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
17439         Invoke mono_image_load_from_data_full passing the refonly
17440         parameter.
17441
17442         * assembly.c
17443         (mono_assembly_open_from_bundle): Add the refonly argument, 
17444         in order to pass it to other methods it calls to.
17445         (do_mono_assembly_open): Add the refonly argument, in order 
17446         to pass it to other methods it calls to.
17447         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
17448         the refonly parameter to it.
17449
17450         * image.c: Add loaded_images_refonly_hash and
17451         loaded_images_refonly_guid_hash to cache the reflection
17452         only loaded images.
17453         (mono_images_init): Initialize the hash tables used for
17454         caching the reflection only images.
17455         (load_modules): Invoke mono_image_open_full passing the refonly
17456         parameter to load the modules the correct way.
17457         (build_guid_table): Add the refonly argument, to re-build the 
17458         correct hash table.
17459         (do_mono_image_open): Added the refonly argument, in order to
17460         define it for the loaded image.
17461         (mono_image_loaded_full): New function, which receives an
17462         additional parameter to look for the image in the refonly or
17463         non-refonly section.
17464         (mono_image_loaded): Updated, using mono_image_loaded_full.
17465         (mono_image_loaded_by_guid_full): The same case that happens
17466         with mono_image_loaded_full.
17467         (mono_image_loaded_by_guid): Likewise.
17468         (register_image): Use the ref_only variable inside MonoImage
17469         to decide in which hash table store the current image.
17470         (mono_image_open_from_data_full): Rename
17471         mono_image_open_from_data to mono_image_open_from_data_full,
17472         adding the refonly argument, to define the ref_only variable 
17473         inside MonoImage.
17474         (mono_image_open_from_data): Return 
17475         mono_image_open_from_data_full.
17476         (mono_image_open_full): Rename mono_image_open to
17477         mono_image_open_full, receiving the new refonly argument,
17478         to pass it to inner methods.
17479         (mono_pe_file_open): Update this function, to open
17480         a MonoImage as a non-refonly image.
17481         (mono_image_close): Use the refonly variable inside
17482         MonoImage to remove the image from the correct caches.
17483
17484         * image.h: Add the signatures of mono_image_open_full,
17485         mono_image_open_from_data_full, mono_image_loaded_full,
17486         mono_image_loaded_by_guid_full.
17487
17488         * metadata-internals.h: Add the ref_only field to 
17489         MonoImage.
17490         
17491 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17492
17493         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
17494         Fix the last behavior, which used to load the assemblies and
17495         extract MonoReflectionAssemblyName information, instead of
17496         extract it from the metadata tables. Needed for Reflection
17497         Only assemblies.
17498         
17499 2005-07-29  Martin Baulig  <martin@ximian.com>
17500
17501         * mono-debug-debugger.c
17502         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
17503         not initialized.
17504
17505         * mono-debug.c
17506         (mono_debug_address_from_il_offset): Check whether we have
17507         debugging support before attempting to take the lock.
17508         (mono_debug_source_location_from_address): Likewise.
17509         (mono_debug_source_location_from_il_offset): Likewise.
17510         (mono_debug_il_offset_from_address): Likewise.
17511         (mono_debug_address_from_il_offset): Likewise.
17512
17513 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
17514
17515         * class.c (mono_class_from_name_case): Add support for dynamic images.
17516         Fixes #75650.
17517
17518         * object.c (mono_class_compute_gc_descriptor): Add a workaround
17519         for #75479.
17520
17521 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17522         
17523         * reflection.c (mono_method_get_object): Fix warning.
17524
17525 2005-07-28  Martin Baulig  <martin@ximian.com>
17526
17527         * mono-debug.c
17528         (mono_debug_add_wrapper): Also write the wrapper type.
17529
17530 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17531
17532         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
17533         
17534         * class.c (mono_class_init): Avoid reading nested classes if the AOT
17535         data indicates the class has none.
17536
17537 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
17538
17539         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
17540         loader lock with the debugger lock. Prevents deadlocks for beagle.
17541
17542         Beagle can now run on an smp box for a weekend without any
17543         issues. Woohoo!
17544
17545 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
17546
17547         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
17548         in a module. Fixes #75629.
17549
17550 2005-07-26  Martin Baulig  <martin@ximian.com>
17551
17552         * mono-debug.c (mono_debug_add_wrapper): New static method.
17553         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
17554         interncall or a wrapper.
17555
17556         * mono-debug.h (MonoDebugWrapperData): New public typedef.
17557         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
17558         (MONO_DEBUGGER_VERSION): Bump to 51.
17559
17560         * mono-debug-debugger.c
17561         (mono_debugger_add_type): Removed this empty function.
17562         (mono_debugger_add_method): Likewise.
17563
17564 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17565
17566         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
17567         before accessing method->slot.
17568
17569 2005-07-21  Jb Evain  <jbevain@gmail.com>
17570
17571         * reflection.c (method_encode_clauses/class): Handle filters clauses.
17572         Fixes #75010.
17573
17574 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17575
17576         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
17577         #75587.
17578
17579 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17580
17581         * image.h image.c: Add mono_image_get_guid () API function.
17582
17583 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
17584
17585         There were issues when multiple threads tried to load
17586         assemblies. A deadlock was created between assemblies_mutex and
17587         mono_domain_assemblies_lock. This fixes the issue by making the
17588         assembly ref counting be lock free. See bug 75586.
17589         
17590         * image.c (mono_image_close): The add ref function here was using
17591         Interlocked operations while the unref was using a mutex and a
17592         --. I don't think this was ever a bug that would be exposed in a
17593         non-pendantic way (ie, by an embedder doing a ref on one thread
17594         and an unref on another), but for the sake of correctness, this is
17595         now Interlocked.
17596
17597         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
17598         (mono_assembly_load_reference): Call mono_assembly_addref rather
17599         than touching the refcount ourselves.
17600         (mono_assembly_close): Use InterlockedDecrement to unref the
17601         assembly. Don't acquire the lock unless it is actually needed.
17602
17603 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
17604
17605         * class.c (mono_class_layout_fields): Fix calculation of has_references
17606         for generic types.
17607
17608 2005-07-12  Martin Baulig  <martin@ximian.com>
17609
17610         Applying a patch from Michal Moskal <malekith@nemerle.org>.
17611
17612         * metadata.c
17613         (mono_type_hash): Provide better hashing for generic instances.
17614         (mono_generic_inst_hash): Improve hashing.
17615         (mono_generic_class_hash): Likewise.
17616
17617         * reflection.c (mymono_metadata_type_hash): Improve hashing for
17618         generic instances.
17619
17620 2005-07-12  Martin Baulig  <martin@ximian.com>
17621
17622         * reflection.c (mono_reflection_create_runtime_class): Remove the
17623         hack for generic type definitions and non-`Run' assemblies.
17624         (mono_reflection_bind_generic_parameters): Also use
17625         `klass->wastypebuilder' to check for TypeBuilders.
17626
17627 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
17628
17629         * class.c (mono_class_layout_fields): Fix calculation of has_references
17630         for generic types.
17631
17632         * class.c (inflate_generic_class): Fix a leak.
17633         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
17634         for generic types.
17635
17636 2005-07-11  Martin Baulig  <martin@ximian.com>
17637
17638         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
17639         on error.
17640
17641 2005-07-11  Martin Baulig  <martin@ximian.com>
17642
17643         * loader.c (find_method): Also lookup in
17644         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
17645
17646 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17647
17648         * appdomain.c (mono_domain_unload): Don't free the error message
17649         before passing it to mono_get_exception_...
17650
17651         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
17652         
17653 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
17654
17655         * threads.c: try to better guess an available RT signal (bug #75387).
17656
17657 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17658
17659         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
17660         and CACHE_OBJECT.
17661
17662 2005-07-07  Martin Baulig  <martin@ximian.com>
17663
17664         * class.c (mono_type_get_name_full): Return NULL for
17665         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
17666         fixes #75408.
17667
17668 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17669
17670         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
17671         exit the appdomain as well being aborted.
17672
17673         * threadpool.c: Create all threadpool threads inside the root appdomain, and
17674         change back to the root domain after calling managed code. This enables
17675         appdomains using threadpools to be unloaded.
17676
17677 2005-07-07  Martin Baulig  <martin@ximian.com>
17678
17679         * class-internals.h
17680         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
17681         into `MonoDynamicGenericClass' since we only need it for dynamic
17682         types.
17683
17684         * reflection.c (mono_class_bind_generic_parameters): We don't need
17685         to compute the `parent' here.
17686
17687 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
17688
17689         * culture-info-table.h : regenerated.
17690
17691 2005-07-06  Martin Baulig  <martin@ximian.com>
17692
17693         * icall.c
17694         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
17695
17696         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
17697
17698 2005-07-06  Martin Baulig  <martin@ximian.com>
17699
17700         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
17701         we're doing a signature-only comparision; fixes #74945.
17702
17703 2005-07-06  Martin Baulig  <martin@ximian.com>
17704
17705         * class-internals.h (MonoGenericClass): Moved some things out into
17706         a new `MonoInflatedGenericClass' type.  
17707         (MonoInflatedGenericClass): New type; the `klass' of a
17708         `MonoGenericClass' is now computed lazyly in
17709         mono_get_inflated_generic_class().      
17710
17711         * class.c (mono_get_inflated_generic_class): New public function.
17712         (mono_class_inflate_generic_method): Removed the unused
17713         `MonoClass *' argument.
17714         (setup_generic_vtable): Don't call mono_get_inflated_method() on
17715         all the methods.
17716         (mono_class_create_generic): Make this static and merge it with
17717         mono_class_create_generic_2(); we're now called automatically from
17718         mono_get_inflated_generic_class().
17719
17720         * loader.c (mono_method_signature): Call
17721         mono_get_inflated_method() here.
17722
17723 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
17724
17725         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
17726         type of fields with RVA.
17727
17728         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
17729         for this pseudo class.
17730         (my_mono_class_from_generic_parameter): Likewise.
17731         (mono_class_init): Allow interfaces to have cctors.
17732
17733 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17734
17735         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
17736         lazily for AOT methods.
17737
17738 2005-07-05  Martin Baulig  <martin@ximian.com>
17739
17740         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
17741         returns FALSE for a successful match, not TRUE.
17742
17743 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17744
17745         * loader.c (mono_method_get_index): Optimize this a bit.
17746
17747 2005-07-04  Martin Baulig  <martin@ximian.com>
17748
17749         * class.c
17750         (class_compute_field_layout): Move the check for generic type
17751         definitions into mono_class_layout_fields().  Fixes #74684.
17752         (mono_class_from_generic_parameter): Correctly compute
17753         `klass->parent'; fixes #75457.
17754
17755         * reflection.c (register_assembly, register_module): Make sure
17756         `domain->rejobject_hash' is already created.
17757
17758 2005-07-02  Martin Baulig  <martin@ximian.com>
17759
17760         * class-internals.h
17761         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
17762         `MonoDynamicGenericClass'.      
17763
17764 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
17765
17766         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
17767         returned by a field getter is null, since null is a valid value.
17768
17769 2005-07-01  Martin Baulig  <martin@ximian.com>
17770
17771         * reflection.c (mono_reflection_generic_class_initialize): Update
17772         the `dgclass->fields [i].parent' to the correct class.
17773         (mono_image_get_fieldref_token): Use the declaring type, not the
17774         reflected type.
17775
17776 2005-07-01  Martin Baulig  <martin@ximian.com>
17777
17778         * loader.c (find_method): Also look in the interfaces; fixes #75429.
17779
17780 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
17781
17782         * threads.c (thread_cleanup): assert that thread != NULL
17783         (wait_for_tids_or_state_change): We were using the wrong variable
17784         when accessing wait->threads. `i' was always out of the bounds of
17785         the array.
17786
17787 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17788
17789         * loader.c: map user32 and kernel32 to libMonoSupportW
17790
17791 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17792
17793         * appdomain.c (unload_thread_main): Mark this as WINAPI.
17794
17795 2005-06-28  Martin Baulig  <martin@ximian.com>
17796
17797         * loader.c (method_from_methodspec): Fix #75334.
17798
17799 2005-06-28  Martin Baulig  <martin@ximian.com>
17800
17801         Fix #74953 - Arrays now implement the generic IList<T> interface
17802         on the 2.0 platform.
17803
17804         * class-internals.h (MonoDefaults): Added `generic_array_class'.
17805
17806         * reflection.c (mono_class_bind_generic_parameters): New public
17807         function; similar to mono_reflection_bind_generic_parameters(),
17808         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
17809
17810         * domain.c (mono_init_internal): Try to initialize.
17811         `mono_defaults.generic_array_class' here; this'll only succeed if
17812         we're using the 2.0 corlib.
17813
17814         * icall.c
17815         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
17816         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
17817         (mono_lookup_internal_call): Added support for nested classes.
17818
17819         * loader.c
17820         (mono_get_method_from_token): Set `result->signature->pinvoke' if
17821         we're an interncall and have generic arguments.
17822
17823         * class.c
17824         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
17825         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
17826         instance of System.Array.InternalArray<T> for arrays, so they
17827         implement the generic IList<T> interface.
17828
17829 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
17830
17831         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
17832         (chastamar@yahoo.com). Fixes #75374.    
17833
17834 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
17835
17836         * culture-info-table.h: regenerated.
17837
17838 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17839
17840         * icall.c: handle spaces correctly for base64 strings.
17841
17842 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17843
17844         * *.c: Kill some warnings.
17845
17846 2005-06-23  Duncan Mak  <duncan@novell.com>
17847
17848         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
17849         that this builds on Solaris 10 (x86).
17850
17851 2005-06-23  Martin Baulig  <martin@ximian.com>
17852
17853         * class.c
17854         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
17855         generic type definitions.
17856
17857 2005-06-23  Martin Baulig  <martin@ximian.com>
17858
17859         Fix #75331.
17860
17861         * metadata.c (mono_class_get_overrides): Renamed to
17862         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
17863         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
17864         pass it to mono_get_method_full().
17865
17866 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
17867
17868         * reflection.c (mono_reflection_create_runtime_class): take the
17869         mono_domain_lock in this method. Prevents deadlocks
17870
17871 2005-06-22  Martin Baulig  <martin@ximian.com>
17872
17873         * loader.c (method_from_methodspec): Fix #75330.
17874
17875 2005-06-22  Martin Baulig  <martin@ximian.com>
17876
17877         * reflection.c (type_get_qualified_name): Use
17878         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
17879         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
17880         argument; use it if we don't have an assembly name.
17881
17882 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
17883
17884         * object.c: In mono_message_init, set "copy out" flag for in
17885         parameters with the [Out] flag.
17886
17887 2005-06-21  Martin Baulig  <martin@ximian.com>
17888
17889         * class.c
17890         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
17891         and MONO_TYPE_PTR.
17892
17893 2005-06-21  Martin Baulig  <martin@ximian.com>
17894
17895         * class.c (mono_class_init): Don't initialize `class->fields' for
17896         generic instances since they're initialized again in
17897         compute_field_layout(). 
17898         (compute_field_layout): Set the field's `generic_info' here; fix
17899         #75320. 
17900
17901 2005-06-21  Martin Baulig  <martin@ximian.com>
17902
17903         * class-internals.h
17904         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
17905
17906         * metadata.c (mono_metadata_generic_method_equal): Also
17907         distinguish the `generic_class'; fixes #75334.
17908
17909 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17910
17911         * domain.c:
17912         * appdomain.c:
17913         * domain-internals.h:
17914         * reflection.c: 'domain_assemblies' field is now protected by its own
17915         lock. Don't call into managed code to run the AssemblyLoad event if we
17916         now there are no registered delegates for it.
17917
17918 2005-06-20  Martin Baulig  <martin@ximian.com>
17919
17920         * class.c (mono_class_is_assignable_from): Use a custom version of
17921         mono_class_has_parent() to make things work for generic instances;
17922         fix #75300.
17923
17924 2005-06-20  Martin Baulig  <martin@ximian.com>
17925
17926         * loader.c (method_from_methodspec): Apply a patch from
17927         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
17928
17929 2005-06-20  Martin Baulig  <martin@ximian.com>
17930
17931         * class.c (mono_class_init): Reverted Zoltan's last change; it
17932         breaks generics.
17933
17934 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17935
17936         * threads.c (wait_for_tids_or_state_change): Add missing locking.
17937
17938 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17939
17940         * socket-io.c: fix the index in the socket array for writable/error
17941         sockets. Fixes bug #75306.
17942
17943 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17944
17945         * class.c (mono_class_init): Allow interfaces to have static ctors.
17946
17947 2005-06-17  Martin Baulig  <martin@ximian.com>
17948
17949         * loader.c (method_from_methodspec): Use `context->container' when
17950         parsing the `gmethod->inst'.
17951
17952 2005-06-17  Martin Baulig  <martin@ximian.com>
17953
17954         * class.c (mono_type_get_name_recurse): Don't add the assembly
17955         name for type arguments.
17956
17957 2005-06-15  Martin Baulig  <martin@ximian.com>
17958
17959         * reflection.c (mono_image_get_inflated_method_token): Encode
17960         correct klass; fixes #75260.
17961
17962 2005-06-13 Michal Moskal <malekith@nemerle.org>
17963
17964         * icall.c: Make GetCorrespondingMethod/Constructor take
17965         MonoReflectionMethod method not MonoMethod. Removed
17966         MonoType.GetCorrespondingField, and make
17967         MonoGenericType.GetCorrespondingField take name not
17968         MonoClassField.
17969
17970 2005-06-13  Michal Moskal <malekith@nemerle.org>
17971
17972         * reflection.c (field_encode_signature, encode_locals):
17973          Make sizes of buffers for types larger (for big generic types).
17974          (create_generic_typespec,
17975          mono_reflection_sighelper_get_signature_local,
17976          mono_reflection_sighelper_get_signature_field):
17977          Add asserts for too small buffers.
17978
17979 2005-06-15  Martin Baulig  <martin@ximian.com>
17980
17981         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
17982         if our parent is not a dynamic type.
17983
17984 2005-06-15  Martin Baulig  <martin@ximian.com>
17985
17986         * class-internals.h (MonoTypeNameFormat): New enum.
17987
17988         * class.c
17989         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
17990         (mono_type_get_full_name): Removed.
17991         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
17992         argument instead of the boolean's.
17993
17994         * icall.c (ves_icall_System_MonoType_getFullName):
17995         Added `gboolean assembly_qualified'.    
17996
17997         * reflection.h
17998         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
17999
18000         * reflection.c (mono_reflection_parse_type): Parse the new type
18001         name format.
18002
18003 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18004
18005         * icall.c: no need to convert from utf16 to utf8 and then back again
18006         after the call to GetLogicalDrives.
18007
18008 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18009
18010         * icall.c: frombase64. Fix problems exposed by new tests.
18011
18012 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18013
18014         * icall.c: added internal calls for converting char [] and strings in
18015         base64 into byte [].
18016
18017 2005-06-10  Martin Baulig  <martin@ximian.com>
18018
18019         * class.c (mono_class_create_generic_2): Read the nested classes
18020         from the metadata rather than from `gklass->nested_classes' since
18021         `gklass' might not be initialized yet.
18022
18023 2005-06-09  Duncan Mak  <duncan@novell.com>
18024
18025         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
18026         all public headers. Fixes #74919.
18027
18028 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
18029
18030         * domain.c: The key for proxy_vtable_hash is now a pointer
18031         array. Added new GHashFunc and GCompareFunc functions for this.
18032
18033         * class.h: The list of interfaces in MonoRemoteClass is known in
18034         advance and can't grow (we create a new MonoRemoteClass if needed),
18035         so now the interface array can be allocated together with
18036         MonoRemoteClass.
18037         
18038         * object.c: Added a new method create_remote_class_key.
18039         Fixed mono_remote_class so it does not depend on
18040         mono_upgrade_remote_class.
18041         Removed extend_interface_array.
18042         Added new method clone_remote_class(), which makes a copy of a remote
18043         class and adds a new interface or class to it.
18044         mono_upgrade_remote_class() now creates a new remote class (or gets
18045         it from the cache) if an vtable upgrade is needed. In this way
18046         we make sure that other objects sharing the same remote class
18047         don't get the new vtable with unwanted interfaces.
18048         
18049         * object-internals.h:
18050         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
18051         
18052         * marshal.c: Track changes in mono_upgrade_remote_class().
18053
18054 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
18055         * icall.c: Add runtime methods for obtaining members of inflated
18056         class, which were created from supplied non-inflated members. It
18057         is used in internal Get{Method,Constructor,Field} methods in
18058         System.Type
18059
18060 2005-06-09  Martin Baulig  <martin@ximian.com>
18061
18062         * reflection.c
18063         (mono_reflection_bind_generic_method_parameters): Fix #75169.
18064
18065 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
18066         * reflection.c (mono_image_basic_init): Define
18067         Version in MonoDynamicAssembly. 
18068         
18069 2005-06-08  Martin Baulig  <martin@ximian.com>
18070
18071         Fix #75136.
18072
18073         * loader.c
18074         (mono_method_signature_full): New public method; takes a
18075         `MonoGenericContext *'.
18076         (find_method): Use mono_method_signature_full() and pass the
18077         klass'es context to it.
18078
18079         * class.c (mono_class_is_inflated_method): Use
18080         mono_method_signature_full() and pass the context to it.
18081
18082 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
18083
18084         * object.c: add proper locking in mono_remote_class_vtable(),
18085         fixes possible memory corruption.
18086
18087 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
18088
18089         * marshal.c (mono_remoting_marshal_init): set
18090         initialized after initialization.
18091
18092 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
18093
18094         * locales.c : hush.
18095
18096 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
18097
18098         * object.c (extend_interface_array): fix really silly
18099         memory corrupting / comparison bug.
18100
18101 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
18102
18103         * reflection.c: Functions added to support the creation
18104         of CustomAttributeData, which includes Attribute data
18105         used by ReflectionOnly methods.
18106
18107         * reflection.h:  mono_reflection_get_custom_attrs_data and
18108          mono_custom_attrs_data_construct added (functions exposed).
18109
18110          * icall.c: Added mono_reflection_get_custom_attrs_data
18111          as icall.
18112         
18113 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18114
18115         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
18116         lupus's request.
18117
18118 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
18119
18120         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
18121
18122         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
18123         dynamic DllImportAttribute.
18124
18125         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
18126         dynamic DllImportAttribute.
18127
18128         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
18129         Fixes #75162.
18130
18131 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18132
18133         * threads.c: avoid segfault when an unstarted thread is aborted.
18134
18135 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
18136
18137         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
18138         Returns the name and version of the runtime for reporting.
18139
18140 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18141
18142         * appdomain.c: bump corlib version.
18143         * object-internals.h: new field in MonoReflectionAssembly.
18144
18145 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18146
18147         * object-internals.h: Carlos forgot to add this field.
18148
18149 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
18150
18151         * icall.c: Added create_version to create instances
18152         of Version of MonoReflectionAssemblyName. This change helps
18153         the AssemblyName tests to keep running fine.
18154         
18155 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
18156   
18157         * object.c (mono_method_return_message_restore): A somehow less
18158         intrusive fix for #75138.
18159
18160 2005-06-03  Raja R Harinath  <rharinath@novell.com>
18161
18162         * object.c (mono_method_return_message_restore): Fix computation
18163         of expected number of out args.
18164
18165 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
18166
18167         * reflection.c (mono_image_get_method_info): Fix the case when the
18168         charset is empty.
18169
18170 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
18171
18172         * object.c: Added missing null check in
18173           mono_method_return_message_restore.
18174
18175 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
18176
18177         * reflection.c (mono_image_get_method_info): Handle the case when
18178         dllentry is empty.
18179
18180 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
18181
18182         * object.c: When creating the vtable for a proxy, take into account
18183         all inherited interfaces, not only the ones registered in
18184         iclass->interfaces. This fixs bug #74996.
18185         Also, in mono_method_return_message_restore, verify that the array
18186         of out args has the expected lengh.
18187
18188 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18189
18190         * socket-io.c: update the timeout in Poll when the call is interrupte.
18191
18192 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18193
18194         * socket-io.c: support abort/suspend in Select_internal after last
18195         change.
18196
18197 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18198
18199         * threadpool.c: remove warning.
18200
18201 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18202
18203         * icall.c:
18204         * socket-io.[ch]: Select_internal uses poll() now when available, thus
18205         removing the 1024 limit from select(). Runtime part of the fix for
18206         bug #71203.
18207
18208 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18209
18210         * socket-io.c: when resolving the addresses for the same
18211         host returned by gethostname(), get the local IPs from the interface
18212         list. Loopback addresses are discarded if the are interfaces up with
18213         non-loopback ones. Fixes bug #63265.
18214
18215 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
18216
18217         * appdomain.c, verify.c, object-internals.h, reflection.c:
18218         bumped corlib number to 36, and added new extra_flags field
18219         to ReflectionMethodBuilder and friends.  Fixes #75060.
18220
18221 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
18222
18223         * gc.c: register a new weak link only if the object is non-null
18224         (fixes bug#75047).
18225
18226 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
18227
18228         * culture-info.h : short time pattern too.
18229
18230 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
18231
18232         * culture-info.h : expand long time pattern string length.
18233
18234 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
18235
18236         * culture-info-table.h : update (more French date format; #72788).
18237
18238 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
18239
18240         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
18241         the method is static. Fixes #75029.
18242
18243 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
18244
18245         * reflection.c: Update the table_idx field of method builders after
18246         saving the module, since it can change. This is a workaround for
18247         bug #74914. 
18248
18249 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
18250
18251         * culture-info-table.h : update (additional French date format).
18252
18253 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
18254
18255         * icall.c (ves_icall_type_Equals): Revert last change.
18256         
18257         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
18258
18259         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
18260
18261 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
18262
18263         * class-internals.h: Added executioncontext_class field to 
18264         MonoDefaults structure.
18265         * domain.c: Cache System.Threading.ExecutionContext class in 
18266         mono_defaults.
18267         * object.c: Capture the ExecutionContext for asynchroneous calls in
18268          mono_async_result_new.
18269         * object-internals.h: Added execution_context and original_context 
18270         fields to MonoAsyncResult. Added execution_context to MonoThread.
18271         * security-manager.c|.h: Added mono_get_context_capture_method to 
18272         return the capture method (if required by the security manager or by
18273         the framework version used).
18274         * threadpool.c: Apply capture (if present) ExecutionContext in 
18275         mono_async_invoke and revert to original context after it completes.
18276
18277 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
18278
18279         * culture-info-table.h : updated (real hacky solution for zh-CHT).
18280
18281 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
18282
18283         * culture-info-table.h : zh-CHT related workaround.
18284
18285 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
18286
18287         * marshal.c (emit_marshal_custom): Add some error checking and call the
18288         methods in the ICustomMarshaler interface. Fixes #74875.
18289         
18290         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
18291         native->managed wrappers.
18292
18293 2005-05-12  Martin Baulig  <martin@ximian.com>
18294
18295         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
18296         here and use the loader lock.
18297
18298         * mono-debug.c: Properly lock when the debugger is not attached.
18299         (mono_debug_init): Release the initial lock if we're not running
18300         in the debugger.
18301
18302 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
18303
18304         * marshal.c (emit_marshal_custom): Pass through NULL values without
18305         calling the custom marshalling routines.
18306
18307         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
18308         conversion in structures. Fixes #74882.
18309
18310 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
18311
18312         * culture-info-table.h : zh-* cultures were missing.
18313
18314 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
18315
18316         * threads.c: Added a new event background_change_event which is signaled
18317         when a thread changes its background mode.
18318         Moved here several checks previously done in managed code. The checks
18319         require the thread lock, and using the thread lock in managed code
18320         can result in deadlocks.
18321         Merged Start_internal and Thread_internal into a single method. Now 
18322         Thread_internal does all work of creating and starting a thread.
18323         Added icalls for setting and getting the state of the object. Moved from
18324         managed code to avoid locking there.
18325         Added wait_for_tids_or_state_change() which is called instad of
18326         wait_for_tids when waiting for non-backround threads to end. This method
18327         will return if one of the threads ends or the background_change_event
18328         is signaled.
18329         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
18330         the background mode. This method signals the background_change_event
18331         event.
18332         * icall.c:
18333         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
18334         removed Start_internal.
18335         
18336 2005-05-11  Martin Baulig  <martin@ximian.com>
18337
18338         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
18339         to order of some fields to get proper alignment on 64-bit machines.
18340
18341 2005-05-11  Martin Baulig  <martin@ximian.com>
18342
18343         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
18344         changes as they're broken and completely fuck up the debugger.
18345
18346         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
18347
18348 2005-05-10  Martin Baulig  <martin@ximian.com>
18349
18350         * reflection.c (mono_reflection_generic_class_initialize): Don't
18351         call mono_class_setup_parent() here.
18352
18353 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18354
18355         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
18356         send/receive timeout use an integer in milliseconds. We were using a
18357         struct timeval.
18358
18359 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18360
18361         * locales.c:
18362         (internal_get_cultures): reserve the first slot of the array for the
18363         InvariantCulture, which will be filled in managed code.
18364
18365 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
18366
18367         * reflection.c (mono_image_fill_module_table): Initialize the
18368         GENERATION field as well.
18369
18370 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18371
18372         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
18373         Monitor.Enter on the object.
18374
18375 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18376
18377         * threads.c: Enable the wait for running threads when exiting.
18378         * icall.c: Suspend all threads before exiting.
18379
18380 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18381
18382         * assembly.c (mono_assembly_load_reference): Fix warning.
18383
18384 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18385
18386         * threadpool.c: changed the default number of threads per cpu. From now
18387         on, the default will be 20 + (5 * number of cpus) instead of 50.
18388
18389 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
18390
18391         * loader.c (mono_method_get_signature_full): Add locking here.
18392
18393 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
18394
18395         * appdomain.c: Moved methods for parsing and freeing assembly
18396         names to assembly.c.
18397         * assembly.c, domain-internals.h: Created public methods for parsing
18398         assembly names. Fixed mono_assembly_load_with_partial_name:
18399         it now finds the best match, taking into account the version,
18400         token and culture specified in the partial name. Also return
18401         the latest version if no version information is specified.
18402
18403 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
18404
18405         * threadpool.c: replace check for SocketAsyncCall class.
18406
18407 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18408
18409         * threadpool-internals.h:
18410         * Makefile.am: added threadpool-internals.h
18411
18412         * threadpool.c: call mono_unhandled_exception on exceptions not handled
18413         that happen in threadpool threads (tested on MS).
18414         (mono_thread_pool_remove_socket): new function that dispatch any pending
18415         AIO call on a socket that is closing. By now only epoll really needs it,
18416         as select/poll wake up when the socket closes.
18417
18418
18419         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
18420
18421 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
18422
18423         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
18424
18425 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
18426
18427         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
18428
18429 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
18430
18431         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
18432         has an abort request, convert it into a suspend request.
18433
18434 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
18435
18436         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
18437         warning for the usage of `UnmanagedFunctionPointerAttribute' which
18438         is not supported yet.
18439
18440 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18441
18442         * image.c: register assemblies loaded from data (bundles) in the loaded
18443         assemblies hash. Fixes bug #74772.
18444
18445 2005-04-29  Martin Baulig  <martin@ximian.com>
18446
18447         * class.c (mono_type_get_name_recurse): Update to the new naming
18448         schema from the latest .NET 2.x beta2.
18449         (mono_class_setup_vtable_general): If we're a generic instance,
18450         copy the vtable from our generic type definition and inflate all
18451         the methods in it.
18452
18453         * loader.c (find_method): Update to the new naming schema from the
18454         latest .NET 2.x beta2.
18455
18456 2005-04-29  Raja R Harinath  <harinath@gmail.com>
18457
18458         * class.c (mono_class_init): Add a mono_loader_unlock to the
18459         #74734 fix.
18460
18461 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18462
18463         * icall.c (ves_icall_System_Environment_Exit): Remove the 
18464         suspend_all_other_threads () call for the time being, since it can hang.
18465
18466         * threads.c (mono_thread_manage): Similarly, disable the waiting for
18467         the background threads to exit, since it can also hang.
18468
18469         * class.c (mono_class_init): Applied patch from Ankit Jain 
18470         (radical@gmail.com). Avoid pending init errors when a field refers
18471         to a nested class using a typeref. Fixes #74734.
18472
18473         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
18474         this for dynamic modules.
18475
18476 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18477
18478         * threads.c: don't wait for threads that are in the process of aborting
18479         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
18480         and waiting for background threads to finish. This makes xsp and
18481         mod-mono-server exit without random length delays and/or hangs.
18482
18483 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18484
18485         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
18486
18487 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
18488
18489         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
18490         dynamic types to prevent infinite loops. Fixes #74727.
18491
18492         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
18493         ..._is_assignable_to.
18494
18495 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
18496
18497         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
18498
18499 2005-04-25  Martin Baulig  <martin@ximian.com>
18500
18501         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
18502
18503         * domain.c
18504         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
18505
18506         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
18507
18508         * reflection.c (build_compressed_metadata): Set metadata header
18509         version to 2.0.
18510
18511 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18512
18513         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
18514         number into an integral and a decimal part. Fixes #70473.
18515
18516         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
18517
18518 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
18519
18520         * culture-info-table.h : reflected the latest locale-builder output.
18521
18522 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18523
18524         * threadpool.c: check for SuspendRequested too when deciding if
18525         mono_thread_interruption_checkpoint should be called.
18526
18527 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18528
18529         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
18530         * threads.c: remove interruption_mutex and use Interlocked instead. When
18531         suspending all the threads, wait for all the suspended events at once.
18532         If we're shutting down and get an APC that is going to be queued,
18533         call mono_thread_execute_interruption immediately, as the thread might
18534         be sleeping on a pthread condition or mutex.
18535
18536         * icall.c: call mono_runtime_set_shutting_down before suspending the
18537         threads.
18538
18539         Fixes bug #74693. And now xsp is happier when exiting.
18540
18541 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18542
18543         * loader.c (mono_stack_walk): Fix #74690.
18544
18545 2005-04-22  Martin Baulig  <martin@ximian.com>
18546
18547         * mono-debug.h (MonoDebugMethodJitInfo): Added
18548         `MonoDebugMethodJitInfo *jit'.
18549
18550         * mono-debug.c (mono_debug_read_method): Cache the
18551         MonoDebugMethodJitInfo in `address->jit'.
18552         (mono_debug_free_method_jit_info): New public method.
18553
18554 2005-04-22  Martin Baulig  <martin@ximian.com>
18555
18556         * class.c (mono_class_is_assignable_from): Disallow
18557         type parameter -> interface.
18558
18559 2005-04-21  Dick Porter  <dick@ximian.com>
18560
18561         * threads.c (mono_thread_create): Turn an assertion into an error.
18562
18563 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18564
18565         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
18566         
18567         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
18568         Fix some gcc 4.0 warnings.
18569
18570 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
18571
18572         * file-io.c: fix alt dir separator char on unix systems
18573         and cleanup (fixes bug #71214).
18574
18575 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
18576
18577         * marshal.c: Use CALLVIRT instead of CALL when dispatching
18578         a call to a remote domain, since the method may be an
18579         interface method in the client domain. This fixes bug #74192.
18580
18581 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18582
18583         * threadpool.c: recv/send are now performed before going back to managed
18584         code to save one transition.
18585
18586 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18587
18588         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
18589
18590         * metadata/threadpool.c: removed hack to workaround the bug above.
18591
18592         Fixes bug #74618.
18593
18594 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18595
18596         * reflection.c reflection.h: Fix handling of parameter defaults in
18597         dynamic methods. Also fixes handling of parameter attributes.
18598         Fixes #74609.
18599
18600         * mono-debug.c (mono_debug_close_image): Fix warning.
18601
18602 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18603
18604         * socket-io.h: replaced old unused field with new 'blocking'.
18605         * threadpool.c: restore socket blocking state on windows(tm).
18606
18607 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
18608
18609         * icall.c: don't return the codebase in the AssemblyName[] returned by
18610         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
18611         * object-internals.h: Removed FIXME (fields were presents) and fixed
18612         versioncompat declaration.
18613
18614 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18615
18616         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
18617         not closed, so don't cleanup when it happens.
18618
18619 2005-04-13  Chris Toshok  <toshok@ximian.com>
18620
18621         * mono-debug-debugger.h: change prototype for
18622         mono_debugger_lookup_type.
18623
18624         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
18625         this function, although it should probably be named
18626         mono_debugger_init_type.
18627
18628 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18629
18630         * threadpool.c: fix non-AIO case.
18631
18632 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18633
18634         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
18635         the built-in profiler to measure just JIT compilation times.
18636
18637 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18638
18639         * threadpool.c: the epollfd might be closed by another thread at
18640         any time, so ignore EBADF at treat it as a "we're closing" sign.
18641
18642 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18643
18644         * threadpool.c: release the semaphores with a count equals to the number
18645         of working threads in both IO and regular pools. Fixed typo that messed
18646         up the count of IO pool threads. Don't initialize the pipe handles if
18647         we're using epoll.
18648
18649 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18650
18651         * threadpool.c: some systems don't like a NULL when deleting the socket
18652         from epoll.
18653
18654 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18655
18656         * threadpool.c: fix semaphore allocation.
18657
18658 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18659
18660         * threadpool.c: added epoll() based implementation for asynchronous IO
18661         that is used instead of the default poll() when available.
18662         It can be disabled by setting MONO_DISABLE_AIO.
18663
18664 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18665
18666         * threadpool.c: windows needs 'closesocket' and instead of returning
18667         0 when the stream is closed while in select, it returns -1. Fixes bug
18668         #74573.
18669
18670 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
18671
18672         * class.c (class_compute_field_layout): Fix the regression caused by
18673         the previous try.
18674
18675 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18676
18677         * threadpool.c: separate pool for socket async. IO.
18678         * threadpool.h: mono_max_worker_threads is not a global any more.
18679
18680 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18681
18682         * class.c (class_compute_field_layout): Fix #74549.
18683
18684 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18685
18686         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
18687         use 2 connected sockets instead.
18688
18689 2005-04-08  Miguel de Icaza  <miguel@novell.com>
18690
18691         * mono-config.c: Add new entry point for mkbundle
18692         mono_config_parse_memory. 
18693
18694 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18695
18696         * threadpool.c: removed another unused function.
18697
18698 2005-04-08  Ankit Jain  <radical@corewars.org>
18699
18700         * reflection.c (get_default_param_value_blobs): Add 'types'
18701         parameter to get the types encoded in the constant table.
18702         (mono_param_get_objects): Use the type from the constant table,
18703         not the type of the parameter, when creating default values.
18704         Handle null default values correctly.
18705
18706 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18707
18708         * file-io.c:
18709         * file-io.h:
18710         * threadpool.c:
18711         * threadpool.h:
18712         * icall.c:
18713         * socket-io.c: removed dead code for async IO.
18714
18715 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18716
18717         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
18718
18719         * threadpool.c: intercept socket async. calls and pass them to a thread
18720         that is polling and dispatching the job items to the threadpool as
18721         socket become ready. Fixes bugs #71217, #71933.
18722
18723         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
18724         between char and short/ushort arrays.
18725
18726         * socket-io.c: remove dead code.
18727
18728 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
18729
18730         * locales.c,
18731           icall.c : removed InternalToUpper_Comp() and
18732           InternalToLower_Comp().
18733
18734 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
18735
18736         * char-conversions.h : The tables were incorrectly generated. Should
18737           be generated against invariant culture.
18738
18739 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18740
18741         * object.c (mono_runtime_invoke_array): Fix return value when 
18742         passing pre-created valuetype objects to ctors.
18743
18744         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
18745         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
18746         Fixes #74338.
18747
18748 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
18749
18750         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
18751         only used with --security and hides the wrong corlib version error.
18752
18753 2005-03-30  Joshua Tauberer  <tauberer@for.net>
18754
18755         * class.c: Changed mono_class_name_from_token so that types
18756         outside of a namespace don't have an initial period.  Improved
18757         the g_warning message used in _mono_class_get when loading
18758         fails.
18759         * assembly.c: In mono_assembly_load_reference, when an assembly
18760         can't be found, "No such file or directory" is misleading and
18761         unhelpful because a few paths were checked for the presence of
18762         the assembly.  When that happens (ENOENT), display a nicer
18763         message indicating the directories that were searched.  In all
18764         cases, the warning is made easier to read for non-hackers.
18765
18766 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18767
18768         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
18769         project/solution.
18770         * appdomain.h|domain.c: Removed inline from functions.
18771         * appdomain.c: Reduced warnings when compiling on windows.
18772         * icall.c: Fixed output_debug declaration to gunichar2*.
18773         * mono-config.c: Reduced warnings when compiling on windows.
18774         * rand.c: Added missing "windows.h". Added missing return value.
18775         * rawbuffer.c: Added missing winsock2.h for windows.
18776         * sysmath.h: Added mono-compiler.h header to allow/ease 
18777         compilation with non-GCC compilers.
18778         * threads.c: Fixed declarations to compile with VS.NET C compiler.
18779         Removed cast warnings.
18780
18781         Adapted from the work of J Lothian (for VC6).
18782
18783 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18784
18785         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
18786         from default_path.
18787
18788 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18789
18790         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
18791         the 2.0 profile.
18792
18793 2005-03-27  Raja R Harinath  <harinath@gmail.com>
18794
18795         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
18796         has to be in $(exec_prefix).  $(prefix) is for arch-independent
18797         stuff, and it would probably use $(prefix)/share rather than
18798         $(prefix)/lib.
18799
18800 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18801
18802         * console-io.c: added 2 includes that might be missing.
18803
18804 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18805
18806         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
18807         profile.
18808
18809         * reflection.c (create_custom_attr): Allocate the params array using
18810         alloca so it gets GC tracking.
18811
18812 2005-03-23  Chris Toshok  <toshok@ximian.com>
18813
18814         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
18815         out some spew.
18816
18817 2005-03-24  Raja R Harinath  <rharinath@novell.com>
18818
18819         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
18820         changes to pick up any changes in prefix, etc.
18821
18822 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18823
18824         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
18825         
18826         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
18827         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
18828
18829 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18830
18831         * class-internals.h object-internals.h class.c reflection.c: Extend the
18832         mono_lookup_dynamic_token () function to return the class of the
18833         token as well. 
18834
18835         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
18836         well. Fixes #73848.
18837
18838 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18839
18840         * security-manager.c: Skip inheritance checks for intra-corlib
18841         class inheritance and method overrides. This skips a lot of checks
18842         and (anyway) permissions cannot work until corlib is loaded.
18843
18844 2005-03-23  Martin Baulig  <martin@ximian.com>
18845
18846         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
18847         MONO_TYPE_GENERICINST.  
18848
18849 2005-03-23  Martin Baulig  <martin@ximian.com>
18850
18851         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
18852
18853 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18854
18855         * class.c: added locking comments to some functions.
18856         Cache the interface offsets arrays (saves about 20 KB
18857         of runtime memory in a typical app).
18858         Reduce the time overhead in mono_class_setup_supertypes ().
18859
18860 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
18861
18862         * icall.c: speedup and fix leaks in GetMethodsByName and
18863         GetPropertiesByName.
18864
18865 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18866
18867         * reflection.c: some locking fixes.
18868
18869 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18870
18871         * metadata.c: added missing break in case statement.
18872
18873 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
18874
18875         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
18876         typedbyref return values. Fixes #73941.
18877
18878 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18879
18880         * security-manager.c|h: Added demandunmanaged method and 
18881         suppressunmanagedcodesecurity class to MonoSecurityManager.
18882         Renamed aptc class to allowpartiallytrustedcallers.
18883
18884 2005-03-17  Martin Baulig  <martin@ximian.com>
18885
18886         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
18887
18888 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18889
18890         * file-io.c: disabled file async. IO using aio_*. It uses the
18891         threadpool now. Workaround for bug #73718.
18892
18893 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18894
18895         * assembly.h, mono-config.c: added code to deal with bundled configs
18896         for bundled assemblies.
18897
18898 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
18899
18900         * *.c, private.h: cleanup, removing old private.h header file.
18901
18902 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18903
18904         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
18905         and throw_on_unmappable_char attributes.
18906
18907 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
18908
18909         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
18910         _ProcessName_internal.
18911
18912 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18913
18914         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
18915         #73631.
18916
18917         * icall.c threads.c threads-types.h: Remove slothash icalls as they
18918         are no longer used.
18919
18920 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18921
18922         * object.c (compute_class_bitmap): Add support for generics. Fixes
18923         #73527.
18924
18925 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
18926
18927         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
18928
18929 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18930
18931         * filewatcher.c: commented out the code for windows watcher, as we don't
18932         use it (we use the managed implementation instead).
18933
18934 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
18935
18936         * object-internals.h (MonoThread): Remove 'unused1' field.
18937
18938         * appdomain.c: Bump corlib version.
18939
18940         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
18941
18942         * reflection.c (mono_reflection_create_runtime_class): Remove the
18943         AssemblyBuilder.Save optimization since it causes too many problems.
18944
18945 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
18946
18947         * exception.c|h: Added mono_get_exception_reflection_type_load to
18948         create a ReflectionTypeLoadException object.
18949         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
18950         to return NULL is a InheritanceDemand fails during reflection. Updated
18951         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
18952         ReflectionTypeLoadException if an InheritanceDemand fails during 
18953         reflection. Added icall mapping for GetLinkDemandSecurity.
18954         * security-manager.c|h: Added ves_icall_System_Security_
18955         SecurityManager_GetLinkDemandSecurity internal call to return the
18956         class and methods permissions set for a LinkDemand. Removed unused
18957         fields in MonoSecurityManager.
18958
18959 2005-03-10  Martin Baulig  <martin@ximian.com>
18960
18961         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
18962         it's a generic instance.
18963
18964 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
18965
18966         * reflection.c (mono_get_object_from_blob): Applied patch from
18967         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
18968
18969         * class.c (mono_class_is_assignable_from): Another try at fixing 
18970         #73469 without breaking anything.
18971
18972 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18973
18974         * class.c: (mono_class_is_assignable_from): Revert the last changes
18975         since they don't work with generics.
18976         
18977         * class.c (mono_class_is_assignable_from): Fix build bustage.
18978
18979         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
18980         the managed IsAssignableFrom method. Fixes #73469.
18981
18982         * reflection.c (mono_reflection_call_is_assignable_from): New helper
18983         function.
18984
18985 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18986
18987         * object.c (mono_load_remote_field_new): Fix returning uninitialized
18988         memory when the remoting callback does not sets the out arguments.
18989         Fixes #73007.
18990
18991         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
18992         by mistake.
18993
18994         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
18995
18996         * object-internals.h (MonoStackFrame): Sync with managed object layout.
18997
18998         * appdomain.c: Bump corlib version.
18999
19000 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19001
19002         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
19003         function.
19004
19005         * threads.c (mono_thread_attach): Detect threads which are not started
19006         by the GC pthread wrappers.
19007
19008 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
19009
19010         * icall.c: Added new icall for RNG.
19011         * rand.c|h: Added new icall to open the RNG. This allows to share a 
19012         single handle on Linux to access /dev/urandom and fix #73183.
19013
19014 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19015
19016         * object.c: setting the new vtable in a transparent proxy object must
19017         not change the GC descriptor.
19018
19019 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
19020
19021         * object.c: fixed compilation without GCJ support.
19022         * reflection.c: for runtime-created types ensure klass->has_references
19023         is correct (bug #73215).
19024
19025 2005-03-02  Martin Baulig  <martin@ximian.com>
19026
19027         * class.c (mono_class_is_assignable_from): Make this work if
19028         `oklass' is a generic instance; fixes #72831.
19029
19030 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
19031
19032         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
19033         with hasthis set.
19034         
19035         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
19036
19037         * marshal.c: Reorganize native->managed marshalling code to also use
19038         the emit_marshal_... functions.
19039
19040 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
19041
19042         * object.c: typed allocs have issues with bitmap sizes > 30,
19043         so check for max_set >= 30.
19044
19045 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
19046
19047         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
19048         managed code. Fixes #73012.
19049
19050         * metadata.h (MonoMarshalSpec): Add elem_mult field.
19051
19052         * metadata.c reflection.c: Load/Emit elem_mult as well.
19053         
19054         * metadata.h (MonoMarshalSpec): Add comment.
19055
19056         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
19057
19058         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
19059         num_elem to -1 if not given.
19060
19061         * object-internals.h (MonoReflectionMarshal): Add has_size field.
19062
19063         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
19064         given values.
19065
19066 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
19067
19068         * null-gc.c (mono_gc_free_fixed): Was not compilable.
19069
19070 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
19071
19072         * reflection.c (encode_marshal_blob): Encode param_num field as well.
19073
19074         * object-internals.h (MonoReflectionMarshal): Add param_num field.
19075
19076 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
19077
19078         * object.c: generalized the reference bitmap creation
19079         and added hooks for the new GC.
19080         * class-internals.c: removed the gc_bitmap field from MonoClass.
19081
19082 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19083
19084         * domain.c: help the compiler to produce better code
19085         in mono_jit_info_table_find ().
19086
19087 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
19088
19089         * object.c: make all allocations look typed.
19090
19091 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19092
19093         * socket-io.c: load Mono.Posix if it's not loaded already
19094         (fixes bug#73033).
19095
19096 2005-02-24  Martin Baulig  <martin@ximian.com>
19097
19098         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
19099         * reflection.c (dup_type): Likewise.
19100
19101 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
19102
19103         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
19104         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
19105
19106 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19107
19108         * domain.c, threads.c, object-internals.h: make the critical thread
19109         local vars use the fast access mode (even when we're compiled in
19110         a lib). Provide accessors to be used by the jit during codegen.
19111
19112 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19113
19114         * appdomain.c: Changed hook functios behavior to include
19115         support for the reflection only assemblies. Some icalls were changed
19116         to support the mentioned assemblies too. Signatures of static methods
19117         try_assembly_resolve and real_load now have an additional parameter:
19118         refonly.
19119
19120         * assembly.c: General changes to mono_assembly_ methods to support
19121         reflection only api. Functions mono_assembly_open, mono_assembly_load,
19122         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
19123         suffix, to support an additional gbool parameter to specify whether
19124         the assembli is reflection only or not. Created some new hook functions 
19125         to add support for reflection only assemblies. Signatures of static 
19126         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
19127         have now an additional parameter: refonly.
19128
19129         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
19130         indicating whether the assembly is reflection only or not.
19131
19132         * exception.c: Add mono_get_exception_invalid_operation.
19133
19134         * icall.c: Throw an InvalidOperationException when trying to invoke
19135         a property/method/event, or trying to set/get the value of a field.
19136         Also add an icall to retrieve the ref_only flag to the
19137         MonoReflectionAssembly.
19138
19139 2005-02-23  Chris Toshok  <toshok@ximian.com>
19140
19141         Part of fix for #72827.
19142         * mono-debug.c (mono_debug_add_method): add lexical block data to
19143         the info we write.  Kind of a hack at the moment - we copy the
19144         lexical block info from the MonoDebugMethodInfo to the
19145         MonoDebugMethodJitInfo here, before writing it.
19146         (mono_debug_read_method): read the lexical block info.
19147
19148         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
19149
19150         * debug-mono-symfile.h: add lexical block support.
19151
19152         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
19153         support.
19154
19155 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19156
19157         * loader.c (mono_lookup_pinvoke_call): Fix warning.
19158
19159         * object.c (mono_runtime_free_method): Call mono_free_method () and
19160         put the TODOs there.
19161
19162         * loader.c (mono_free_method): Free up most memory allocated for 
19163         dynamic methods.
19164
19165 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19166
19167         * reflection.c: properly flag a Type argument to a
19168         named custom attr value (bug #72248).
19169
19170 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19171
19172         * reflection.c: reduce code duplication in named custom
19173         attribute encoding.
19174
19175 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
19176
19177         * reflection.c: properly encode custom attrs of type object
19178         (bug #72649).
19179
19180 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
19183
19184 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
19185
19186         * socket-io.c: load System.dll if it's not loaded already
19187         (bug #72850 and #70477).
19188
19189 2005-02-21  Martin Baulig  <martin@ximian.com>
19190
19191         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
19192         generic instances.
19193
19194 2005-02-21  Martin Baulig  <martin@ximian.com>
19195
19196         * reflection.c (mono_image_build_metadata): We also need to
19197         "fixup" the MethodImpl table after we computed the final method
19198         indices.  Call fixup_methodimpl() to do that.
19199         (fixup_methodimpl): New private method.
19200
19201 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
19202
19203         * assembly.c: special case mscorlib.dll (bug#72536),
19204         patch from Carlos Alberto Cortez.
19205
19206 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19207
19208         * threads-types.h threads.c: Fix build bustage.
19209
19210         * threads.c: Use a union for long<->double conversions.
19211
19212         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
19213         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
19214
19215         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
19216         containing the checkpoint call with NOT_TAKEN.
19217         
19218         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
19219         checkpoint before pushing the arguments, so they won't have to be
19220         spilled to stack.
19221
19222 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
19223
19224         * domain.c, assembly.c, domain-internals.h: make some data
19225         const and relocation-free.
19226
19227 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19228
19229         * object.c, appdomain.c, class-internals.h: introduce the
19230         MonoClassRuntimeInfo structure to hold the info needed to
19231         use a class at runtime. Made mono_class_vtable() lock-free
19232         for all the appdomains.
19233
19234 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
19235
19236         * metadata-internals.h, image.c: introduce a per-image mempool to
19237         be used for memory that has the same lifetime as the image.
19238
19239 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
19240
19241         * domain.c: In mono_init_internal(), instead of selecting the first
19242         runtime version supported by an executable, get a list of all
19243         supported versions and select the one for which an mscorlib exists
19244         (since even if the runtime supports a given version, it doesn't mean
19245         that the framework for that version is installed).
19246         Modified get_runtimes_from_exe to support this behavior.
19247         In supported_runtimes, added information about additional system
19248         assembly versions.
19249         
19250         * assembly.c: Added support for more than one system assembly version
19251         per runtime version. Updated the assembly list.
19252         In mono_assembly_remap_version, removed the initial version check,
19253         since we don't know to which version we need to compare until we
19254         get the version set on which the assembly is based.
19255         Moved the code for loading corlib into the new method
19256         mono_assembly_load_corlib(), so it can be used by the initialization
19257         code.
19258         
19259         * domain-internals.h: Updated data structures and added declaration
19260         for mono_assembly_load_corlib.
19261
19262 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19263
19264         * reflection.c (resolve_object): Fix the creation of the signature in 
19265         the SignatureHelper case.
19266
19267         * assembly.c (mono_assembly_remap_version): Fix binary search.
19268         
19269 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
19270  
19271         * class.c: Added inheritance check when a method is overloaded (from a
19272         virtual method or when implementing an interface) and when a class is
19273         inherited. Added functions to set a failure for a class and to 
19274         retreive the exception from a failure.
19275         * class-internals.h: Added fields to MonoClass to keep the exception
19276         information status for inheritance (or other exceptions) to be thrown
19277         later (i.e. not at load time).
19278         * object.c: Throw the inheritance SecurityException when a type is to 
19279         be created with either class or method inheritance violations.
19280         * reflection.c|h: Fix when getting declsec from a class. Removed 
19281         unrequired code for class. Improved sanity in parameter naming.
19282         * security-manager.c|h: Added functions to check for class and method
19283         inheritance.
19284
19285 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19286
19287         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
19288         and has_finalize in dynamic types as well.
19289
19290 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
19291
19292         * culture-info-table.h : fixed currency format for en-GB (and so on).
19293
19294 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
19295
19296         * gc.c: ensure the GC handles never have 0 as a value.
19297
19298 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
19299
19300         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
19301         a pointer to a struct to unmanaged code. Fixes #72625.
19302
19303 2005-02-16  Martin Baulig  <martin@ximian.com>
19304
19305         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
19306
19307 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
19308
19309         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
19310
19311 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
19312
19313         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
19314
19315         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
19316         UnmanagedFunctionPointerAttribute, use it for determining calling convention
19317         etc. Fixes #71471.
19318
19319         * reflection.c (mono_custom_attrs_get_attr): New helper function.
19320
19321         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
19322
19323 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
19324
19325         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
19326         changes to make the current context a field in MonoThread.
19327
19328 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
19329
19330         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
19331         the last change.
19332         
19333         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
19334         extracted from mono_marshal_get_native_wrapper.
19335
19336         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
19337         to create wrappers around native functions.
19338
19339         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
19340         delegates for arbitrary function pointers. Fixes #71472.
19341
19342 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
19343
19344         * threads.c: cleaned up the code a little.
19345
19346 2005-02-15  Martin Baulig  <martin@ximian.com>
19347
19348         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
19349         the data table.
19350
19351         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
19352         allocate larger chunks if needed.
19353
19354 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
19357         in by mistake.
19358
19359 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
19360
19361         * domain.c: keep the domains in an array and ensure the domain ids
19362         are kept small, so they can be used as indexes to domain-specific data
19363         with a small memory overhead.
19364
19365 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19366
19367         * icall.c: Handle byref types in Type icalls. Fixes #72544.
19368
19369 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
19370
19371         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
19372
19373 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
19376
19377         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
19378         values.
19379
19380         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
19381         
19382 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19383
19384         * domain-internals.h: add the hashtable here.
19385
19386         * class-internals.h: Remove `info' from MonoMethod
19387
19388         * domain.c: Add a new hashtable, jit_trampoline_hash
19389
19390 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19391
19392         * object.c: don't set the value of static fields
19393         (fixes bug#72494).
19394
19395 2005-02-11  Martin Baulig  <martin@ximian.com>
19396
19397         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
19398         (mono_debug_add_method): Silently ignore the method if it's too big.
19399         (mono_debug_add_type): Likewise.
19400
19401 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
19402
19403         * threads.c, appdomain.c: remove #ifdefs from the code.
19404
19405 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19406
19407         * metadata-internals.h: Added flags to MonoAssembly to cache the most
19408         common security informations. This allows us to stay in unmanaged code
19409         when doing LinkDemand and it's special cases (except for the first 
19410         time for initialization). The flags a very much used with --security.
19411         * reflection.c|h: Added code to get declarative security attributes 
19412         for LinkDemand and InheritanceDemand. This required to refactor the
19413         existing code for Demand.
19414         * security-manager.c|h: Added new method fields for the special cases
19415         of LinkDemand.
19416
19417 2005-02-10  Martin Baulig  <martin@ximian.com>
19418
19419         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
19420         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
19421
19422 2005-02-10  Martin Baulig  <martin@ximian.com>
19423
19424         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
19425         debugging code; this is almost a complete rewrite.
19426
19427         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
19428
19429 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19430
19431         * domain.c, object.h: expose mono_string_equal () and 
19432         mono_string_hash ().
19433         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
19434         it's implemented in managed code.
19435
19436 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
19437
19438         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
19439         lo leak objects between appdomains.
19440
19441 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
19442
19443         * assembly.c: old compilers compilation fix from 
19444         robertj@gmx.net (Robert Jordan).
19445
19446 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
19447
19448         * class-internals.h: Little reminder for the future.
19449
19450         * debug-helpers.c: Fix up wrapper_type_names
19451
19452 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
19453
19454         * image.c, metadata-internals.h: when loading an image from a file,
19455         mmap all of it and use the same codepaths as when using a
19456         in-memory image: the code is simpler and we use less memory
19457         (both writable and readonly).
19458
19459 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
19460
19461         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
19462         API to alloc runtime data structures that need to be tracked by the
19463         GC and contain pointers.
19464         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
19465         make the code more readable and eventually use a different GC.
19466
19467 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
19468
19469         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
19470         for out arguments.
19471         
19472 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
19473
19474         * object.c: In release_type_locks(), don't release the cctor lock
19475         if it has already been released. This fixes a crash in the
19476         thread5 test.
19477
19478 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19479
19480         * gc.c, marshal.c, icall.c: register a delegate for finalization
19481         only when the native function pointer has been allocated for it.
19482
19483 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19484
19485         * object.c: cleaned up some code, allocate objects that are
19486         pointer free with the atomic malloc variant. Allocate memory
19487         for static data from the mempool if it's pointer-free.
19488         Allocate the bounds array at the end of the array data, when needed.
19489         * object-internals.h, object.h: move a private function in a private
19490         header.
19491         * class.c: handle missing case in tracking references in fields.
19492
19493 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
19494
19495         * class.c, class-internals.h: keep track if a type has
19496         reference fields in either the instance or static fields.
19497
19498 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
19499
19500         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
19501         and renamed to MonoRuntimeInfo. Added fields to store the expected
19502         framework assembly version. Changed mono_get_framework_version and
19503         mono_get_runtime_version for a single mono_get_runtime_info method.
19504         
19505         * assembly.c: Added method to remap system assembly versions to the
19506         current executing runtime version. Removed old mapping code.
19507         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
19508         
19509         * icall.c, reflection.c: Track api changes.
19510
19511 2005-02-06  Miguel de Icaza  <miguel@novell.com>
19512
19513         * loader.c (method_from_memberref): Improve error reporting,
19514         produce the class name instead of the typeref/typedef index. 
19515
19516 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
19519
19520 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19521
19522         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
19523         stdcall and charset name mangling.  Reorganize the code and add
19524         some tracing stuff.
19525
19526 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
19527
19528         * monodiet.c: More iters!
19529
19530         * marshal.c: Iter usage.
19531
19532         * icall.c: Iter usage.
19533
19534         * object.c: Use iters.
19535
19536         * debug-helpers.c: More iters
19537
19538 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19539
19540         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
19541         under win32.
19542
19543 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
19544
19545         * mono-debug-debugger.c: use iters
19546
19547         * class.c, class-internals.h: mono_class_setup_events is static
19548         now
19549
19550         * All callers: use iters
19551
19552 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19553
19554         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
19555         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19556
19557 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19558
19559         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
19560
19561         * marshal.h: Add prototypes for ldfld/stfld_remote.
19562
19563         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
19564         this is called during startup.
19565         
19566 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19567
19568         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
19569         MonoThreadsSync struct private in monitor.c. Changed the way
19570         MonoThreadsSync is allocated so it's faster and there is no
19571         need to keep track of it with a finalizer and it uses less memory.
19572         This also finally allows us to allocate mono objects as ptrfree when
19573         there are no reference fields.
19574
19575 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
19576
19577         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
19578         disappearing link to the GC interface and use them to simplify
19579         the gchandles code.
19580
19581 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19582
19583         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
19584         stfld_remote which call mono_load/store_field_new. This allows methods
19585         calling ldfld/stfld wrappers to be AOTed.
19586
19587         * console-io.c: Include sys/filio.h under solaris.
19588         
19589         * console-io.c: Include curses.h if needed correctly.
19590
19591 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19592         
19593         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
19594         method->klass as well.
19595
19596         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
19597
19598         * class.c (mono_class_init): Switch on lazy initialization of 
19599         methods.
19600
19601         * class.c (mono_class_get_finalizer): Handle the case when the 
19602         finalizer is inherited.
19603
19604 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19605
19606         * console-io.c: <curses.h> is needed by term.h on solaris.
19607
19608 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
19609
19610         * icall.c, class-internals.h, monodiet.c, class.c: Remove
19611         mono_class_setup_properties where possible. Remove this ftn from
19612         the header file, and make it static.
19613
19614 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19615
19616         * loader.c: Add missing setup_... call.
19617
19618         * class.c: Add missing setup_... calls.
19619
19620         * class.c (mono_class_init): Switch on lazy initialization of 
19621         the generic vtable.
19622         
19623         * class.c (mono_class_init): Fix generics broken by the recent changes.
19624
19625         * monodiet.c (handle_type): Add missing setup_... calls.
19626
19627         * class.c: Back out garbage in previous patch.
19628         
19629         * class.c: Add missing setup_... calls.
19630
19631         * class.c (mono_class_get_method_from_name_flags): Avoid calling
19632         mono_class_setup_methods () if possible.
19633
19634         * class-internals.h (MonoClass): Add 'has_cctor' flag.
19635
19636         * class-internals.h (MonoCachedClassInfo): New structure.
19637
19638         * class.c: Initialize properties and events fields of MonoClass lazily.
19639
19640         * class.c: Add infrastructure for lazily initializing the methods and
19641         vtable fields of MonoClass. Not yet used.
19642
19643         * class.c (mono_class_get_finalizer): New helper function.
19644
19645         * class.c: Add infrastructure for loading some class related data from
19646         an AOT file.
19647
19648         * object.c: Add infrastructure for initializing the vtable from data
19649         in the AOT file.
19650
19651         * gc.c (run_finalize): Use mono_class_get_finalizer ().
19652
19653         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
19654         appropriate initialization function before accessing parts of the
19655         MonoClass structure.
19656
19657         * marshal.c: Fix warnings.
19658         
19659         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
19660
19661         * mono-debug-debugger.c (get_exception_message): Use 
19662         mono_class_get_method_from_name_flags ().
19663
19664 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
19665
19666         * reflection.c, appdomain.c: Replace a few manual searches that
19667         Zoltan missed. (Paolo approved this part of my initial patch).
19668
19669 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
19670
19671         * profiler.c: disable recording statistical events at report time.
19672
19673 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
19674
19675         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
19676         to byteswap arrays of enum values, too (bug #72080).
19677
19678 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19679
19680         * appdomain.c (set_domain_search_path): Allow this to be called if
19681         domain->setup is not yet set.
19682
19683         * loader.c (mono_method_get_index): New helper function.
19684
19685         * loader.c reflection.c: Use mono_method_get_index ().
19686
19687         * class.c (mono_class_get_method_from_name_flags): New helper method.
19688
19689         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
19690         this.
19691
19692         * class.c (mono_class_get_cctor): New helper method.
19693
19694         * string-icalls.c object.c class.c marshal.c reflection.c: Use
19695         mono_class_get_method () to look up methods.
19696
19697 2005-02-01  Miguel de Icaza  <miguel@novell.com>
19698
19699         * console-io.c: Fix the build, this should work on Windows.
19700
19701 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
19702
19703         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
19704         be set to null to keep things valid
19705
19706 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19707
19708         * icall.c: added Console 2.0 icalls.
19709         * Makefile.am: added console-io.[ch]
19710         * console-io.[ch]: internal calls for Console 2.0 API.
19711
19712 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
19713
19714         * class.c: make sure we consider all the interfaces
19715         when calculating max_interface_id (bug found by
19716         Jeroen Frijters running ikvm).
19717
19718 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19719
19720         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
19721         valuetype fields to null.
19722
19723         * object.c (set_value): Ditto. Fixes #71669.    
19724
19725 2005-01-31  Martin Baulig  <martin@ximian.com>
19726
19727         * metadata.c (mono_metadata_has_generic_params): New public
19728         function; checks whether something is a generic method.
19729
19730 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19731
19732         * appdomain.c: fix infinite recursion when adding assemblies.
19733
19734 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
19735
19736         * object.c: Fix small typo to return all items for Environment.
19737         GetCommandLineArgs.
19738
19739 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19740
19741         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
19742         reflection.c: more domain and assembly-unload related fixes
19743         and memory leaks plugs.
19744
19745 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19746
19747         * 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.
19748
19749 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19750
19751         * loader.c (mono_method_signature): Make this method lazy
19752         (mono_get_method_from_token): Don't computate the signature here.
19753
19754         Doing this saves quite a bit of memory. I got 90 kb on starting up
19755         monodoc. It should also save some disk reads on startup.
19756
19757         * *: MonoMethod->signature might be NULL now. You *MUST* use
19758         mono_method_signature.
19759
19760 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
19761
19762         * object.c (mono_runtime_get_main_args): Return an array from the
19763         current domain here. Fixes #71938.
19764
19765 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19766
19767         * monitor.c: formatting changes to comply with the
19768         mono coding style and remove #ifdefs from the code.
19769
19770 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
19771
19772         * metadata.c, private.h: remove some unneeded data
19773         and use a more compact representation for table schemas.
19774
19775 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19776
19777         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
19778         to get a better distribution in hash tables.
19779         * *.c: use mono_aligned_addr_hash() where appropriate.
19780         * assembly.c: make var static.
19781
19782 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19783
19784         * domain-internals.h: Put MonoJitInfo on a diet.
19785
19786         * domain.c: Fix a warning.
19787
19788 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
19789
19790         * gc.c: rework the gc handles code to reuse handles
19791         when freed.
19792
19793 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
19794
19795         * domain.c: fixed long standing bug in mono_string_equal() which
19796         was brought to light with the ldstr changes.
19797
19798 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19799
19800         * reflection.c: Remove warning by adding missing include for marshal.h
19801
19802 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
19803
19804         * domain.c, object.c: change the ldstr_table to hold
19805         MonoString* as keys: makes the runtime isinterned lookup
19806         faster and simplifies memory management.
19807
19808 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
19809  
19810         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
19811         possible to add imperative security checks before calling the icall.
19812         * reflection.c: Return security attributes on the original MonoMethod
19813         (and not the wrapped one). This fix permissions on icalls.
19814
19815 2005-01-25  Dick Porter  <dick@ximian.com>
19816
19817         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
19818         the check for mktime() support actually test the mktime() return
19819         value.  "Fixes" bug 71682, though the output is still different to
19820         MS.
19821
19822 2005-01-25  Martin Baulig  <martin@ximian.com>
19823
19824         * class.c (mono_class_is_assignable_from): Make this work for
19825         generic instances.
19826
19827 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
19828
19829         * marshal.c (mono_string_utf8_to_builder)
19830         (mono_string_builder_to_utf16): We might not have ownership of the
19831         string. In thise case, we need to create a new buffer.
19832
19833         * object-internals.h (mono_stringbuilder_capacity): sb->str might
19834         be null, in which case, use the default capacity.
19835
19836 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
19837
19838         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
19839         GC events to the profiler.
19840
19841 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
19842
19843         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
19844         if you don't want the GC to run.
19845
19846 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
19847
19848         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
19849         start providing a GC API and keeping different implementations in
19850         their own file.
19851         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
19852
19853 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19854
19855         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
19856         mmap rather than allocating a huge buffer.
19857         (mono_debug_close_mono_symbol_file): Free the buffer allocated
19858         above.
19859
19860 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19861
19862         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
19863         and CheckExecutionRights.
19864         * reflection.c|h: Keep the index of the declarative security to be 
19865         used, instead of the pointer, when AOT compiler is used. Also add 
19866         class initialization when requesting demands.
19867         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
19868         CheckExecutionRights. Both properties are now FALSE by default, and
19869         unmodifiable, unless the --security option is used.
19870
19871 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19872
19873         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
19874         reflection.c: properly refcount images and assemblies, many leaks fixed.
19875
19876 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19877
19878         * threadpool.c: increase the timeout for threads in the thread pool to
19879         10s.  Fixes bug #67159.
19880
19881 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
19882
19883         * class-internals.h: Sun's compiler insists on explicit
19884         signed on bit fields to handle then correctly.
19885
19886 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
19887
19888         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
19889         Make the size of the array fit only the number of invalid path
19890         chars that we have.
19891
19892         * class.c (_mono_class_get): Improve the error reporting when a
19893         class referenced is not found, to assist debugging. 
19894
19895 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
19896
19897         * threads.c: fix off-by-one error.
19898         * domain.c: free data allocated in the domain.
19899
19900 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
19901
19902         * reflection.c (mono_method_body_get_object): Fill out exception info
19903         as well.
19904
19905         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
19906         structure.
19907         
19908 2005-01-19  Martin Baulig  <martin@ximian.com>
19909
19910         * loader.c (mono_get_method_constrained): Make this work again.
19911
19912 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
19915         guint16 to match the managed side.
19916
19917         * reflection.c (mono_reflection_body_get_object): Fill out local
19918         variables array.
19919
19920         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
19921         as well.
19922
19923         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
19924         'local_var_sig_token'.
19925
19926 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19927
19928         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
19929         System.Drawing.
19930
19931         * reflection.c (mono_method_body_get_object): Handle abstract and
19932         runtime methods.
19933
19934 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
19935
19936         * marshal.c, loader.c, class-internals.h, reflection.c:
19937         store the emthod data for a wrapper in an array instead of a list.
19938
19939 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
19940
19941         * marshal.c: change the code to allocate memory more
19942         conservatively for method wrappers.
19943
19944 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19945
19946         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
19947         fields from MonoClass to the marshal info structure where they belong.
19948
19949 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
19950
19951         * class.c, object.c, class-internals.h, marshal.c: rearrange
19952         some fields and tweak some types to lower memory usage.
19953
19954 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19955
19956         * threads.c (signal_thread_state_change): Handle the case when the
19957         target thread is the current thread.
19958
19959         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
19960
19961         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
19962         emit_ptr_to_object_conv. 
19963
19964         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
19965         marshalling. Fixes #71352.
19966
19967 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19968
19969         * metadata.h, blob.h: move table enum to blob.h so it can be included
19970         in any header.
19971         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
19972         cut the size of MonoImage/MonoDynamicImage.
19973
19974 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19975
19976         * profiler.c (mono_profiler_install_simple): Fix default arguments.
19977
19978 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
19979
19980         * reflection.c, reflection.h, icall.c: add a function to check
19981         if an attribute type is defined for a metadata object.
19982
19983 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
19984
19985         * object-internals.h: Added some needed fields from StringBuilder class.
19986         * marshal.c: Set the maxCapacity when creating a StringBuilder.
19987
19988 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19989
19990         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
19991         threads before shutting down the runtime.
19992
19993         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
19994
19995 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19996
19997         * object-internal.h, threads.c: implement stacksize and 
19998         parameterized thread start functionality (requires
19999         matching corlib). Marked broken code for later removal.
20000
20001 2005-01-12  Martin Baulig  <martin@ximian.com>
20002
20003         * class-internals.h (MonoGenericClass): Moved the `initialized'
20004         flag to MonoDynamicGenericClass, removed `init_pending'.
20005         (MonoGenericInst): Added `is_reference' flag.
20006
20007 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * reflection.c (mono_image_create_pefile): Only set the pe_offset
20010         inside the MSDOS header. Fixes #71201.
20011
20012         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
20013         gc thread.
20014         (mono_domain_finalize): Ditto.
20015
20016 2005-01-12  Martin Baulig  <martin@ximian.com>
20017
20018         * class.c (mono_get_shared_generic_class): Use the cache for
20019         non-dynamic generic classes.
20020
20021         * class-internals.h (mono_class_create_generic_2): Removed
20022         function prototype, this function is now static inside class.c.
20023
20024         * class.c (mono_class_create_generic_2): Made this static, only
20025         call it from mono_class_init() and mono_class_setup_parent().
20026         (collect_implemented_interfaces_aux): Call mono_class_init() on
20027         the interfaces we collect.
20028         (mono_class_setup_vtable): Call mono_class_init (class->parent).
20029
20030 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20031
20032         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
20033         it a real thread handle.
20034
20035         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
20036         MonoJitExceptionInfo, since each catch clause needs its own variable.
20037         
20038 2005-01-11  Dick Porter  <dick@ximian.com>
20039
20040         * image.c (mono_pe_file_open): New variant on mono_image_open()
20041         that does not set up the CLI metadata; used for FileVersionInfo so
20042         it can get the data for windows binaries too.
20043         
20044         * process.c (process_read_string_block): Don't read off the end of
20045         the StringTable block.
20046
20047         These both fix bug 70766.
20048
20049 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
20050
20051         * gc.c: set some fields to NULL at GC cleanup time.
20052         * threads.c: if we quit the main thread, call exit ().
20053
20054 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20055
20056         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
20057
20058 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
20059
20060         * threads.h, threads.c, object.c: added accessor and settor for
20061         main_thread. Handle it specially when exiting from it: wait
20062         for other foreground threads to exit.
20063
20064 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20065
20066         * process.c, verify.c: remove some bloat.
20067
20068 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20069
20070         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
20071         the calling convention to cdecl under win32.
20072
20073 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
20074
20075         * object.c (mono_object_get_size): New function to get the size of
20076         an object instance.
20077
20078         * profiler.c (simple_allocation): Use above.
20079
20080 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
20081
20082         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
20083         ves_icall_System_AppDomain_getRootDomain (as it's not required to
20084         get an appdomain by it's id and we can't assume the root's id is 0).
20085         * domain-internals.h: Change the function prototype to match.
20086         * icall.c: Change the icall table for AppDomain.
20087
20088 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
20089
20090         * locales.c (string_invariant_compare_char): Only compute
20091         GUnicodeTypes in the case where we need them.  Test for ordinality
20092         first and return if so.
20093
20094         From the commit:
20095
20096                 /*
20097                  * FIXME: here we must use the information from c1type and c2type
20098                  * to find out the proper collation, even on the InvariantCulture, the
20099                  * sorting is not done by computing the unicode values, but their
20100                  * actual sort order.
20101                  */
20102
20103 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20104
20105         * loader.c: for P/Invoke methods, allow the "Internal" shared
20106         library name to refer to the calling process symbol namespace.
20107
20108 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20109
20110         * Makefile.am: Add the security manager to the build.
20111         * security-manager.c|h: New. Initialization of the security manager.
20112
20113 2005-01-07  Dick Porter  <dick@ximian.com>
20114
20115         * threads.c: 
20116         * monitor.c: Update thread state during Monitor and WaitHandle
20117         waits.  Fixes bug 71031.
20118
20119 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20120
20121         * reflection.c (property_encode_signature): Correctly handle when the
20122         property has no methods.
20123
20124 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
20127         
20128         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
20129         fields from mb, not rmb. Fixes #71017.
20130
20131         * marshal.c (emit_ptr_to_str_conv): Add support for 
20132         ByValTStr -> string conversion. Fixes #71015.
20133
20134         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
20135
20136         * mempool.c (mono_mempool_contains_addr): New helper function.
20137
20138 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20139
20140         * metadata.c (mono_metadata_compute_size): Fix size calculation of
20141         HasSematics encoded fields.
20142         
20143         * metadata.c (mono_type_to_unmanaged): Improve error message for 
20144         invalid string marshalling.
20145
20146         * metadata.c: Fix warnings.
20147         
20148 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20149
20150         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
20151         profiler support.
20152
20153 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20154
20155         * domain.c object.c domain-internals.h: Revert part of r38077 since the
20156         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
20157         tests.
20158
20159 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20160
20161         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
20162         so methods containing these can be AOTed.
20163
20164 2005-01-03  Martin Baulig  <martin@ximian.com>
20165
20166         * loader.c (find_method): Removed the hack for generic instances.
20167         (method_from_memberref): If our parent is a generic instance, pass
20168         its generic type definition to find_method() and then inflate the
20169         method.
20170         (mono_get_method_constrained): Pass the generic type definition to
20171         find_method() and inflate the method later.
20172
20173         * class-internals.h (MonoStats): Added `generic_class_count'.
20174
20175         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
20176         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
20177
20178         * reflection.c (mono_custom_attrs_from_params): Don't ignore
20179         generic type definitions.
20180
20181 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20182
20183         * loader.c icall.c: Fix warnings.
20184
20185 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
20186
20187         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
20188         blittable types. Fixes #70864.
20189
20190 2004-12-29  Martin Baulig  <martin@ximian.com>
20191
20192         * icall.c
20193         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
20194
20195         * reflection.c (mono_method_get_object): Create a
20196         "System.Reflection.MonoGenericMethod" for inflated methods; don't
20197         call mono_get_inflated_method().
20198
20199         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
20200
20201 2004-12-27  Martin Baulig  <martin@ximian.com>
20202
20203         * class-internals.h (MonoMethod): Added `is_inflated' flag.
20204         (MonoMethodInflated): Added `inflated' field.
20205
20206         * class.c (mono_class_inflate_generic_method): Don't really
20207         inflate the method here; just set the `is_inflated' flag in the
20208         MonoMethod.
20209         (mono_class_get_inflated_method): Actually inflate the method here
20210         if it's not already inflated; we use the MonoMethodInflated's new
20211         `inflated' field as a cache.
20212
20213 2004-12-26  Martin Baulig  <martin@ximian.com>
20214
20215         * class.c
20216         (inflate_generic_class): Moved some code out of inflate_generic_type().
20217         (mono_class_inflate_generic_method): If we're already inflated,
20218         inflate the context and use the declaring method; ie. make sure
20219         the declaring method of an inflated method is always the generic
20220         method definition.
20221         (mono_class_create_from_typedef): Create
20222         `class->generic_container->context->gclass'.
20223
20224 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20225
20226         * metadata-internals.h, marshal.c, reflection.c: More
20227         MonoGHashTable->GHashTable.
20228
20229         * domain-internals.h, class.c: Change MonoGHashTable's into
20230         GHashTables for some cases where no gc stuff is used
20231
20232         All users: update apis
20233
20234 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
20235
20236         * metadata.c (builtin_types): Make this `const'. Makes this get
20237         put into the shareable section.
20238         (mono_metadata_init): Casts to make gcc happy.
20239
20240 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
20241
20242         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
20243
20244 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
20245
20246         * icall.c: Added an internal call to retrieve the position and length
20247         of assembly-level declarative security attributes (RequestMinimum, 
20248         RequestOptional and RequestRefuse). This is used by the Assembly class
20249         to re-create the corresponding permission sets.
20250
20251 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20252
20253         * marshal.c: fix the stelemref wrapper to be type correct
20254         (and faster).
20255
20256 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20257
20258         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
20259         to do key & 0x7fffffff. Hashtable already does this. It just
20260         results in longer code.
20261
20262 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20263
20264         * appdomain.c: Bump corlib version.
20265         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
20266         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
20267         * reflection.c|h: Add functions to get declarative security infos
20268         (blob position and length) for assemblies, classes and methods.
20269
20270 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
20271
20272         * reflection.c: sort the constant table (bug #70693).
20273
20274 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
20275
20276         * object-internals.h, threads.c, domain.c: add accessors for
20277         the MonoThread and MonoDomain tls keys.
20278
20279 2004-12-18  Martin Baulig  <martin@ximian.com>
20280
20281         * class.c (inflate_generic_type): If we're inflating a generic
20282         instance, set `ngclass->context->container = context->container';
20283         ie. the container we inflated into.
20284
20285         * metadata.c (mono_metadata_parse_generic_param): Reflect above
20286         inflate_generic_type() changes.
20287
20288 2004-12-17  Martin Baulig  <martin@ximian.com>
20289
20290         * class-internals.h
20291         (MonoGenericClass): Replaced `MonoType *generic_type' with
20292         `MonoClass *generic_class'.  Removed `dynamic_info'; if
20293         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
20294         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
20295
20296 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20297
20298         * exception.c (mono_exception_from_token): New helper function.
20299
20300 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20301
20302         * assembly.c (mono_assembly_load_with_partial_name): Call 
20303         mono_assembly_loaded before invoking the preload hooks. Fixes
20304         #70564.
20305
20306         * object-internals.h (MonoThread): Change culture_info and 
20307         ui_culture_info into an array.
20308
20309         * threads.c: Cache culture info objects from more than one appdomain.
20310
20311         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
20312         current UI culture.
20313
20314 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20315
20316         * threads.h threads.c appdomain.c: Clear the culture_info field of
20317         all threads during unloading if they point to an object in the dying
20318         appdomain.
20319
20320 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
20321
20322         * culture-info.h (TextInfoEntry): New struct
20323         * object-internals.h: sync with managed
20324         * locales.c: fill the `text_info_data' field
20325         * culture-info-tables.h: update
20326
20327 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
20328
20329         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
20330         collector.
20331
20332 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
20333
20334         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
20335         (ves_icall_ModuleBuilder_getMethodToken): Ditto
20336
20337 2004-12-12  Martin Baulig  <martin@ximian.com>
20338
20339         * mono-debug-debugger.c (write_type): If we're an enum and the
20340         builtin types have already been initialized, call mono_class_init().
20341
20342 2004-12-11  Martin Baulig  <martin@ximian.com>
20343
20344         * metadata.c (mono_metadata_load_generic_params): Added
20345         `MonoGenericContainer *parent_container' argument; automatically
20346         compute `container->is_method'; pass the correct owner to
20347         get_constraints().      
20348
20349         * reflection.c (compare_genericparam): Sort the GenericParam table
20350         according to increasing owners. 
20351
20352 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20353
20354         * profiler.c: allow disabling the default profiler.
20355
20356 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
20357
20358         * decimal.c, icall.c: allow disabling System.Decimal support.
20359
20360 2004-12-09  Marek Safar <marek.safar@seznam.cz>
20361
20362         * reflection.c: Add support for null attribute arguments.
20363
20364 2004-12-09  Martin Baulig  <martin@ximian.com>
20365
20366         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
20367         names to get rid of compiler warnings.
20368
20369 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20370
20371         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
20372         mono_marshal_load_type_info (). Fixes #69625.
20373         (mono_marshal_get_ptr_to_struct): Likewise.
20374
20375 2004-12-08  Martin Baulig  <martin@ximian.com>
20376
20377         * mono-debug.h: Bumped version number to 47.
20378
20379         * mono-debug-debugger.c
20380         (mono_debugger_event_handler, mono_debugger_event): Take two
20381         guint64 arguments insteed of a gpointer and a guint32.  
20382
20383 2004-12-08  Martin Baulig  <martin@ximian.com>
20384
20385         * debug-mono-symfile.h
20386         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
20387         `address' to `native_offset'.
20388
20389 2004-12-08  Martin Baulig  <martin@ximian.com>
20390
20391         * class.c (mono_class_create_from_typespec): Only inflate if we
20392         either have `context->gclass' or `context->gmethod'.
20393
20394 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20395
20396         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
20397
20398         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
20399
20400         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
20401
20402         * reflection.c (mono_assembly_get_object): Remove the workaround put
20403         in for the release.
20404         
20405         * appdomain.c: Use the corlib_internal field from MonoAssembly.
20406
20407         * appdomain.c: Bump corlib version.
20408
20409         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
20410         be visible in other appdomains.
20411
20412 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
20413
20414         * threads.c: Interlocked inc and dec for longs were messed up,
20415         use a KISS based impl for this. Fixes 70234
20416
20417 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20418
20419         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
20420
20421 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
20422
20423         * icall.c: fix to follow policy not to allow struct
20424         arguments in icalls.
20425
20426 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20427
20428         * process.c: make the patch that handles spaces in file paths work
20429         on mono/windows too.
20430
20431 2004-12-06  Martin Baulig  <martin@ximian.com>
20432
20433         * class.c (mono_class_create_generic): Call
20434         mono_class_setup_supertypes() if we're dynamic.
20435         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
20436
20437 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20438
20439         * object-internals.h: Add new fields to MonoThread.
20440
20441         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
20442
20443         * icall.c threads-types.h threads.c: Add new icalls.
20444
20445         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
20446
20447         * object-internals.h (MonoReflectionAssembly): Sync object layout with
20448         managed side.
20449
20450         * appdomain.c: Bump corlib version.
20451
20452         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
20453         internal assemblies. Fixes #69181.
20454
20455 2004-12-05  Martin Baulig  <martin@ximian.com>
20456
20457         * class.c (mono_class_inflate_generic_signature): Make this a
20458         no-op if `context' is NULL or we don't have any type parameters;
20459         also copy `sentinelpos'.        
20460
20461 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * image.c: Add unbox_wrapper_cache.
20464
20465         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
20466
20467         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
20468         function generator.
20469         
20470         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
20471         Fixes #70173.
20472
20473         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
20474         
20475 2004-12-04  Martin Baulig  <martin@ximian.com>
20476
20477         * loader.c (mono_method_get_signature_full): New public function;
20478         like mono_method_get_signature(), but with an additional
20479         `MonoGenericContext *' argument.
20480
20481         * class.c (mono_class_inflate_generic_signature): Formerly known
20482         as inflate_generic_signature(); make this public.
20483
20484 2004-12-04  Martin Baulig  <martin@ximian.com>
20485
20486         * metadata.c
20487         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
20488         instead of a `MonoGenericContainer *'.  
20489         (mono_metadata_parse_array_full): Likewise.
20490         (mono_metadata_parse_signature_full): Likewise.
20491         (mono_metadata_parse_method_signature_full): Likewise.
20492         (mono_metadata_parse_generic_inst): Likewise.
20493         (mono_metadata_parse_generic_param): Likewise.
20494         (mono_metadata_parse_mh_full): Likewise.
20495         (mono_type_create_from_typespec_full): Likewise.
20496
20497 2004-12-03  Martin Baulig  <martin@ximian.com>
20498
20499         * class-internals.h (MonoGenericContainer): Replaced the
20500         `MonoGenericContext * pointer with a `MonoGenericContext'
20501         structure and made it the first element.
20502
20503 2004-12-03  Martin Baulig  <martin@ximian.com>
20504
20505         * class.c
20506         (inflate_generic_type): Set the `context->container' when creating
20507         a new MonoGenericContext.
20508         (mono_class_inflate_generic_method): Likewise.
20509         (mono_class_create_from_typespec): Just use `context->container'
20510         to get the container.
20511
20512         * loader.c (method_from_methodspec): Set `context->parent' from
20513         `context->container' - and if that's a method container, use its
20514         parent.  Also set the `context->container' when creating a new
20515         MonoGenericContext.
20516         (mono_get_method_from_token): Use just `context->container' to get
20517         the container.
20518
20519         * metadata.c (do_mono_metadata_parse_generic_class): Also set
20520         `gclass->context->container'.
20521
20522         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
20523         the `context->container' when creating a new MonoGenericContext.
20524
20525 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
20526
20527         * reflection.c (compare_genericparam): Sort params with identical
20528         owner by their number. Fixes gen-111 on sparc.
20529
20530 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20531
20532         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
20533         around the domain changes.
20534
20535         * appdomain.c (mono_domain_unload): Handle the case when the thread
20536         calling Unload is itself being aborted during unloading. Fixes #70022.
20537
20538         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
20539
20540         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
20541         checkpoint_func as an icall so it gets a wrapper.
20542         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
20543         in the cross-appdomain wrappers too.
20544
20545         * threads.c (mono_thread_has_appdomain_ref): Make this public.
20546
20547         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
20548
20549         * reflection.c: Fix some memory leaks.
20550         
20551 2004-12-02  Martin Baulig  <martin@ximian.com>
20552
20553         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
20554
20555         * metadata.c (generic_class_cache): New static hashtable.
20556         (mono_metadata_lookup_generic_class): New public method.
20557
20558 2004-12-02  Martin Baulig  <martin@ximian.com>
20559
20560         * class.c (mono_class_create_from_typedef): Call
20561         mono_class_setup_parent() and mono_class_create_mono_type() before
20562         parsing the interfaces.
20563
20564 2004-12-02  Martin Baulig  <martin@ximian.com>
20565
20566         * metadata.c (generic_inst_cache): New static hashtable.
20567         (mono_metadata_lookup_generic_inst): New public function.
20568         (mono_metadata_inflate_generic_inst): New public function.
20569         (mono_metadata_parse_generic_inst): New public function.
20570         (do_mono_metadata_parse_generic_class): Use the new
20571         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
20572         since this'll also use the cache.
20573
20574         * reflection.c (mono_reflection_bind_generic_method_parameters):
20575         Use mono_metadata_lookup_generic_inst() to use the new cache.
20576
20577         * class.c (inflate_mono_type): Use
20578         mono_metadata_inflate_generic_inst() to inflate a generic
20579         instance; this'll also use the new cache.
20580
20581         * loader.c (method_from_methodspec): Use
20582         mono_metadata_parse_generic_inst() and
20583         mono_metadata_inflate_generic_inst() rather than parsing it
20584         manually, so we can use the new cache.
20585
20586 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20587
20588         * threads.c (wait_for_tids): Do not incorrectly free threads when 
20589         the wait times out.
20590
20591 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20592
20593         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
20594         iter->args based on whether parameters are passed in registers (i.e.
20595         MONO_ARCH_REGPARMS is defined)
20596
20597 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
20598
20599         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
20600         the exception message. Fixes #70070.
20601         (method_from_methodspec): Fix warnings.
20602
20603 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20604
20605         * process.c: (complete_path) return the path quoted
20606
20607 2004-12-01  Martin Baulig  <martin@ximian.com>
20608
20609         * class-internals.h (MonoGenericInst): New structure.
20610         (MonoGenericClass): Replaced `type_argc', `type_argv' and
20611         `is_open' with `MonoGenericInst *inst'.
20612         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
20613         `is_open' with `MonoGenericInst *inst'.
20614
20615 2004-11-30  Martin Baulig  <martin@ximian.com>
20616
20617         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
20618
20619         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
20620         to `generic_class_cache'.
20621
20622         * metadata.c
20623         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
20624         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
20625         (mono_generic_inst_is_valuetype): Renamed to
20626         mono_generic_class_is_valuetype().
20627
20628         * class-internals.h
20629         (MonoGenericInst): Renamed to MonoGenericClass.
20630         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
20631         (MonoClass): Renamed `generic_inst' to `generic_class'.
20632         (MonoGenericContext): Renamed `ginst' to `gclass'.
20633
20634         * object-internals.h
20635         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
20636
20637         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
20638         mono_reflection_generic_class_initialize().
20639
20640         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
20641         now known as "System.Reflection.MonoGenericClass".
20642         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
20643
20644 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
20645
20646         * class-internals.h: Added a flag field to MonoClass to cache the
20647         declarative security attributes actions associated with the class.
20648         * domain-internals.h: Added booleans to MonoJitInfo to cache the
20649         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
20650         applicable to the JITted method.
20651         * reflection.c|h: Added functions to extract (as flags) which security
20652         actions are available (declaratively) for a method, class or assembly.
20653         * metadata.c|h: Added functions to search the declarative security
20654         table in the metadata.
20655         
20656 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
20657
20658         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
20659         EXPORTEDTYPES are already in the class name cache, so there is no
20660         need to add extra code here to look at them. Just removes a bit of
20661         cruft.
20662
20663         (ves_icall_System_Environment_get_TickCount): No need for #if
20664         WINDOWS. We already have the code in io-layer.
20665
20666 2004-11-28  Martin Baulig  <martin@ximian.com>
20667
20668         * loader.c
20669         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
20670         Fixes gen-112.cs.
20671
20672 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
20673
20674         * assembly.c (do_mono_assembly_open): Instead of having a
20675         conditional WITH_BUNDLE, incorporate support for bundles here, by
20676         having a global `bundles' variable holding a pointer to the actual
20677         bundles. 
20678
20679         (mono_register_bundled_assemblies): New API call used by the
20680         bundle code. 
20681
20682         See mkbundle.1 for details.
20683         
20684 2004-11-27  Martin Baulig  <martin@ximian.com>
20685
20686         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
20687         the vtable for generic methods.
20688
20689 2004-11-26  Martin Baulig  <martin@ximian.com>
20690
20691         * metadata.c
20692         (mono_metadata_generic_method_hash): New public function.
20693         (mono_metadata_generic_method_equal): Likewise.
20694
20695         * class-internals.h
20696         (MonoGenericContainer): Added `GHashTable *method_hash'.
20697
20698         * reflection.c (ReflectionMethodBuilder): Added
20699         `MonoGenericContainer *generic_container'.
20700         (reflection_methodbuilder_to_mono_method): Don't create a new
20701         MonoGenericContainer each time we're called.
20702         (mono_reflection_bind_generic_method_parameters): Use
20703         `container->method_hash' to cache the results so we don't create a
20704         different method if we're called several times with the same
20705         arguments.
20706
20707         * loader.c (method_from_methodspec): Use the new
20708         `container->method_hash' here, too.
20709
20710 2004-11-26  Martin Baulig  <martin@ximian.com>
20711
20712         * class.c (inflate_generic_signature): Correctly compute
20713         `res->has_type_parameters'.
20714         (mono_class_vtable): Use the `has_type_parameters' flag to
20715         determine whether we're a generic method.
20716
20717         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
20718
20719 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20720
20721         * object.c (mono_runtime_run_main): Fix a small memory leak.
20722
20723 2004-11-25  Martin Baulig  <martin@ximian.com>
20724
20725         * class.c (set_generic_param_owner): Fixed the loop.
20726
20727 2004-11-25  Martin Baulig  <martin@ximian.com>
20728
20729         * object.c (mono_class_vtable): Don't create any JIT wrappers for
20730         generic methods.
20731
20732 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20733
20734         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
20735         names. Fixes #69787.
20736
20737 2004-11-24  Martin Baulig  <martin@ximian.com>
20738
20739         * class.c (mono_class_create_generic_2): If we don't have a
20740         `ginst->parent', inflate `gklass->parent' to get our parent.
20741
20742 2004-11-24  Martin Baulig  <martin@ximian.com>
20743
20744         * reflection.c (compare_genericparam): Correctly sort the
20745         GenericParam table; fixes #69779.
20746
20747 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
20748
20749         * reflection.c: When writing a PE file, don't create a huge
20750         buffer in memory. Just write the arrays we have to the file.
20751         This reduces memory usage.
20752
20753         * metadata-internals.h: MonoDynamicStream pefile is no longer used
20754         globally.
20755
20756 2004-11-17  Martin Baulig  <martin@ximian.com>
20757
20758         * class.c (mono_class_init): Don't setup `class->parent' for
20759         dynamic instances; moved this to mono_class_generic_2().
20760         (mono_class_create_generic): Also set `klass->inited' for dynamic
20761         generic instances.
20762         (mono_class_create_generic_2): Don't do anything for dynamic
20763         generic instances.  Set `klass->parent' here and also call
20764         mono_class_setup_parent() here. 
20765
20766         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
20767         `MonoType *parent' argument; set `ginst->parent' before calling
20768         mono_class_create_generic_2(), so we set the correct parent.
20769
20770 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
20771
20772         * reflection.c: allow getting attributes from ModuleBuilder
20773         (used by ikvm).
20774
20775 2004-11-17  Martin Baulig  <martin@ximian.com>
20776
20777         * class.c (mono_class_create_from_typedef): If a type parameter is
20778         inherited from an outer class, set its owner to that class.
20779
20780 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
20781
20782         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
20783           for (int*) written size. This fixes bug #69592.
20784
20785 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20786
20787         * icall.c: Added IsAuthenticodePresnet internal call.
20788         * image.c|h: New function that check a MonoImage for an Authenticode
20789         signature in the certificate PE data directory.
20790         * security.c|h: New internal call to ask the runtime if an 
20791         Authenticode signature seems referenced in the PE header.
20792
20793 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
20794
20795         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
20796
20797         * reflection.c (mono_image_create_pefile): Free the assembly streams
20798         after writing out the assembly file.
20799
20800         * object.c (mono_runtime_run_main): Fix small memory leak.
20801
20802         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
20803         property access modifiers. Fixes #69389.
20804
20805 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20806
20807         * domain.c, object.c, object-internals.h, domain-internals.h,
20808         object.h, marshal.c: keep dynamic code info per domain.
20809
20810 2004-11-15  Martin Baulig  <martin@ximian.com>
20811
20812         * class.c (mono_type_get_name_recurse): Put type arguments in
20813         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
20814         see bug #68387.
20815
20816 2004-11-15  Martin Baulig  <martin@ximian.com>
20817
20818         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
20819         (mono_class_setup_vtable): When computing `the_cname' for a
20820         generic instance, don't include the namespace since we'd otherwise
20821         add it twice.
20822
20823 2004-11-15  Martin Baulig  <martin@ximian.com>
20824
20825         * class.c (mono_class_create_generic): Changed return type to void.
20826         (mono_class_create_generic_2): New public function; setup
20827         `class->method', `class->field' and `class->interfaces' here
20828         instead of in mono_class_init().
20829
20830         * class.h (mono_class_create_generic): Moved to class-internals.h.
20831
20832 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
20833
20834         * reflection.c (mono_image_create_pefile): take a file HANDLE.
20835         rather than writing to memory, write to this file. Right now,
20836         we are just writting into a buffer, and copying that. However
20837         we can avoid the buffer later.
20838
20839         (mono_dynamic_stream_reset): new function
20840
20841         * icall.c, object-internals.h: update for the above.
20842
20843 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
20844
20845         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
20846         have been using gc'd memory. First it is slower, unlikely
20847         the comment in the source code said, secondly, it increases
20848         our footprint to do it in the gc.
20849
20850         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
20851         the method so that it does not have to copy to managed code.
20852
20853 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20854
20855         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
20856
20857 2004-11-12  Martin Baulig  <martin@localhost>
20858
20859         * reflection.c (mono_image_create_token): Allow generic method
20860         definitions here, since they may appear in an `.override'; see
20861         gen-98/gen-99 for an example.
20862
20863 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
20864
20865         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
20866         #69365.
20867
20868         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
20869         descriptive.
20870
20871 2004-11-11  Martin Baulig  <martin@ximian.com>
20872
20873         * class.c (mono_class_setup_vtable): In an explicit interface
20874         implementation, the method name now includes the arity.
20875
20876 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
20877
20878         * object.c (mono_array_full_copy): Fix warning.
20879
20880 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
20881
20882         * appdomain.c: Removed look_for_method_by_name(). Use the new method
20883         mono_class_get_method_from_name() instead.
20884         
20885         * class-internals.h: Added two new types of wrappers. 
20886         Added MonoRemotingTarget enum. Added new trampoline function type, which
20887         takes an additional MonoRemotingTarget value as parameter, so it is
20888         possible to request a trampoline for a specific target.
20889         
20890         * class.c: Added new mono_class_get_method_from_name() method.
20891         
20892         * class.h: In MonoRemoteClass, we can have now to vtables, one for
20893         general remoting sinks and one specific for cross domain calls.
20894         
20895         * debug-helpers.c: Added new wrapper names.
20896         
20897         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
20898         of a remote class.
20899         
20900         * image.c: Porperly delete value objects form the remoting invoke hashtable.
20901         
20902         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
20903         with several other methods (mono_marshal_get_xappdomain_dispatch,
20904         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
20905         and others) can generate a fast remoting wrapper for cross domain calls.
20906         More information can be found in docs/remoting.
20907         Other changes: Removed mono_find_method_by_name, and used
20908         mono_class_get_method_from_name instead.
20909         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
20910         is stored in the remoting invoke hashtable.
20911         
20912         * marshal.h: published the new method for getting the xdomain wrapper,
20913         and also added a method for getting the adequate wrapper for a given
20914         method and target.
20915         
20916         * object-internals.h, object.c: Added a couple of methods for capying and
20917         cloning arrays.
20918         Modified mono_install_remoting_trampoline, which takes the new remoting
20919         trampoline that has a remoting target as parameter.
20920         mono_class_proxy_vtable now also takes a remoting target as parameter, and
20921         will return the most suitable vtable for the target.
20922         Added mono_remote_class_vtable, which returns the vtable of a remote class
20923         (which can be the normal remoting vtable or the xdomain vtable).
20924         
20925         * threads.c: the xdomain invoke and dispatch wrappers must also be
20926         protected against interruptions.
20927
20928 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20929
20930         * icall.c: use memmove in BlockCopyInternal when the source and
20931         destination arrays are the same.
20932
20933 2004-11-09  Martin Baulig  <martin@ximian.com>
20934
20935         * class-internals.h (MonoGenericContainer): Removed `method' and
20936         `signature', replaced them with `is_method' and `is_signature'
20937         flags.  Added `context'.
20938
20939         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
20940         instead of a `MonoGenericContainer *'.
20941
20942         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
20943         for dynamic type parameters.
20944         (mono_metadata_load_generic_params): Setup `container->context'.
20945
20946         * reflection.c (mono_reflection_setup_generic_class): Setup
20947         `tb->generic_container->context'.
20948         (do_mono_reflection_bind_generic_parameters): Use
20949         mono_class_inflate_generic_type() to correctly inflate types,
20950         rather than using our own hack just for MONO_TYPE_VAR.
20951
20952 2004-11-09  Martin Baulig  <martin@ximian.com>
20953
20954         * class.c (mono_class_inflate_generic_method): Small fix; don't
20955         crash here.
20956
20957         * icall.c
20958         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
20959         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
20960         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
20961         (ves_icall_Type_BindGenericParameters): Likewise.
20962         (ves_icall_Type_get_IsGenericInstance): Likewise.
20963         (ves_icall_Type_GetGenericParameterPosition): Likewise.
20964         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
20965         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
20966         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20967
20968 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20969
20970         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
20971         assembly versions and public key tokens. Fixes #69113.
20972
20973 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
20974
20975         * metadata.c: fix bug introduced with the type cache changes
20976         on 2004-11-06.
20977
20978 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
20979
20980         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
20981         the MonoClass pointer instead of the token in exception clauses.
20982         * reflection.c: updates for the above and make the code not depend
20983         on the structure of MonoExceptionClause.
20984
20985 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20986
20987         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20988         Add support for dynamic assemblies. Fixes #69114.
20989
20990         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
20991
20992 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20993
20994         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
20995         since most only those methods use it. the code member of
20996         MonoMethodPInvoke was dead, so that can be removed too. Also,
20997         remove inline_count (again, not used), and move slot so that it
20998         can share bits with some other flags. This saves 8 bytes in the
20999         structure and gives us about 50 kb back for mcs helloworld.cs
21000
21001         * *.[ch]: Do naming changes for the above.
21002
21003         * loader.c (mono_method_get_header): Lazily init the header
21004         on first access.
21005         (mono_get_method_from_token): don't init the header here
21006         (mono_free_method): the header may never be allocated
21007
21008         Overall, this saves 150 kb of unmanaged allocations
21009         for mcs helloworld.cs. That accounts for 10% of the unmanaged
21010         memory at runtime.
21011         
21012         * loader.c, loader.h (mono_method_get_header): new accessor.
21013
21014         * *.[ch]: use the above method. Prepares us to lazily load
21015         the header.
21016
21017         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
21018         three warnings, which are actual bugs (see 69206).
21019
21020         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
21021         unused. Saves a cool 4 bytes / method.
21022
21023 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
21024
21025         * metadata.c (builtin_types): Add types for System.Object here.
21026         (mono_metadata_parse_type_full): Cache MonoType*'s that are
21027         for a class or valuetype from klass->this_arg or klass->byval_arg.
21028
21029         On mcs for a hello world, this gets us down from 21836 MonoType's
21030         to 14560.
21031
21032         (mono_metadata_free_type): Account for the above change.
21033
21034 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
21035
21036         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
21037         exception instead of asserting if name is null.
21038         (ves_icall_System_AppDomain_GetData): Ditto.
21039
21040 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21041
21042         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
21043         EnumBuilder.
21044
21045         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
21046         Return NULL when the domain does not have entry_assembly set.
21047
21048         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
21049         Add a 'resource_modules' argument.
21050         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
21051
21052         * reflection.c (mono_reflection_create_runtime_class): Move setting
21053         of wastypebuilder here, so mono_get_type_object () returns a MonoType
21054         for enums too.
21055
21056         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
21057         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
21058         Throw an ArgumentNullException if 'ptr' is null.
21059
21060         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
21061         assemblies here. Fixes #69020.
21062
21063 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21064
21065         * reflection.c (build_compressed_metadata): Fix the previous patch for
21066         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
21067         the stack.
21068
21069 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
21070
21071         * assembly.c (mono_assembly_names_equal): Allow a match if one of
21072         the cultures is false. Fixes #69090.
21073
21074         * reflection.c (build_compressed_metadata): Fix invalid memory read 
21075         detected by valgrind.
21076         
21077         * reflection.c (mono_reflection_get_type): Avoid triggering a 
21078         TypeResolve multiple times for the same type. Fixes #65577.
21079
21080 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
21081
21082         * marshal.c: Avoid using ldftn to call managed functions. It is
21083         much slower than just a call.
21084
21085         * reflection.c (mono_module_get_object): free the basename we
21086         allocate here from glib.
21087         
21088         * reflection.c (ensure_runtime_vtable): make sure to free
21089         overrides.  Also, we were allocating an array of MonoMethod not an
21090         array of MonoMethod*.
21091
21092         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
21093
21094         * image.c (mono_image_close): free image->guid here.
21095
21096 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21097
21098         * reflection.c: Fix some spec conformance issues with the PE file
21099         structures so mcs compiled apps run on the Net 2.0 beta.
21100
21101 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
21104         Implement this. Fixes #67264.
21105
21106         * debug-helpers.h debug-helpers.c marshal.c: Move 
21107         mono_find_method_by_name to debug-helpers.c.
21108
21109 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
21110
21111         * object.c (mono_release_type_locks): type_initialization_hash is
21112         a GHashTable.
21113
21114         * reflection.c object.c object-internals.h: Fix warnings.
21115
21116         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
21117         without accessors. Fixes #61561.
21118
21119         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
21120         application base from the root domain if not set. Fixes #65641.
21121         (mono_runtime_init): Fix warning.
21122
21123 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21124
21125         * appdomain.c: call mono_thread_pool_init.
21126         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
21127         of worker threads based on the number of CPUs and the environment
21128         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
21129         for non-windows (windows) systems.
21130
21131 2004-10-27  Chris Toshok  <toshok@ximian.com>
21132
21133         * mono-debug-debugger.c (write_class): don't call mono_class_init
21134         here, as even with the check for (!klass->init_pending), we get
21135         into a situation where we're hitting cycles in class
21136         initialization.  Fixes #68816.
21137
21138 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21139
21140         * image.c: Avoid overwriting values in the loaded_images_hash when an
21141         assembly is loaded multiple times. Fixes #61152.
21142
21143         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
21144         so multiple satellite assemblies for the same name can be loaded.
21145         Fixes #68259.
21146
21147         * mono_domain_assembly_preload: Actually return the loaded assembly, 
21148         not NULL.
21149
21150         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
21151         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
21152
21153         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
21154         pending finalizers are not invoked after the appdomain has been 
21155         unloaded. Fixes #67862.
21156
21157 2004-10-22  Martin Baulig  <martin@ximian.com>
21158
21159         * mono-debug-debugger.c
21160         (mono_debugger_runtime_invoke): Don't box valuetypes.
21161
21162 2004-10-22  Chris Toshok  <toshok@ximian.com>
21163
21164         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
21165         don't hide private methods.
21166
21167 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
21168
21169         * icall.c: Allows the runtime to "share" (when known) the public key
21170         token of an assembly. This avoid the need to recalculate the token 
21171         (from the public key) in managed code.
21172
21173 2004-10-21  Chris Toshok  <toshok@ximian.com>
21174
21175         * debug-helpers.c (append_class_name): argh, revert last patch.
21176         
21177 2004-10-21  Chris Toshok  <toshok@ximian.com>
21178
21179         * debug-helpers.c (append_class_name): use '+' as the delimiter,
21180         not '/', so that it matches what the debugger uses to look up
21181         methods.
21182
21183 2004-10-21  Martin Baulig  <martin@ximian.com>
21184
21185         * mono-debug-debugger.c (mono_debugger_throw_exception): New
21186         public method; this is called each time an exception is thrown and
21187         allows the debugger to use exception catch points.
21188
21189 2004-10-21  Martin Baulig  <martin@ximian.com>
21190
21191         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
21192         the stack pointer and the exception object in some struct and pass
21193         that to the debugger.
21194
21195 2004-10-21  Chris Toshok  <toshok@ximian.com>
21196
21197         * mono-debug-debugger.c (do_write_class): add instance/static
21198         event support.  We don't expose "raise" or "other" yet.
21199         (event_is_static): new method.
21200
21201 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
21202
21203         * mono-debug-debugger.c
21204         (mono_debugger_handle_exception): Remove
21205         bogus return value for fussy compilers.
21206
21207 2004-10-20  Martin Baulig  <martin@ximian.com>
21208
21209         * mono-debug-debugger.c
21210         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
21211         (mono_debugger_handled_exception): Likewise.
21212
21213 2004-10-20  Martin Baulig  <martin@ximian.com>
21214
21215         * mono-debug-debugger.h (MonoDebuggerEvent): Added
21216         MONO_DEBUGGER_EVENT_EXCEPTION.
21217
21218         * mono-debug-debugger.c (mono_debugger_handle_exception): New
21219         public function to send the debugger a notification for an
21220         exception and inform it about a catch/finally clause.
21221
21222 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
21223
21224         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
21225         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
21226         fix 2.95 build. 
21227
21228         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
21229
21230 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21231
21232         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
21233         marshalled as [In,Out]. Fixes #58325.
21234
21235 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
21236
21237         * reflection.c (mono_method_body_get_object): Implement some fields.
21238
21239 2004-10-12  Martin Baulig  <martin@ximian.com>
21240
21241         * reflection.c (mono_reflection_bind_generic_parameters): Small
21242         fix, correctly retrieve our parent from a generic instance.
21243
21244 2004-10-12  Martin Baulig  <martin@ximian.com>
21245
21246         * metadata.c (mono_metadata_generic_param_equal): We always have
21247         an owner.
21248
21249         * class.c
21250         (mono_class_from_generic_parameter): We need to have an owner.
21251         (my_mono_class_from_generic_parameter): Likewise.
21252
21253         * reflection.c (mono_reflection_setup_generic_class): Renamed to
21254         mono_reflection_create_generic_class() and added a new
21255         mono_reflection_setup_generic_class().  
21256         (mono_reflection_initialize_generic_param): If we're a nested
21257         generic type and inherited from the containing class, set our
21258         owner to the outer class.
21259
21260 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
21261
21262         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
21263
21264         * reflection.c (mono_method_body_get_object): New function to create
21265         a MethodBody object.
21266
21267         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
21268
21269 2004-10-11  Martin Baulig  <martin@ximian.com>
21270
21271         * metadata.c (_mono_metadata_type_equal): Renamed to
21272         do_mono_metadata_type_equal() and made static.
21273
21274 2004-10-11  Martin Baulig  <martin@ximian.com>
21275
21276         * appdomain.c: Bump corlib version number to 28.
21277
21278 2004-10-10  Martin Baulig  <martin@ximian.com>
21279
21280         * class-internals.h
21281         (MonoGenericInst): Added `MonoGenericContainer *container'.
21282         (MonoGenericMethod): Likewise.
21283         (MonoGenericContext): Likewise.
21284         (MonoGenericParam): Added `MonoGenericContainer *owner'.
21285
21286         * metadata.c
21287         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
21288         (do_mono_metadata_parse_generic_inst): Likewise.
21289         (mono_metadata_parse_type_full): New public method.  This is the actual
21290         mono_metadata_parse_type() implementation - with an additional
21291         `MonoGenericContainer *' argument.
21292         (mono_metadata_parse_array_full): Likewise.
21293         (mono_metadata_parse_signature_full): Likewise.
21294         (mono_metadata_parse_method_signature_full): Likewise.
21295         (mono_metadata_parse_mh_full): Likewise.
21296         (mono_type_create_from_typespec): Likewise.
21297         (mono_metadata_interfaces_from_typedef_full): New public method;
21298         this is similar to the other _full() methods, but we take a
21299         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
21300         (mono_metadata_parse_generic_param): Take an additional
21301         `MonoGenericContainer *' argument and lookup the MonoGenericParam
21302         from that container.
21303         (mono_metadata_generic_param_equal): New static method to compare
21304         two type parameters.
21305         (_mono_metadata_type_equal): New static method; takes an
21306         additional `gboolean signature_only' argument - if true, we don't
21307         compare the owners of generic parameters.
21308         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
21309         with a TRUE argument - do a signature-only comparision.
21310
21311         * loader.c: Use the new _full() methods and pass the
21312         MonoGenericContainer to them.
21313
21314         * object-internals.h (MonoReflectionTypeBuilder): Added
21315         `MonoGenericContainer *generic_container' field.
21316         (MonoReflectionMethodBuilder): Likewise.
21317
21318 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21319
21320         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
21321         case initial images of dynamic assemblies.
21322
21323         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
21324
21325         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
21326
21327         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
21328         length of event->other array.
21329         (typebuilder_setup_events): Ditto.
21330
21331         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
21332         'assembly_by_name' and add an 'assemblies' list.
21333
21334         * assembly.h assembly.c: Add a new search hook for determining whenever
21335         an assembly is already loaded. Use this instead of searching in the
21336         loaded_assemblies list.
21337
21338         * domain.c appdomain.c: Implement the new search hook so loaded 
21339         assemblies are now scoped by appdomain. Fixes #67727.
21340
21341 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
21342
21343         * threads.c (mono_thread_attach): Initialize synch_lock field so
21344         mono_thread_detach works again.
21345
21346         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
21347         'lib' too. Fixes #63130.
21348
21349 2004-10-06  Jackson Harper  <jackson@ximian.com>
21350
21351         * culture-info-tables.h: regenerated.
21352
21353 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
21354
21355         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
21356         implemented by other interfaces in the result. Fixes #65764.
21357         
21358         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
21359         Handle unloadable modules without crashing.
21360
21361         * image.c (load_modules): Revert the previous patch since modules must
21362         have a fixed index inside the array.
21363         
21364         * image.c (load_modules): Don't include native modules in the modules
21365         array.
21366
21367 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21368
21369         * reflection.h: Add param_defaults field.
21370
21371         * reflection.c: Add support for parameter defaults in dynamic methods.
21372         Fixes #64595.
21373
21374         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
21375         an empty string when a type has no namespace. Fixes #64230.
21376
21377 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
21378
21379         * tabledefs.h: Added "internal" security actions to support non-CAS
21380         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
21381         Note: they do not seems to be used anymore in 2.0 (new metadata format)
21382
21383 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
21384
21385         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
21386         constructor of abstract class. Fixes #61689.
21387
21388 2004-10-04  Martin Baulig  <martin@ximian.com>
21389
21390         * class-internals.h (MonoGenericContainer): New type.
21391         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
21392         `MonoGenericContainer *generic_container'.
21393         (MonoClass): Replaced `gen_params' and `num_gen_params' with
21394         `MonoGenericContainer *generic_container'.
21395
21396         * metadata.c (mono_metadata_load_generic_params): Return a
21397         `MonoGenericContainer *' instead of a `MonoGenericParam *';
21398         removed the `num' argument.
21399
21400 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21401
21402         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
21403         for dynamic images.
21404
21405         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
21406         machine fields.
21407
21408         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
21409
21410         * reflection.c: Save pe_kind and machine values into the generated
21411         image file.
21412
21413         * appdomain.c: Bump corlib version number.
21414
21415         * object-internals.h: Reorganize layout of LocalBuilder.
21416
21417         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
21418         New helper function.
21419
21420         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
21421         created MonoType for dynamic types. Fixes #66180.
21422
21423 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
21424
21425         * threadpool.c: the ares hashtable needs a critical section around it.
21426         this prevents some nasty segfaults
21427
21428 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21429
21430         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
21431         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
21432         bug 67324).
21433         
21434 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
21435
21436         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
21437         
21438 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21439
21440         * image.c: Always canonicalize image file names, to avoid loading
21441         the same assembly twice when referenced using a relative path.
21442
21443 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
21444
21445         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
21446
21447         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
21448
21449         * marshal.c: Fix warnings.
21450
21451 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
21452
21453         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
21454         attempting to marshal the delegate_trampoline as the method_addr.
21455         This patch has a static hashtable of marshalled delegates so that 
21456         we can map delegate_trampoline addresses back to delegates.  This
21457         allows a delegate passed to managed code to be passed back into native
21458         code.  Fixes #67039
21459
21460 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21461
21462         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
21463
21464         * reflection.c (method_encode_code): Align method headers properly.
21465         Fixes #66025.
21466
21467 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21468
21469         * marshal.c: In the runtime invoke wrapper, reset the abort
21470         exception if it is cached. This avoids the automatic rethrowal of 
21471         the exception after the catch of the wrapper. Also check for pending
21472         interruptions before calling the managed method. This is done using
21473         the new method emit_thread_force_interrupt_checkpoint, since the
21474         normal checkpoint method is ignored when running the invoke wrapper.
21475         * object.c: If the abort exception is rethrown, set the abort_exc
21476         field of the thread, so it will be rethrown aftere every catch.
21477         * threadpool.c: Only run an interruption checkpoint if what has been
21478         requested is a stop of the thread (aborts will be ignored).
21479         * threads.c: By default, a thread will now never be interrumped while
21480         running the runtime invoke wrapper (this ensures that runtime_invoke
21481         will always return to the caller if an exception pointer is provided).
21482         There is a new special method mono_thread_force_interruption_checkpoint()
21483         to force an interruption checkpoint even if running a protected
21484         wrapper, which is used by the same runtime invoke wrapper to do a check
21485         at a safe point.
21486
21487 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21488
21489         * object.c, object-internals.h: Implemented mono_release_type_locks,
21490         which releases the cctor locks held by a thread.
21491         * threads.c, threads.h: In thread_cleanup, release cctor locks held
21492         by a thread. Added mono_thread_exit() method to be used to safely stop
21493         a thread.
21494
21495 2004-09-28  Raja R Harinath  <rharinath@novell.com>
21496
21497         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
21498         Move null check before dereference.  Avoid indexing beyond the end
21499         of the 'modules' array.
21500
21501 2004-09-28  Raja R Harinath  <rharinath@novell.com>
21502
21503         * metadata-internals.h (MonoImage): Add module_count field.
21504         * image.c (load_modules): Set image->module_count.
21505         (mono_image_load_file_for_image): Use image->module_count.
21506         * reflection.c (mono_image_load_module): Append to image->modules array 
21507         of dynamic assembly.
21508         (mono_module_get_object): Fix loop to actually increment index.
21509         Use image->module_count.
21510         * assembly.c (mono_assembly_load_references): Use image->module_count.
21511         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
21512         Likewise.
21513
21514 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21515
21516         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
21517         Avoid assert on generic types.
21518
21519 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
21520
21521         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
21522
21523         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
21524
21525         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
21526         function to convert a MarshalSpec structure to its managed counterpart.
21527
21528         * reflection.c: Fix warnings.
21529         
21530         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
21531         field.
21532
21533         * icall.c (mono_create_icall_signature): Fix build.
21534
21535 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21536
21537         * icall.c: Add MakePointType icall.
21538
21539         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
21540         warnings.
21541
21542 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21543
21544         * threadpool.c: reuse allocated slots in the queue.
21545
21546 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21547
21548         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
21549
21550         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
21551
21552         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
21553         previous change.
21554
21555         * tabledefs.h: Add constants for pinvoke attributes BestFit and
21556         ThrowOnUnmappableChar.
21557
21558         * icall.c (ves_icall_Type_GetPacking): New icall.
21559
21560 2004-09-24  Martin Baulig  <martin@ximian.com>
21561
21562         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
21563
21564 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21565
21566         * appdomain.c:
21567         (mono_domain_set): allow setting a domain that is being unloaded.
21568         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
21569         being unloaded.
21570
21571 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21572
21573         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
21574         the GetCustomAttributes icall.
21575
21576 2004-09-23  Martin Baulig  <martin@ximian.com>
21577
21578         * object-internals.h (MonoReflectionGenericParam): Replaced
21579         'has_ctor_constraint', `has_reference_type' and `has_value_type'
21580         with `guint32 attrs'.
21581
21582 2004-09-23  Martin Baulig  <martin@ximian.com>
21583
21584         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
21585
21586 2004-09-23  Martin Baulig  <martin@ximian.com>
21587
21588         * object-internals.h (GenericParameterAttributes): New enum.
21589
21590 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21591
21592         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
21593         
21594         * class.c (init_events): Fill out event->other field.
21595
21596         * class.c: Fix warnings.
21597
21598         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
21599
21600 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21601
21602         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
21603         walk which doesn't supply the IL offset.
21604
21605 2004-09-22  Martin Baulig  <martin@ximian.com>
21606
21607         * reflection.c (mono_reflection_setup_internal_class): If we're
21608         System.ValueType, System.Object or System.Enum, set
21609         `klass->instance_size' and create the vtable.
21610         (mono_reflection_create_internal_class): If we're an enum type,
21611         get the base class from our current corlib.
21612
21613 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
21614
21615         * reflection.h (MonoResolveTokenError): New type.
21616
21617         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
21618         icall.
21619
21620         * icall.c: Add an 'error' argument to the ResolveToken icalls.
21621
21622 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
21623
21624         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
21625         Support also calling constructors, but only for already allocated objects.
21626
21627 2004-09-17  Geoff Norton <gnorton@customerdna.com>
21628
21629         * reflection.c (type_get_qualified_name): If the klass is null
21630         return the typename to avoid a NullRefEx.
21631         (encode_cattr_value): Get the qualified name of the boxed type,
21632         not the underlying enumtype.  Fixes #62984.
21633
21634 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * marshal.c: Fix problems with previous checkin.
21637
21638 2004-09-21    <vargaz@freemail.hu>
21639
21640         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
21641         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
21642
21643         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
21644
21645 2004-09-21  Geoff Norton <gnorton@customerdna.com>
21646
21647         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
21648         should only return a type for pointers, arrays, and passbyref types.
21649         Fixes bug #63841.
21650
21651 2004-09-21  Martin Baulig  <martin@ximian.com>
21652
21653         * domain.c (mono_debugger_check_runtime_version): New public
21654         function.
21655
21656         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
21657
21658 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
21659
21660         * reflection.c: Added missing sort to the declarative security 
21661         attributes table. MS implementation stops seeing the attributes if the
21662         token number regress in the table (as shown by ildasm and permview).
21663
21664 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
21665
21666         * object-internals.h (MonoReflectionModule): Add 'token' field.
21667         
21668         * reflection.c (mono_reflection_get_token): Add support for Module
21669         and Assembly.
21670         (mono_module_get_object): Set 'token' field.
21671         (mono_module_file_get_object): Set 'token' field.
21672
21673         * icall.c: Add new Assembly and Module icalls.
21674
21675         * appdomain.c: Bump corlib version.
21676
21677 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
21678
21679         * loader.h loader.c class.h class.c: Add helper functions for obtaining
21680         tokens of metadata objects.
21681
21682         * reflection.h reflection.c (mono_reflection_get_token): New function
21683         to obtain the token of a metadata object.
21684
21685         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
21686
21687 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21688
21689         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
21690         
21691         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
21692
21693 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
21694
21695         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
21696         * object-internals.h: Added 3 MonoArray* members to MonoReflection
21697         AssemblyBuilder to access the permissions set in the class lib.
21698         * reflection.c: Added security attributes encoding step in 
21699         mono_image_build_metadata.
21700         * tabledefs.h: Added new security actions defined in 2.0:
21701         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
21702
21703 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
21704
21705         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
21706         macro parameter.
21707
21708 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
21709  
21710         * locales.c: nullify the ICU_collator member of CompareInfo when it is
21711           finalized. There where random SIGSEVs at program termination, when
21712           an object being finalized was trying to do a string comparison and
21713           the current culture was already finalized.
21714  
21715 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21716
21717         * threads.c: call thread_cleanup before finishing the thread if we get
21718         there.
21719
21720 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
21721
21722         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
21723         assemblies from the parent. Fixes #65665.
21724
21725 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
21726
21727         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
21728         modifiers.
21729
21730 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
21731
21732         * reflection.h: add prototype for mono_get_dbnull_object
21733         * reflection.c: add prototypes for get_default_param_value_blobs 
21734         and mono_get_object_from_blob for fussier compilers
21735
21736 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
21737  
21738         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
21739         false deadlock checks in class initialization.
21740  
21741 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21742
21743         * image.c (mono_image_addref): Fix comment.
21744
21745         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
21746         possible.
21747
21748 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
21749
21750         * reflection.c (mono_param_get_objects): Modified to return
21751         ParameterInfo.DefaultValue object.
21752
21753         (get_default_param_value_blobs):
21754         (mono_get_object_from_blob):
21755         (mono_get_dbnull_object): New helper routines. 
21756
21757         * object.c (mono_get_constant_value_from_blob): New helper routine
21758         carved out from get_default_field_value ()
21759
21760         * object-internals.h (mono_get_constant_value_from_blob): Added
21761         function declaration.
21762
21763 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21764
21765         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
21766         referenced assemblies. Fixes #62135.
21767
21768         * exception.h exception.c (mono_get_exception_file_not_found2): New
21769         helper function.
21770
21771 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * class.h class.c: Add mono_type_get_underlying_type ().
21774
21775 2004-09-09  Geoff Norton <gnorton@customerndna.com>
21776
21777         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
21778         Fix GetTypes() to support dynamically created assemblies.
21779
21780 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
21781
21782         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
21783         
21784         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
21785         previous patch.
21786
21787         * reflection.h reflection.c loader.c: Allow dynamic construction of
21788         pinvoke methods. Fixes #65571.
21789         
21790         * reflection.c (mono_reflection_get_type): Revert previous change since
21791         it causes regressions.
21792
21793 2004-09-08  Martin Baulig  <martin@ximian.com>
21794
21795         * class.c (class_compute_field_layout): Don't call
21796         mono_class_layout_fields() for open generic instances.
21797
21798 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
21799         * threads.c appdomain.c: fix typo in GC macro
21800
21801 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21802
21803         * threads.c: don't call mono_thread_detach() in start_wrapper(),
21804         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
21805
21806 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * image.c (mono_image_close): Applied patch from 
21809         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
21810         assembly is loaded multiple times from data.
21811         
21812         * image.c (mono_image_open): Fix warning.
21813
21814 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21815
21816         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
21817         once. Fixes #58334.
21818         
21819         * reflection.c (mono_reflection_create_runtime_class): Initialize
21820         klass->nested_classes. Fixes #61224.
21821
21822 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21823
21824         * threads.c: sched_yield() on exit, to allow threads to quit.
21825
21826 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21827
21828         * object.c (mono_unhandled_exception): Remove leftover debug code.
21829
21830 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
21831
21832         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
21833
21834 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21835
21836         * marshal.c (emit_marshal_array): Really null terminate string arrays.
21837         
21838         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
21839
21840 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21841
21842         * marshal.c (emit_marshal_array): Null terminate string arrays.
21843         
21844         * marshal.c (raise_auto_layout_exception): Fix warning.
21845
21846         * reflection.c (mono_param_get_objects): Initialize the default value
21847         with DBNull.Value, not null. Fixes #62123.
21848
21849 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
21850
21851         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
21852         throw an exception with a cute explanation.
21853
21854 2004-09-06  Dick Porter  <dick@ximian.com>
21855
21856         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
21857         Close the new process's thread handle, as we don't use it.  The
21858         handle stays around forever otherwise.
21859
21860 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21861
21862         * object.c (arith_overflow): Fix warning.
21863
21864         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
21865         calling conventions in method refs. Fixes #65352.
21866
21867         * reflection.c: Fix warnings.
21868
21869 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
21870
21871         * icall.c: Add a new icall for Array.Clear
21872
21873 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
21874
21875         * object.c: When allocating an array, we have to throw
21876         an overflow exception if any of the lengths are < 0.
21877
21878 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21879
21880         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
21881         properly. Also move implementation of string array marshalling to 
21882         managed code. Fixes #42316.
21883
21884 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21885
21886         * assembly.c: provide more information when loading an assembly fails.
21887
21888 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21889
21890         * filewatcher.c: don't expect the development fam package to be
21891         installed.
21892
21893 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
21894
21895         * marshal.c: Make a copy of the signature cookie since it will be
21896         freed by the caller.
21897         
21898         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
21899
21900         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
21901
21902         * metadata.c (mono_metadata_free_marshal_spec): New function to free
21903         marshal specs.
21904
21905         * marshal.c: More refactoring.
21906         
21907         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
21908         smaller functions.
21909
21910 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
21911
21912         * object.c: In mono_message_invoke, fill the output parameter array after
21913           calling the managed method (it was done before the call). This fixes
21914           bug #59299.
21915
21916 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21917
21918         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
21919         as well.
21920
21921 2004-09-02  Martin Baulig  <martin@ximian.com>
21922
21923         * class.c (mono_class_instance_size): Don't allow generic type
21924         definitions or open generic instances.
21925         (mono_class_array_element_size): If we're a value type, call
21926         mono_class_instance_size() on the original class.
21927
21928         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
21929         handle generic instances.
21930
21931         * mono-debug-debugger.c (write_type): Handle generic instances
21932         like classes.
21933
21934 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21935
21936         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
21937         the allocation request fails. Fixes #65089.
21938
21939         * object.c (mono_runtime_free_method): Do not call mono_free_method.
21940         
21941         * object.c (mono_runtime_free_method): New function to free a dynamic
21942         method.
21943
21944         * marshal.c (mono_delegate_free_ftnptr): New function to free the
21945         delegate trampoline.
21946
21947         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
21948         with hasthis as dynamic,
21949
21950         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
21951
21952         * domain.c (mono_jit_info_table_remove): New function to remove an
21953         entry from the jit info table.
21954
21955         * class-internals.h (MonoMethod): Add 'dynamic' field.
21956
21957         * loader.c: Fix warnings.
21958
21959 2004-09-01  Martin Baulig  <martin@ximian.com>
21960
21961         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
21962         instead of mono_debugger_lock() because the latter one is a no-op
21963         unless running in the debugger.
21964
21965 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
21966
21967         * class.c (class_compute_field_layout): Classes with auto-layout or
21968         reference fields are not blittable.
21969         
21970 2004-09-01  Dick Porter  <dick@ximian.com>
21971
21972         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
21973         mono_image_get_filename() to get the assembly location.
21974
21975         * icall.c:
21976         * metadata.h: Fix compile warnings
21977
21978 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
21979
21980         * class.c (class_compute_field_layout): System.Object is blittable.
21981
21982         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
21983         as in/out. Fixes #59909.
21984
21985 2004-09-01  Martin Baulig  <martin@ximian.com>
21986
21987         * metadata.h (MONO_TYPE_ISREFERENCE): Call
21988         mono_metadata_generic_inst_is_valuetype() if we're a generic
21989         instance to check whether our underlying type is a reference type.
21990
21991 2004-09-01  Martin Baulig  <martin@ximian.com>
21992
21993         * metadata.c (mono_type_size): If we're a generic instance, call
21994         mono_class_value_size() for value types.
21995
21996 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
21997
21998         * marshal.c: Implement more custom marshalling functionality. Fixes
21999         #64915.
22000
22001 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22002
22003         * mono-debug.c, debug-mono-symfile.c: add some locking love.
22004
22005 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22006
22007         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
22008
22009         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
22010
22011         * icall.c: Fix some warnings.
22012
22013         * threads.c (abort_appdomain_thread): Fix unref errors.
22014         (mono_thread_current): Fix THREAD_DEBUG define.
22015
22016 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
22019
22020         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
22021
22022 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
22023
22024         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
22025         string arrays.
22026
22027 2004-08-28  Martin Baulig  <martin@ximian.com>
22028
22029         * metadata.c
22030         (mono_metadata_generic_inst_is_valuetype): New public function.
22031
22032         * metadata.h (MONO_TYPE_ISSTRUCT): Call
22033         mono_metadata_generic_inst_is_valuetype() if we're a generic
22034         instance to check whether our underlying type is a valuetype.
22035
22036 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22037
22038         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
22039         #63768.
22040
22041 2004-08-25  Martin Baulig  <martin@ximian.com>
22042
22043         * loader.c (mono_get_method_from_token): Abstract methods can also
22044         be generic and thus have type parameters.
22045
22046         * metadata-internals.h
22047         (MonoDynamicImage): Added `GPtrArray *gen_params'.
22048
22049         * reflection.c (mono_image_get_generic_param_info): Don't create a
22050         metadata row, just add an entry to the `gen_params' array.
22051         (build_compressed_metadata): Sort the `gen_params' array and then
22052         actually create the metadata.
22053
22054 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22055
22056         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
22057
22058 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22059
22060         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
22061
22062 2004-08-24  Martin Baulig  <martin@ximian.com>
22063
22064         * class.cs (mono_class_is_subclass_of): Like an interface, a
22065         generic instance also derives from System.Object.
22066
22067 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22068
22069         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
22070         custom modifiers to be in any order. Fixes #61990.
22071
22072 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22073
22074         * object.c: Register mono_object_new_fast icall.
22075         
22076         * object.c (mono_class_get_allocation_ftn): Return to calling
22077         mono_object_new_fast, since it seems faster to compute the object 
22078         size in unmanaged code than passing it as a parameter.
22079
22080         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
22081
22082         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
22083         this function with Boehm as the oom handler, so we don't have to check
22084         the result of GC_malloc.
22085
22086         * object.c: Remove checks for oom.
22087
22088         * object.h object.c (mono_class_get_allocation_ftn): New function to
22089         return the icall which can be used to allocate an instance of a given
22090         class. 
22091
22092         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
22093
22094         * class-internals.h: Add 'enabled' field.
22095
22096 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
22097
22098         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
22099
22100 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
22101         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
22102         value 0x0010.
22103
22104 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22105
22106         * appdomain.c: use the Tls function for appdomain too,
22107         at Zoltan's request. Actually return in mono_context_get
22108
22109         * appdomain.c, profiler.c, threads.c: use __thread
22110
22111 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22112
22113         * appdomain.c threads.c: Call GC_CreateThread on windows.
22114
22115         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
22116         multiple libraries since this don't work on windows.
22117
22118 2004-08-18  Martin Baulig  <martin@ximian.com>
22119
22120         * class-internals.h
22121         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
22122         MonoMethodHeader.
22123
22124         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
22125         MonoMethodNormal since we also need it for abstract and interface
22126         methods.
22127
22128         * reflection.c
22129         (build_compressed_metadata): Sort the GenericParam table.
22130         (mono_image_create_token): Added `gboolean create_methodspec'
22131         argument; this is false when generating a MethodImpl token.
22132         (reflection_methodbuilder_to_mono_method): Abstract and interface
22133         methods may also have generic parameters.
22134
22135 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22136
22137         * appdomain.c: thread local alloc
22138
22139 2004-08-17  Martin Baulig  <martin@ximian.com>
22140
22141         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
22142
22143         * icall.c
22144         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
22145         argument.
22146
22147         * class.c (mono_type_get_full_name): New public function.
22148         (mono_type_get_name): Don't include the type arguments.
22149
22150 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22151
22152         * Makefile.am: Build static versions of libmetadata and libmonoruntime
22153         for inclusion into the mono executable.
22154
22155 2004-08-16  Martin Baulig  <martin@ximian.com>
22156
22157         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
22158         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
22159
22160 2004-08-14  Martin Baulig  <martin@ximian.com>
22161
22162         * class.c (dup_type): Also copy the `byref' field.
22163
22164 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22165
22166         * reflection.c (create_dynamic_mono_image): Revert the last change 
22167         since it breaks bootstrap.
22168
22169 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22170
22171         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
22172
22173         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
22174         not free them with g_free.
22175
22176 2004-08-11  Martin Baulig  <martin@ximian.com>
22177
22178         * reflection.c (mono_reflection_setup_internal_class): Also call
22179         mono_class_setup_mono_type() if we already have a `tb->type.type'.
22180
22181 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
22182
22183         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
22184         called during default (first) AppDomain creation. Keep track of
22185         Evidence when loading assemblies.
22186
22187 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22188
22189         * opcodes.c, opcodes.h: reduce runtime relocations.
22190
22191 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22192
22193         * culture-info.h, locales.c: fixes and chages to sue the new
22194         optimized format of the locale data.
22195         * culture-info-tables.h: regenerated.
22196
22197 2004-08-06  Geoff Norton <gnorton@customerdna.com>
22198         
22199         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
22200
22201 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
22202
22203         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
22204         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
22205         * domain-internals.h: icall declaration.
22206         * icall.c: icall registration.
22207         * object-internals.h: New fields in MonoAssembly for CAS.
22208
22209 2004-08-05  Duncan Mak  <duncan@ximian.com>
22210
22211         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22212         CEE_LDELEM_ANY.
22213
22214 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
22215
22216         * reflection.c: fix to deal with object[] arrays in custom ctors
22217         (bug #62550).
22218
22219 2004-08-05  Martin Baulig  <martin@ximian.com>
22220
22221         * class.c (mono_class_array_element_size): Added support for
22222         generic instances and correctly handle "recursive" types.
22223
22224 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22225
22226         * assembly.c: Fix warnings.
22227
22228 2004-08-04  Martin Baulig  <martin@ximian.com>
22229
22230         * class.c
22231         (mono_type_get_name_recurse): Added `gboolean include_arity'
22232         argument specifying whether or not we should include the generic
22233         arity in the type name.
22234         (_mono_type_get_name): New static function.
22235         (mono_class_setup_vtable): If we're a generic instance, don't
22236         include the generic arity in the names of explicit method
22237         implementations.        
22238
22239 2004-08-03  Martin Baulig  <martin@ximian.com>
22240
22241         * class.c (mono_type_get_name_recurse): Enclose the generic type
22242         arguments in `<', '>'.
22243
22244 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
22245
22246         * gc.c: make GC warning messages use the trace API, they are just
22247         noise to most of the users.
22248
22249 2004-08-03  Martin Baulig  <martin@ximian.com>
22250
22251         * debug-mono-symfile.c (read_string): Correctly read the string.
22252
22253 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22254
22255         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
22256         
22257         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
22258         icalls.
22259         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
22260
22261 2004-07-30  Martin Baulig  <martin@ximian.com>
22262
22263         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
22264         Reflect latest symbol writer changes.   
22265
22266 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
22267
22268         * object.c: always create an object if null is passed
22269         to Invoke() where a valuetype is expected.
22270
22271 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22272
22273         * marshal.c (mono_marshal_init): make managed
22274         signatures match native ones better for 64bits.
22275
22276 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22277
22278         * appdomain.c: hack to build correctly the private bin path on windows.
22279         Fixes bug #61991.
22280
22281 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22282
22283         * assembly.c: Load mscorlib from the correct framework directory
22284           (mono/<version>/mscorlib.dll).
22285         * appdomain.h: Added prototypes for new functions.
22286         * internals.h: Added some prototypes.
22287         * domain.c: When initializing the runtime, get from the executable and
22288           the configuration files the runtime version that the app supports.
22289           Added support methods for reading app.exe.config. Added list of versions
22290           supported by the JIT. Added two new methods: mono_init_from_assembly,
22291           which initializes the runtime and determines the required version from
22292           the provided exe file, and mono_init_version, which initializes
22293           the runtime using the provided version.
22294         * icall.c: Get machine.config from version-specific directory.
22295         * reflection.c: When generating an image, embed the version number
22296           of the current runtime.
22297
22298 2004-07-28  Dick Porter  <dick@ximian.com>
22299
22300         * socket-io.c
22301         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
22302         returned sockaddr size before creating the remote address object.
22303         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
22304         61608.
22305
22306 2004-07-28  Dick Porter  <dick@ximian.com>
22307
22308         * locales.c (string_invariant_compare_char): Fix invariant char
22309         compares between upper and lower cases.  Fixes bug 61458.
22310
22311 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
22312         
22313         * marshal.c: actually cache stelem.ref wrappers.
22314         
22315 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22316
22317         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
22318         sections and remove the mono_cli_rva_map () function.
22319
22320 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22321
22322         * debug-mono-symfile.c: fix one more endianess issue, from a patch
22323         by Geoff Norton (<gnorton@customerdna.com>).
22324
22325 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
22326
22327         * class.c: fix class loads for pointer types (typeof(int) !=
22328         typeof(int*)).
22329
22330 2004-07-27  Martin Baulig  <martin@ximian.com>
22331
22332         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
22333         reading the debugging information from an external ".mdb" file.
22334
22335 2004-07-24  Martin Baulig  <martin@ximian.com>
22336
22337         * reflection.c (mono_image_get_type_info): Only write a class
22338         layout entry if we actually have a size or a packing size.
22339
22340 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
22341
22342         * reflection.c (type_get_fully_qualified_name): 
22343         insert cast to get type checking of ?: with non-gcc compilers
22344
22345 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
22346
22347         * rand.c: use g_getenv for both lookups of
22348         MONO_EGD_SOCKET
22349
22350 2004-07-17  Martin Baulig  <martin@ximian.com>
22351
22352         * reflection.c (mono_reflection_bind_generic_method_parameters):
22353         Set `gmethod->reflection_info'.
22354
22355 2004-07-17  Martin Baulig  <martin@ximian.com>
22356
22357         * class.c (mono_class_create_from_typedef): Insert the newly
22358         created class into the hash table before computing the interfaces
22359         since we could be called recursively.
22360
22361 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22362
22363         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
22364         function to implement stelem.ref in managed code
22365         * class-internals.h, debug-helpers.c: a new wrapper type
22366         for the above.
22367
22368 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
22369
22370         * gc.c: allow GC handles to work even when no GC is compiled in.
22371         Fix part of bug #61134 (GetAddrOfPinnedObject).
22372
22373 2004-07-13  Peter Williams  <peter@newton.cx>
22374  
22375         * process.c (complete_path): Make sure we don't attempt to execute
22376         directories.
22377  
22378 2004-07-12  Geoff Norton <gnorton@customerdna.com>
22379
22380         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
22381           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
22382           and will add/subtract the hour if needed
22383
22384 2004-07-12  Martin Baulig  <martin@ximian.com>
22385
22386         * reflection.c (mono_field_get_object): If we have
22387         `field->generic_info', take the attributes from
22388         `field->generic_info->generic_type'.    
22389
22390 2004-07-12  Martin Baulig  <martin@ximian.com>
22391
22392         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
22393         This function must be called before initializing the runtime.
22394         (mono_debug_init_1): New function; call this after initializing
22395         the runtime, but before loading the assembly.  It tells the
22396         debugger to load corlib and the builtin types.
22397
22398         * mono-debug-debugger.c: Did some larger changes in the debugging
22399         code; support recursive class declarations, make sure we actually
22400         add all classes.
22401
22402 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22403
22404         * debug-helpers.c: undo my previous patch and fixed the real issue in
22405         ../mini/exceptions-x86.c
22406
22407 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22408
22409         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
22410         when no HOME env. variable was set and a NullRef was thrown in a .cctor
22411         called from other .cctors.
22412
22413 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
22414
22415         * loader.c: Removed the mono_loader_wine_init hack now that we are
22416         doing a managed version of Windows.Forms.
22417
22418 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22419
22420         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
22421         threadpool.c, threads.c: remove static data from rootset.
22422
22423 2004-07-09  Dick Porter  <dick@ximian.com>
22424
22425         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
22426         Don't do any more processing if the matched length was 0.  It was
22427         increasing the size of the string before.  Fixes bug 61167.
22428
22429 2004-07-09  Dick Porter  <dick@ximian.com>
22430
22431         * socket-io.h:
22432         * socket-io.c
22433         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
22434         Add support for SO_PEERCRED if its available.
22435
22436 2004-07-09  Peter Bartok <pbartok@novell.com>
22437         * loader.c: winelib.exe.so error message is now only displayed if
22438         MONO_DEBUG is set. To help us avoid questions when people are trying
22439         out the new Managed.Windows.Forms.
22440
22441 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22442
22443         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
22444         for isinst and castclass wrappers.
22445
22446         * class-internals.h icall.c: Move registration and lookup of JIT icalls
22447         to libmetadata from the JIT, so they could be used by the marshalling
22448         code and the interpreter.
22449
22450         * marshal.c: Register marshalling related JIT icalls here instead of
22451         in mini.c. Use CEE_MONO_ICALL instead of the family of 
22452         CEE_MONO_PROC<x> opcodes to call marshalling functions.
22453
22454         * metadata.h: Remove unneeded marshalling conversions.
22455
22456         * opcodes.c: Update for new opcodes.
22457         
22458 2004-07-08  Martin Baulig  <martin@ximian.com>
22459
22460         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
22461         (mono_debug_get_domain_data): Make this function static.
22462
22463 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
22464
22465         * gc.c, object.h: add nice GC handle API for embedders.
22466
22467 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22468
22469         * reflection.c: more changes for the new api
22470
22471         * object.c: When we reflect on a field w/ a constant value, it
22472         will not have a memory location, so we must access metadata. Also,
22473         allow easier reading of strings so that we can read them from
22474         the constant data.
22475
22476         * class.c (mono_class_layout_fields): no need for literal fields here.
22477
22478         * class-internals.h: api changes for const fields
22479
22480         * icall.c (ves_icall_get_enum_info): use new apis for const fields
22481
22482 2004-07-06  Martin Baulig  <martin@ximian.com>
22483
22484         * mono-debug.h: Increment version number to 44.
22485
22486         * mono-debug.c (mono_debug_add_wrapper): The second argument is
22487         now a gpointer, rewrote this whole method.
22488
22489         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
22490         function.  Add information about the wrapper in a new "misc table".
22491
22492         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
22493         for the new misc table.
22494
22495 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * metadata-internals.h image.c: Add a cache for helper signatures.
22498
22499         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
22500
22501 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22502
22503         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
22504         delegates from a delegate. Fixes #61033.
22505         
22506         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
22507         marshalling of stringbuilder arrays. Fixes #59900.
22508
22509 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22510
22511         * icall.c: Add EnumBuilder:setup_enum_type icall.
22512
22513 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22514
22515         * icall.c: Added a new icall for the property version of
22516         OffsetOfStringData.
22517
22518 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22519
22520         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
22521         it has a constant size across platforms.
22522
22523         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
22524         stack trace.
22525
22526 2004-06-29  Martin Baulig  <martin@ximian.com>
22527
22528         * mono-debug.c (mono_debug_add_method): Protect the whole function
22529         in mono_debugger_lock(), not just parts of it.
22530
22531 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22532
22533         * reflection.c: make sure padding bytes in heaps are zeroed.
22534
22535 2004-06-24  David Waite  <mass@akuma.org>
22536
22537         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
22538         image.c, loader.c, locales.c, marshal.c, metadata.c,
22539         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
22540         string-icalls.c, threads.c: change to C90-style comments from C99 /
22541         C++ -style
22542
22543 2004-06-24  Dick Porter  <dick@ximian.com>
22544
22545         * threads.c
22546         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
22547         return createdNew.  Fixes bug 60412.
22548
22549         * threads-types.h: 
22550         * icall.c: Add createdNew parameter to CreateMutex icall
22551
22552 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22553
22554         * reflection.c, object-internals.h: save default value in params.
22555
22556 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22557
22558         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
22559         no need to build a new path combining that with the application base.
22560         Fixes bug #60442.
22561
22562 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22563
22564         * reflection.c: fixed minor standard compliance issues.
22565
22566 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
22567
22568         * reflection.c: fixed issue with encoding some custom attributes
22569         (arrays in properties and fields, bug #60411).
22570
22571 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22572
22573         * reflection.c: fix start address when copying the public key token.
22574
22575 2004-06-23  Martin Baulig  <martin@ximian.com>
22576
22577         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
22578         the `exc' object in a static object to put it into the GC's root set.
22579
22580 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22581
22582         * reflection.c: make mono_reflection_setup_internal_class ()
22583         callable a second time to setup a new parent class.
22584
22585 2004-06-23  Dick Porter  <dick@ximian.com>
22586
22587         * threads.c: Check for WAIT_IO_COMPLETION return values.
22588
22589 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
22590
22591         * appdomain.c: Removed the g_free on the public key token. Now copy 
22592         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
22593         * assembly.c: Added public key token string value when loading 
22594         assemblies. Fix bug #60439.
22595         * icall.c: Added missing informations (like public key) in 
22596         GetReferencedAssemblies. Fix #60519.
22597         * image.h: Changed definition for public key token from const char*
22598         public_tok_value to guchar public_key_token [17];
22599         * reflection.c: Updated for changes to public key token.
22600
22601 2004-06-22  Lluis Sanchez Gual
22602
22603         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
22604         for the field in base classes.
22605
22606 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
22607
22608         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
22609         mark headers as not supported, they are installed only for use by the
22610         debugger.
22611
22612 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
22613
22614         * *.c, *.h: avoid namespace pollution in public headers.
22615
22616 2004-06-21  Martin Baulig  <martin@ximian.com>
22617
22618         * exception.c (mono_get_exception_security): It's in
22619         "System.Security", not in "System".
22620
22621         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
22622         the exception classes.
22623
22624 2004-06-21  Martin Baulig  <martin@ximian.com>
22625
22626         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
22627         Protect the exception object from being finalized.
22628
22629 2004-06-21  Martin Baulig  <martin@ximian.com>
22630
22631         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
22632         public function.
22633
22634 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
22635
22636         * reflection.c: Load the assembly in mono_reflection_type_from_name,
22637         if it was not loaded before. Fix parts of #60439.
22638
22639 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
22640
22641         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
22642         code that was broken since Ben's change: wrappers are now
22643         dependent on the method signature only again.
22644
22645 2004-06-21  Martin Baulig  <martin@ximian.com>
22646
22647         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
22648         added interface support.
22649
22650 2004-06-21  Martin Baulig  <martin@ximian.com>
22651
22652         * class.c (mono_vtable_get_static_field_data): New public method.
22653
22654 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
22655
22656         * filewatcher.c : Windows build fix to be compliant with API changes.
22657
22658 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22659
22660         * class.h, class.c: more accessors.
22661         * metadata.h, metadata.c: prepare for hiding MonoType and
22662         MonoMethodSignature: people should use the accessors from now on
22663         outside of the tree.
22664
22665 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22666
22667         * *.c, *.h: more API cleanups.
22668
22669 2004-06-18  Jackson Harper  <jackson@ximian.com>
22670
22671         * assembly.c: Trace loading assemblies.
22672         * loader.c: Trace loading native libraries.
22673         * mono-config.c: Trace loading config files.
22674         
22675 2004-06-18  Dick Porter  <dick@ximian.com>
22676
22677         * locales.c: Tell ICU the lengths of strings, it can cope with
22678         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
22679
22680 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22681
22682         * image.c: swapped name/filename;
22683
22684 2004-06-18  Martin Baulig  <martin@ximian.com>
22685
22686         * mono-debug-debugger.c (write_class): Write the parent class at
22687         the end of the header.
22688
22689 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
22690
22691         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
22692
22693 2004-06-17  Raja R Harinath  <rharinath@novell.com>
22694
22695         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
22696         (bundle_obj): New conditional define.
22697         (BUILT_SOURCES): Remove.
22698         ($(bundle_srcs)): Make parallel-make safe.
22699         (libmonoruntime_la_LIBADD): Make unconditional.
22700         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
22701         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
22702
22703 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
22704
22705         * culture-info-tables.h: It was inconsistent with the latest
22706           supp info files.
22707
22708 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
22709
22710         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
22711         be loaded.
22712
22713         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
22714         with gcc 2.95.
22715
22716 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22717
22718         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
22719         cleaned up public header threads.h.
22720
22721 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22722
22723         * Makefile.am, *.c, *.h: more API cleanups.
22724
22725 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22726
22727         * Makefile.am: removed monosn from compilation.
22728         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
22729         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
22730         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
22731         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
22732         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
22733         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
22734
22735 2004-06-15  Jackson Harper  <jackson@ximian.com>
22736
22737         * assembly.c: Make locales lower case when searching the GAC for
22738         assemblies. gacutil will always make locales lowercase when
22739         installing so this effectively makes them case insensitive.
22740         
22741 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
22742
22743         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
22744         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
22745           parameter which allows to choose whether the wait can be interrupted or 
22746           not. Also added the method mono_monitor_enter(), which locks the monitor
22747           using an infinite wait and without allowing interruption.
22748           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
22749           interrupted.
22750         * object.h: Added new fields in MonoThread. suspend_event holds the event
22751           used to susped/resume the thread. synch_lock is the lock object to use for
22752           modifying the thread state.
22753         * threads.c: Use the new synch_lock object for locking, instead of "this",
22754           which can generate deadlocks.
22755           Moved thread state change in Thread.Sleep and Thread.Join from managed
22756           to unmanaged code. This avoids a deadlock when the thread was suspended
22757           just after acquiring the thread lock.
22758           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
22759           Implemented Thread.Suspend using an event instead of ThreadSuspend,
22760           which is not fully implemented in the io-layer.
22761         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
22762
22763 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
22764
22765         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
22766         threads-types.h: more API cleanups.
22767
22768 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22769
22770         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
22771         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
22772         threadpool.c, threads.c: first pass at the exported API cleanup.
22773
22774 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22775
22776         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
22777
22778 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22779
22780         * icall.c: added internalGetHome.
22781
22782 2004-06-14  Dick Porter  <dick@ximian.com>
22783
22784         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
22785         possible to return successfully when '.' or '..' were the only
22786         entries in a directory, but were skipped.  The MonoIOStat was not
22787         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
22788         Fixes bug 59574.
22789
22790 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22791
22792         * reflection.c: make binaries run on .Net 1.1 by default.
22793
22794 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22795
22796         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
22797
22798 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
22799
22800         * marshal.c: keep track of struct size with explicit layout
22801         (bug #59979).
22802
22803 2004-06-12  Martin Baulig  <martin@ximian.com>
22804
22805         * mono-debug-debugger.c: Comment out a debugging g_message().
22806
22807 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
22808
22809         * reflection.c, reflection.h: do not free custom attrs that are cached.
22810         * icall.c: use braces to make code clearer.
22811
22812 2004-06-11  Martin Baulig  <martin@ximian.com>
22813
22814         * class.h (MonoInflatedField): New type.
22815         (MonoClassField): Replaced `MonoType *generic_type' with
22816         `MonoInflatedField *generic_info'.
22817
22818         * icall.c
22819         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
22820
22821 2004-06-11  Martin Baulig  <martin@ximian.com>
22822
22823         * reflection.c (mono_image_create_method_token): Correctly encode
22824         varargs methods.
22825
22826 2004-06-11  Martin Baulig  <martin@ximian.com>
22827
22828         * metadata.c (mono_metadata_parse_method_signature): When parsing
22829         a MethodDef which has VarArgs, also set sentinelpos if we don't
22830         have any parameters.
22831
22832 2004-06-11  Martin Baulig  <martin@ximian.com>
22833
22834         * verify.c (mono_method_verify): In CEE_CALL, use
22835         mono_method_get_signature() to get the method's signature, unless
22836         we're a PInvoke method.
22837
22838 2004-06-10  Jackson Harper  <jackson@ximian.com>
22839
22840         * assembly.c: Use <path>/lib/mono/gac for the extra paths
22841         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
22842         logical name as the supplied path is just a prefix to the gac not
22843         the direct path to it.
22844         
22845 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
22846
22847         * reflection.c: make the token for a created method match
22848         the token of the MethodBuilder it was created from
22849         (IKVM requires this behaviour now).
22850
22851 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
22852
22853         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
22854         reflection.c, socket-io.c: leak fixes.
22855
22856 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22857
22858         * icall.c: handle sentinel pos in vararg methods in position different
22859         from 0.
22860
22861 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22862
22863         * culture-info-tables.h: freshly generated.
22864
22865 2004-06-09  Martin Baulig  <martin@ximian.com>
22866
22867         * loader.c (mono_get_method_constrained): Call `mono_class_init
22868         (constrained_class)'.   
22869
22870 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
22871
22872         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
22873         any methods. Fixes #59629.
22874
22875 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22876
22877         * culture-info-tables.h: reflecting locale-builder updates.
22878
22879 2004-06-08  Dick Porter  <dick@ximian.com>
22880
22881         * object.h:
22882         * locales.c: Fixed compile warnings, including a real bug in
22883         CompareInfo_internal_compare.
22884         
22885 2004-06-08  Dick Porter  <dick@ximian.com>
22886
22887         * locales.c
22888         (ves_icall_System_Globalization_CompareInfo_internal_index):
22889         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
22890         Double-check the resuls of usearches, because ICU currently
22891         ignores most of the collator settings here.  Fixes bug 59720.
22892         
22893 2004-06-08  Dick Porter  <dick@ximian.com>
22894
22895         * locales.c
22896         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
22897         Fix memory leak and segfault-causing typo.  No idea how this one
22898         lasted so long without being noticed.
22899
22900 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
22901
22902         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
22903         any methods. Fixes #59629.
22904
22905 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22906
22907         * assembly.c:
22908         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
22909         own the critical section before). Removed dead code (that's done
22910         in the preload hook).
22911
22912         (mono_assembly_load_with_partial_name): call the preload hook.
22913
22914 2004-06-08  Martin Baulig  <martin@ximian.com>
22915
22916         * metadata.c (mono_metadata_signature_alloc): Default
22917         `sentinelpos' to -1.
22918
22919         * reflection.c (mono_image_get_array_token): Likewise.
22920
22921 2004-06-08  Martin Baulig  <martin@ximian.com>
22922
22923         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
22924
22925         * metadata.c (mono_metadata_parse_method_signature): When parsing
22926         a MethodDef which has VarArgs, set sentinelpos.
22927
22928         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
22929         `gint16' since we're using -1 for non-varargs methods.
22930
22931         * reflection.c
22932         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
22933         (method_encode_signature): Added varargs support.
22934         (method_builder_encode_signature): Likewise.
22935         (mono_image_get_varargs_method_token): New static method.
22936         (mono_image_create_method_token): New public method; this is
22937         called via an icall instead of mono_image_create_token() when
22938         calling a varargs method.       
22939
22940 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
22941
22942         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
22943
22944 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22945
22946         * culture-info-tables.h : Reflecting the latest locale-builder that
22947           fixed empty array representation ({} to {0}).
22948
22949 2004-06-07  Jackson Harper  <jackson@ximian.com>
22950
22951         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
22952         looking up extra gac paths. This allows MONO_GAC_PATH to act
22953         exactly like a prefix.
22954         
22955 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
22956
22957         * reflection.c (mono_reflection_type_from_name): Make a copy of the
22958         type name before modifying it. Fixes #59405.
22959
22960 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22961
22962         * culture-info.h: added fields for "all datetime patterns".
22963         * locales.c: (  ves_icall_System_Globalization_CultureInfo
22964           _construct_datetime_format ()): fill xxx_patterns fields.
22965         * object.h: added fields for "all datetime patterns" to
22966           MonoDateTimeFormatInfo.
22967         * culture-info-tables.h: reflecting locale-builder updates.
22968
22969 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
22970
22971         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
22972         the event has no add and remove methods. Fixes #59629.
22973
22974 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
22975
22976         * object.c: Fixed possible integer overflow when allocating large
22977         strings.
22978
22979 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
22980
22981         * culture-info-tables.h: reflecting locale-builder updates.
22982
22983 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
22984
22985         * culture-info-tables.h: reflecting locale-builder updates.
22986
22987 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
22988
22989         * culture-info-tables.h: reflecting locale-builder updates.
22990
22991 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
22992
22993         * threads.c: Made Thread.Sleep abortable.
22994
22995 2004-06-02  Martin Baulig  <martin@ximian.com>
22996
22997         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
22998
22999         * debug-mono-symfile.h: Bumped symbol file version number to 37.
23000
23001 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
23002
23003         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
23004
23005 2004-05-30  Jackson Harper  <jackson@ximian.com>
23006
23007         * reflection.c: Do not hardcode assembly versions or public key
23008         tokens anymore. All of this except the corlib section was dead
23009         code anyways.
23010         
23011 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
23012
23013         * object.c (mono_runtime_invoke_array): Automatically create boxed
23014         objects for byref valuetypes if needed. Fixes #59300.
23015         
23016         * object.c (mono_method_return_message_restore): Handle 
23017         MONO_TYPE_OBJECT as well.
23018
23019 2004-05-28  Jackson Harper  <jackson@ximian.com>
23020
23021         * reflection.c: The modified type encoding was causing build
23022         problems. Reverted for now.
23023         
23024 2004-05-28  Jackson Harper  <jackson@ximian.com>
23025
23026         * reflection.c/h: Take an assembly ref so that we dont create
23027         fully qualified names when encoding types in the same assembly as
23028         the custom attribute being emitted.
23029         * appdomain.c: Increment version number.
23030         
23031 2004-05-26  Duncan Mak  <duncan@ximian.com>
23032
23033         * icall.c
23034         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
23035         Set the full version number (major, minor, build, revision).
23036
23037 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
23038
23039         * marshal.c (emit_struct_conv): increment src/dst after blit
23040         (mono_marshal_get_managed_wrapper,
23041         mono_marshal_get_native_wrapper): make sure we have marshalling
23042         info before marshalling params (info computation affects
23043         blittable)
23044
23045         * class.c (class_compute_field_layout): correctly deal with
23046         blittable
23047         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
23048         value types (as per what windows dows by default)
23049         (mono_class_setup_mono_type): System.ValueType is blittable
23050         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
23051         blittable
23052
23053         * marshal.c (mono_marshal_load_type_info): flag types  as
23054         non-blittable if the native layout doesn't match the managed
23055         layout
23056
23057 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23058
23059         * appdomain.c: don't add stuff in the private search path that is
23060         above the application base. If application base is not set, there's
23061         no private search path.
23062
23063 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23064
23065         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
23066         byref struct arguments in native->managed marshalling.
23067
23068 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
23069
23070         * marshal.c (mono_marshal_get_runtime_invoke): correctly
23071         cache methods using signature (special case for methods
23072         that are value type or string class)
23073         
23074         * image.c (mono_image_close): clean up allocated GSList's
23075         in runtime_invoke_cache.
23076
23077 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23078
23079         * mono-config.c: set the correct path for mono_cfg_dir on windows when
23080         there's no MONO_CFG_DIR environment variable defined.
23081
23082 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23083
23084         * threads.c: windows version must be >= 0x0500 to include OpenThread.
23085
23086 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
23087
23088         * threadpool.c: Really wait for 500ms after the async call, even if the wait
23089           is interrumped.
23090         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
23091           before waiting for it, and call CloseHandle after the wait to unref it.
23092           This will make sure that handles are not disposed too early.
23093
23094 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23095
23096         * appdomain.c:
23097         * appdomain.h:
23098         * icall.c: removed
23099         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
23100         needed now.
23101
23102         * object.c: se the application_base only for the domain that runs
23103         Main. Fixes bug #59216,
23104
23105 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23106
23107         * appdomain.c:
23108         * object.c: only the domain in which Main is run have
23109         SetupInformation.ConfigurationFile set, so moved a few lines from
23110         appdomain.c to object.c.
23111
23112 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23113
23114         * appdomain.c: we tried to load [name].(dll|exe), but according
23115         to bug #57710, we must also try [culture]/[name].(dll|exe) and
23116         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
23117         There's a test case attached to bug #58922.
23118
23119 2004-05-27  Dick Porter  <dick@ximian.com>
23120
23121         * icall.c:
23122         * file-io.c: Implemented icalls for locking and unlocking regions
23123         in a file.
23124         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
23125         FALSE on error (fixes both compiler warning and real bug.)
23126
23127 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
23128
23129         * culture-info-tables.h: reflecting locale-builder updates.
23130
23131           (Added missing ChangeLog entry for 05/26)
23132
23133 2004-05-27  Jackson Harper  <jackson@ximian.com>
23134
23135         * locales.c: Fix some cut and paste errors.
23136         
23137 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23138
23139         * mono-config.c: set the correct path for config. directory on windows.
23140
23141 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23142
23143         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
23144           on win32.
23145
23146 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23147
23148         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
23149         from pinvoke functions.
23150         
23151         * marshal.c (mono_ftnptr_to_delegate): Implement this.
23152
23153 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23154
23155         * culture-info-tables.h: reflecting locale-builder updates.
23156
23157 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23158
23159         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
23160         #59086.
23161
23162 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
23163
23164         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
23165         * icall.c: Modified icalls for RNG.
23166         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
23167         Windows (CryptoAPI).
23168
23169 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23170
23171         * locales.c: Fix build.
23172
23173 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23174
23175         * culture-info-tables.h: reflecting locale-builder updates.
23176
23177 2004-05-25  Jackson Harper  <jackson@ximian.com>
23178
23179         * locales.c: When creating the current culture use the $LANGs
23180         specific culture. So DateTimeFormat and NumberFormat entries are created.
23181         
23182 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23183
23184         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
23185         a char array as parameter.
23186
23187 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
23188
23189         * image.c: In mono_image_open(), always use an absolute path name to
23190           look for already loaded images.
23191
23192 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
23193
23194         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
23195         missing in the windows build (like older cygwin include files).
23196
23197 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
23198
23199         * icall.c: Fixed check for possible integer overflow in Buffer_
23200         BlockCopy icall. Replaced comments style // by /* */.
23201
23202 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23203
23204         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
23205         
23206         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
23207         check after MONO_VTADDR. Fixes pinvoke2.exe.
23208
23209         * marshal.h marshal.c metadata.h: Add beginnings of support for
23210         ftnptr -> delegate marshalling.
23211
23212 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23213
23214         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
23215         * threads.c: Fix warnings.
23216
23217 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23218
23219         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
23220         * icall.c: Registered icalls for Suspend and Resume.
23221         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
23222           Thread.Abort.
23223         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
23224         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
23225         * process.c: Use WaitForSingleObjectEx.
23226         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
23227           checkpoints.
23228         * threads.c, threads.h: Make use of new Ex wait methods. Improved
23229           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
23230           for Suspend and Resume. Added new mono_thread_stop, used for stoping
23231           background threads. Added basic support for Abort in Windows.
23232           Start new threads using a managed delegate invoke wrapper. This wrapper
23233           has an interruption checkpoint that is needed since an interruption
23234           can be requested before the thread leaves the unmanaged code that starts 
23235           the thread.
23236         * marshal.c: Added interruption checkpoint after every native call, and
23237           also before managed calls for wrappers called from unmanaged code to
23238           go into managed code.
23239         * object.h: Added new field in MonoThread to keep track of interruption
23240           requests.
23241
23242 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23243
23244         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
23245         calls.
23246
23247 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23248
23249         * appdomain.c:
23250         * assembly.c:
23251         * gc.c:
23252         * locales.c:
23253         * mono-config.c:
23254         * rand.c: getenv -> g_getenv (windows!)
23255
23256         * process.c: complete_path is also used on non-windows platforms.
23257
23258 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23259
23260         * icall.c: new signature for Process_Start.
23261
23262         * process.[ch]: new signature for Process_Start. If we're on windows
23263         and UseShellExecute is false, we have to search for the program by
23264         ourselves if we don't get a full path.
23265
23266 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23267
23268         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
23269         marshalling and call CleanUpNativeData if needed. Fixes #58646.
23270
23271 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23272
23273         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
23274         Fixes bug #58373.
23275
23276 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23277
23278         * process.c: use double quotes to quote program name and arguments on
23279         windows. Fixes bug #58575.
23280
23281 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23282
23283         * file-io.c: don't return "." and ".." when using windows Find*File.
23284
23285 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
23286
23287         * marshal.c: Don't pass wrappers to message init because method 
23288         addressed used to lookup metadata. part of remoting[2|3] fix.
23289
23290 2004-05-15  Jackson Harper  <jackson@ximian.com>
23291
23292         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
23293         path is essentially the same as MONO_PATH except that it points to
23294         GACs instead of lib directories.
23295         * loader.h: The user gac is gone so we dont need function to
23296         enable/disable it.
23297         * mono-config.c: user gac option is now gone.
23298         
23299 2004-05-15  Jackson Harper  <jackson@ximian.com>
23300
23301         * culture-info.h: Make defines more consistent, add calendar data
23302         to the culture info table.
23303         * culture-info-tables.h: Add basic calendar data. Basically
23304         everyone gets default gregorian until all the data is
23305         updated.
23306         * locales.c: Use the new consistent defines. Set calendar data for
23307         culture info objects.
23308         * object.h: add a field for calendar data to CultureInfo
23309         
23310 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23311
23312         * image.c: image->runtime_invoke_cache is keyed on signatures now.
23313         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
23314         a signature.
23315         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
23316         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
23317         an extra param that is the pointer of the method to invoke. The IL for
23318         the invoke method is no longer specific to the method, but to the
23319         signature of the method. Thus, we can share the same code for multiple
23320         methods. This reduces the number of methods that have to be compiled.
23321
23322 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23323
23324         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
23325
23326         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23327
23328         * icall.c: Optimize Buffer.BlockCopy.
23329
23330 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23331
23332         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
23333         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
23334         quote). Changed them to "MMMM yyyy".
23335
23336 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
23337
23338         * rand.c
23339         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
23340
23341 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
23342
23343         * reflection.h: Updated after changes to managed structures.
23344
23345         * appdomain.c: Bump corlib version.
23346
23347 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23348
23349         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
23350         windows.
23351
23352 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23353
23354         * Makefile.am: link to ../os/libmonoos.la on windows.
23355
23356         * assembly.c:
23357                 -If MONO_DEBUG, warn about non-existing directories in
23358                 MONO_PATH.
23359                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
23360                 compile time variable.
23361                 -Removed init_default_path and call mono_set_rootdir from
23362                 libmonoos.a instead (windows only).
23363
23364         * assembly.h: declare mono_assembly_getrootdir().
23365
23366         * domain.c:
23367         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
23368
23369         * loader.c: s/getenv/g_getenv/
23370
23371 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23372
23373         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
23374
23375         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
23376
23377         * metadata.h: Add new marshalling conversions.
23378
23379         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
23380         function.
23381
23382         * reflection.c (mono_reflection_get_type): Lookup the type in all
23383         modules of a multi-module assembly. Fixes #58291.
23384
23385 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23386
23387         * threads.c: Before aborting a background, set the StopRequested
23388         state.  This avoids throwing the Abort exception.
23389         In mono_thread_manage, don't continue with the shutdown until all
23390         aborted threads have actually stopped.
23391
23392 2004-05-10  Jackson Harper  <jackson@ximian.com>
23393
23394         * locales.c: Remove the modifier from culture names.
23395         
23396 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23397
23398         * Makefile.am: monosn is not installed any more. It has been deprecated
23399         in favor of sn.
23400
23401 2004-05-07  Jackson Harper  <jackson@ximian.com>
23402
23403         * locales.c
23404         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
23405         Fix array construction, add bailout if the length is 0.
23406
23407 2004-05-07  Dick Porter  <dick@ximian.com>
23408
23409         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
23410         machine doesn't have a DNS entry.  Patch by Urs Muff
23411         (umuff@quark.com), fixes bug 57928.
23412
23413 2004-05-06  Jackson Harper  <jackson@ximian.com>
23414
23415         * reflection.c: Handle null PublicTokens properly. alloc mem for
23416         assembly names culture so we dont crash when freeing it.
23417         
23418 2004-05-06  Jackson Harper  <jackson@ximian.com>
23419
23420         * assembly.c: Check the usergac when loading with partial names.
23421         
23422 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
23423
23424         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
23425         does nothing for now (not required for Linux/Windows) but the class
23426         library can call it (and a newer or modified runtime could need it).
23427         * icall.c: Registred icall.
23428
23429 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23430
23431         * loader.c: prints a message on module loading error we set MONO_DEBUG
23432         environment variable.
23433
23434 2004-05-05  Jackson Harper  <jackson@ximian.com>
23435
23436         * appdomain.c: Handle PublicKeyToken=null properly.
23437         
23438 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
23439
23440         * environment.c|h: Added icall ves_icall_System_Environment_
23441         GetOSVersionString to get the current OS version as a string.
23442         * icall.c: Registred icall.
23443
23444 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
23445
23446         * object.c: in mono_object_get_virtual_method(), take into account that
23447         non-virtual methods don't have a slot in the vtable. Check needed when
23448         the object is a proxy.
23449
23450 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23451
23452         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
23453         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
23454
23455         * object.c (mono_class_compute_gc_descriptor): Fix warning.
23456
23457         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
23458         passed when a valuetype is expected.
23459
23460         * object.c (mono_unhandled_exception): Only set the exit code if the
23461         exception happens in the main thread. Fixes thread5.exe.
23462
23463         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
23464         invalid names. Fixes #58047.
23465
23466 2004-05-03  Jackson Harper  <jackson@ximian.com>
23467
23468         * assembly.c: This line was committed accidently and is unneeded.
23469         
23470 2004-05-03  Jackson Harper  <jackson@ximian.com>
23471
23472         * icall.c: Add new icall for Assembly::LoadWithPartialName
23473         * assembly.c/.h: new function that probes the GAC to load partial
23474         assembly names by Paolo Molaro.
23475         
23476 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23477
23478         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
23479         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
23480         (type_get_fully_qualified_name): Added PublicKeyToken when building a
23481         full type name.
23482
23483 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23484
23485         * appdomain.c: fixed check for 'neutral' culture and removed warning.
23486         * reflection.c: fix bug when parsing a full type name and Version is not
23487         the last thing in the string.
23488
23489 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
23490
23491         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
23492         crashes when it is freed.
23493
23494 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23495
23496         * assembly.c: print the compat warning to stderr.
23497
23498 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
23499
23500         * assembly.c (mono_assembly_load_references): Add a compatibility
23501         hack to run old applications that might be still referencing the
23502         3300-based assemblies, only do this for System.xxx.
23503
23504 2004-05-01  Jackson Harper  <jackson@ximian.com>
23505
23506         * appdomain.c: If the culture is neutral we set it to "".
23507         
23508 2004-04-29  Jackson Harper  <jackson@ximian.com>
23509
23510         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
23511
23512 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
23513  
23514         * string-icalls.c: added low overhead function for copying chars
23515         * icall.c: added needed icall for the above function
23516  
23517 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23518
23519         * icall.c: fix return value of get_global_assembly_cache.  Implemented
23520         Environment.GetLogicalDrives.
23521
23522 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
23523
23524         * rand.c: try and talk to egd or prngd
23525         for random bytes if opening devices fail.
23526
23527 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23528
23529         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
23530         alignment for the type using the native alignment of its members 
23531         instead of using klass->min_align.
23532
23533         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
23534
23535 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23536
23537         * file-io.c:
23538         * socket-io.c: added check for sys/aio.h.
23539
23540 2004-04-28  Dick Porter  <dick@ximian.com>
23541
23542         * threads.c: Don't abort a thread thats already aborting, when
23543         terminating everything.
23544
23545 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23546
23547         * icall.c: added 2 new async calls for Socket.
23548
23549         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
23550         IO on *nix systems.
23551
23552         * threadpool.c: removed unused variable.
23553
23554 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
23555
23556         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
23557
23558 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
23559
23560         * locales.c: put back string_invariant_tolower () and
23561         string_invariant_toupper ().
23562
23563 2004-04-26 David Waite <mass@akuma.org>
23564
23565         * file-io.h:
23566         * socket-io.h:
23567         * threads.h:
23568         * unicode.h: remove comma from end of enumeration declarations
23569
23570 2004-04-26 David Waite <mass@akuma.org>
23571
23572         * debug-mono-symfile.h:
23573         * decimal.c:
23574         * mono_debug.h:
23575         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
23576
23577
23578 2004-04-26  Jackson Harper  <jackson@ximian.com>
23579
23580         * appdomain.c: Increment version number.
23581         
23582 2004-04-26  Jackson Harper  <jackson@ximian.com>
23583
23584         * appdomain.c: Set assembly references public token value when
23585         PublicKeyToken is specified, not the hash_value. Free public token
23586         values when free assembly name data. Previously the public key
23587         token was hex decoded, however we are using hex encoded public key
23588         tokens, so this is not neccasary.
23589         * assembly.c: Lookup assemblies in the gac if their public token
23590         value is set. Add function to allow enabling user gac
23591         lookups. Specify whether or not the assembly was loaded from the
23592         GAC. Compare full assembly names when checking the cache for
23593         assemblies (Temporarily disabled see comment in code). Remove
23594         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
23595         specifies trace-loader they get extra info to stdout on the
23596         loading of assemblies.
23597         * image.h: Add a field for an assembly references public token
23598         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
23599         whether an assembly has been loaded from the GAC.
23600         * image.c: Remove a corlib -> mscorlib name mapping.
23601         * loader.h: Add function to enable/disable the user gac.
23602         * mono-config.c: Check if the usergac is enabled in the config
23603         file.
23604         * icall.c: New icall to determine whether or not an assembly has
23605         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
23606         * tabldefs.h: Add constant for assemblyref flag that specifies a
23607         full public key is used instead of a public token.
23608         * reflection.c: Remove mscorlib -> corlib mappings. Set
23609         PublicTokenValue instead of hash value. This value is a hex
23610         string so it does not need to be expanded.
23611
23612 2004-04-26  Martin Baulig  <martin@ximian.com>
23613
23614         * mono-debug-debugger.c (mono_debugger_initialize): Set
23615         `mono_debugger_initialized' before calling mono_debug_lock().
23616
23617 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
23618
23619         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
23620           InternalToUpper/InternalToLower.
23621         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
23622           removed invariant culture shortcut.  This is now done in managed code.
23623         * locales.c: (string_invariant_toupper/tolower) removed.
23624
23625 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23626
23627         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
23628         Added Poll internal call.
23629
23630         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
23631         call for Poll. Select was too heavy for polling a single socket.
23632
23633         * threadpool.[ch]: added mono_threadpool_cleanup.
23634         * threads.c: use it. Don't use Thread_Abort on windows.
23635
23636 2004-04-23  Martin Baulig  <martin@ximian.com>
23637
23638         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
23639
23640 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
23641
23642         * icall.c: Registred new icalls for key pair protection and added an
23643         icall for Environment.GetFolderPath on Windows.
23644         * security.c|h: Added new icalls for key pair protection.
23645
23646 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23647
23648         * socket-io.c: don't display the non-supported family warning for known
23649         families. Now this is not displayed on windows when checking support
23650         for IPv4/IPv6.
23651
23652 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23653
23654         * class.c: don't display the layout warning for static fields.
23655
23656 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
23657
23658         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
23659         * locales.c, locales.h: Added new icalls for culture-specific
23660         Char.ToLower and Char.ToUpper.
23661
23662 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23663
23664         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
23665         by David Waite.
23666
23667 2004-04-20  Martin Baulig  <martin@ximian.com>
23668
23669         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
23670         of the type name before passing it to mono_reflection_type_from_name().
23671
23672 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23673
23674         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
23675         encodings here. Fixes #56965.
23676
23677 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
23678
23679         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
23680         fix test on strstr result not that I can see anything that
23681         relies on the result.
23682
23683 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23684
23685         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
23686         Fixes #57081.
23687
23688         * marshal.c (mono_marshal_get_string_encoding): New helper function.
23689
23690         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
23691         function to determine which marshalling to use for strings. Fixes
23692         #56965.
23693
23694         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
23695
23696         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
23697
23698 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
23699
23700         * icall.c: #include mono-config.h
23701
23702 2004-04-15  Jackson Harper  <jackson@ximian.com>
23703
23704         * culture-info-tables.h: Fix date formats for en-US culture.
23705         
23706 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
23707
23708         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
23709         ThreadPool.SetMinThreads.
23710         * threadpool.c: Implemented ThreadPool.GetMinThreads and
23711         ThreadPool.SetMinThreads.
23712
23713 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
23714
23715         * mono-config.c: also load the .config file in the directory
23716         where the assembly was found.
23717
23718 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23719
23720         * assembly.c: load per-assembly config files.
23721         * icall.c: decrapified code to get the config dir and moved to
23722         mono-config.c.
23723         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
23724         per-assembly config files. When doing a dll map lookup give precedence
23725         to the per-assembly data.
23726
23727 2004-04-14  Martin Baulig  <martin@ximian.com>
23728
23729         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
23730         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
23731         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
23732
23733         * mono-debugger-debugger.c: While the debugger is locked, remember
23734         whether the symbol tables have changes and send one single
23735         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
23736
23737 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23738
23739         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
23740
23741         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
23742         function.
23743
23744         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
23745         account when marshalling string arrays. Fixes #56965.
23746
23747 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
23748
23749         * icall.c: Add new icalls mapping for security.
23750         * security.c|h: Add internal calls for WindowsIdentity,
23751         WindowsImpersonationContext and WindowsPrincipal.
23752
23753 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
23754
23755         * class.c: Added comment to ensure the System.MonoDummy class
23756         is removed when no longer necessary
23757
23758 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23759
23760         * appdomain.c: Pass arguments to the bootstraping exceptions to
23761         minimize JITed methods at boot
23762
23763         * metadata.c (mono_exception_from_name_two_strings): Allow for the
23764         second string to be null.
23765
23766         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
23767         Change the protocol to minimize the JIT methods at startup.  Now
23768         it Returns the internal codepage, if the value of "int_code_page"
23769         is 1 at entry, and we can not compute a suitable code page
23770         number, returns the code page as a string.
23771
23772 2004-04-13  Jackson Harper  <jackson@ximian.com>
23773
23774         * culture-info-tables.h: Fix number of decimal digits for all
23775         english locales.
23776
23777 2004-04-13  Jackson Harper  <jackson@ximian.com>
23778
23779         * icall.c: Clairfy out of sync error message. It is not always
23780         your corlib that is out of sync.
23781
23782 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
23783
23784         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
23785         properties when only the set accessor is overriden. Fixes #55874.
23786
23787 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
23788
23789         * assembly.c (mono_assembly_load_references): Make this thread safe.
23790         Fixes #56327.
23791
23792 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23793
23794         * monosn.c: Add missing initialization calls.
23795
23796 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
23797
23798         * locales.c:
23799         ves_icall_System_Globalization_CultureInfo_construct_number_format
23800         Fix g_assert so it compiles on fussier compilers re int/ptr
23801         mismatch
23802
23803 2004-04-08  Dick Porter  <dick@ximian.com>
23804
23805         * socket-io.h:
23806         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
23807         53992.  Also rearrange the code so that the internal calls return
23808         an error value and exceptions are thrown from managed code.
23809
23810         * icall.c: Add type info to the socket icalls.
23811
23812 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23813
23814         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
23815         owes me a beer.
23816
23817 2004-04-07  Martin Baulig  <martin@ximian.com>
23818
23819         * class.c (mono_class_from_generic_parameter): Don't default
23820         `klass->parent' to `mono_defaults.object_type'.
23821
23822 2004-04-07  Martin Baulig  <martin@ximian.com>
23823
23824         * reflection.c (mono_reflection_initialize_generic_parameter): Set
23825         `param->pklass->reflection_info'.       
23826
23827 2004-04-07  Jackson Harper  <jackson@ximian.com>
23828
23829         * culture-info-tables.h: Fix date separator symbol.
23830         
23831 2004-04-07  Martin Baulig  <martin@ximian.com>
23832
23833         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
23834         from System.Type to System.MonoType.
23835
23836 2004-04-07  Martin Baulig  <martin@ximian.com>
23837
23838         * reflection.h
23839         (MonoReflectionGenericParam): Added `has_reference_type' and
23840         `has_value_type' fields.
23841
23842         * reflection.c (mono_image_get_generic_param_info): Encode the
23843         correct flags if we have the `class' or `struct' constraint.
23844
23845 2004-04-07  Martin Baulig  <martin@ximian.com>
23846
23847         * reflection.h
23848         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
23849
23850 2004-04-07  Jackson Harper  <jackson@ximian.com>
23851
23852         * appdomain.c: Revert extra patches, just wanted to bump the
23853         version number.
23854         
23855 2004-04-07  Jackson Harper  <jackson@ximian.com>
23856
23857         * Makefile.am: Add culture-info private headers.
23858         * icall.c: Add new icalls for contructing locales.
23859         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
23860         * locales.h: Declare new culture info construction methods.
23861         * object.h: Add new fields used to avoid the CultureMap to
23862         MonoCultureInfo.
23863         * culture-info.h: Definition of structs used in the culture info
23864         tables.
23865         * culture-info-tables.h: Autogenerated tables that contain culture
23866         info data. This file was generated with the locale-builder tool.
23867         * appdomain.c: Incement corlib version number.
23868         
23869 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
23870
23871         * appdomain.c: (mono_runtime_init) move mono_thread_init
23872         to before mono_object_new calls so critical sections
23873         are initialized before use.
23874
23875 2004-04-07  Martin Baulig  <martin@ximian.com>
23876
23877         * icall.c
23878         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
23879         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
23880         (ves_icall_MonoGenericParam_initialize): Removed.
23881         (monogenericparam_icalls): Removed.
23882         (generictypeparambuilder_icalls): Added new table for
23883         System.Reflection.Emit.GenericTypeParameterBuilder.
23884
23885         * reflection.c
23886         (mono_reflection_define_generic_parameter): Removed.
23887         (mono_reflection_initialize_generic_parameter): This is now called
23888         from GenericTypeParameterBuilder's .ctor.
23889
23890 2004-04-06  Martin Baulig  <martin@ximian.com>
23891
23892         * class.c (mono_class_init): Don't inflate nested classes in a
23893         generic instance.
23894         (mono_type_get_name_recurse): Include the generic arguments for
23895         generic instances and generic type declarations.
23896         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
23897         (_mono_class_get_instantiation_name): Removed.
23898         (mono_class_create_generic): Always use `gklass->name' as our name.
23899
23900         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
23901
23902         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
23903         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
23904         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
23905         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
23906         closed generic methods here.
23907
23908         * reflection.c
23909         (mono_reflection_generic_inst_get_nested_types): Removed.
23910         (inflate_mono_method): Copy the generic parameters from the
23911         MonoMethodHeader into out MonoGenericMethod.
23912
23913 2004-04-06  Martin Baulig  <martin@ximian.com>
23914
23915         * row-indexes.h
23916         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
23917
23918         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
23919
23920         * reflection.c (build_compressed_metadata): If we have any entries
23921         in the GenericParam, MethodSpec or GenericParamConstraint tables,
23922         set the header version to 1.1.
23923
23924 2004-04-06  Martin Baulig  <martin@ximian.com>
23925
23926         * class.c (mono_class_init): If we're a generic instance,
23927         initialize our nested classes, too.
23928         (_mono_class_get_instantiation_name): Deal with the new `!%d'
23929         suffix. 
23930
23931 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23932
23933         * process.c: quote the argument passed to the shell on windows.
23934
23935 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23936
23937         * threads.c (mono_alloc_special_static_data): Allow this to be
23938         called during startup.
23939
23940 2004-04-02  Martin Baulig  <martin@ximian.com>
23941
23942         * icall.c
23943         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
23944
23945 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23946
23947         * icall.c: Fix build.
23948
23949 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
23950
23951         * Makefile.am: Added security.c|h.
23952         * icall.c: Added icall for get_UserName;
23953         * security.c: New file for security related icalls. Added function
23954         get_UserName for System.Environment (fix #56144).
23955         * security.h: New. Header file for security.c
23956
23957 2004-04-02  Dick Porter  <dick@ximian.com>
23958
23959         * icall.c: Deleted the icalls that were obsoleted some time ago
23960         by the ICU string code, and which were mixed into the icall
23961         rearranging.  Fixes bug 55969.
23962
23963         * string-icalls.h: 
23964         * string-icalls.c: Deleted the code that those icalls reference.
23965
23966 2004-04-01  Martin Baulig  <martin@ximian.com>
23967
23968         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
23969
23970         * class.c (mono_class_from_generic_parameter): Don't set 
23971         TYPE_ATTRIBUTE_INTERFACE.
23972         (my_mono_class_from_generic_parameter): Likewise.
23973
23974 2004-04-01  Martin Baulig  <martin@ximian.com>
23975
23976         * loader.c (find_method): Added an optional `MonoClass *ic'
23977         argument to search in a specific interface.
23978         (mono_get_method_constrained): New public function.
23979
23980 2004-04-01  Martin Baulig  <martin@ximian.com>
23981
23982         * reflection.c (mono_image_get_generic_field_token): Use the
23983         `handleref' cache here.
23984
23985 2004-04-01  Martin Baulig  <martin@ximian.com>
23986
23987         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
23988
23989         * reflection.c (create_generic_typespec): Use the `typespec' hash
23990         here, not the `typeref' one.    
23991
23992 2004-04-01  Martin Baulig  <martin@ximian.com>
23993
23994         * class.c (mono_class_inflate_generic_type): Moved the
23995         functionality into a new static inflate_generic_type() which
23996         returns NULL if it didn't do anything.  Only increment the
23997         `mono_stats.inflated_type_count' if we actually inflated
23998         something.
23999         (mono_class_get_full): Check the classes type to see whether we
24000         need to inflate it; also inflate MONO_TYPE_(M)VAR.
24001
24002 2004-04-01  Jackson Harper  <jackson@ximian.com>
24003
24004         * reflection.c: Set culture for assembly references.
24005         
24006 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
24007
24008         * reflection.[ch], icall.[ch], Fix support for pinning variables.
24009
24010 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24011
24012         * assembly.c:
24013         (do_mono_assembly_open): the critical section also covers
24014         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
24015
24016 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24017
24018         * threads.c:
24019         (mono_manage_threads): abort the background threads when finishing.
24020         Fixes bug #47232.
24021
24022 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24023
24024         * gc.c: only close the done_event handle if there was no timeout.
24025         C-ified comments.
24026
24027 2004-03-30  Martin Baulig  <martin@ximian.com>
24028
24029         * icall.c (icall_entries): It's called "System.Activator", not
24030         "System.Activation".    
24031
24032 2004-03-30  Martin Baulig  <martin@ximian.com>
24033
24034         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
24035         (mono_class_create_from_typespec): Likewise.
24036
24037 2004-03-30  Martin Baulig  <martin@ximian.com>
24038
24039         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
24040         `has_ctor_constraint' and `initialized'.
24041
24042 2004-03-30  Martin Baulig  <martin@ximian.com>
24043
24044         * reflection.c (encode_new_constraint): New static function to add
24045         the constructor constraint attribute to a type parameter.
24046         (encode_constraints): Call encode_new_constraint() if necessary.
24047
24048         * reflection.h
24049         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
24050
24051         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
24052         
24053 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
24054
24055         * reflection.c, icall.c: add support for pinning variables. 
24056
24057 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
24058
24059         * marshal.c (mono_marshal_get_managed_wrapper):
24060         init bool local with zero rather than null.
24061
24062 2004-03-29  Martin Baulig  <martin@ximian.com>
24063
24064         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
24065         the "official" behavior here.
24066         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
24067
24068 2004-03-29  Martin Baulig  <martin@ximian.com>
24069
24070         * icall.c: Reflect latest API changes.
24071
24072 2004-03-29  Martin Baulig  <martin@ximian.com>
24073
24074         * loader.c (mono_get_method_from_token): Also call
24075         mono_metadata_load_generic_params () for abstract and interface
24076         methods; replace the type arguments in the method signature with
24077         the ones which are loaded from the metadata.
24078
24079 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
24080
24081         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
24082         of the lock is not the current thread. MS.NET don't do it, in spite of
24083         what the documentation says. See bug #56157.
24084
24085 2004-03-28  Martin Baulig  <martin@ximian.com>
24086
24087         * class.c (mono_class_init): Don't call init_properties() and
24088         init_events() for generic instances; set `prop->parent' when
24089         inflating properties.
24090
24091         * reflection.c (mono_generic_inst_get_object): Call
24092         `mono_class_init (ginst->klass)'.
24093         (mono_type_get_object): Only create a MonoGenericInst if your
24094         generic type is a TypeBuilder.
24095         (do_mono_reflection_bind_generic_parameters): Only set
24096         `ginst->is_dynamic' if our generic type is a TypeBuilder.
24097
24098 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
24099
24100         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
24101         Fixes #56091.
24102
24103 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24104
24105         * icall.c: added Kill_internal icall.
24106         * process.[ch]: added Kill_internal icall.
24107
24108 2004-03-25  Martin Baulig  <martin@ximian.com>
24109
24110         * class.h (MonoStats): Added `generic_instance_count',
24111         `inflated_method_count', `inflated_type_count' and
24112         `generics_metadata_size'.       
24113
24114 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24115
24116         * reflection.c: no warnings now.
24117
24118 2004-03-25  Martin Baulig  <martin@ximian.com>
24119
24120         * class.c (mono_class_get_full): New public function; does a
24121         mono_class_get(), but also takes a `MonoGenericContext *'.
24122
24123         * loader.c (mono_field_from_memberref): Renamed to
24124         `field_from_memberref', made static and added `MonoGenericContext *'
24125         argument.
24126         (mono_field_from_token): Added `MonoGenericInst *' argument.
24127         (method_from_memberef): Likewise.
24128         (mono_get_method_from_token): Likewise.
24129         (mono_get_method_full): New public function; does a
24130         mono_get_method(), but also takes a `MonoGenericContext *'.
24131
24132         * verify.c (mono_method_verify): Get the method's generic context
24133         and pass it to mono_field_from_token(), mono_get_method_full() and
24134         mono_class_get_full().
24135
24136 2004-03-25  Martin Baulig  <martin@ximian.com>
24137
24138         * class.c (mono_class_inflate_generic_type): Take a
24139         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
24140         `MonoGenericMethod *'.
24141
24142 2004-03-25  Martin Baulig  <martin@ximian.com>
24143
24144         * loader.h (MonoMethodInflated): Store the MonoGenericContext
24145         instead of the MonoGenericMethod here.
24146
24147 2004-03-25  Martin Baulig  <martin@ximian.com>
24148
24149         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
24150         each time we create a new MonoGenericInst, we also create a new
24151         context which points back to us.
24152
24153         * class.c (inflate_method): Use `ginst->context' instead of
24154         creating a new context.
24155
24156         * loader.c (method_from_memberref): Use
24157         `klass->generic_inst->context' instead of creating a new context.
24158
24159 2004-03-25  Martin Baulig  <martin@ximian.com>
24160
24161         * class.h (MonoGenericContext): New struct.
24162         (MonoGenericMethod): Removed `generic_inst'.
24163
24164         * class.c (mono_class_inflate_generic_method): Take a
24165         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
24166
24167 2004-03-25  Martin Baulig  <martin@ximian.com>
24168
24169         * loader.h (MonoMethodInflated): New typedef.
24170
24171         * metadata.h (MonoMethodSignature): Removed `gen_method', make
24172         `generic_param_count' consume just 30 bits, added `is_inflated'
24173         and `has_type_parameters' flags (one bit each).
24174
24175         * class.c (mono_class_inflate_generic_method): Create a
24176         MonoMethodInflated instead of a MonoMethodNormal and set
24177         `is_inflated' in the method signature.
24178
24179         * class.h (MonoGenericMethod): Removed `generic_method'.
24180
24181 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
24182
24183         * image.c: Make sure the name of a MonoImage is always an absolute path.
24184           This fixes bug #54415.
24185
24186 2004-03-24  Martin Baulig  <martin@ximian.com>
24187
24188         * class.c (mono_class_setup_vtable): If we're a generic instance,
24189         use our generic type's vtable size.
24190
24191 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
24192
24193         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
24194         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
24195         problems.
24196
24197 2004-03-23  Martin Baulig  <martin@ximian.com>
24198
24199         * class.h (MonoDynamicGenericInst): Added `int count_events' and
24200         `MonoEvent *events'.
24201
24202         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
24203         (typebuilder_icalls): Added "get_event_info"; calls
24204         mono_reflection_event_builder_get_event_info(). 
24205
24206         * reflection.c (mono_reflection_generic_inst_initialize): Added
24207         `MonoArray *events'.
24208         (mono_reflection_event_builder_get_event_info): New function.
24209
24210 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
24211
24212         * object.h: add mono_type_initialization_init
24213
24214         * object.c (mono_runtime_class_init): 
24215         implement class constructor synchronization rules
24216         to cope with threading issues.  
24217         add mono_type_initialization_init
24218
24219         * appdomain.c (mono_runtime_init): call 
24220         mono_type_initialization_init
24221
24222         * class.h: removing initializing field from MonoVTable
24223
24224 2004-03-23  Martin Baulig  <martin@ximian.com>
24225
24226         * class.c (my_mono_class_from_generic_parameter): Use
24227         `param->name' if it's not NULL. 
24228
24229 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
24230
24231         * class.c: do not insert non-virtual methods in the vtable.
24232         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
24233         that means the method is non-virtual. This never would have
24234         happened before.
24235
24236 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
24237
24238         * profiler.c: Added lock for accessing coverage_hash.
24239
24240 2004-03-22  Martin Baulig  <martin@ximian.com>
24241
24242         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
24243         `method->method->signature->generic_param_count != 0' to make it
24244         work for interface methods.
24245
24246 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24247
24248         * process.c: quote the string passed to the shell using g_shell_quote.
24249
24250 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24251
24252         * threads.c:
24253         (mono_threads_manage): don't remove the finalizer thread and self
24254         from the threads hash table so that mono_thread_manage can be called
24255         more than once.
24256
24257 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24258
24259         * process.c: quote the arguments when UseShellExecute is true. Fixes
24260         bug #55790.
24261
24262 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24263
24264         * threads.c: set mono_thread_detach as a cleanup routine for every
24265         thread. This way it's always executed upon thread termination, either
24266         aborted or finished normally. No more xsp hangs!
24267
24268 2004-03-17  Martin Baulig  <martin@ximian.com>
24269
24270         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
24271         `int count_nested' and a `MonoType **nested'.
24272
24273         * reflection.c (mono_reflection_bind_generic_parameters): Moved
24274         most of the functionality into a new static
24275         do_mono_reflection_bind_generic_parameters() and don't take a
24276         `MonoType *nested_in' argument any more.  Don't compute nested
24277         types here.
24278         (mono_reflection_generic_inst_get_nested_types): New public method
24279         to get nested types.
24280
24281         * class.c (mono_class_create_generic): Set `klass->nested_in' if
24282         we're a nested class.
24283
24284         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
24285         mono_reflection_generic_inst_get_nested_types() to compute the
24286         nested types.
24287
24288 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
24289
24290         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
24291         descriptive error message under windows.
24292         
24293 2004-03-17  Martin Baulig  <martin@ximian.com>
24294
24295         * class.c (dup_type): Added `const MonoType *original' argument;
24296         copy the attrs from the original type.
24297
24298 2004-03-17  Martin Baulig  <martin@ximian.com>
24299
24300         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
24301         `m->generic_inst_cache' here.
24302
24303 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
24304
24305         * exception.h exception.c: Add stack_overflow_exception.
24306
24307 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24308
24309         * threadpool.c:
24310         (overlapped_callback): call SetEvent *after* invoking the callback.
24311         No need to call CloseHandle.
24312
24313 2004-03-16  Martin Baulig  <martin@ximian.com>
24314
24315         * reflection.c (mono_image_get_fieldref_token): Take a
24316         `MonoReflectionField *' instead of a `MonoClassField *' and a
24317         `MonoClass *'; store the `MonoReflectionField *' in the hash.
24318
24319 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24320
24321         * appdomain.c: don't add the culture to the filename we're looking for
24322         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
24323
24324 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24325
24326         * locales.c: don't ignore symbols when doing case insensitive compares.
24327         Thanks Dick! Fixes bug #54046.
24328
24329         * threads.c: surround 'threads' usage with enter/leave in
24330         mono_thread_manage.
24331
24332 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
24333
24334         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
24335         implicitly marshalled as [Out]. Fixes #55450.
24336
24337         (mono_marshal_get_runtime_invoke): Zero out the result if there is
24338         an exception.
24339
24340 2004-03-16  Martin Baulig  <martin@ximian.com>
24341
24342         * class.c (mono_class_from_generic_parameter): Use the actual
24343         parameter name. 
24344
24345 2004-03-16  Martin Baulig  <martin@ximian.com>
24346
24347         * reflection.c (type_get_signature_size): New static function.
24348         Compues the size of the type in a method signature.
24349         (method_get_signature_size): New static function; calls
24350         type_get_signature_size() to compute the actual size of the
24351         method's signature.
24352         (method_encode_signature): Use method_get_signature_size() to get
24353         the signature's size rather than using `nparams * 10'.
24354
24355 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24356
24357         * file-io.h: define here WapiOverlapped on windows. I don't want the
24358         regular OVERLAPPED one.
24359
24360         * file-io.c:
24361         * threadpool.c: somehow, BindIoCompletionCallback is not found.
24362         Disabling AIO on windows.
24363
24364 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24365
24366         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
24367         bug #55385.
24368
24369 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24370
24371         * appdomain.c: upgraded corlib version.
24372
24373         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
24374         and BeginWrite. Allow opening files for asynchrnous operations.
24375
24376         * file-io.h: new struct that maps FileStreamAsyncResult.
24377         * icall.c: added new icalls.
24378         * process.[ch]: support setting child process environment variables
24379         and use the SHELL or COMSPEC when UseShellExecute is true.
24380
24381         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
24382         callback for async. IO is here and also BindHandle.
24383
24384         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
24385         from here.
24386
24387 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
24388
24389         * reflection.c (create_custom_attr): Allow len == 0.
24390
24391         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
24392         computation on big-endian machines.
24393
24394 2004-03-13  Martin Baulig  <martin@ximian.com>
24395
24396         * class.h (MonoGenericInst): Added `int count_ifaces'.
24397
24398         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
24399         `ginst->count_ifaces' instead `klass->interface_count' since we
24400         may get called before the vtable is created.
24401
24402         * loader.c (mono_method_get_param_names): If we're a generic
24403         instance, return and don't initialize the class.
24404
24405         * reflection.c (mono_reflection_setup_generic_class): Don't call
24406         ensure_runtime_vtable().
24407         (mono_reflection_bind_generic_parameters): Set
24408         `ginst->count_ifaces'.
24409
24410 2004-03-11  Jackson Harper <jackson@ximian.com>
24411
24412         * icall.c:
24413         * unicode.c:
24414         * unicode.h: Remove unused System.Char icalls.
24415         
24416 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
24417
24418         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
24419         code when we P/Invoke the first library in Windows.Forms, instead
24420         of when we first open the assembly.
24421
24422         * assembly.c: Drop the lookup from here.
24423
24424 2004-03-10  Martin Baulig  <martin@ximian.com>
24425
24426         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
24427         class for properties, fields and events.  Finally fixes #54945.
24428
24429 2004-03-10  Martin Baulig  <martin@ximian.com>
24430
24431         * metadata.c (mono_metadata_class_equal): New static function;
24432         checks whether two generic instances or two generic parameters are
24433         equal.
24434         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
24435         compare classes.        
24436
24437 2004-03-10  Martin Baulig  <martin@ximian.com>
24438
24439         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
24440
24441         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
24442         argument and write it into the `reflection_info' field.
24443
24444         * icall.c
24445         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
24446         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
24447
24448 2004-03-09  Jackson Harper  <jackson@ximian.com>
24449
24450         * char-conversions.h: use 8 bits for numeric data its all we need
24451         * icall.c: numeric data is only 8 bits now.
24452
24453 2004-03-09  Martin Baulig  <martin@ximian.com>
24454
24455         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
24456
24457         * class.c (init_properties, init_events): Initialize the new
24458         `parent' field.
24459
24460         * reflection.c (typebuilder_setup_properties): Likewise.
24461         (typebuilder_setup_events): Likewise.
24462
24463         * reflection.h (MonoEventInfo): Replaced `parent with
24464         `declaring_type' and `reflected_type'.
24465
24466         * icall.c (ves_icall_get_property_info): Distinguish between
24467         declaring and reflected type.
24468         (ves_icall_get_event_info): Likewise.
24469
24470 2004-03-09  Martin Baulig  <martin@ximian.com>
24471
24472         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
24473         (ves_icall_Type_GetField): Correctly set field->klass.
24474
24475 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
24476
24477         * loader.h: Fix warning.
24478
24479 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
24480
24481         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
24482         library routine if present.  Notice that it will still continue
24483         executing even if its missing, for those working on the Gtk#
24484         edition of Windows.Forms.
24485
24486         * assembly.c (do_mono_assembly_open): If loading the
24487         System.Windows.Forms call mono_loader_wini_init.
24488
24489 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
24490
24491         * class.h: Added MonoRemoteClass struct.
24492         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
24493         function for MonoStrings.
24494         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
24495         Added internal call for getting the proxy type.
24496         * marshal.c: Get the type of transparent proxies from its remote_class.
24497         Added methods that generate the IL for type checks and casts:
24498         mono_marshal_get_isinst, mono_marshal_get_castclass, 
24499         mono_marshal_get_proxy_cancast.
24500         * marshal.h: Declaration of the previous new methods.
24501         * object.c: Added new moethods for creating and updating MonoRemoteClass
24502         instances: mono_remote_class, mono_upgrade_remote_class, 
24503         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
24504         * verify.c: FIx transparent_proxy_fields layout.
24505         * appdomain.c: Bump corlib version.
24506
24507 2004-03-04  Jackson Harper  <jackson@ximian.com>
24508
24509         * icall.c: Add icall to access char conversion tables.
24510         * char-conversions.h: Character conversion tables.
24511         * Makefile.am: Add char-conversions.h private header file.
24512         
24513 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
24514
24515         * appdomain.c (unload_thread_main): Increase unloading timeout to
24516         10 sec as a temporary workaround for Nant problems.
24517
24518 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
24519
24520         * gc.c: Add checks for GC_enable and GC_disable.
24521
24522         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
24523         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
24524         (bug #54988).
24525         
24526 2004-02-27  Martin Baulig  <martin@ximian.com>
24527
24528         * reflection.c (mono_reflection_bind_generic_parameters): Take a
24529         `MonoReflectionType *' instead of a `MonoType *'.
24530
24531 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24532
24533         * gc.c (run_finalize): Avoid finalizing the object representing the
24534         finalizer thread.
24535         (finalizer_thread): Fix warning.
24536
24537 2004-02-25  Martin Baulig  <martin@ximian.com>
24538
24539         * class.c (_mono_class_get_instantiation_name): Added `int offset'
24540         argument for nested types.
24541         (mono_class_create_generic): Added support for nested generictypes.
24542
24543         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
24544         `GList *nested'.
24545
24546         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
24547
24548         * reflection.c (method_encode_signature): Increase the minimum
24549         value of `size' from 10 to 11.
24550         (mono_reflection_bind_generic_parameters): Take `int type_argc'
24551         and `MonoType **types' arguments instead of the `MonoArray
24552         *types'; added `MonoType *nested_in'.  Recursively instantiate
24553         nested classes. 
24554
24555 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24556
24557         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
24558         stack_overflow_ex members which are used by exception handling.
24559
24560         * appdomain.c (mono_runtime_init): Initialize the new members.
24561
24562         * gc.c (mono_gc_enable): New helper function.
24563         * gc.c (mono_gc_disable): New helper function.
24564
24565 2004-02-23  Martin Baulig  <martin@ximian.com>
24566
24567         * icall.c: I must have been really stupid - make it actually work
24568         this time ;-)
24569
24570 2004-02-23  Martin Baulig  <martin@ximian.com>
24571
24572         * loader.c (method_from_memberref): Only inflate the method if
24573         it's in another klass.
24574
24575 2004-02-23  Martin Baulig  <martin@ximian.com>
24576
24577         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
24578         (mono_class_init): If we're a generic instance and an interface,
24579         compute `class->interface_id'; also create `class->interfaces'
24580         here and inflate them.
24581
24582         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
24583         `ginst->is_open'.
24584         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
24585
24586         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
24587
24588 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
24589
24590         * reflection.c (method_encode_code): Improved the error message
24591         generated by the exception.
24592
24593 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24594
24595         * icall.c: Martin did not do what he said in the ChangeLog for
24596         2004-02-18, but put back the changes for properties and events.
24597         Commenting those changes out again and adding comment to bug #54518.
24598         
24599         * process.c: removed warning.
24600
24601 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
24602
24603         * marshal.c (emit_struct_conv): Print an error message instead of
24604         asserting when a type does not have the StructLayout attribute.
24605
24606 2004-02-20  Martin Baulig  <martin@ximian.com>
24607
24608         * reflection.c (mono_type_get_object): Also use the cache for
24609         generic instances.
24610         (mono_reflection_bind_generic_parameters): Always compute
24611         `ginst->ifaces'.        
24612
24613 2004-02-20  Martin Baulig  <martin@ximian.com>
24614
24615         * class.h (MonoGenericMethod): Removed `klass'.
24616
24617         * class.c (mono_class_inflate_generic_method): Added `MonoClass
24618         *klass' argument.
24619
24620 2004-02-20  Martin Baulig  <martin@ximian.com>
24621
24622         * reflection.c (method_encode_methodspec): Actually use the
24623         uninflated signature for the memberref.
24624
24625 2004-02-20  Martin Baulig  <martin@ximian.com>
24626
24627         * class.h (MonoGenericMethod): Removed `declaring'.
24628
24629         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
24630         is NULL, compute it here.
24631
24632 2004-02-20  Martin Baulig  <martin@ximian.com>
24633
24634         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
24635
24636         * metadata.c (mono_metadata_generic_inst_hash): New method.
24637         (mono_metadata_generic_inst_equal): New method.
24638
24639         * reflection.c (mono_reflection_bind_generic_parameters): Use the
24640         `klass->image->generic_inst_cache' cache to avoid creating
24641         duplicate MonoGenericInst's.
24642
24643         * class.c (mono_class_inflate_generic_type): Use the cache.
24644
24645 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
24646
24647         * object.c: fixed gc descriptor calculation for embedded valuetypes.
24648
24649 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24650
24651         * icall.c: added Socket.WSAIoctl icall.
24652
24653         * socket-io.[ch]: implemented
24654         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
24655
24656 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
24657
24658         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
24659
24660 2004-02-18  Urs C Muff  <umuff@quark.com>
24661
24662         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
24663         this work on PPC and other big-endian architectures.
24664
24665         * debug-mono-symfile.h: Prepended the names of all the `guint32'
24666         fields with an underscore to make sure they're only accessed by
24667         the read32() macro.
24668
24669 2004-02-18  Martin Baulig  <martin@ximian.com>
24670
24671         * icall.c: Put the klass->refclass changes back for methods and
24672         fields, but not for properties and events.  We're currently not
24673         distinguishing between DeclaringType and ReflectedType for
24674         properties and events, that's what caused the regressions.
24675
24676 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24677
24678         * object.c:
24679         (mono_async_result_new): the handle can be NULL.
24680
24681         * threadpool.c: Use an event instead of a semaphore, don't initialize
24682         it until needed. This saves quite a few semaphores from being created
24683         when using the threadpool.
24684
24685 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
24686
24687         * object.c (mono_string_is_interned_lookup): Fix interning of long
24688         strings. Fixes #54473.
24689
24690         * domain.c (ldstr_equal): Optimize if the two strings are equal.
24691
24692         * icall.c: Revert the klass->refclass changes since they introduce
24693         regressions (bug #54518).
24694
24695 2004-02-18  Martin Baulig  <martin@ximian.com>
24696
24697         * class.c (mono_class_init): If we're a generic instance and don't
24698         come from a TypeBuilder, inflate our members here.
24699         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
24700         (mono_class_create_generic): New public method.
24701         (mono_class_initialize_generic): Removed.
24702         (get_instantiation_name): Renamed to
24703         _mono_class_get_instantiation_name() and made it public.
24704
24705 2004-02-18  Martin Baulig  <martin@ximian.com>
24706
24707         * class.c (mono_class_inflate_generic_type): Clear the new
24708         instance's `nginst->klass' when inflating a generic instance.
24709         (mono_class_is_subclass_of): Added (basic) support for generic
24710         instances.
24711
24712 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
24713
24714         * appdomain.h, domain.c: use a MonoCodeManager instead of a
24715         MonoMempool to hold compiled native code.
24716
24717 2004-02-17  Martin Baulig  <martin@ximian.com>
24718
24719         * class.h (MonoDynamicGenericInst): Added `count_properties' and
24720         `properties'.
24721
24722         * reflection.c (mono_reflection_generic_inst_initialize): Added
24723         `MonoArray *properties' argument.
24724
24725         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
24726
24727 2004-02-17  Martin Baulig  <martin@ximian.com>
24728
24729         * icall.c (ves_icall_Type_GetFields): Renamed to
24730         ves_icall_Type_GetFields_internal() and added a
24731         `MonoReflectionType *rtype' argument; pass it to
24732         mono_field_get_object() to set the field's "reflected" type.
24733         (ves_icall_Type_GetConstructors): Likewise.
24734         (ves_icall_Type_GetEvents): Likewise.
24735         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
24736         argument; pass it to mono_method_get_object() to set the method's
24737         "reflected" type.       
24738
24739 2004-02-17  Martin Baulig  <martin@ximian.com>
24740
24741         * class.h (MonoDynamicGenericInst): New type.
24742         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
24743
24744         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
24745         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
24746         (ves_icall_MonoGenericInst_GetFields): New interncall.
24747
24748         * class.c (mono_class_from_generic): Don't call
24749         mono_class_initialize_generic() if this is a dynamic instance;
24750         ie. it's being created from a TypeBuilder.
24751         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
24752         `class->byval_arg.type'.
24753
24754         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
24755         to `inflate_method' and made static.
24756         (mono_reflection_inflate_field): Removed.
24757         (mono_reflection_generic_inst_initialize): New public method.
24758
24759         * reflection.h (MonoReflectionGenericInst): Removed `methods',
24760         `ctors' and `fields'; added `initialized'.
24761
24762 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24763
24764         * debug-helpers.c (mono_method_full_name): Fix output for empty
24765         namespaces.
24766
24767 2004-02-12  Martin Baulig  <martin@ximian.com>
24768
24769         * class.h (MonoClassField): Added `MonoType *generic_type'.
24770
24771         * reflection.c (mono_image_get_fieldref_token): Added support for
24772         instantiated generic types.
24773         (field_encode_inflated_field): Removed.
24774         (mono_image_get_inflated_field_token): Removed.
24775         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
24776
24777         * reflection.h (MonoReflectionInflatedField): Removed.
24778
24779 2004-02-12  Martin Baulig  <martin@ximian.com>
24780
24781         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
24782         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
24783
24784         * reflection.c (mono_image_get_methodspec_token): Take a
24785         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
24786         (mono_image_create_token): Check whether we have a
24787         `method->signature->gen_method' and call
24788         mono_image_get_methodspec_token() if appropriate.
24789         (inflated_method_get_object): Removed.
24790         (mono_reflection_bind_generic_method_parameters): Return a
24791         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
24792         (mono_reflection_inflate_method_or_ctor): Likewise.
24793
24794         * reflection.h (MonoReflectionInflatedMethod): Removed.
24795
24796 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
24797
24798         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
24799         for custom valuetype marshalling.
24800
24801         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
24802
24803 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24804
24805         * icall.c: fixed WSAGetLastError_internal name.
24806
24807 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24808
24809         * threads.c (mono_thread_attach): Allow this to be called multiple
24810         times for a thread.
24811         
24812         * threads.c (build_wait_tids): Do not wait for ourselves.
24813
24814         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
24815         appdomain list is empty.
24816
24817         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
24818         memory returned by mono_string_builder_to_utf16, since it points into
24819         managed memory. Thanks to Bernie Solomon for noticing this.
24820
24821         * icall.c: Add AppDomainSetup icalls.
24822
24823         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
24824
24825         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
24826         types.
24827
24828         * reflection.c (reflection_methodbuilder_to_mono_method): Save
24829         custom attributes to the method_aux struct. Also fix array indexes etc.
24830
24831         * loader.c (mono_method_get_param_names): Make dynamic case work again.
24832         
24833 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
24834
24835         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
24836         (both static and runtime) and reduce startup time.
24837
24838 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24839
24840         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
24841         AsAny marshalling conversion instead of crashing.
24842
24843         * marshal.c: Fix warnings.
24844
24845 2004-02-09  Martin Baulig  <martin@ximian.com>
24846
24847         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
24848
24849         * reflection.h (MonoReflectionInflatedMethod): Removed the
24850         `declaring' field, it's now in the unmanaged MonoGenericMethod.
24851
24852         * reflection.c (method_encode_methodspec): Removed the `method'
24853         argument; we get it from `gmethod->declaring'.
24854         (inflated_method_get_object): Removed the `declaring' argument.
24855
24856 2004-02-09  Martin Baulig  <martin@ximian.com>
24857
24858         * class.h (MonoGenericMethod): New type.
24859         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
24860         `generic_method'.
24861
24862         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
24863         a `MonoGenericMethod *gen_method' one.
24864
24865         * class.c (mono_class_inflate_generic_type): Take an additional
24866         `MonoGenericMethod * argument.  This is only non-NULL if we're
24867         inflating types for a generic method.   
24868         (mono_class_inflate_generic_signature): Renamed to
24869         inflate_generic_signature() and made static; take a
24870         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
24871         (inflate_generic_header): Take a `MonoGenericMethod *' argument
24872         instead of a `MonoGenericInst *' one.
24873         (mono_class_inflate_generic_method): Likewise.
24874
24875         * reflection.c (encode_generic_method_sig): Take a
24876         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
24877         (method_encode_methodspec): Likewise.
24878         (inflated_method_get_object): Likewise. 
24879
24880         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
24881         field with a `MonoGenericMethod *gmethod' one.  
24882
24883 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
24884
24885         * class.h (mono_class_has_parent): add parens to expansion
24886         so you can ! this.
24887
24888 2004-02-08  Martin Baulig  <martin@ximian.com>
24889
24890         * image.h (MonoImage): Removed `generics_cache'.
24891
24892         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
24893         instead of a `MonoType *' argument; removed the `inflate_methods'
24894         argument.  Don't inflate methods here.
24895
24896         * loader.c (find_method): If it's a generic instance, call
24897         mono_class_init() on the `sclass->generic_inst->generic_type'.
24898
24899         * metadata.c (mono_type_size): Make this work on uninitialized
24900         generic instances; call it on the `ginst->generic_type's class.
24901
24902         * reflection.c (mono_reflection_bind_generic_parameters): Call
24903         mono_class_from_generic() to create the `ginst->klass'.
24904
24905 2004-02-08  Martin Baulig  <martin@ximian.com>
24906
24907         * class.h (MonoClass): Changed type of `generic_inst' from
24908         `MonoType *' to `MonoGenericInst *'.
24909
24910 2004-02-08  Martin Baulig  <martin@ximian.com>
24911
24912         * icall.c (ves_icall_Type_BindGenericParameters): Just call
24913         mono_type_get_object(), this is now creating a `MonoGenericInst'
24914         for MONO_TYPE_GENERICINST.
24915         (ves_icall_MonoGenericInst_GetParentType): Likewise.
24916         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
24917
24918         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
24919         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
24920         (inflated_method_get_object): Added `MonoClass *refclass' argument.
24921         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
24922         and reflected type.
24923
24924         * reflection.h (MonoReflectionInflatedMethod): Removed
24925         `declaring_type' and `reflected_type'.
24926
24927 2004-02-08  Martin Baulig  <martin@ximian.com>
24928
24929         * class.h (MonoGenericInst): Added `MonoType *parent' and
24930         `MonoType **ifaces'.
24931
24932         * reflection.h (MonoReflectionGenericInst): Removed `klass',
24933         `parent' and `interfaces'.
24934
24935         * reflection.c (mono_reflection_bind_generic_parameters): Take a
24936         `MonoType *' argument and return a `MonoType *'.
24937
24938         * icall.c
24939         (ves_icall_MonoGenericInst_GetParentType): New interncall.
24940         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
24941
24942 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
24943
24944         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
24945         valuetype marshalling.
24946
24947 2004-02-06  Martin Baulig  <martin@ximian.com>
24948
24949         * class.c
24950         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
24951         (my_mono_class_from_generic_parameter): Likewise.
24952
24953 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
24954
24955         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
24956         contents of the symbol files lazily.
24957
24958         * object.h (MonoThread): Add 'name' and 'name_len' fields.
24959
24960         * threads.h threads.c icall.c: New icalls for getting and setting the
24961         threads name.
24962
24963 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
24964
24965         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
24966         Raise an exception when the domain is not found.
24967
24968 2004-02-03  Martin Baulig  <martin@ximian.com>
24969
24970         * reflection.c (mono_image_get_methodspec_token): Use the
24971         uninflated signature; fixes gen-33.
24972
24973 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24974
24975         * gc.c threads.c: Make the finalizer thread a normal managed thread so
24976         the finalizer code can use thread functionality.
24977
24978         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
24979         the finalizer thread.
24980
24981         * threads.c: Make some functions more robust.
24982
24983         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
24984
24985         * metadata.h: Add new marshalling conventions.
24986
24987         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
24988         stringbuilder marshalling. Fixes #53700.
24989
24990         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
24991
24992         * reflection.c (mono_image_get_type_info): Save declarative security
24993         info.
24994
24995         * reflection.c (mono_image_get_field_info): Handle uninitialized 
24996         unmanaged fields as well.
24997
24998         * appdomain.c: Bump corlib version.
24999
25000 2004-02-01  Martin Baulig  <martin@ximian.com>
25001
25002         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
25003         method type arguments.  
25004
25005 2004-01-30  Duncan Mak  <duncan@ximian.com>
25006
25007         * marshal.h: Add prototype for
25008         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
25009         and
25010         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
25011         fix the build.
25012
25013 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
25014
25015         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
25016         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
25017
25018 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
25019
25020         * marshal.c (mono_marshal_get_native_wrapper): Add support for
25021         custom marshalling of valuetypes.
25022
25023         * marshal.c: Fix some warnings.
25024
25025 2004-01-29  Martin Baulig  <martin@ximian.com>
25026
25027         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
25028         for generic method parameters.
25029
25030         * reflection.c (method_encode_methodspec): Write the uninflated
25031         signature into the methodspec table.
25032         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
25033         is always the uninflated method.
25034         (reflection_methodbuilder_to_mono_method): Copy the generic
25035         parameters from the MethodBuilder into `header->gen_params'.
25036
25037 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
25038
25039         * class.c (mono_class_from_generic_parameter): Fix warning.
25040
25041 2004-01-27  Martin Baulig  <martin@ximian.com>
25042
25043         * class.c (mono_class_from_generic_parameter): Don't create
25044         `klass->methods' here.  
25045
25046 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
25047
25048         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
25049         extension since it does not work with libraries named lib<FOO>.dll.so.
25050
25051 2004-01-25  Martin Baulig  <martin@ximian.com>
25052
25053         * class.c (mono_class_inflate_generic_type): Added support for
25054         MONO_TYPE_GENERICINST.
25055
25056         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
25057         inflate methods on open constructed types.      
25058
25059 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25060
25061         * object.c: fire ProcessExit event in the root AppDomain after running
25062         Main. Fixes bug #53299.
25063
25064 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
25065
25066         * socket-io.c: include the new socket-wrappers.h header.
25067         Use the wrappers instead of the unix socket functions to make the code
25068         more clear.
25069
25070 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
25071
25072         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
25073
25074         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
25075         Fixes #22532.
25076
25077 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
25078
25079         * reflection.c (mono_image_create_pefile): Handle the case when the
25080         entry point is not a MethodBuilder.
25081
25082         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
25083         field to ReflectionMethod since it is not allways a builder.
25084
25085         * reflection.c (type_get_fully_qualified_name): New helper function to
25086         return the fully qualified name of a type.
25087
25088         * reflection.c (encode_marshal_blob): Always emit the fully qualified
25089         type name for custom marshallers.
25090
25091         * reflection.c (mono_marshal_spec_from_builder): Ditto.
25092
25093         * class.c (mono_class_setup_vtable): If a parent class already 
25094         implements an interface, use the implementing methods from that class.
25095         Fixes #53148.
25096
25097 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25098
25099         * threadpool.c: just return instead of ExitThread to allow for thread
25100         clean up earlier.
25101
25102 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
25103
25104         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
25105         when closing resource modules.
25106
25107         * reflection.c (mono_image_create_pefile): Handle the case when the
25108         entry point is not a MethodBuilder.
25109
25110         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
25111         field to ReflectionMethod since it is not allways a builder.
25112
25113 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
25114
25115         * marshal.c (mono_marshal_get_managed_wrapper): 
25116         mono_marshal_alloc takes native int so CONV_I
25117         the arg for 64bits.
25118
25119 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
25120
25121         * reflection.c (fixup_cattrs): New function to fixup the methoddef
25122         tokens in the cattr table. Fixes #53108.
25123
25124 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25125
25126         * loader.c: don't trim ".dll" before looking up in the config file.
25127         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
25128
25129 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
25130
25131         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
25132         Return the module which contains the resource as well.
25133         (ves_icall_System_Reflection_Module_Close): New icall.
25134
25135         * appdomain.c: Bump corlib version number.
25136
25137         * image.c (mono_image_addref): New public function.
25138
25139         * assembly.c: Call mono_image_addref.
25140
25141         * reflection.c (mono_module_get_object): Increase reference count of 
25142         the image.
25143
25144         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
25145         Fixes #22532.
25146
25147         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
25148         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
25149         proper exceptions on DllImport problems.
25150
25151 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
25152
25153         * class.c, metadata.c: eliminate CSIZE macro.
25154
25155 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
25156
25157         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
25158         * object.h: Added async_callback field in MonoAsyncResult.
25159         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
25160         * verify.c: Added async_callback in MonoAsyncResult layout.
25161
25162 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
25163
25164         * reflection.c (mono_reflection_get_custom_attrs): Add support
25165         for Modules.
25166
25167 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
25168
25169         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
25170         marshalling.
25171         (mono_marshal_method_from_wrapper): Add null pointer check.
25172
25173 2004-01-16  Martin Baulig  <martin@ximian.com>
25174
25175         * debug-mono-symfile.h: Set version number to 36 and reflect
25176         latest symbol writer changes.
25177
25178 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
25179
25180         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
25181         multi-dimensional arrays.
25182         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
25183         (mono_class_from_mono_type): Use bounded_array_class_get.
25184         
25185         * class.c (mono_bounded_array_class_get): New function which takes
25186         a 'bounded' bool argument to distinguish vectors from one dimensional
25187         arrays.
25188
25189         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
25190         bounded_array_class_get if the array has bounds.
25191
25192         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
25193         Search modules loaded using AssemblyBuilder:AddModule as well.
25194
25195 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25196
25197         * appdomain.c: increased corlib version.
25198         * filewatcher.c: removed g_print.
25199         * icall.c:
25200         (get_property_info): only allocate what is actually requested.
25201         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
25202
25203 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25204
25205         * Makefile.am: added filewatcher.[ch]
25206         * filewatcher.[ch]: FileSystemWatcher runtime support.
25207         * icall.c: added new FSW icalls.
25208
25209 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
25210
25211         * string-icalls.c: fix stringbuilder regression as suggested by
25212         Iain McCoy <iain@mccoy.id.au>.
25213
25214 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
25215
25216         * process.c (process_read_stringtable_block): Recognize '007f' as
25217         a language neutral stringtable block.
25218
25219 2004-01-12  Patrik Torstensson
25220
25221         * object.h (MonoStringBuilder) : Changed layout to support our
25222         new stringbuilder class.
25223         * marshal.c: Change marshalling to support the new layout of 
25224         string builder.
25225         * appdomain.c: increased version number because new layout of
25226         string builder.
25227
25228 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
25229
25230         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
25231         assembly name as an string instead of an AssemblyName, since it is
25232         easier to extract info from it.
25233
25234         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
25235         the culture subdirectories too. Fixes #52231.
25236
25237 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25238
25239         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
25240         It takes 2 new parameters with an optional name for the method to look
25241         for and case ignoring info.
25242
25243         * threadpool.c: removed unused variable.
25244
25245 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25246
25247         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
25248         It takes 2 new parameters with an optional name for the property to look
25249         for and case ignoring info.
25250         Fixes bug #52753.
25251
25252 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
25253
25254         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
25255         Fix #52451.
25256
25257 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25258
25259         * appdomain.c:
25260         * assembly.c: escape the uri before passing it to g_filename_from_uri.
25261         Fixes bug #52630.
25262
25263 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
25264
25265         * reflection.c: Add support for more than one unmanaged resource.
25266
25267         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
25268         in field->def_value, as done in all other cases.
25269
25270         * reflection.c (mono_reflection_get_custom_attrs): Add support for
25271         TypeBuilders.
25272
25273         * reflection.c (mono_reflection_create_runtime_class): Remove 
25274         errorneous assignment to klass->element_class, since it is already
25275         done in mono_reflection_setup_internal_class.
25276
25277 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25278
25279         * gc.c: added missing LeaveCriticalSection.
25280         * icall.c: indented a couple of lines.
25281         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
25282         if we call EndInvoke inside a callback. Fixes bug #52601.
25283
25284 2004-01-07  Martin Baulig  <martin@ximian.com>
25285
25286         * mono-debug-debugger.h
25287         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
25288
25289 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
25290
25291         * appdomain.c: Use messages in NotImplementedException.
25292
25293         * exception.c (mono_get_exception_not_implemented): Now this takes
25294         a message argument.
25295
25296         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
25297         exception instead of g_asserting an aborting when something is not
25298         implemented.
25299
25300         Add some inline docs.
25301
25302 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
25303
25304         * reflection.h: Update after changes to object layout.
25305
25306         * reflection.c: Implement saving of unmanaged aka win32 resources.
25307
25308         * appdomain.c: Bump version number.
25309
25310         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
25311         Handle missing domains gracefully.
25312
25313 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
25314
25315         * file-io.c : On Windows, there are much more invalid_path_chars.
25316
25317 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
25318
25319         * class.h, object.c: prepare for GetType () speedup.
25320
25321 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
25322
25323         * profiler.c: workaround for --profile null reference exception on
25324           cygwin. Patch by Patrik Torstensson.
25325
25326 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
25327
25328         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
25329         make work for unaligned access.
25330
25331 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
25332
25333         * class.c: small cleanup (class->fields [i] -> field).
25334         * image.c: check address of metadata is valid.
25335
25336 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
25337
25338         * assembly.h assembly.c (mono_assembly_loaded): New public function to
25339         search the list of loaded assemblies.
25340
25341         * reflection.c (mono_reflection_type_from_name): Use 
25342         mono_assembly_loaded instead of mono_image_loaded.
25343
25344         * reflection.c: Fix warnings.
25345
25346 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
25347
25348         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
25349         is dynamic. This is needed since an assembly can contain both dynamic and
25350         non-dynamic images.
25351
25352         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
25353         assembly->dynamic.
25354
25355         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
25356
25357         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
25358         to store modules loaded using AddModule.
25359
25360         * reflection.c (mono_image_fill_file_table): Generalize this so it works
25361         on Modules.
25362
25363         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
25364
25365         * reflection.c (mono_image_fill_export_table_from_module): New function to
25366         fill out the EXPORTEDTYPES table from a module.
25367
25368         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
25369         into a separate function. Also handle loaded non-dynamic modules.
25370
25371         * reflection.c (mono_image_basic_init): Fix memory allocation.
25372
25373         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25374
25375         * assembly.c (mono_assembly_load_references): Make this public.
25376
25377 2003-12-19  Martin Baulig  <martin@ximian.com>
25378
25379         * class.c (mono_class_initialize_generic): Made this static, take
25380         a `MonoGenericInst *' instead of a `MonoClass *'.
25381         (mono_class_from_generic): Call mono_class_initialize_generic()
25382         unless we're already initialized or being called from
25383         do_mono_metadata_parse_generic_inst().
25384
25385         * class.h (MonoGenericInst): Added `initialized' and
25386         `init_pending' flags.
25387
25388         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
25389         `mono_class_init (gklass)' or mono_class_initialize_generic()
25390         here; set `generic_inst->init_pending' while parsing the
25391         `type_argv'.
25392
25393 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
25394
25395         * locales.c: include string.h for memxxx prototypes
25396
25397 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
25398
25399         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
25400         constructor when accessing literal fields.
25401
25402 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
25403
25404         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25405
25406         * reflection.c (assembly_add_resource_manifest): New function to fill
25407         the MANIFESTRESOURCE table.
25408
25409         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
25410
25411         * reflection.h: Update to changes in class layout.
25412
25413         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
25414         Reenable call to mono_runtime_is_shutting_down ().
25415
25416         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
25417         determine if the runtime is shutting down.
25418
25419 2003-12-16  Jackson Harper <jackson@ximian.com>
25420
25421         * icall.c: comment out call to mono_runtime_is_shutting_down to
25422         fix build.
25423         
25424 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
25425
25426         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
25427         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
25428
25429 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
25430
25431         * reflection.c: move definition of swap_with_size
25432         to before its first call
25433
25434 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
25435
25436         * appdomain.c (mono_runtime_is_shutting_down): New public function.
25437
25438         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
25439         icall.
25440
25441         * object.c: Fix warnings.
25442
25443         * icall.c (ves_icall_Type_Get...): Only consider inherited static
25444         members if FlattenHierarchy is set.
25445
25446         * reflection.c (mono_image_add_decl_security): New function to emit
25447         declarative security.
25448
25449         * reflection.h reflection.c: Add support for declarative security.
25450
25451         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
25452         
25453 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
25454
25455         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
25456         
25457         * appdomain.c verify.c: Moved corlib version checking into its own
25458         function in appdomain.c since it needs to create vtables etc.
25459
25460 2003-12-13  Patrik Torstensson <p@rxc.se>
25461
25462         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
25463         instead of unwrapped server.
25464
25465 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
25466
25467         * verify.c (check_corlib): Fix field index.
25468
25469 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
25470
25471         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
25472         GetGacPath icall.
25473
25474 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
25475
25476         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
25477         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
25478         cope with sizeof(size_t) != sizeof(guint32).
25479
25480 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25481
25482         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
25483         in case of failure.
25484
25485 2003-12-10  Mark Crichton <crichton@gimp.org>
25486
25487         * icall.c: removed the GetNonZeroBytes.  We now handle this case
25488         in managed code.
25489
25490         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
25491
25492 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
25493
25494         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
25495         marked as deleted.
25496
25497 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
25498
25499         * verify.c (check_corlib): Handle the case when the version field is 
25500         initialized by a static constructor.
25501
25502 2003-12-08  Patrik Torstensson  <p@rxc.se>
25503
25504     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
25505
25506 2003-12-08  Martin Baulig  <martin@ximian.com>
25507
25508         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
25509         a MonoReflectionGenericParameter, also take the parameter index
25510         and name as arguments.
25511         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
25512         (ves_icall_MonoGenericParam_initialize): New interncall.
25513         (ves_icall_Type_make_byref_type): New interncall.
25514
25515         * reflection.h (MonoReflectionGenericParam): Derive from
25516         MonoReflectionType, not just from MonoObject.  Added `refobj' and
25517         `index' fields.
25518
25519         * reflection.c (mono_reflection_define_generic_parameter): Create
25520         and return a new MonoReflectionGenericParam; don't initialize the
25521         constraints here.
25522         (mono_reflection_initialize_generic_parameter): New public method;
25523         initializes the constraints and creates the `param->pklass'.
25524
25525 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
25526
25527         * reflection.h reflection.c: Use the new fields 'num_types', 
25528         'num_fields' and 'num_methods' to track the number of types etc.
25529
25530         * verify.c (check_corlib): Check corlib version number.
25531
25532 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
25533
25534         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
25535         function works on all methods.
25536
25537 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
25538
25539         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
25540         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
25541         the custom_type_info flag of the transparent proxy.
25542         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
25543         objects that supports IRemotingTypeInfo.
25544         * object.h: Added custom_type_info field in transparent proxy.
25545
25546 2003-12-06  Martin Baulig  <martin@ximian.com>
25547
25548         * class.c (mono_class_create_from_generic): Removed.
25549         (mono_class_from_generic): Check `ginst->klass' before doing
25550         anything else.  This is important to fully support "recursive"
25551         generic types.
25552
25553         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
25554         empty `generic_inst->klass' before doing anything else.
25555
25556 2003-12-06  Dick Porter  <dick@ximian.com>
25557
25558         * verify.c: 
25559         * object.h:
25560         * icall.c:
25561         * locales.c: Use C structs to access class fields.  Don't do a
25562         conversion between MonoString and UChar because both are
25563         platform-endian UTF-16.  Compare now takes startindex and count
25564         parameters.  Add a char overload for IndexOf.  Speed up the
25565         invariant string IndexOf.
25566
25567 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
25568
25569         * Makefile.am (monosn_LDADD): Fix parallel build.
25570
25571 2003-12-04  Martin Baulig  <martin@ximian.com>
25572
25573         * icall.c
25574         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25575         (ves_icall_Type_make_array_type): New interncall.       
25576
25577 2003-12-04  Martin Baulig  <martin@ximian.com>
25578
25579         * locales.c: also change it in the !HAVE_ICU case.
25580
25581 2003-12-04  Dick Porter  <dick@ximian.com>
25582
25583         * icall.c:
25584         * locales.c: construct_compareinfo is now in CompareInfo, not
25585         CultureInfo.
25586
25587 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
25588
25589         * image.c (mono_image_load_file_for_image): Cache loaded images in the
25590         image->files array.
25591
25592         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
25593         table as well.
25594
25595         * assembly.c (mono_assembly_load_references): Only load references
25596         once.
25597
25598         * class.c (mono_class_from_name): Avoid linear search of the 
25599         EXPORTEDTYPE table.
25600
25601         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
25602
25603 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
25604
25605         * image.h (MonoImage): Add 'field_cache' field.
25606
25607         * loader.c (mono_field_from_token): Cache field lookups.
25608         
25609         * reflection.c (mono_module_get_object): Fix name property.
25610
25611         * icall.c (ves_icall_get_enum_info): Update after changes to 
25612         mono_metadata_get_constant_index ().
25613
25614         * icall.c: Get rid of get_type_info icall, use a separate icall for
25615         each type property to avoid needless memory allocations. Fixes #51514.
25616
25617         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
25618         to avoid needless binary searches.
25619
25620         * class.c (class_compute_field_layout): Move the initialization of
25621         field->def_value to mono_class_vtable ().
25622
25623         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
25624         non-corlib types.
25625
25626         * object.c (mono_object_allocate): Make it inline.
25627
25628         * object.c (mono_object_allocate_spec): Make it inline.
25629         
25630 2003-12-02  Dick Porter  <dick@ximian.com>
25631
25632         * locales.c (create_NumberFormat): NumberFormatInfo construction.
25633         Patch by Mohammad DAMT (mdamt@cdl2000.com).
25634
25635 2003-12-01  Dick Porter  <dick@ximian.com>
25636
25637         * threads.c: Fix signature and call in CreateMutex and
25638         CreateEvent.
25639
25640 2003-12-01  Dick Porter  <dick@ximian.com>
25641
25642         * icall.c: 
25643         * locales.c: Implement string compares and searching
25644
25645         * object.h: Add extra Thread field
25646
25647 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
25648
25649         * reflection.c (fixup_method): Add support for MonoCMethod.
25650
25651 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
25652
25653         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
25654
25655         * reflection.c (assembly_name_to_aname): Allow extra characters in
25656         assembly names. Fixes #51468.
25657
25658 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
25659
25660         * exception.c (mono_exception_from_name_domain): New helper function.
25661
25662         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
25663         exception object in the correct domain.
25664
25665         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
25666         formatting + make a copy a the input data.
25667
25668         * loader.c (mono_get_method_from_token): Methods which contain
25669         native code do not have entries in the ImplMap.
25670
25671         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
25672         Thanks to Gonzalo for spotting this.
25673         
25674         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
25675         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
25676
25677         * assembly.h (mono_assembly_load_from): Split the second part of 
25678         assembly loading into a new public function.
25679
25680         * exception.h (mono_get_exception_bad_image_format): New function.
25681
25682 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
25683
25684         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
25685         Enumerate all modules inside a dynamic assembly. Fixes #51293.
25686         
25687         * icall.c: Add new icall for creating dynamic methods.
25688
25689         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
25690
25691         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
25692
25693         * reflection.c (mono_reflection_create_dynamic_method): New icall to
25694         create a dynamic method.
25695
25696         * reflection.c (resolve_object): New helper function.
25697
25698         * reflection.c: Generalize ReflectionMethodBuilder and the functions
25699         which manipulate it so they can also work on dynamic methods.
25700
25701         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
25702         creating the MonoReflectionMethodAux structure if it is not needed.
25703         
25704         * reflection.h verify.c: Update after changes to object layout.
25705
25706         * reflection.c (method_builder_encode_signature): Fix compilation on
25707         gcc 2.95.x.
25708
25709 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
25710
25711         * appdomain.h: Added support for context static fields. Added static_data
25712           field to MonoAppContext and renamed thread_static_fields to a more
25713           generic special_static_fields in MonoAppDomain, since it can now contain
25714           context static fields.
25715         * domain.c: Updated hashtable name.
25716         * object.c: Replaced field_is_thread_static() for a more generic
25717           field_is_special_static() which also checks for context static attribute.
25718           In mono_class_vtable(), added support for static context fields.
25719         * threads.c: Changed methods that manage thread static fields to more
25720           generic methods so they can be reused both for thread and context static
25721           data.
25722         * threads.h: Declared some new methods.
25723
25724 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
25725
25726         * reflection.h: Update after changes to the managed types.
25727
25728         * reflection.c (encode_custom_modifiers): New helper function.
25729
25730         * reflection.c (method_encode_signature): Emit custom modifiers.
25731
25732         * reflection.c (field_encode_signature): Emit custom modifiers.
25733
25734 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
25735
25736         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
25737
25738         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
25739         implementation.
25740
25741         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
25742         icall.
25743
25744         * object.c (mono_field_get_value_object): New function.
25745
25746         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
25747         specific.
25748
25749 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
25750
25751         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
25752         return a preallocated out-of-memory exception instance.
25753
25754         * object.c (out_of_memory): Use the new function.
25755
25756         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
25757         flag is before the custom modifiers. Fixes #49802.
25758
25759 2003-11-16  Martin Baulig  <martin@ximian.com>
25760
25761         * class.c (mono_class_is_open_constructed_type): Implemented the
25762         MONO_TYPE_GENERICINST case.
25763
25764 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
25765
25766         * assembly.c (mono_assembly_fill_assembly_name): New function to
25767         fill out the MonoAssemblyName structure.
25768         (mono_assembly_open): Use the new function.
25769
25770         * icall.c (fill_reflection_assembly_name): New helper function.
25771
25772         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
25773         new function.
25774
25775         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
25776
25777 2003-11-15  Martin Baulig  <martin@ximian.com>
25778
25779         * class.c (mono_class_is_open_constructed_type): New public
25780         function; checks whether a type is an open constructed type,
25781         ie. whether it still contains type parameters.
25782         (mono_class_inflate_generic_type): If we're a type parameter and
25783         the inflated type is also a MONO_TYPE_(M)VAR, return the original
25784         type.
25785
25786         * class.h (MonoGenericInst): Added `guint32 is_open'.
25787
25788         * loader.c (method_from_methodspec): Check whether we're an open
25789         or closed constructed type and set `ginst->is_open'.
25790
25791         * reflection.c (mono_reflection_bind_generic_parameters): Check
25792         whether we're an open or closed constructed type and set
25793         `ginst->is_open'.
25794         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
25795         from open constructed types.
25796
25797 2003-11-15  Martin Baulig  <martin@ximian.com>
25798
25799         * reflection.c (mono_reflection_bind_generic_parameters): If we're
25800         a generic instance (instead of a generic type declaration) with
25801         unbound generic parameters, bind them to our actual types.
25802
25803 2003-11-14  Martin Baulig  <martin@ximian.com>
25804
25805         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
25806
25807         * reflection.c (mono_reflection_bind_generic_parameters): If we're
25808         an interface type, populate `res->interfaces' with instantiated
25809         versions of all the interfaces we inherit.
25810
25811 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
25812
25813         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
25814         when MONO_PATH is set but doesn't contain the install dir.
25815
25816 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25817
25818         * icall.c:
25819         (ves_icall_Type_GetInterfaces): don't return an interface twice when
25820         it's also implemented in base classes. Fixes bug #50927.
25821
25822 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
25823
25824         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
25825         if this method is called from a finalizer. Fixes #50913.
25826
25827 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
25828
25829         * threads.c: Implement VolatileRead/VolatileWrite
25830
25831         * icall.c: Add new icalls for VolatileRead/VolatileWrite
25832
25833 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
25834
25835         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
25836         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
25837         2.95.3.
25838
25839         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
25840         from Peter Ross (pro@missioncriticalit.com).
25841         
25842 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
25843
25844         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
25845
25846 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
25847
25848         * assembly.c (mono_assembly_load_references): Disable check because it
25849         triggers on older corlibs which lots of people have.
25850
25851 2003-11-12  Jackson Harper  <jackson@ximian.com>
25852
25853         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
25854         load corlib.dll if mscorlib.dll is not found.
25855         * assembly.h: Remove corlib name define.
25856         * class.c:
25857         * domain.c:
25858         * image.c: Change corlib name to mscorlib.
25859         
25860 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
25861
25862         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
25863
25864 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
25865
25866         * appdomain.h: Added loader_optimization here to sync with the C#
25867         code, and add disallow_binding_redirects field.
25868
25869 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
25870
25871         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
25872
25873         * reflection.c (mono_image_build_metadata): Fix crash on modules
25874         with no types.
25875
25876         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
25877
25878         * icall.c (ves_icall_get_method_info): Return callingConvention as
25879         well.
25880
25881         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
25882         namespaces from the EXPORTEDTYPE table as well.
25883
25884         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
25885         from all modules inside the assembly.
25886         
25887 2003-11-11  Martin Baulig  <martin@ximian.com>
25888
25889         * reflection.c (mono_reflection_bind_generic_parameters): Make
25890         this work for interfaces.
25891
25892 2003-11-11  Martin Baulig  <martin@ximian.com>
25893
25894         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
25895
25896 2003-11-11  Martin Baulig  <martin@ximian.com>
25897
25898         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
25899         "MonoInflatedMethod" and "MonoInflatedCtor".
25900
25901 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
25902
25903         * reflection.c (resolution_scope_from_image): Use the assembly table
25904         from the manifest module, since other modules don't have it.
25905
25906         * debug-helpers.c (mono_type_full_name): New helper function.
25907
25908         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
25909
25910         * image.c (mono_image_load_file_for_image): New public function which
25911         is a replacement for the load_file_for_image in class.c.
25912
25913         * assembly.c (mono_assembly_load_module): A wrapper for the function
25914         above which does assembly association and reference loading too.
25915
25916         * class.c (mono_class_from_name): Call mono_assembly_load_module.
25917
25918 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25919
25920         * appdomain.c: not all of the attributes for the full assembly name
25921         are required and the order doesn't matter. Fixes bug #50787.
25922
25923 2003-11-10  Dick Porter  <dick@ximian.com>
25924
25925         * locales.c: Use platform-endian UTF16
25926
25927 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
25928
25929         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
25930         
25931 2003-11-10  Martin Baulig  <martin@ximian.com>
25932
25933         * metadata.c
25934         (mono_metadata_load_generic_params): Make this actually work.
25935
25936         * reflection.c (mono_reflection_bind_generic_parameters): If our
25937         parent is a generic instance, pass all the `types' to it, no
25938         matter whether it has the same number of type parameters or not.
25939
25940 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
25941
25942         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
25943
25944         * assembly.c (mono_assembly_load_references): Move the image<->assembly
25945         assignment code to this function so it gets called recursively for all
25946         modules.
25947
25948         * image.c (load_modules): Remove the assembly assignment since it is
25949         now done by mono_assembly_load_references.
25950         
25951         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
25952         Add 'module' argument.
25953         (mono_module_get_types): New helper function.
25954         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
25955
25956 2003-11-08  Martin Baulig  <martin@ximian.com>
25957
25958         * class.c (mono_class_inflate_generic_method): Interface method
25959         don't have a header.
25960
25961         * reflection.c (mono_image_get_methodspec_token): Take an
25962         additional `MonoGenericInst *' argument instead of reading it from
25963         the header; this is necessary to support interfaces.
25964         (mono_image_create_token): Pass the `MonoGenericInst *' from the
25965         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
25966         (inflated_method_get_object): Take an additional `MonoGenericInst *'
25967         argument.
25968
25969         * reflection.h (MonoReflectionInflatedMethod): Added
25970         `MonoGenericInst *ginst'.
25971
25972 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
25973
25974         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
25975
25976 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
25977
25978         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
25979
25980 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
25981
25982         * reflection.c 
25983         (reflection_methodbuilder_from_method_builder):
25984         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
25985         initialize a ReflectionMethodBuilder structure.
25986         (mono_image_get_methodbuilder_token):
25987         (mono_image_get_ctorbuilder_token): New functions to emit memberref
25988         tokens which point to types in another module inside the same assembly.
25989
25990         * reflection.c: Use the new helper functions.
25991         
25992         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
25993
25994         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
25995         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
25996
25997         * reflection.c (resolution_scope_from_image): Emit a moduleref if
25998         neccesary.
25999
26000         * reflection.c (mono_image_build_metadata): Emit metadata only for the
26001         current module. Emit the manifest only for the main module.
26002
26003         * reflection.c (mono_image_create_token): Add assertion when a 
26004         memberref needs to be created.
26005
26006         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
26007
26008         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
26009         larger buffer for the custom attribute blob. Fixes #50637.
26010         
26011 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26012
26013         * threadpool.c: notify listener on async processing handles after
26014         invoking the async callback. Thanks to Zoltan.
26015
26016 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
26017
26018         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
26019         avoid code duplication.
26020
26021         * reflection.h (MonoDynamicImage): New type which is currently unused,
26022         but will be used through the ref.emit code in place of 
26023         MonoDynamicAssembly.
26024
26025         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
26026         object layout.
26027
26028         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
26029         a MonoDynamicImage instead of just a MonoImage.
26030         
26031         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
26032         icalls to ModuleBuilder but keep their semantics, so they will work
26033         with moduleb->assemblyb. This will change later.
26034         
26035 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
26036
26037         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
26038         object layout.
26039
26040         * reflection.c (mono_image_build_metadata): Avoid creation of a default
26041         main module, since it is now done by the managed code.
26042
26043 2003-11-03  Martin Baulig  <martin@ximian.com>
26044
26045         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
26046         `ginst->klass' here.
26047         (method_encode_methodspec): Don't use the `ginst->generic_method's
26048         klass if it's a generic instance, use `ginst->klass' in this case.
26049
26050 2003-11-03  Martin Baulig  <martin@ximian.com>
26051
26052         * reflection.c (mono_image_get_generic_method_param_info):
26053         Removed, use mono_image_get_generic_param_info() instead.
26054         (mono_image_get_type_info): Write the GenericParam table before
26055         the Method table.  This is neccessary because in the GenericParam
26056         table, type parameters of the class (ie. '!0' etc.) must come
26057         before the ones from its generic methods (ie. '!!0' etc).
26058
26059 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
26060
26061         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
26062
26063 2003-11-02  Martin Baulig  <martin@ximian.com>
26064
26065         * reflection.c (create_generic_typespec): Take a
26066         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
26067         the generic parameters from it.
26068
26069 2003-11-02  Martin Baulig  <martin@ximian.com>
26070
26071         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
26072         instead of a `MonoClassField *' since we just need the type.
26073         (create_generic_typespec): New static function.  Creates a
26074         TypeSpec token for a generic type declaration.
26075         (mono_image_get_generic_field_token): New static function.
26076         (mono_image_create_token): If we're a FieldBuilder in a generic
26077         type declaration, call mono_image_get_generic_field_token() to get
26078         the token.
26079
26080 2003-11-02  Martin Baulig  <martin@ximian.com>
26081
26082         * reflection.h
26083         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
26084         `MonoReflectionGenericInst *declaring_type' and
26085         `MonoReflectionGenericInst *reflected_type' fields.
26086
26087         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
26088         `MonoReflectionGenericInst *declaring_type' and a
26089         `MonoReflectionGenericInst *reflected_type' argument instead of a
26090         single `MonoReflectionGenericInst *type' one.  Set
26091         `res->declaring_type' and `res->reflected_type' from them.
26092         (mono_reflection_inflate_field): Likewise.      
26093
26094 2003-11-02  Martin Baulig  <martin@ximian.com>
26095
26096         * class.c (mono_class_setup_vtable): Don't store generic methods
26097         in the vtable.  
26098
26099 2003-11-02  Martin Baulig  <martin@ximian.com>
26100
26101         * reflection.h (MonoReflectionGenericInst): Added
26102         `MonoReflectionType *declaring_type'.
26103
26104         * reflection.c (mono_reflection_bind_generic_parameters): Use
26105         `if (tb->parent)' instead of `klass->parent'.
26106
26107 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
26108
26109         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
26110         with an empty ASSEMBLY table.
26111
26112         * reflection.c (mono_image_build_metadata): Avoid using the same loop
26113         variable in the inner and outer loops.
26114
26115 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
26116
26117         * metadata.h (mono_metadata_make_token): Put parentheses around macro
26118         argument.
26119
26120         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
26121         
26122         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
26123         icalls. Instead, do everything in managed code. This is needed since
26124         it is hard to restore the original domain etc. in unmanaged code in the
26125         presence of undeniable exceptions.
26126
26127         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
26128         New icalls to push and pop appdomain refs.
26129
26130 2003-10-31  Martin Baulig  <martin@ximian.com>
26131
26132         * class.c (inflate_generic_type): Renamed to
26133         mono_class_inflate_generic_type() and made it public.
26134
26135         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
26136         New interncall.
26137
26138         * loader.c (mono_field_from_memberref): Also set the retklass for
26139         typespecs.
26140
26141         * fielder.c (mono_image_get_inflated_field_token): New static
26142         method; creates a metadata token for an inflated field.
26143         (mono_image_create_token, fixup_method): Added support for
26144         "MonoInflatedField".
26145         (fieldbuilder_to_mono_class_field): New static function.
26146         (mono_reflection_inflate_field): New public function.
26147
26148         * reflection.h
26149         (MonoReflectionGenericInst): Added `MonoArray *fields'.
26150         (MonoReflectionInflatedField): New typedef.     
26151
26152 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
26153
26154         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
26155         for Solaris and other platforms without s6_addr16
26156
26157 2003-10-30  Martin Baulig  <martin@ximian.com>
26158
26159         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
26160         argument instead of two.
26161         (mono_class_inflate_generic_signature): Likewise.
26162         (inflate_generic_header): Likewise.
26163         (mono_class_inflate_generic_method): Likewise.  In addition, if
26164         `ginst->klass' is set, it becomes the new `method->klass'.
26165
26166         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
26167         field.
26168
26169         * reflection.c (encode_generic_method_sig): Write a 0xa as the
26170         first byte. [FIXME]
26171         (method_encode_methodspec): If we have generic parameters, create
26172         a MethodSpec instead of a MethodRef.
26173         (fixup_method): Added support for "MonoInflatedMethod" and
26174         "MonoInflatedCtor".
26175         (mono_image_create_token): Added support for "MonoInflatedMethod"
26176         and "MonoInflatedCtor".
26177         (inflated_method_get_object): New static function; returns a
26178         managed "System.Reflection.MonoInflatedMethod" object.
26179         (mono_reflection_bind_generic_method_parameters): Return a
26180         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
26181         (mono_reflection_inflate_method_or_ctor): Likewise.
26182         (mono_image_get_generic_method_param_info): Initialize unused
26183         fields to zero.
26184         (mono_image_get_generic_param_info): Likewise.
26185
26186         * reflection.h (MonoReflectionInflatedMethod): New public
26187         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
26188         "S.R.MonoInflatedCtor" classes.
26189
26190         * loader.c (method_from_memberref): If we're a TypeSpec and it
26191         resolves to a generic instance, inflate the method.
26192
26193 2003-10-28  Dick Porter  <dick@ximian.com>
26194
26195         * object.c (mono_runtime_run_main): Convert command-line arguments
26196         into utf8, falling back to the user's locale encoding to do so.
26197
26198 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
26199
26200         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
26201         at this time.
26202
26203         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
26204
26205         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
26206         up icalls at method definition time. Partially fixes #33569.
26207
26208 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
26209
26210         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
26211         marshalling of arrays. Fixes #50116.
26212
26213         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
26214
26215         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
26216         points to a vtable in the dying appdomain.
26217
26218         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
26219         listeners into unmanaged code inside the lock.
26220
26221         * object.c (mono_class_vtable): Turn off typed allocation in non-root
26222         domains and add some comments.
26223
26224 2003-10-25  Martin Baulig  <martin@ximian.com>
26225
26226         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
26227
26228         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
26229
26230         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
26231         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
26232         currently parsing.  Create the generic class and store it in
26233         `generic_inst->klass' before parsing the type arguments.  This is
26234         required to support "recursive" definitions; see mcs/tests/gen-23.cs
26235         for an example.
26236         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
26237         to support recursive typespec entries.
26238
26239         * class.c (mono_class_setup_parent): If our parent is a generic
26240         instance, we may get called before it has its name set.
26241         (mono_class_from_generic): Splitted into
26242         mono_class_create_from_generic() and mono_class_initialize_generic().
26243
26244 2003-10-25  Martin Baulig  <martin@ximian.com>
26245
26246         * icall.c (ves_icall_Type_BindGenericParameters): Return a
26247         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
26248         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
26249         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
26250
26251         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
26252         (create_typespec): Likewise.
26253         (mono_reflection_bind_generic_parameters): Return a
26254         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
26255         (mono_reflection_inflate_method_or_ctor): New public function.
26256
26257         * reflection.h (MonoReflectionGenericInst): New typedef.        
26258
26259 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
26260
26261         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
26262         inside the domain lock. Fixes #49993.
26263         
26264         * object.c (mono_class_vtable): When typed allocation is used, 
26265         allocate vtables in the GC heap instead of in the mempool, since the
26266         vtables contain GC descriptors which are used by the collector even
26267         after the domain owning the mempool is unloaded.
26268
26269         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
26270
26271         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
26272         reflect what it does. Also invalidate mempools instead of freeing
26273         them if a define is set.
26274
26275         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
26276         of the appdomain.
26277         
26278         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
26279         hold the finalizable objects in this domain.
26280
26281         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
26282         appdomain.
26283
26284         * appdomain.c (mono_domain_set): New function to set the current
26285         appdomain, but only if it is not being unloaded.
26286
26287         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
26288         appdomain which is being unloaded.
26289         
26290         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
26291         unloading of the root appdomain.
26292
26293         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
26294         icall to execute a method in another appdomain. Intended as a 
26295         replacement for InternalSetDomain, which can confuse the code 
26296         generation in the JIT.
26297
26298         * appdomain.c (mono_domain_is_unloading): New function to determine
26299         whenever an appdomain is unloading.
26300
26301         * appdomain.c (mono_domain_unload): New function to correctly unload
26302         an appdomain.
26303
26304         * assembly.c (mono_assembly_load_references): Check that an assembly
26305         does not references itself.
26306
26307         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
26308         domain manually, it asks the finalizer thread to do it, then waits for
26309         the result. Also added a timeout.
26310
26311         * icall.c: Register the new icalls.
26312
26313         * threads.h threads.c: Export the mono_gc_stop_world and 
26314         mono_gc_start_world functions.
26315         
26316         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
26317         function to fill out the mempool with 0x2a.
26318
26319 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
26320
26321         * reflection.h (MonoReflectionMethodAux): New structure to store
26322         information which is rarely used, thus is not in the MonoMethod
26323         structure.
26324
26325         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
26326         store the aux info.
26327
26328         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
26329         and marshalling info into the aux structure.
26330
26331         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
26332         from the aux structure.
26333
26334         * loader.c (mono_method_get_param_names): Retrieve the param names from
26335         the aux structure.
26336         
26337 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
26338
26339         * exception.h exception.c: Add AppDomainUnloadedException && fix 
26340         warning.
26341
26342 2003-10-21  Dick Porter  <dick@ximian.com>
26343
26344         * socket-io.c
26345         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
26346         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
26347
26348 2003-10-21  Martin Baulig  <martin@ximian.com>
26349
26350         * reflection.c (mono_reflection_bind_generic_parameters):
26351         `klass->parent' is NULL for interfaces.
26352
26353 2003-10-21  Martin Baulig  <martin@ximian.com>
26354
26355         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
26356
26357 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
26358
26359         * exception.c (mono_exception_from_name_msg): New helper function for
26360         creating exceptions and initializing their message field.
26361
26362         * exception.c: Simplify functions using the new helper.
26363
26364         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
26365         New function.
26366
26367         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
26368         mono_raise_exception, since otherwise gcc doesn't generate the function
26369         epilog for raise_exception, confusing the stack unwinding in the JIT.
26370         Fixes #45043.
26371
26372         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
26373         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
26374         Fixes #49499.
26375
26376 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26377
26378         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
26379         utf8.
26380
26381 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
26382
26383         * icall.c: Removed GetUninitializedObject method because
26384           AllocateUninitializedClassInstance does the same.
26385
26386 2003-10-18  Martin Baulig  <martin@ximian.com>
26387
26388         * class.c (inflate_generic_signature): Renamed to
26389         mono_class_inflate_generic_signature() and made it public.
26390         (my_mono_class_from_generic_parameter): New static function; if we
26391         don't already have the generic parameter's MonoClass, create a
26392         very simple one which is just used internally in the runtime and
26393         not passed back to managed code.
26394
26395         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
26396
26397         * metadata.h (MonoMethodSignature): Moved the
26398         `MonoGenericParam *gen_params' to the MonoMethodHeader.
26399         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
26400
26401         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
26402         ves_icall_MonoMethod_GetGenericArguments(); this is now an
26403         interncall on the MonoMethod class, not on MethodInfo.
26404         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
26405         calling mono_reflection_bind_generic_method_parameters() directly.
26406
26407         * loader.c (mono_method_get_signature): If this is a MethodSpec;
26408         return the already computed `method->signature'.
26409         (method_from_methodspec): New static function to load a method
26410         from a MethodSpec entry.
26411         (mono_get_method_from_token): Call the new method_from_methodspec()
26412         for MethodSpec tokens.  
26413         (mono_get_method_from_token): If we're a generic method, load the
26414         type parameters.
26415
26416         * reflection.c (mono_image_get_memberref_token): Allow
26417         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
26418         table.
26419         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
26420         (mono_image_create_token): First check whether it's a generic
26421         method (so we'd need to create a MethodSpec), then do the other
26422         two alternatives.
26423         (mono_reflection_bind_generic_method_parameters): Return a
26424         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
26425         called directly from the interncall.
26426
26427 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
26428
26429         * reflection.c (load_public_key): Move loading of the public key
26430         into managed code.
26431
26432         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
26433
26434         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
26435         fields.
26436
26437         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
26438         culture, hash_alg and public_key. Fixes #49555.
26439
26440 2003-10-17  Martin Baulig  <martin@ximian.com>
26441
26442         * class.h (MonoGenericInst): Moved this declaration here and added
26443         `MonoMethod *generic_method'.
26444
26445         * icall.c
26446         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
26447         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
26448
26449         * metadata.c (mono_metadata_type_equal): Two types of
26450         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
26451         index; ie. don't compare the address of the `MonoGenericParam'
26452         structure.
26453         (mono_metadata_load_generic_params): Removed the `MonoMethod
26454         *method' argument.
26455
26456         * metadata.h (MonoGenericInst): Moved declaration to class.h.
26457         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
26458
26459         * reflection.c (method_encode_signature): Encode the number of
26460         generic parameters.
26461         (encode_generic_method_sig): New static function.
26462         (method_encode_methodspec): New static function; creates an entry
26463         in the MethodSpec table for a generic method.
26464         (mono_image_get_methodspec_token): New static function.
26465         (mono_image_create_token): Call mono_image_get_methodspec_token()
26466         for generic methods.
26467         (mono_reflection_bind_generic_method_parameters): New public
26468         function.  Instantiates a generic method.
26469
26470 2003-10-16  Martin Baulig  <martin@ximian.com>
26471
26472         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
26473         *gen_params' here from MonoMethodHeader.
26474
26475         * metadata.c (mono_metadata_parse_method_signature): If we have
26476         generic parameters, initialize `method->gen_params' and then set
26477         the correct `type->data.generic_param' in all the parameters.
26478
26479 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
26480
26481         * threads.c (mono_threads_get_default_stacksize): New function to 
26482         return the default stacksize.
26483
26484         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
26485         termination of the finalizer thread, since the previous method had
26486         race conditions. Fixes #49628.
26487
26488         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
26489         as for the other managed threads.
26490
26491 2003-10-16  Martin Baulig  <martin@ximian.com>
26492
26493         * class.c (inflate_generic_signature): Copy `generic_param_count'
26494         and `gen_params'.
26495
26496         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
26497         New interncall.
26498
26499         * metadata.c (mono_metadata_parse_method_signature): Actually set
26500         the `method->generic_param_count' here.
26501         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
26502
26503 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
26504
26505         * object.h: Add a new field to TypedRef to simplify the implementation
26506         of the REFANY opcodes in the JIT.
26507
26508         * icall.c: Make use of the new field.
26509
26510         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
26511         dynamically.
26512
26513 2003-10-15  Martin Baulig  <martin@ximian.com>
26514
26515         * class.c (mono_class_from_gen_param): Renamed to
26516         mono_class_from_generic_parameter() and moved most of the
26517         functionality from mono_reflection_define_generic_parameter()
26518         here; ie. we create a "real" class here.
26519         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
26520         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
26521         previously been called.
26522
26523         * class.h (MonoGenericParam): Moved the declaration of this struct
26524         here from metadata.h and added `MonoMethod *method'.
26525
26526         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
26527         interncall.
26528
26529         * loader.c (mono_get_method_from_token): If we have any generic
26530         parameters, call mono_metadata_load_generic_params() to read them
26531         from the MONO_TABLE_GENERICPAR.
26532
26533         * metadata.c (mono_metadata_load_generic_params): Added
26534         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
26535
26536         * metadata.h (MonoMethodSignature): Replaced
26537         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
26538         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
26539
26540         * reflection.c (mono_reflection_define_generic_parameter): Moved
26541         most of the functionality into the new
26542         mono_class_from_generic_parameter(); set the `method' field if
26543         we're a method parameter.       
26544
26545 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
26546
26547         * marshal.c (emit_struct_conv): if native size is 0
26548         emit no code.
26549
26550 2003-10-14  Martin Baulig  <martin@ximian.com>
26551
26552         * icall.c: The generics API has changed in the spec since it was
26553         added to System.Type; these modifications make it match the spec
26554         again.
26555         (ves_icall_Type_GetGenericParameters): Renamed to
26556         `ves_icall_Type_GetGenericArguments'.
26557         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
26558         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
26559         `ves_icall_MonoType_get_HasGenericArguments'.
26560         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
26561         `ves_icall_MonoType_get_IsGenericParameter'.
26562         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
26563         this is no interncall anymore.
26564         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
26565         `ves_icall_TypeBuilder_get_IsGenericParameter'.
26566
26567 2003-10-14  Martin Baulig  <martin@ximian.com>
26568
26569         * reflection.c (mono_reflection_bind_generic_parameters): Also
26570         inflate generic methods if we're reading the class from IL.
26571
26572 2003-10-13  Martin Baulig  <martin@ximian.com>
26573
26574         * reflection.c (mono_reflection_define_generic_parameter): This
26575         method isn't called directly from the icall anymore; take a
26576         `MonoReflectionAssemblyBuilder *' so we can use this for type and
26577         method generic parameters.
26578         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
26579         (method_builder_encode_signature): Encode generic parameters.
26580         (mono_image_get_method_info): Write generic params to the
26581         MONO_TABLE_GENERICPARAM table.
26582
26583         * reflection.h (MonoReflectionMethodBuilder): Added
26584         `MonoArray *generic_params'.
26585
26586         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
26587
26588         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
26589         wrapper for mono_reflection_define_generic_parameter().
26590         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
26591
26592 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
26593
26594         * marshal.h: Add missing function to fix build.
26595
26596         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
26597         the SetLastError pinvoke attribute.
26598
26599         * marshal.c (mono_marshal_set_last_error): New helper function called
26600         by the generated code.
26601         
26602         * marshal.c (mono_mb_emit_branch): New helper function.
26603
26604         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
26605
26606         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
26607         classes as parameters and return values of delegates. Fixes #29256. 
26608
26609 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
26610
26611         * locales.c: use gint32 in non HAVE_ICU case
26612
26613 2003-10-11  Martin Baulig  <martin@ximian.com>
26614
26615         * mono-debug.c (mono_debug_add_method): Added a workaround for
26616         bug #48591.
26617
26618 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
26619
26620         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
26621         delegates passed to native code must use the STDCALL calling 
26622         convention. Fixes #35987.
26623
26624 2003-10-10  Martin Baulig  <martin@ximian.com>
26625
26626         * class.c (inflate_generic_type): If we're inflating for a generic
26627         type instance (and not for a generic method), return
26628         MONO_TYPE_MVAR unchanged.
26629
26630 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26631
26632         * string-icalls.c: Join ignores null strings in the source array.
26633         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
26634         * threads.c: GetAvailableTheads is slightly more accurate.
26635
26636 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
26637
26638         * threads.h threads.c : add mono_threads_set_default_stacksize
26639         and pass default to CreateThread calls.
26640
26641 2003-10-09  Dick Porter  <dick@ximian.com>
26642
26643         * icall.c:
26644         * locales.h:
26645         * locales.c: Internal calls for constructing CultureInfo and
26646         related objects from libicu (if its available.)
26647
26648 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
26649
26650         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
26651
26652 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26653
26654         * threadpool.c: added an argument to async_invoke_thread that is the
26655         item to process, pass the MonoAsyncResult to the thread start function
26656         when creating a new thread. This way we don't need to acquire any lock
26657         when we're creating a new thread. Readded a semaphore for faster
26658         response times (instead of that Sleep i added).
26659
26660 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
26661
26662         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
26663         get daylight change dates better on Windows, fix handling
26664         of platforms without tm_gmtoff.
26665
26666 2003-10-06  Martin Baulig  <martin@ximian.com>
26667
26668         * class.c (inflate_generic_method): Renamed to
26669         mono_class_inflate_generic_method() and made public.
26670         (mono_class_init): Don't inflate the generic methods here.
26671         (mono_class_from_generic): Added `gboolean inflate_methods'
26672         argument.  Inflate the methods here.
26673
26674         * loader.c (mono_method_get_param_names): Ignore instances of
26675         generic types for the moment.
26676
26677         * reflection.c (fixup_method): Added support for inflated methods.
26678         (mono_image_create_token): Use mono_image_get_methodref_token()
26679         for inflated methods.
26680         (mono_custom_attrs_from_param): Ignore instances of generic types
26681         for the moment.
26682         (mono_reflection_bind_generic_parameters): New public function.
26683         Moved all the functionality from
26684         ves_icall_Type_BindGenericParameters() here and added support for
26685         dynamic types.
26686         (mono_reflection_define_generic_parameter): Initialize
26687         `klass->methods' here.
26688
26689         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
26690         functionality into mono_reflection_define_generic_parameter().
26691         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
26692         TypeBuilder, return that TypeBuilder.
26693
26694 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26695
26696         * appdomain.c: removed mono_delegate_semaphore.
26697
26698         * threadpool.c:
26699         (mono_thread_pool_add): moved hash table creation inside and the thread 
26700         creation outside of the critical region.
26701         (mono_thread_pool_finish): removed obsolete code.
26702         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
26703         continue or exit the thread depending on the queue.
26704
26705 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
26706
26707         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
26708         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
26709         handle more bool marshalling options
26710
26711 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
26712
26713         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
26714         arrays of structs. Also add a more descriptive error message when
26715         a structure member is marshalled as LPArray.
26716
26717 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
26718
26719         * marshal.c (mono_marshal_get_native_wrapper): Add support for
26720         marshalling arrays of complex types. Fixes #29098. Also remove an
26721         usused and incomplete function.
26722
26723 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
26724
26725         * gc.c: report heap_size - free_bytes as total memory allocated
26726         (bug#49362).
26727
26728 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
26729
26730         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
26731         fix timezone handling problems on Windows.
26732         
26733         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
26734         asserts when the year is outside the range handled by ms the functions.
26735
26736         * class.c (setup_interface_offsets): If the class is an interface,
26737         fill out its interface_offsets slot.
26738
26739 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26740
26741         * threadpool.c: mark threadpool threads as background.
26742
26743 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
26744
26745         * decimal.c - define DECINLINE to nothing if not using GCC
26746
26747 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
26748
26749         * assembly.c: More refcount fixes.
26750
26751 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26752
26753         * string-icalls.c: if we're not trimming, return the same string.
26754         When not splitting, don't create a new string.
26755
26756 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26757
26758         * image.c:
26759         (mono_image_open): increment the ref_count inside the critical section.
26760
26761 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
26762
26763         * image.c (mono_image_open): Fix reference counting bug.
26764
26765 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
26766
26767         * marshal.c (mono_marshal_type_size) struct alignment changed for 
26768         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
26769         64bits. Avoid leak in mono_marshal_get_native_wrapper when
26770         mono_lookup_pinvoke_call throws.        
26771
26772 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
26773
26774         * reflection.c (mono_reflection_parse_type): Fix #49114.
26775
26776         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
26777         temporary workaround for cygwin header problem.
26778
26779         * object.c (mono_object_isinst): Synchronize this with the code
26780         generated by the JIT for casts.
26781
26782 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
26783
26784         * reflection.c (encode_type): Fix #38332.
26785
26786 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
26787
26788         * marshal.c (mono_marshal_method_from_wrapper): New function to return
26789         the original method from the wrapper method.
26790
26791 2003-09-25  Martin Baulig  <martin@ximian.com>
26792
26793         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
26794         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
26795         (ves_icall_Type_get_IsGenericInstance): New interncall.
26796
26797 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
26798
26799         * object.c: fix cast warning in big endian code.
26800
26801 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
26802
26803         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
26804         
26805 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26806
26807         * assembly.c: don't call check_env from mono_assembly_load. It's
26808         already done once in mono_assemblies_init and may cause headaches when
26809         multiple threads are loading assemblies.
26810
26811 2003-09-19  Martin Baulig  <martin@ximian.com>
26812
26813         * reflection.c (mono_reflection_define_generic_parameter): Don't
26814         allocate `klass->methods', set `klass->flags' to
26815         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
26816
26817 2003-09-18  Martin Baulig  <martin@ximian.com>
26818
26819         * class.c (mono_class_init): Don't create `class->methods' if it's
26820         already initialized.
26821
26822         * metadata.c (mono_metadata_load_generic_params): Make this
26823         actually work.
26824
26825         * reflection.c (mono_reflection_define_generic_parameter): Set
26826         parent class and interfaces from the constraints.
26827
26828         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
26829         to keep this struct in sync with the declaration in TypeBuilder.cs.
26830
26831 2003-09-17  Martin Baulig  <martin@ximian.com>
26832
26833         * metadata.h (MonoType): Replaced the data's `int type_param'
26834         field with `MonoGenericParam *generic_param'.
26835         (MonoGenericParam): Added `MonoClass *klass'.
26836
26837         * class.c (mono_class_from_gen_param): Removed the
26838         `MonoImage *image' and `int type_num' arguments.
26839
26840         * metadata.c (mono_metadata_parse_generic_param): New static
26841         method; creates a MonoGenericParam which just contains the index.
26842         (do_mono_metadata_parse_type): Call
26843         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
26844         MONO_TYPE_MVAR.
26845
26846         * reflection.c (mono_image_typedef_or_ref): Generic type
26847         parameters may be in the same assembly, but never use a typedef
26848         for them.
26849         (mono_reflection_define_generic_parameter): We're now creating a
26850         "real" class for the type parameter; it's now safe to call
26851         mono_class_from_mono_type() on the class'es type, it'll do the
26852         right thing.
26853
26854 2003-09-16  Martin Baulig  <martin@ximian.com>
26855
26856         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
26857         `symfile->range_entry_size' and `symfile->class_entry_size' here;
26858         the `symfile' data structure must be fully initialized before it
26859         gets added to the table.
26860
26861 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
26862
26863         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
26864
26865         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
26866         class init trampolines.
26867
26868 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
26869
26870         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
26871         to the built-in profiler to turn off time and allocation profiling
26872         respectively.
26873
26874 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
26875
26876         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
26877         g_direct_equal.
26878
26879         * debug-helpers.c (mono_method_full_name): Print the wrapper type
26880         in human readable form.
26881
26882 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
26883
26884         * reflection.c icall.c: Fixed warnings.
26885
26886         * image.c (load_class_names): Use a temporary hash table to hold the
26887         namespaces in order to avoid doing many string comparisons.
26888
26889         * image.h: Fix typo.
26890
26891         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
26892         Pass NULL instead of g_direct_equal to the GHashTable constructor 
26893         since the NULL case is short-circuited inside g_hash_table_lookup, 
26894         leading to better performance.  
26895
26896         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
26897         obtain the first custom attribute for a given index. Depends on the
26898         CustomAttribute table being sorted by the parent field.
26899
26900         * reflection.c (mono_custom_attrs_from_index): Use the new function 
26901         for better performance.
26902
26903 2003-09-07  Martin Baulig  <martin@ximian.com>
26904
26905         * class.c (mono_class_init): If we're a generic instance, inflate
26906         all our methods instead of loading them from the image.
26907         (mono_class_from_generic): Set `class->methods = gklass->methods'.
26908
26909 2003-09-07  Martin Baulig  <martin@ximian.com>
26910
26911         * mono-debug-debugger.c: Added support for constructors.
26912
26913 2003-09-06  Martin Baulig  <martin@ximian.com>
26914
26915         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
26916         New interncall.
26917
26918         * reflection.c (mono_reflection_setup_generic_class): Call
26919         ensure_runtime_vtable() to create the vtable.
26920
26921 2003-09-05  Martin Baulig  <martin@ximian.com>
26922
26923         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
26924         MONO_TYPE_MVAR.
26925
26926 2003-09-04  Martin Baulig  <martin@ximian.com>
26927
26928         * reflection.c (mono_reflection_define_generic_parameter): Generic
26929         parameters start with zero.
26930
26931 2003-09-04  Martin Baulig  <martin@ximian.com>
26932
26933         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
26934
26935         * reflection.h (MonoReflectionGenericParam): New typedef.
26936         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
26937         the generic parameters from the managed TypeBuilder.
26938
26939         * reflection.c (mono_reflection_define_generic_parameter): New function.
26940         (mono_reflection_create_runtime_class): Encode generic parameters.
26941         (mono_reflection_setup_generic_class): New function; this is
26942         called after adding adding all generic params to the TypeBuilder.
26943         (encode_type): Added MONO_TYPE_VAR.
26944
26945 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
26946
26947         * class.h class.c (mono_class_needs_cctor_run): Moved this method
26948         here from the JIT.
26949
26950         * assembly.h assembly.c: Moved the AOT loading code into an assembly
26951         load hook.
26952
26953 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
26954
26955         * reflection.h reflection.c class.h class.c: Delete duplicate 
26956         definition of mono_type_get_name () from reflection.c and export the
26957         one in class.c.
26958
26959         * class.c: Class loading fixes from Bernie Solomon 
26960         (bernard@ugsolutions.com).
26961
26962         * reflection.c: Endianness fixes from Bernie Solomon 
26963         (bernard@ugsolutions.com).
26964         
26965 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
26966
26967         * assembly.h assembly.c: Define a file format version for AOT
26968         libraries.
26969         
26970         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
26971
26972         * appdomain.h (MonoJitInfo): New field to determine whenever the
26973         code is domain neutral.
26974         
26975 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
26976
26977         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
26978
26979 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
26980
26981         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
26982         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
26983         Avoid caching the result since strings must be domain specific. Fixes
26984         #48050.
26985
26986 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
26987
26988         * marshal.c (mono_marshal_init): Make this callable multiple times
26989         since it is hard to find a correct place to call it.
26990
26991         * object.c (mono_runtime_class_init): Execute static constructors in
26992         the correct appdomain.
26993
26994         * image.c (build_guid_table): Handle the case when multiple images have
26995         the same GUID.
26996
26997 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26998
26999         * icall.c: added a couple of icalls for System.Web.
27000
27001 2003-08-28  Martin Baulig  <martin@ximian.com>
27002
27003         * icall.c (ves_icall_Type_BindGenericParameters): Use
27004         `klass->generic_inst' instead of `&klass->byval_arg' in the
27005         mono_type_get_object() call.  The returned type must be
27006         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
27007
27008 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
27009
27010         * NOTES: New file.
27011
27012         * object.c (mono_class_proxy_vtable): Make it thread safe.
27013
27014         * pedump.c: Fix warning.
27015
27016         * object.c appdomain.h: Get rid of metadata_section. 
27017         It is no longer needed and it was causing deadlocks with domain->lock.
27018
27019         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
27020
27021 2003-08-26  Martin Baulig  <martin@ximian.com>
27022
27023         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
27024
27025 2003-08-26  Martin Baulig  <martin@ximian.com>
27026
27027         * pedump.c (main): Call mono_metadata_init(),
27028         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
27029         and mono_loader_init().
27030
27031 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
27032
27033         * loader.h: Add missing include to fix build.
27034
27035         * image.h: mono_image_load_references is no more.
27036
27037         * assembly.c: Reworked assembly loading to make it really thread safe.
27038         After these changes, the assembly returned by mono_assembly_open is
27039         fully initialized, i.e. all its references assemblies are loaded.
27040
27041         * assembly.c (mono_image_load_references): Renamed to 
27042         mono_assembly_load_references, and made private, since clients no
27043         longer need to call it.
27044
27045         * class.c: Removed calls to mono_assembly_load_references, since it was
27046         a source of deadlocks.
27047
27048         * loader.h loader.c class.h class.c: Protect data structures using a 
27049         new lock, the loader lock.
27050
27051         * class.c (mono_class_setup_vtable): Create temporary hash tables and
27052         GPtrArrays only when needed.
27053
27054         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
27055         into empty structures by mcs. Fixes pinvoke7.cs.
27056         
27057         * domain.c (mono_init): Call a new initialization function.
27058
27059         * appdomain.c (mono_runtime_init): Call the new initializer function
27060         of the marshal module.
27061
27062         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
27063         inserted into empty structures by mcs. Fixes pinvoke7.cs.
27064
27065         * marshal.h marshal.c: Added locks around the wrapper caches to make
27066         this module thread safe.
27067
27068         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
27069         this argument. Fixes pinvoke1.exe.
27070
27071 2003-08-25  Lluis Sanchez <lluis@ximian.com>
27072
27073         * object.h: Added call_type field to MonoMethodMessage and the corresponding
27074         enumeration of values. Removed fields to store remote call output values in
27075         MonoAsyncResult. Not needed any more.
27076         * object.c: Initialize call_type and async_result fields in mono_message_init.
27077         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
27078         dispatching the message.
27079         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
27080         async call to finish. To do it use a message with EndInvoke call type.
27081
27082 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
27083
27084         * loader.h loader.c (mono_method_hash_marhal_info): New function which
27085         determines whenever a method has marshalling info.
27086
27087 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27088
27089         * assembly.c: fix the build on windows.
27090
27091 2003-08-22 Lluis Sanchez <lluis@ximian.com>
27092
27093         * object.cs: Fixed bug #47785.
27094
27095 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
27096
27097         * string-icalls.c (StringReplace): If their are no occurances of
27098         the old string found return a reference to the supplied
27099         string. This saves some memory and matches MS behavoir.
27100         
27101 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27102
27103         * socket-io.c: fixed compilation for systems that define AF_INET6
27104         and don't define SOL_IP/SOL_IPV6.
27105
27106 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
27107
27108         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
27109         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
27110
27111         * rawbuffer.c rawbuffer.h: Make this module thread safe.
27112
27113         * domain.c: Make this module thread safe.
27114
27115         * domain.c (mono_init): Call new initialization function.
27116
27117         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
27118         reference types too. Fixes #38812.
27119
27120         * image.c (mono_image_init): Fixed warnings.
27121
27122         * class.c (mono_class_from_typeref): Handle assembly load failure
27123         correctly.
27124
27125         * appdomain.c (add_assemblies_to_domain): Handle the case when
27126         the references of an assembly are not yet loaded.
27127
27128         * metadata.c image.c assembly.c: Moved initialization of global
27129         variables to a separate function called at startup since lazy 
27130         initialization of these variables is not thread safe.
27131         
27132         * image.c assembly.c: Made this module thread safe by adding locks in 
27133         the appropriate places.
27134
27135         * domain.c (mono_init): Call the new initialization functions of the
27136         three modules.
27137
27138 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
27139
27140         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
27141           make a direct call. It is proxy's work to make the call asynchronous.
27142           mono_delegate_end_invoke(): If the targe is a proxy, just collect
27143           the return values.
27144         * object.cs: mono_method_call_message_new(): read AsyncResult and
27145           state object from parameters list, if this info is requested.
27146         * object.h: Added fields to store remote call output values in
27147           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
27148
27149 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
27150
27151         * object.h: add needed fields to MonoThread.
27152         * threads.c, threads.h: allow registering a function to cleanup data
27153         allocated per thread by the JIT.
27154
27155 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
27156
27157         * loader.h: portability fix by Bernie Solomon
27158         * <bernard@ugsolutions.com>.
27159
27160 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
27161
27162         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
27163         return a MonoArray. This simplifies the code and also ensures that
27164         the cache allways contains an object reference as a value.
27165
27166         * icall.c (ves_icall_get_parameter_info): Simplified using the new
27167         function.
27168
27169 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27170
27171         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
27172         fixes a problem with byte ordering when getting the address family for
27173         a socket.
27174
27175 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
27176
27177         * .cvsignore: Added monosn.
27178
27179         * reflection.h reflection.c loader.c: Added support for parameter
27180         marshalling to dynamically created types. Fixes #47295.
27181
27182 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
27183
27184         * rand.c: remove useless warnings.
27185
27186 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
27187
27188         * class.c: implemented ldtoken for methods and fieldrefs.
27189
27190 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27191
27192         * threadpool.c: when mono_async_invoke was called, no one took care of
27193         monitoring the queue. So if the method invoked took some time and we
27194         got new async invoke requests after 500 ms (the thread created waited
27195         that long in WaitForSingleObject), the new async invoke was not called
27196         until the previous one finished.
27197
27198         This is fixed now. Thanks to Totte for helping with it.
27199
27200 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27201
27202         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
27203
27204 2003-08-11  Martin Baulig  <martin@ximian.com>
27205
27206         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
27207
27208 2003-08-06  Martin Baulig  <martin@ximian.com>
27209
27210         * mono-debug-debugger.c: Added support for static fields,
27211         properties and methods.
27212
27213 2003-08-06  Martin Baulig  <martin@ximian.com>
27214
27215         * mono-debug-debugger.c: Don't store the MonoString's vtable to
27216         make this work for applications with multiple application domains.
27217
27218 2003-08-04  Martin Baulig  <martin@ximian.com>
27219
27220         * mono-debug-debugger.c: Completely reworked the type support; the
27221         most important thing is that we're now just using one single
27222         `MonoType' instance per type.
27223
27224 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
27225
27226         * mono-endian.h, mono-endian.c, icall.c: Added icall
27227         ves_icall_System_Double_AssertEndianity to assert double word endianity
27228         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
27229
27230 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
27231
27232         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
27233         support, icalls and fixes.
27234
27235 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
27236
27237         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
27238         classes that are a punctuation character in .NET is not the same a
27239         g_unichar_ispunct.
27240
27241 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
27242
27243         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
27244
27245 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
27246
27247         * icall.c: Add new MemCopy internalcall.
27248         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
27249         Simplified code; It is not necessary to handle all the cases here,
27250         as the C# code takes care of it.  Only handle the case of the name
27251         resource embedded into the assembly.
27252
27253         Changed signature to return the data pointer and the size of the
27254         data. 
27255
27256 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
27257
27258         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
27259         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
27260
27261 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
27262
27263         * socket-io.c: ignore EINTR error in select.
27264
27265 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
27266
27267         * class.h, class.c: removed unused subclasses field in MonoClass.
27268
27269 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
27270
27271         * icall.c: improve fix of get_base_definition(). If the parent class
27272           doesn't have the mehod, look at the parent of the parent.
27273         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
27274           to check if a parameter is an in or out parameter
27275           (PARAM_ATTRIBUTE_IN is not set by default).
27276           mono_method_return_message_restore(): Use mono_class_value_size to
27277           get the size of a value type. mono_type_stack_size (parameterType)
27278           does not return the correct value if parameterType is byRef.
27279           mono_load_remote_field(), mono_load_remote_field_new(),
27280           mono_store_remote_field(), mono_store_remote_field_new():
27281           raise exception if the remote call returns an exception.
27282
27283 2003-07-28  Martin Baulig  <martin@ximian.com>
27284
27285         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
27286         method.  This is a wrapper around mono_runtime_invoke() which
27287         boxes the instance object if neccessary.
27288
27289 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
27290
27291         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
27292         metadata.h, row-indexes.h, verify.c: first cut of generics support.
27293
27294 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
27295
27296         * icall.c: disable mcs bug workaround.
27297
27298 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
27299
27300         * object.c (mono_runtime_class_init): Take the metadata_section
27301         mutex before obtaining the domain mutex.
27302
27303         * appdomain.h: Added definition of metadata_section mutex here. 
27304
27305         * object.c: define metadata_mutex here.
27306
27307 2003-07-24  Ravi Pratap  <ravi@ximian.com>
27308
27309         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
27310         fixed.
27311
27312 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
27313
27314         * reflection.c: Fix bug #46669
27315
27316 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27317
27318         * exception.c:
27319         * exception.h:
27320         * icall.c:
27321         * object.h: fill in the type name for TypeLoadException.
27322
27323 2003-07-23  Ravi Pratap  <ravi@ximian.com>
27324
27325         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
27326         relationship between TypeBuilders while compiling corlib) and bug
27327         45993 (Array types returned from the runtime while compiling
27328         corlib were from the loaded corlib).
27329
27330 2003-07-22  Martin Baulig  <martin@ximian.com>
27331
27332         * mono-debug-debugger.c: Reworked the type support a bit more;
27333         distinguish between types and classes.
27334
27335 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
27336
27337         * icall.c: add IsArrayImpl icall.
27338
27339 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
27340
27341         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
27342         initializing real_size only once. Also fix bug #46602.
27343
27344 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
27345
27346         * object.c: Renamed mono_metadata_section to metadata_section.
27347
27348 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
27349
27350         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
27351           empty array if the type is an array. Fixed.
27352           ves_icall_MonoMethod_get_base_definition: if the base method
27353           is abstract, get the MethodInfo from the list of methods of
27354           the class.
27355         * reflection.c: ParameterInfo.PositionImpl should be zero-based
27356           and it was 1-based. Fixed in mono_param_get_objects.
27357
27358 2003-07-20  Martin Baulig  <martin@ximian.com>
27359
27360         * mono-debug.h: Set version number to 31.
27361         (mono_debug_init): Added `MonoDomain *' argument.
27362
27363         * mono-debug-debugger.c: Reworked the type support; explicitly
27364         tell the debugger about builtin types; pass the `klass' address to
27365         the debugger.
27366
27367 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
27368
27369         * image.c: Allow new metadata tables to be loaded without a
27370         warning. Also update the warning message to give the new constant value.
27371                 
27372 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
27373
27374         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
27375         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
27376         array type representation changes.
27377
27378 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
27379
27380         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
27381         on Environment.Exit () call.
27382
27383 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
27384
27385         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
27386         requires a matching corlib.
27387
27388 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
27389
27390         * Changelog: My editor decided to add a CR to each line. Sorry about that.
27391           Committed again without the CRs.
27392         
27393 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
27394
27395         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
27396           getting it from the "this" socket instance. Did not work
27397           if the socket is a subclass of Socket.
27398           Also fixed bug #35371.
27399
27400 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
27401
27402         * metadata.c: fixed size for TypedByRef.
27403         * loader.c: when searching for a method, consider the vararg amrker.
27404         * unicode.c, decimal.c: constify some arrays.
27405
27406 2003-07-15  Dick Porter  <dick@ximian.com>
27407
27408         * socket-io.c: Fixed compilation for gcc < 3.2.
27409
27410         Fixed compilation for machines that don't have AF_INET6 (thanks to
27411         Bernie Solomon <bernard@ugsolutions.com> for that part.)
27412
27413         Fixed compile warnings.
27414         
27415         Fixed formatting and line endings.
27416
27417 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
27418
27419         * socket-io.h:
27420         * socket-io.c: Added IPv6 support.
27421
27422 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
27423
27424         * class.c (mono_class_is_assignable_from): New function to implement
27425         the is_assignable_from logic. Used by mono_object_isinst, 
27426         Type::IsAssignableFrom () and the interpreter.
27427
27428         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
27429         Object, even interfaces.
27430         
27431         * object.c (mono_object_isinst): Implement in terms of 
27432         is_assignable_from.
27433
27434         * icall.c (ves_icall_type_is_assignable_from): New icall.
27435
27436 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
27437
27438         * domain.c (foreach_domain): fix compiler warning.
27439
27440 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
27441
27442         * image.c (load_metadata_ptrs): use g_strndup because strndup is
27443         not available on all plattforms
27444
27445 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
27446
27447         * image.h image.c: Store the metadata version string in MonoImage.
27448         * icall.c: New icall to retrieve the image version.
27449         * reflection.c (create_dynamic_image): Fill in the image version field
27450         * reflection.c (build_compressed_metadata): Use the image version
27451         from the image structure.
27452
27453 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27454
27455         * appdomain.c: modified comment.
27456         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
27457         That will be its last iteration when mono_gc_cleanup is called from
27458         mono_runtime_cleanup and before the domain is unloaded.
27459
27460         Fixes bug #45962.
27461
27462 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
27463
27464         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
27465         attributes.
27466
27467 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
27468
27469         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
27470         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
27471         Bernie Solomon <bernard@ugsolutions.com>.
27472
27473 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
27474
27475         * object.c, object.h: provide mono_object_new_fast() for faster
27476         allocation in some special cases.
27477
27478 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
27479
27480         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
27481         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
27482
27483 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
27484
27485         * threadpool.c: fix leaks.
27486
27487 2003-07-01  Dick Porter  <dick@ximian.com>
27488
27489         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
27490         using MonoGHashTables.  Fixes threadpool bug posted to list.
27491
27492 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
27493
27494         * image.h, image.c: added support to load an assembly from a byte array.
27495         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
27496         assembly bundle support.
27497
27498 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
27499
27500         * threadpool.c (mono_thread_pool_add): keep a reference to the
27501         AsyncResult to prevent GC
27502
27503 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
27504
27505         * class.c: leak fix.
27506
27507 2003-06-25  Dick Porter  <dick@ximian.com>
27508
27509         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
27510         for the async object, the WaitHandle object will close the handle.
27511         Fixes bug 45321.
27512
27513 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
27514
27515         * class.c: in mono_array_class_get (), lookup from the hash with the
27516         same type we insert: this works around a bug in
27517         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
27518         lluis. The real fix will have to wait for after the release.
27519
27520 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
27521
27522         * icall.c: fix memory leak when getting type members.
27523
27524 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
27525
27526         * reflection.c: added more pubtoken special cases.
27527
27528 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
27529
27530         * class.c: handle field offset correctly when class size
27531         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
27532
27533 2003-06-20  Martin Baulig  <martin@ximian.com>
27534
27535         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
27536         *image' field.
27537
27538 2003-06-20  Martin Baulig  <martin@ximian.com>
27539
27540         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
27541
27542 2003-06-20  Martin Baulig  <martin@ximian.com>
27543
27544         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
27545         just distinguish between variables in registers and variables at
27546         an offset relative to a register.
27547
27548 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27549
27550         * icall.c: #ifdef out latest changes until mcs is fixed.
27551
27552 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
27553
27554         * icall.c: return members in metadata order.
27555
27556 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
27557
27558         * icall.c: avoid infinite loop in GetTimeZoneData.
27559
27560 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
27561
27562         * icall.c: added Marshal.Prelink/All icalls.
27563
27564 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
27565
27566         * object.c, object.h: fix warnings and do some overflow checking
27567         when creating arrays.
27568
27569 2003-06-17  Dick Porter  <dick@ximian.com>
27570
27571         * file-io.h:
27572         * file-io.c: File attributes need to be tweaked slightly when
27573         passed from the managed to the w32 world.
27574
27575 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
27576         * profiler.h profiler-private.h profiler.c: Rework last patch
27577         based on suggestion by Paolo.
27578         
27579 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
27580
27581         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
27582         instruction level coverage data collection.
27583         * profiler.h profiler.c (: Added new callback function which can be
27584         used by the profiler to limit which functions should have coverage
27585         instrumentation.
27586         * profiler.c (mono_profiler_load): Call g_module_build_path to
27587         generate the file name of the profiler library.
27588
27589 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
27590
27591         * profiler.c, profiler.h, profiler-private.h: added basic block 
27592         coverage profiling API.
27593
27594 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
27595
27596         * reflection.c (mono_reflection_create_runtime_class): Add support
27597         for events in dynamically generated code.
27598
27599         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
27600         not allocated.
27601
27602 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
27603
27604         * icall.c: when getting timezone info, return reasonable values if we
27605         can't get the actual data.
27606
27607 2003-06-14  Dick Porter  <dick@ximian.com>
27608
27609         * threads.c (start_wrapper): Remove the reference to the thread
27610         object in the TLS data, so the thread object can be finalized.
27611         This won't be reached if the thread threw an uncaught exception,
27612         so those thread handles will stay referenced :-( (This is due to
27613         missing support for scanning thread-specific data in the Boehm GC
27614         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
27615
27616 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
27617
27618         * reflection.c: ensure streams and tables are first allocated with
27619         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
27620
27621 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
27622
27623         * icall.c: fixed GetElementType for byrefs (bug# 44792).
27624
27625 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
27626
27627         * reflection.c (mono_reflection_create_runtime_class): Add support for
27628         properties to dynamically created classes.
27629         * reflection.c: Fix a few places where non-MonoObjects were inserted
27630         into the tokens hashtable.
27631
27632 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
27633
27634         * object.c: some support to handle out of memory exceptions.
27635
27636 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
27637
27638         * marshal.c (mono_marshal_get_native_wrapper): support reference
27639         return types
27640
27641 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
27642
27643         * object.h, object.c: more portability stuff from Bernie Solomon.
27644         Unexport mono_object_allocate(). Added mono_object_unbox ().
27645         Set exitcode when an unhandled exception is thrown.
27646
27647 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
27648
27649         * marshal.c (mono_marshal_get_native_wrapper): use custom
27650         marshaler for return types.
27651
27652 2003-06-10  Dick Porter  <dick@ximian.com>
27653
27654         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
27655         ip_mreq is available
27656
27657 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
27658
27659         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
27660         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
27661         by Bernie Solomon <bernard@ugsolutions.com>.
27662
27663 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
27664
27665         * gc.c (mono_gc_init): Avoid error message on shutdown when
27666         GC_DONT_GC=1 is used.
27667
27668         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
27669         New icall to return the GUID of a module.
27670
27671 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
27672
27673         * class.c: ensure instance size always includes the parent's size
27674         even whem class size is set explicitly (fixes bug#44294).
27675
27676 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
27677
27678         * profiler.h, profiler.c: made the simple profiler thread-safe,
27679         get more accurate timing info. Allow the loading of an
27680         externally-developed profiler module.
27681
27682 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
27683
27684         * marshal.c (mono_marshal_get_native_wrapper): improved
27685         class/byref arguments.
27686         (mono_marshal_get_native_wrapper): better string marshaling support.
27687
27688 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
27689
27690         * class.c: ensure .pack and .size are handled correctly and
27691         simplified layout of static fields.
27692
27693 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
27694
27695         * appdomain.c
27696         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
27697
27698         * loader.c (mono_lookup_pinvoke_call): look for modules in the
27699         current directory (fix bug 44008)
27700
27701 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
27702
27703         * marshal.c (mono_marshal_get_native_wrapper): started support for
27704         custom marshalers.
27705         (mono_delegate_to_ftnptr): consider marshalling specifications
27706
27707 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
27708
27709         * reflection.c, reflection.h: emit custom marshal info.
27710
27711 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27712
27713         * object.c: free the GError.
27714         * icall.c: added CloseEvent_internal.
27715         * threads.[ch]:
27716         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
27717         call.
27718
27719 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
27720
27721         * loader.c (mono_method_get_signature): Add support for dynamic
27722         assemblies.
27723
27724 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
27725
27726         * reflection.c: fixed bug #43905.
27727
27728 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
27729
27730         * class.c, domain.c, icall.c, metadata.h, object.h: support for
27731         handling TypedReference and ArgIterator.
27732         * loader.c, loader.h: added function to get signature at call site.
27733
27734 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
27735
27736         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
27737         data readonly. Buglets and warning fixes. Some MethodSpec support.
27738
27739 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
27740
27741         * class.h, class.c, object.c: remove relative numbering support.
27742
27743 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
27744
27745         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
27746         free the string, until we get a chance to fix Gtk#
27747
27748 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27749
27750         * marshal.c: revert last patch.
27751
27752 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
27753
27754         * icall.c: updates for new mono_class_vtable() not calling
27755         the type constructor anymore.
27756
27757 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
27758
27759         * object.h, object.c: separate vtable creation from type
27760         initialization. Make running the .cctor thread safe.
27761
27762 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
27763
27764         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
27765
27766 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
27767
27768         * loader.c (mono_get_method): consider calling convention
27769
27770 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
27771
27772         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
27773         to return the invisible global type for a module.
27774
27775         * reflection.c (mono_image_build_metadata): Emit global fields too.
27776
27777 2003-05-20  Peter Williams  <peterw@ximian.com>
27778
27779         * loader.c (mono_lookup_internal_call): Add a few newlines.
27780
27781 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
27782
27783         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
27784         literal strings.
27785
27786         * appdomain.c (set_domain_search_path): Recalculate search path when
27787         AppDomainSetup.PrivateBinPath changes.
27788
27789         * object.c (mono_class_compute_gc_descriptor): It turns out some
27790         parts of the class libs (like System.Thread) holds pointers to
27791         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
27792         to treat native int a pointer type here.
27793         
27794 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
27795
27796         * appdomain.h, domain.c: add hashtable for jump target resolution.
27797
27798 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
27799
27800         * reflection.h reflection.c icall.c: Added new icalls 
27801         GetManifestResourceInfoInternal, GetModulesInternal and support
27802         infrastructure.
27803
27804 2003-05-16  Dick Porter  <dick@ximian.com>
27805
27806         * icall.c:
27807         * file-io.h:
27808         * file-io.c: Implement System.IO.MonoIO::GetTempPath
27809
27810 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
27811
27812         * object.c: mono_store_remote_field: little fix to previous patch.
27813
27814 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
27815
27816         * class.c: add constructors to array classes.
27817         * icall.c: special case array construction for InternalInvoke (),
27818
27819 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
27820
27821         * class.h class.c reflection.c object.c: Added support for field
27822         defaults in dynamically generated classes.
27823
27824 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
27825
27826         * reflection.c: properly encode charset for ddlimport.
27827
27828 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
27829
27830         * threads.c: allow compiling without GC.
27831
27832 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
27833
27834         * appdomain.h, object.c, object.h, threads.c, threads.h: added
27835         handling of thread static data.
27836
27837 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
27838
27839         * reflection.h, reflection.c: added mono_custom_attrs_free ().
27840
27841 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
27842
27843         * class.c (mono_array_class_get): always set the serializable flags
27844         (mono_array_class_get): always set the SEALED attribute for array types
27845
27846 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
27847
27848         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
27849         attributes (fix for bug 42021).
27850
27851 2003-05-12  Dick Porter  <dick@ximian.com>
27852
27853         * gc.c: Don't run finalizers when the finalizer thread is
27854         finishing up, because the default domain has already been
27855         destroyed.
27856
27857 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
27858
27859         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
27860         value is null, we should throw an exception.   This is slightly
27861         different than the other conventions used for the constructor.
27862
27863 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27864
27865         * socket-io.c: fixed windows build.
27866
27867 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27868
27869         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
27870
27871 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
27872
27873         * object.c (mono_string_new_wrapper): Compatibility fix for MS
27874         compilers.
27875
27876 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
27877
27878         * class.c (mono_class_layout_fields): Add experimental GC aware
27879         auto layout facility. Requires class library changes to work correctly.
27880
27881         (mono_class_setup_vtable): Avoid overriding explicit interface
27882         method implementations. Fixes iface3.exe test.
27883
27884         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
27885         object reference.
27886         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
27887         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
27888
27889         * metadata.h: Add new type classification macro which determines
27890         whenever the type holds an object reference.
27891
27892 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
27893
27894         * marshal.c (mono_marshal_get_native_wrapper): cleanups
27895
27896 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
27897
27898         * gc.c (finalizer_thread): Work around a GC bug.
27899
27900 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
27901
27902         * marshal.c (emit_struct_conv): allow unions
27903
27904         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
27905
27906 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
27907
27908         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
27909
27910 2003-05-06  Martin Baulig  <martin@ximian.com>
27911
27912         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
27913
27914 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27915
27916         * socket-io.c:
27917         (Select_internal): allow NULLs, don't create arrays if not needed.
27918         Coupled with Socket.cs changes.
27919
27920         * threadpool.c:
27921         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
27922         register a finalizer for it that will close the semaphore handle. This
27923         fixes the leak and make Lupus' test run with > 4080 loops.
27924
27925 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
27926
27927         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
27928         Jerome Laban (bug #42287)
27929
27930 2003-05-02  Martin Baulig  <martin@ximian.com>
27931
27932         * debug-mono-symfile.h
27933         (MonoSymbolFile): Moved declaration into mono-debug.h.
27934         (MonoDebugMethodJitInfo): Likewise.
27935         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
27936         argument.
27937         (_mono_debug_address_from_il_offset): Take a
27938         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
27939
27940         * mono-debug.h
27941         (MonoDebugDomainData): New struct.
27942         (mono_debug_get_domain_data): New function.
27943         (mono_debug_add_method): Take an additional `MonoDomain *'
27944         argument.
27945         (mono_debug_source_location_from_address): Likewise.
27946         (mono_debug_il_offset_from_address): Likewise.
27947         (mono_debug_address_from_il_offset): Likewise.
27948
27949 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
27950
27951         * reflection.c: one more check for null type in custom attrs.
27952
27953 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27954
27955         * reflection.c: avoid warning (comparison is always false due to limited
27956         range of data type).
27957
27958 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27959
27960         * icall.c: throw an exception in Type.GetField if the argument 'name'
27961         is NULL.
27962
27963 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
27964
27965         * reflection.c: fixed handling of enums in named arguments to custom
27966         attributes (bug #42123).
27967
27968 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
27969
27970         * reflection.c: use the right array element type and handle
27971         a null for a Type argument, too.
27972
27973 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
27974
27975         * reflection.c: handle arrays as arguments to custom attributes.
27976
27977 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
27978
27979         * reflection.c: handle a string value in a custom attr
27980         ctor that takes an object.
27981
27982 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
27983
27984         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
27985         (fix bug #42063)
27986
27987 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
27988
27989         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
27990
27991 2003-04-27  Martin Baulig  <martin@ximian.com>
27992
27993         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
27994         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
27995         MONO_DEBUGGER_EVENT_BREAKPOINT.
27996         (mono_breakpoint_trampoline_code): Removed.
27997         (mono_debugger_event_handler): The last argument is now a
27998         `guint32'.
27999         (mono_debugger_insert_breakpoint_full): Removed the
28000         `use_trampoline' argument.
28001         (mono_debugger_method_has_breakpoint): Likewise.
28002         (mono_debugger_trampoline_breakpoint_callback): Renamed to
28003         mono_debugger_breakpoint_callback(); take the method and
28004         breakpoint number as arguments.
28005
28006 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
28007
28008         * metadata.c: fix off by one when loading parameters attributes.
28009
28010 2003-04-24  Martin Baulig  <martin@ximian.com>
28011
28012         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
28013
28014 2003-04-24  Martin Baulig  <martin@ximian.com>
28015
28016         * mono-debug-debugger.c: Moved all code which interacts with the
28017         Mono Debugger here.
28018
28019         * debug-mono-symfile.c: This code now just deals with the symbol
28020         file itself, the debugger code is now in mono-debug-debugger.c.
28021
28022 2003-04-23  Martin Baulig  <martin@ximian.com>
28023
28024         * mono-debug.c (mono_debug_source_location_from_il_offset):
28025         New method; like mono_debug_source_location_from_address(), but
28026         takes an IL offset instead of a machine address.
28027
28028 2003-04-23  Martin Baulig  <martin@ximian.com>
28029
28030         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
28031         `line' field; this is now computed by the debugger.
28032
28033 2003-04-23  Martin Baulig  <martin@ximian.com>
28034
28035         * mono-debug.[ch]: New files.  This is the new debugging interface.
28036
28037         * mono-debug-debugger.[ch]: New files.  Moved all code which
28038         interacts with the Mono Debugger here.
28039
28040 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
28041
28042         * domain.c (mono_init): initialize mono_defaults.monitor_class
28043
28044 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
28045
28046         * reflection.c (method_encode_code): Add a spicy exception to help
28047         future compiler authors.
28048
28049 2003-04-21  Martin Baulig  <martin@ximian.com>
28050
28051         * icall.c
28052         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
28053         Make this work with relative pathnames; g_filename_to_uri() needs
28054         an absolute filename.
28055
28056 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
28057
28058         * icall.c: Track name changes in Object and ValueType.
28059
28060 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
28061
28062         * metadata.c (mono_type_stack_size): size should be a multiple of
28063         sizeof (gpointer)
28064
28065 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28066
28067         * gc.c:
28068         (internal_domain_finalize): moved into mono_domain_finalize. No need
28069         to create another thread because the finalizers will be run in the
28070         finalizer thread.
28071         
28072         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
28073         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
28074         to be run (MS does this too).
28075
28076 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
28077
28078         * object.c (mono_class_compute_gc_descriptor): Update comment.
28079
28080         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
28081
28082         * image.h: Add synchronized wrapper cache.
28083
28084         * image.c (do_mono_image_open): Initialize cache.
28085
28086         * reflection.c (create_dynamic_mono_image): Initialize cache.
28087
28088 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28089
28090         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
28091         ves_icall_System_Buffer_ByteLengthInternal.
28092
28093 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
28094
28095         * reflection.c: setup klass->nested_in earlier. Allow
28096         a dash in the assembly name.
28097
28098 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
28099
28100         * metadata.c (mono_type_to_unmanaged): dont access
28101         type->data.klass for MONO_TYPE_OBJECT
28102         (mono_type_to_unmanaged): consider System.Delegate class
28103
28104 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
28105
28106         * class.c: just setup supertypes in the proper place instead of
28107         initializing the full element class for arrays.
28108
28109 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
28110
28111         * class.c: ensure the element class of arrays is initialized.
28112         Setup the supertype info for array classes, too.
28113
28114 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
28115
28116         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
28117
28118 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28119
28120         * Makefile.am: re-added -m option when running cygpath. This way,
28121         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
28122         separator.
28123         * mono-config.c: same codepath for locating mono config file for WIN32
28124         and the rest.
28125         * assembly.c: if mono_assembly_setrootdir is called, don't override
28126         the value set.
28127
28128 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28129
28130         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
28131         MONO_ASSEMBLIES variable.
28132
28133 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
28134
28135         * icall.c: added Assembly::GetNamespaces() icall.
28136
28137 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28138
28139         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
28140
28141 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
28142
28143         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
28144         * object.c: fixed bug in the construction of vtable for proxies
28145
28146 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
28147
28148         * object.c (mono_array_new): Mark mono_array_new as an icall.
28149
28150 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28151
28152         * class.c: fixed test for public method when overriding interfaces.
28153         Closes bug #40970.
28154
28155 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
28156
28157         * appdomain.h, domain.c: added mono_domain_foreach() to
28158         be able to access the currently loaded appdomains.
28159         * object.c: make string interning work across sppdomains.
28160         Mark some functions for use as icalls.
28161
28162 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
28163
28164         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
28165
28166         * reflection.h reflection.c: Allocate long living data using 
28167         GC_MALLOC_ATOMIC so the collector does not need to scan it.
28168
28169         * reflection.c: Double the allocation size in streams instead of
28170         increasing it, to prevent unneccesary copying on large assemblies.
28171         
28172         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
28173         creation if the assembly does not have the Run flag set.
28174
28175 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
28176
28177         * class.h: avoid the C++ keywords in header files (Jerome Laban
28178         spotted and fixed this).
28179
28180 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28181
28182         * object.c:
28183         (mono_unhandled_exception): fill in the arguments for the
28184         UnhandledException event. Only trigger that event for the default
28185         domain (as MS does).
28186
28187 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
28188
28189         * object.c: Improve typed allocation stuff based on suggestions from
28190         Paolo. Also turn it on if the GC library supports it.
28191
28192 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
28193
28194         * object.c object.h class.h: Added experimental typed allocation
28195         facility using the interfaces in gc_gcj.h.
28196
28197         * os/gc_wrapper.h: Added new include files.
28198         
28199 2003-04-03  Martin Baulig  <martin@ximian.com>
28200
28201         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
28202         which is not yet enabled by default.
28203
28204         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
28205         functions.
28206         (mono_gc_lock, mono_gc_unlock): New static functions.
28207
28208         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
28209         functions; stop/start the world for the garbage collector.  This
28210         is using the windows API; we need to complete the SuspendThread()/
28211         ResumeThread() implementation in the io-layer to make this work on Unix.
28212         (mono_gc_push_all_stacks): New public function; tells the garbage
28213         collector about the stack pointers from all managed threads.
28214
28215 2003-04-03  Martin Baulig  <martin@ximian.com>
28216
28217         * object.h (MonoThread): Added `gpointer stack_ptr'.
28218
28219         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
28220
28221 2003-04-03  Martin Baulig  <martin@ximian.com>
28222
28223         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
28224
28225 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
28226
28227         * reflection.c (typebuilder_setup_fields): Initialize field.first and
28228         field.last.
28229
28230 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
28231
28232         * loader.c (mono_lookup_internal_call): Report the corlib that is
28233         out of sync.
28234
28235 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
28236
28237         * icall.c (ves_icall_type_GetTypeCode): fixed check for
28238         System.DBNull (it's class not valuetype).
28239
28240 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
28241
28242         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
28243         if the array method was already assigned a token (fixes bug#40646).
28244
28245 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
28246
28247         * reflection.c (mono_reflection_get_type): Attempt type resolve even
28248         if no assembly is given.
28249
28250 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
28251
28252         * metadata.h: Added the new tables.
28253
28254         * row-indexes.h: Added definitions for new tables.
28255
28256         * metadata.c: Add schemas for new tables, and add support for
28257         computing the sizes of them.
28258
28259         * class.c: Update for handling the new type cases.
28260
28261 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
28262
28263         * metadata.h (MONO_TYPE_IS_VOID): new macro
28264
28265 2003-03-31  Martin Baulig  <martin@ximian.com>
28266
28267         * threads.h (MonoThreadCallbacks): Added `thread_created'.
28268
28269         * threads.c (mono_thread_new_init): Call `thread_created' in the
28270         mono_thread_callbacks.
28271
28272 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
28273
28274         * loader.h: added marshalbyrefobject_class to mono_defaults
28275         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
28276         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
28277           generation of output parameters.
28278           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
28279         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
28280           contextbound and the target object belongs to the context of the caller.
28281         * object.h: added context and unwrapped_server variables in MonoRealProxy.
28282         * object.c: Implemented support for interfaces and abstract classes
28283           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
28284           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
28285
28286 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
28287
28288         * class.h class.c (mono_class_is_subclass_of): New function.
28289         
28290         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
28291         routines for most common case (calls from ArrayList::ToArray).
28292
28293         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
28294         routine so programs which call Environment::Exit() can be profiled.
28295
28296         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
28297         Added MONO_ARCH_SAVE_REGS.
28298
28299         * icall.c (ves_icall_type_is_subtype_of): Use new function.
28300
28301 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
28302
28303         * blob.h: Add a couple of new MonoType types definitions.
28304
28305         * tabledefs.h: Add a couple of new call convs.
28306
28307 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
28308
28309         * reflection.h (MonoReflectionDynamicAssembly): track changes in
28310         the layout of the class.
28311
28312         * reflection.c (alloc_table): double the size on overflow to avoid
28313         unnecessary copying.
28314
28315         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
28316         avoid filling out metadata tables and blobs. Also set mb->ilgen to
28317         null so it can be garbage collected.
28318         
28319 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
28320
28321         * reflection.c (mono_reflection_get_type): Return the resolved type
28322         only if it is in the assembly we searched.
28323
28324         * reflection.c (ensure_runtime_vtable): Initialize method slots.
28325
28326         * class.c (mono_class_setup_vtable): Set the slot of the overriding
28327         method.
28328
28329 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28330
28331         * appdomain.c:
28332         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
28333         the right one is 'file:///blah', but MS allows it.
28334         * assembly.c:
28335         (mono_assembly_open): allow 'file://blah'
28336
28337         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
28338
28339 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
28340
28341         * socket-io.c: fixes bug #40310.
28342
28343 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
28344
28345         * reflection.c (mono_reflection_parse_type): handle deeply nested
28346         types correctly.
28347
28348         * reflection.c (mono_image_create_token): Use unique token values
28349         since they will be put into a hash table.
28350
28351         * class.c (mono_class_setup_vtable): If a method occurs in more than
28352         one place in the vtable, and it gets overriden, then change the
28353         other occurances too.
28354
28355         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
28356         object as return type.
28357
28358 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
28359
28360         * icall.c: Deleted "ToString" implementation for double and float
28361         because they are full implemented in managed code.
28362
28363 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
28364
28365         * reflection.c, reflection.h: implemented and exported functions
28366         to retrieve info about custom attributes.
28367
28368 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28369
28370         * appdomain.c: moved Uri handling to assembly.c
28371         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
28372         work when using a file Uri in *nix and windows.
28373
28374         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
28375         GetReferencedAssemblies.
28376
28377 2003-03-18  Dick Porter  <dick@ximian.com>
28378
28379         * icall.c: Rename a couple of internal calls
28380
28381         * threads.c: Set the thread state to Stopped when a thread exits.
28382         Fixes bug 39377.
28383
28384 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
28385
28386         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
28387         New icall.
28388
28389         * object.c (mono_class_vtable): fix warning.
28390
28391 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
28392
28393         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
28394
28395         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
28396         memory.
28397         (method_encode_clauses): Create exception info structures in the right
28398         order.
28399         (mono_reflection_setup_internal_class): Initialize supertypes field.
28400
28401         * class.c object.c: Handle interfaces which implement other interfaces 
28402         correctly.
28403
28404         * class.h class.c: Move the supertypes array initialization code into 
28405         a separate function so it can be used for dynamic types too. Also call
28406         it earlier, in mono_class_init(), since it can be used before the
28407         type is initialized.
28408
28409 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28410
28411         * Makefile.am:
28412         * assembly.c:
28413         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
28414
28415         * appdomain.c:
28416         * appdomain.h:
28417         * marshal.c:
28418         * object.c: remove warnings.
28419
28420 2003-03-13  Martin Baulig  <martin@ximian.com>
28421
28422         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
28423         (MonoDebugLexicalBlockEntry): New types.
28424
28425         * debug-mono-symfile.c
28426         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
28427
28428 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28429
28430         * process.c: ret can be any non-zero value accroding to MS doc.
28431
28432 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
28433
28434         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
28435         fixing a warning for a miss-used prototype, would have cause
28436         random memory corruption.
28437
28438 2003-03-07  Martin Baulig  <martin@ximian.com>
28439
28440         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
28441         getting really annoying ....
28442
28443 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
28444
28445         * reflection.c (fixup_method): added support for array methods.
28446
28447 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
28448
28449         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
28450         (pointed out by Michael Adams).
28451
28452 2003-03-04  Dick Porter  <dick@ximian.com>
28453
28454         * icall.c: Temporarily reverted the Double and Single ToString()
28455         change, because it broke nunit.
28456
28457 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
28458
28459         * object.h, threads.h: make include files compatible with C++
28460         (patch by Jerome Laban <jlaban@wanadoo.fr>).
28461
28462 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
28463
28464         * icall.c: Erased ToString helper functions for Double and Single.
28465         Now, that implementations ar all in managed code (Double and Single
28466         Formatters).
28467
28468 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
28469
28470         * appdomain.c: Added method for initializing the default context of
28471         a domain. Added internal call for getting the default context.
28472         * appdomain.h: Added context variable in MonoDomain struct.
28473         * domain.c: mono_domain_set also sets the default context of the domain
28474         * icall.c: Mapped internal method InternalGetDefaultContext.
28475         * object.c: mono_object_get_virtual_method returns always a remoting
28476         wrapper if the object is a transparent proxy.
28477         mono_runtime_invoke_array: when creating an object by calling the
28478         constructor, if the created object is a proxy, then the constructor should
28479         be called using the a remoting wrapper.
28480
28481 2003-03-03  Dick Porter  <dick@ximian.com>
28482
28483         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
28484         variable so it compiles on solaris.  Problem spotted by
28485         Christopher Taylor <ct@cs.clemson.edu>
28486
28487 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28488
28489         * appdomain.c:
28490         (get_info_from_assembly_name): don't leak value.
28491
28492         * icall.c:
28493         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
28494         result.
28495
28496 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
28497
28498         * assembly.c: export mono_image_load_references ().
28499         * class.c: handle function pointers. mono_class_from_name() now
28500         supports nested type names directly.
28501
28502 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
28503
28504         * reflection.h reflection.c: Encode already created dynamic methods 
28505         and fields correctly as a DEF instead of a REF.
28506
28507         * reflection.c: Get rid of the force_ref argument to 
28508         mono_image_typedef_or_ref since it was wrong in the first place.
28509
28510         * string-icalls.c: add error checking to string constructors according
28511         to the MSDN docs.
28512
28513         * reflection.c: Emit types in the order their TypeBuilders were 
28514         created. Previously, a new table index was assigned to each type before
28515         the tables were emitted. This was wrong because the signature blob
28516         might already refer to a type by its original table index.
28517
28518 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
28519
28520         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
28521         change.
28522         
28523 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28524
28525         * Makefile.am: make assemblies dir have \ instead of / on windows.
28526
28527 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
28528
28529         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
28530         iterate over the NESTEDCLASS table using a linear search since the
28531         table is not guaranteed to be sorted by the secondary key.
28532
28533         * class.c (mono_class_create_from_typedef): fixed up call to
28534         mono_metadata_nesting_typedef.
28535         
28536 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
28537
28538         * marshal.c (mono_string_to_byvalstr): clear the memory as
28539         suggested by Jerome Laban <jlaban@wanadoo.fr>
28540
28541 2003-02-26  Dick Porter  <dick@ximian.com>
28542
28543         * process.c: Cope with padding in .rsrc blocks
28544
28545 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
28546
28547         * metadata.h: reverted the filter_len change, it breaks reflection
28548         
28549 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
28550
28551         * metadata.h: added a new field to store the filter_len
28552         
28553
28554 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
28555
28556         * reflection.c: handle custom attributes for types and members
28557         created with Reflection.Emit (bug#38422).
28558
28559 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
28560
28561         * reflection.c: define RTSpecialName automatically for constructors for
28562         compatibility with MS.NET.
28563
28564         * reflection.c (mono_reflection_create_runtime_class): initialize
28565         nested_in field of dynamically created classes.
28566
28567 2003-02-22  Martin Baulig  <martin@ximian.com>
28568
28569         * debug-mono-symfile.h: Incremented version number.
28570
28571 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
28572
28573         * object.h icall.c process.c: fix warnings.
28574
28575 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
28576
28577         * appdomain.h appdomain.c:
28578         (mono_domain_try_type_resolve): split the 
28579         name_or_tb argument into a name and a tb argument.
28580         (mono_domain_has_type_resolve): new function to check whenever the
28581         application has registered a TypeResolve event handler.
28582         
28583         * icall.c reflection.h reflection.c: move the type resolve logic into
28584         mono_reflection_get_type () so it will be invoked when 
28585         Assembly::GetType () is called.
28586
28587         * reflection.c:
28588         (mono_reflection_get_type): renamed to get_type_internal.
28589         (mono_reflection_get_type): fixed type name generation so it works 
28590         for nested types too.
28591         (mono_reflection_get_type): call has_type_resolve () to avoid the 
28592         costly type name generation if there is no resolve event handler.
28593
28594 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
28595
28596         * class.c, image.c: load exported types from file references.
28597
28598 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
28599
28600         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
28601           used to cache the managed methods used to create proxies and make 
28602           remote invocation of methods.
28603         * class.h: Added in MonoVTable a flag to indicate that a class needs 
28604           to be remotely created.
28605         * object.c: Modified the method mono_class_vtable(). It now initializes 
28606           the remote flag of the vtable. Modified mono_object_new_specific(), 
28607           so now it checks the remote flag.
28608         * icall.c: Added a couple of internal methods, one for enabling instance 
28609           creation interception for a type, and one for creating objects bypassing
28610           the remote check.
28611
28612 2003-02-18  Martin Baulig  <martin@ximian.com>
28613
28614         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
28615         New interncall to get a method's metadata token.
28616
28617         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
28618         New interncall for the debugger.
28619
28620 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
28621
28622         * class.c (mono_class_setup_vtable): allocate supertype array
28623
28624 2003-02-18  Martin Baulig  <martin@ximian.com>
28625
28626         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
28627
28628 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28629
28630         * reflection.c:
28631         (assembly_name_to_aname): jump over unknown properties (i've found
28632         something like: 'type, assembly, version=xxx, custom=null, public...',
28633         so now will ignore custom=null and still get the rest of the values).
28634
28635 2003-02-17  Dick Porter  <dick@ximian.com>
28636
28637         * threads.c: Have Thread.Start() wait for a semaphore to signal
28638         that the thread has set up all its local data.  This fixes bug
28639         34323, where Abort() raced the new thread's TLS data.
28640
28641         Also removes the handle_store() call from start_wrapper, because
28642         threads are now always created suspended and there is no longer a
28643         race between the parent and child threads to store the info.
28644
28645 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
28646
28647         * image.c: explain the #- heap issue in a message, hopefully
28648         avoiding FAQs on mono-list.
28649
28650 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28651
28652         * icall.c:
28653         (GetEntryAssembly): if the domain has not invoked
28654         AppDomain.ExecuteAssembly yet, return the assembly of the default
28655         AppDomain.
28656
28657 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
28658
28659         * class.c (mono_ldtoken): make it work in dynamic assemblies.
28660
28661 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
28662
28663         * metadata.c, reflection.c: simple speedup to type hash
28664         and equals code.
28665
28666 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
28667
28668         * image.c, image.h, class.c, assembly.c: move module loading
28669         to MonoImage. When loading metadata, consider alignemnet from
28670         the start of metadata, not from the metadata address in memory.
28671
28672 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
28673
28674         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
28675         AssemblyBuilder objects. Factored out custom attribute creation into
28676         a separate function.
28677         (create_custom_attr): new function to create custom attributes.
28678
28679 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
28680
28681         * Makefile.am: Got tired of typing the full pathname to pedump.
28682         Until there is another option, am installing this.
28683
28684 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
28685
28686         * class.c (class_compute_field_layout): always set field->parent 
28687         (mono_ldtoken): use mono_defaults.fieldhandle_class;
28688
28689 2003-02-11  Dick Porter  <dick@ximian.com>
28690
28691         * threads-types.h:
28692         * monitor.c: Rewrote Monitor, making lock much faster and
28693         Pulse/Wait work as specified.  Also uses much fewer handles, and only
28694         creates them as needed.
28695
28696         * exception.c: Added SynchronizationLockException
28697
28698         * threads.c: Deleted old Monitor implementation.  The new one is
28699         in a new file.
28700
28701 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
28702
28703         * class.c: handled TypedReference type code. Set the correct size for
28704         class data. Setup interface_offsets for interface classes, too.
28705
28706 2003-02-09  Martin Baulig  <martin@ximian.com>
28707
28708         * debug-mono-symfile.h: Reflect latest symbol writer changes.
28709
28710 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
28711
28712         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
28713         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
28714         * object.c: fixed mono_object_get_virtual_method () for interfaces.
28715         * verify.c: check for code that runs after the end of the method.
28716
28717 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
28718
28719         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
28720         "System.Math::Round2".
28721         * sysmath.h: Added Floor, Round and Round2 definitions.
28722         * sysmath.c: Modified certain functions that were not 100% compliant
28723         with MS.NET (math precision) and added the implementation of Floor,
28724         Round and Round2.
28725
28726 2003-02-07  Martin Baulig  <martin@ximian.com>
28727
28728         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
28729
28730 2003-02-07  Martin Baulig  <martin@ximian.com>
28731
28732         * debug-mono-symfile.c: Reflected latest symwriter changes.
28733         (mono_debug_create_mono_symbol_file): Removed.
28734         (mono_debug_open_mono_symbol_file): Take an argument which
28735         specifies whether to create a dynamic symbol file.
28736
28737 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
28738
28739         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
28740
28741 2003-02-05  Martin Baulig  <martin@ximian.com>
28742
28743         * reflection.c (mono_image_build_metadata): Make this public,
28744         protect it against being called multiple times, don't create
28745         resources and don't build the compressed metadata here.
28746         (mono_image_create_pefile): Do this here.
28747
28748         * icall.c
28749         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
28750
28751 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28752
28753         * socket-io.c: fixed bug #36322.
28754
28755 2003-02-06  Piers Haken <piersh@friskit.com>
28756
28757         * appdomain.[ch]:
28758         * class.h:
28759         * debug-mono-symfile.c:
28760         * icall.c:
28761         * loader.c:
28762         * mono-config.c:
28763         * monosn.c:
28764         * reflection.c:
28765         * socket-io.c: warning cleanups
28766
28767 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
28768
28769         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
28770         function. works like remoting invoke, but does a check for the Proxy first.
28771
28772 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
28773
28774         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
28775
28776 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
28777
28778         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
28779         array of pointers.
28780         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
28781         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
28782
28783         * object.c (mono_store_remote_field_new): used by the new jit
28784         instead of mono_store_remote_field
28785         (mono_load_remote_field_new): used by the new jit
28786         instead of mono_load_remote_field
28787
28788 2003-02-05  Patrik Torstensson
28789
28790         * appdomain.c: changed unload to take the domain id instead
28791         of domain
28792         
28793         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
28794
28795
28796 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28797
28798         * appdomain.c: don't look for assemblies in ApplicationBase if
28799         PrivateBinPathProbe is set.
28800
28801 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28802
28803         * object.c: make the first argument in main_args contain the absolute
28804         path to the assembly. Fixes bug #37511.
28805
28806 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28807
28808         * icall.c: get correct UTC offset for countries not using daylight
28809         time saving. Fixes bug #30030.
28810
28811 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28812
28813         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
28814         and 1 are the family).
28815
28816 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
28817
28818         * icall.c (ves_icall_InternalExecute): removed wrong assertion
28819
28820         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
28821
28822 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
28823
28824         * reflection.c: added support for SignatureHelper tokens, which is
28825         needed by the Calli opcode.
28826
28827         * reflection.h: track changes to SignatureHelper class.
28828
28829         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
28830
28831 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28832
28833         * appdomain.c: fixed loading assemblies from PrivateBinPath.
28834
28835 2003-02-03  Patrik Torstensson
28836         * appdomain.[c|h], domain.c : 
28837          - Added support for getting a domain via domain id
28838          - Support for setting and getting domain from System.AppDomain 
28839            (used in cross appdomain channel)
28840          - Added support for get/set for a MonoAppContext on a thread 
28841            (Context class in System.Runtime.Remoting.Contexts),
28842          - Removed hack in Get/SetData and ExecuteAssembly.
28843         
28844         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
28845         the managed world to get control when a proxy is created.
28846
28847         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
28848         
28849 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
28850
28851         * icall.c
28852         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
28853         Populate the codebase field as well.
28854
28855 2003-02-02  Martin Baulig  <martin@ximian.com>
28856
28857         * debug-mono-symfile.c
28858         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
28859         (mono_debug_symfile_add_method): Allow interncalls.
28860
28861 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28862
28863         * icall.c: throw parse exception if strtod fails or the string is empty.
28864
28865 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
28866
28867         * marshal.c: handle object type separately from defined
28868         class types.
28869
28870 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
28871
28872         * marshal.c: handle NATIVE_LPSTR for strings when it's
28873         explicitly specified.
28874
28875 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
28876
28877         * reflection.c, reflection.h, icall.c: setup the reflection
28878         handle cache for ModuleBuilders and AssemblyBuilders.
28879
28880 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
28881
28882         * reflection.c (reflection_methodbuilder_to_mono_method): set
28883         pinvoke flag
28884
28885 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28886
28887         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
28888
28889 2003-01-29  Dick Porter  <dick@ximian.com>
28890
28891         * threads.c: No need for the fake_thread kludge now that Thread
28892         doesn't run a class constructor
28893         
28894 2003-01-29  Dick Porter  <dick@ximian.com>
28895
28896         * threads.c: Use g_direct_hash instead of the rather bogus
28897         g_int_hash
28898
28899 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
28900
28901         * marshal.c (mono_marshal_get_native_wrapper): add check for null
28902         (fix pinvoke12.exe)
28903         (mono_marshal_get_struct_to_ptr): generate valid IL code
28904         (mono_marshal_get_ptr_to_struct): generate valid IL code
28905         (*): correctly set sig->pinvoke, we need to memdup the signature
28906         to do that
28907
28908 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
28909
28910         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
28911         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
28912
28913 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
28914
28915         * profiler.c: provide more callers information.
28916
28917 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
28918
28919         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
28920
28921         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
28922
28923         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
28924
28925 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28926
28927         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
28928         exception instead of going into an infinite loop on dates which it 
28929         can't yet handle.
28930
28931         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
28932         out-of-range exception if needed.
28933
28934         * class.c (mono_class_setup_vtable): allow a virtual method to provide
28935         an implementation for an interface method and to override an inherited
28936         method at the same time. 
28937         Imagine a scenario when a virtual method is used to override a
28938         virtual abstract method in a parent class, and this same method 
28939         provides an implementation for an method inherited from an interface. 
28940         In this case, the interface resolution code will set im->slot, which 
28941         means that the virtual method override pass will skip this method 
28942         which means a pointer to the abstract method inherited from the parent
28943         will remain in the vtable of this non-abstract class.
28944
28945         * class.c: (mono_class_setup_vtable): continue search for a real 
28946         method if only an abstract method is found.     
28947
28948 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
28949
28950         * reflection.c: add size to encoding for ByValStr and ByValArray
28951         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
28952
28953 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28954
28955         * class.c (mono_class_setup_vtable): pass the override info as an
28956         argument.
28957
28958         * class.c (mono_class_setup_vtable): set the slot of overriding methods
28959         correctly.
28960         
28961         * reflection.c (ensure_runtime_vtable); add support for method 
28962         overrides.
28963         
28964 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28965
28966         * reflection.c (resolution_scope_from_image): Hack to work to work with
28967         dynamic assemblies.
28968
28969         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
28970         added a 'force_ref' argument to force this function to allways return 
28971         a TypeRef. This is needed by mono_image_get_memberref_token ().
28972         
28973 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28974
28975         * reflection.c (mono_image_get_type_info): interfaces really don't have
28976         a parent.
28977
28978         * reflection.c (mono_image_basic_init): fill out missing fields of
28979         image structure.
28980
28981         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
28982         dynamic assemblies. This is required so dynamic assemblies show up in
28983         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
28984         Type::GetType() etc. This is consistent with MS behaviour.
28985
28986         * image.c image.h reflection.c: add newly created classes to the name 
28987         cache so mono_class_get () will find them.      
28988
28989 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28990
28991         First part of changes to get IKVM.NET running under mono.
28992         
28993         * appdomain.h, appdomain.c: added new function 
28994         mono_domain_try_type_resolve() which will emit TypeResolve events. 
28995         This function will call AppDomain::DoTypeResolve to do the actual work.
28996
28997         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
28998         moved existing code dealing with dynamic tokens to a new function 
28999         called mono_reflection_lookup_dynamic_token (). This function will 
29000         raise TypeResolve events when appropriate. Since reflection.c is not 
29001         part of libmetadata, a new hook function called 
29002         mono_lookup_dynamic_token() is added to class.c which will call this.
29003
29004         * assembly.h assembly.c: make the invoke_load_hook function public,
29005         so it can be called for dynamic assemblies.
29006
29007         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
29008
29009         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
29010         type isn't found.
29011
29012         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
29013         MonoGHashTable, since it contains pointers to objects which the GC 
29014         needs to track.
29015
29016         * assembly.c (search_loaded): remove unused variable.
29017         
29018 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
29019
29020         * object.c: fixed issue exposed by gcc-generated IL programs
29021         that use RVA data for pointers.
29022
29023 2003-01-25  Martin Baulig  <martin@ximian.com>
29024
29025         * threads.c (start_wrapper): Moved the initialization of
29026         `start_func' above the mono_new_thread_init() call to which we
29027         pass it as argument.
29028
29029 2003-01-24  Martin Baulig  <martin@ximian.com>
29030
29031         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
29032         the MonoThread pointer.
29033
29034 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
29035
29036         * icall.c: Rename `PowImpl' to Pow.
29037
29038 2003-01-23  Dick Porter  <dick@ximian.com>
29039
29040         * threads.c (start_wrapper): Create a Thread object if needed, so
29041         the Main() thread can do the class initialisation in a subthread
29042         that has been set up to allow managed code execution.
29043
29044         Pass the thread ID instead of the MonoThread pointer to the thread
29045         start and attach callbacks.  This change is required, because the
29046         jit thread start callback must be called _before_ the Thread
29047         object can be created.
29048         
29049         (mono_thread_init): Removed much object creation code that is no
29050         longer needed.  No managed code is called from here now.
29051
29052         * object.c (mono_runtime_exec_managed_code): Create a subthread
29053         for Main, and call back to the runtime to use it.
29054         Set the exit code when Main exits.
29055
29056         * gc.c: Make sure domain finalisation happens in a subthread.
29057         Re-enable threaded GC, fixing bug 31333 (again).
29058
29059         * environment.c: System.Environment internall calls (so far just
29060         ExitCode is here, the others are still in icall.c)
29061
29062         * appdomain.c (mono_runtime_cleanup): All threads running managed
29063         code should have finished before mono_runtime_cleanup() is
29064         reached, so no need to clean up threads.
29065
29066 2003-01-22  Martin Baulig  <martin@ximian.com>
29067
29068         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
29069         `gpointer func' arguments.      
29070         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
29071         but added `MonoThread *thread' argument.
29072         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
29073
29074         * threads.c (mono_new_thread_init): Added `gpointer func' argument
29075         and pass it to the mono_thread_start_cb callback.
29076         (mono_install_thread_callbacks): New public function to install a
29077         set of callbacks which are set by the debugger.
29078         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
29079
29080 2003-01-22  Martin Baulig  <martin@ximian.com>
29081
29082         * Makefile.am: Install debug-mono-symfile.h.
29083
29084 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
29085
29086         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
29087
29088 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
29089
29090         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
29091         * class.c (mono_ptr_class_get): correctly set access levels of pointers
29092         (mono_array_class_get): correctly set access levels of arrays
29093
29094 2003-01-20      Patrik Torstensson
29095         * image.h (MonoAssemblyName): changed major, minor, build, revision
29096         from signed to unsigned.
29097
29098 2003-01-20  sean kasun <skasun@azstarnet.com>
29099
29100         * reflection.c (load_cattr_value): Now this handles
29101         MONO_TYPE_SZARRAY.  Fixes bug #35629
29102
29103 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
29104
29105         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
29106         integer value
29107
29108 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29109
29110         * decimal.c: fixed bug #26056.
29111
29112 2003-01-17  Martin Baulig  <martin@ximian.com>
29113
29114         * gc.c: Raise an ExecutionEngineException instead of using g_error().
29115
29116 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29117
29118         * exception.[ch]:
29119         (mono_get_exception_type_initialization): new function.
29120
29121         * object.c: throw a TypeInitializationException when an exception is
29122         thrown invoking the class constructor.
29123
29124 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29125
29126         * reflection.c: fixed attribute reading.
29127
29128 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29129
29130         * icall.c:
29131         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
29132         provided, look for the type in the calling assembly and then in
29133         mscorlib; if the assembly name is provided, only try that one.
29134
29135 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
29136
29137         * object.c: register the vtable before there is a chance it's
29138         queried again recursively.
29139
29140 2003-01-13  Duncan Mak  <duncan@ximian.com>
29141
29142         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
29143         gc-internal.h. 
29144         
29145 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
29146
29147         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
29148
29149 2003-01-11  Martin Baulig  <martin@ximian.com>
29150
29151         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
29152         this to 20 for the release.
29153
29154 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
29155
29156         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
29157
29158         * loader.c (mono_method_get_marshal_info): bug fix
29159
29160         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
29161         structures with explicit layout
29162
29163 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
29164
29165         * profiler.c: made the output more readable (and sorted). 
29166         Added caller information for the allocation profiler.
29167
29168 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
29169
29170         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
29171
29172 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29173
29174         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
29175         to get value types.
29176         
29177 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
29178
29179         * object.c, profiler.h, profiler.c, profiler-private.h:
29180         Added object allocation profiler.
29181
29182 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
29183
29184         * reflection.h, reflection.c: handle global methods.
29185         Compress blob entries.
29186
29187 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
29188
29189         * marshal.c: fix compilation.
29190
29191 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
29192
29193         * loader.c (mono_method_get_marshal_info): impl.
29194
29195         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
29196
29197 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29198
29199         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
29200         for reference types.
29201
29202 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
29203
29204         * loader.c: fixed off by one error in loaded parameter names.
29205
29206 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
29207
29208         * marshal.c (mono_marshal_get_icall_wrapper): like
29209         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
29210         instead of a MonoMethod.
29211
29212 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29213
29214         * decimal.c: fixed bug #36537.
29215
29216 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
29217
29218         * marshal.c: throw a missing method exception if a
29219         P/Invoke method is not found.
29220
29221 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
29222
29223         * icall.c: allow a null this for constructors.
29224
29225 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
29226
29227         * icall.c: raise the proper exceptions if the arguments to the
29228         internal Invoke are incorrect.
29229
29230 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
29231
29232         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
29233
29234 2003-01-03  Martin Baulig  <martin@ximian.com>
29235
29236         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
29237
29238 2002-12-31  Martin Baulig  <martin@ximian.com>
29239
29240         * debug-mono-symfile.c: Completely rewrote the type section.
29241         Instead of using individual malloc()ed fields, we use one big
29242         continuous memory area and offsets into this area.
29243         See the comments in the source code for details.
29244
29245 2002-12-30  Martin Baulig  <martin@ximian.com>
29246
29247         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
29248
29249 2002-12-30  Martin Baulig  <martin@ximian.com>
29250
29251         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
29252         line number table in this data blob instead of using an external
29253         pointer.
29254
29255 2002-12-28  Martin Baulig  <martin@ximian.com>
29256
29257         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
29258
29259 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
29260
29261         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
29262         as a boxed return type.
29263
29264 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
29265
29266         * appdomain.c
29267         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
29268         g_build_filename to properly get separators on the filename created.
29269
29270         * object.h: Small change, introduce MonoMarshalByRefObject to
29271         track the layout of that structure in the C# universe as we make
29272         changes there.
29273
29274 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
29275
29276         * object.c: removed assert to allow static fields on interfaces.
29277         * loader.c: a TypeSpec may be used for any type, not just arrays.
29278
29279 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
29280
29281         * class.c, class.h: added mono_class_array_element_size ().
29282         Ignore static methods in interfaces.
29283
29284 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29285
29286         * threads.c: fixed the build under cygwin.
29287
29288 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
29289
29290         * reflection.c: handle nullref constants. Allocate keys for
29291         reflection handles with the GC.
29292
29293 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
29294
29295         * threads.c, threads.h: added mono_thread_get_abort_signal()
29296         to get a suitable signal for thread abort.
29297
29298 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
29299
29300         * metadata.c: fix handling of ExportedType table.
29301
29302 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29303
29304         * icall.c: added WriteWindowsDebugString internal call.
29305
29306 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29307
29308         * reflection.h: added fields to match C# implementation.
29309
29310 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29311
29312         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
29313
29314 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
29315
29316         * gc.h, gc-internal.h: Rename header for GC internal calls to
29317         gc-internal.h from gc.h as to not clash with Boehm GC having its
29318         header installed as <gc.h> in outside include paths.
29319         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
29320         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
29321
29322 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29323
29324         * icall.c: assign minor, build and revision in FillName.
29325
29326 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
29327
29328         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
29329         Added support for running code generated by Reflection.Emit.
29330
29331 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29332
29333         * appdomain.c: check for NULL argument in LoadFrom.
29334
29335 2002-12-10  Dick Porter  <dick@ximian.com>
29336
29337         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
29338
29339 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29340
29341         * appdomain.c: fix buglet when building exe file name.  Handle full
29342         assembly name (needed after latest changes to AssemblyName).
29343         * image.c:
29344         (mono_image_close): free some hashtables.
29345
29346 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
29347
29348         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
29349         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
29350         on some systems (redhat 7.3) 
29351
29352 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
29353
29354         * threads.c: delete the critical section of a sync block,
29355         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
29356
29357 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
29358
29359         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
29360
29361 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29362
29363         * appdomain.[ch]: handle the assembly preload event to try loading the
29364         assemblies using the paths we have in the current domain.
29365
29366         * assembly.[ch]: created an assembly preload hook that is called to try
29367         loading the assembly by other means that the ones provided here.
29368
29369         * domain.c: initialize the domain search path.
29370
29371         From now on, assemblies (TODO: except corlib and System) are loaded
29372         according to these rules when using mono_assembly_load ():
29373
29374                 1. It tries to load the assembly from the ApplicationBase
29375                 of the current domain appending .dll and .exe (TODO: have to
29376                 try loading from name/name.dll and name/name.exe).
29377
29378                 2. It tries the search path specified in PrivateBinPath for the
29379                 current domain (if any).
29380
29381                 3. Previous behavior.
29382
29383 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
29384
29385         * icall.c: implemented GetInterfaceMap() related icall.
29386         * domain.c, loader.h: load MethodInfo in mono_defaults.
29387
29388 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
29389
29390         * gc.c: disable the finalizer thread for now, untill all the issues
29391         with it are resolved.
29392
29393 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
29394
29395         * string-icalls.c: handle embedded nulls in string ctor when the
29396         length is specified.
29397
29398 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
29399
29400         * class.c: look for explicit interface implementation in parent
29401         classes, too.
29402
29403 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
29404
29405         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
29406
29407 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
29408
29409         * gc.c: protect handles with a critical section.
29410
29411 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29412
29413         * icall.c:
29414         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
29415         parameters. If no assembly specified, try getting the type from all
29416         the assemblies in the current domain, else, load the assembly and get
29417         the type from it.
29418
29419 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29420
29421         * marshal.c: applied patch from Aleksey Demakov that fixes
29422         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
29423
29424 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29425
29426         * icall.c: fixed get_location.
29427
29428 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
29429
29430         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
29431         declarations to make it work with older gcc. 
29432
29433         * loader.c (mono_get_method): set signature->pinvoke for native calls
29434
29435 2002-11-20  Dick Porter  <dick@ximian.com>
29436
29437         * threads.c (mono_thread_init): Set the main thread's handle
29438
29439 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
29440
29441         * gc.c: allow compilation without GC support. Changed to match the
29442         mono coding style.
29443
29444 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
29445
29446         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
29447
29448 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
29449
29450         * reflection.c: set a public key token on the core assemblies.
29451
29452 2002-11-18  Dick Porter  <dick@ximian.com>
29453
29454         * threads.c: Split out some thread initialisation so that other
29455         files can set the start callback function.
29456
29457         * gc.c: Run finalisers in a separate thread, to avoid stack
29458         overflow.  Fixes bug 31333.
29459
29460         * appdomain.c: Set up GC finalisation thread.
29461
29462         * reflection.c: 
29463         * object.c: 
29464         * domain.c: Use gc.h macros for GC_malloc
29465         
29466 2002-11-15  Dick Porter  <dick@ximian.com>
29467
29468         * threadpool.c: 
29469         * threads.c:
29470         * appdomain.c: Removed mono_runtime_init_with_attach(),
29471         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
29472         merging the extra parameter with the existing function.  Removed
29473         unneeded code in mono_thread_attach().
29474
29475 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
29476
29477         * image.c (mono_image_loaded_by_guid): a method to get loaded
29478         images by guid. 
29479         (load_metadata_ptrs): we store the guid as string.
29480
29481 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
29482
29483         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
29484
29485         * metadata.c (mono_guid_to_string): imported method form Zoltan
29486         Varga (slightly modified)
29487
29488         * assembly.c (mono_assembly_open): load precompiled code
29489
29490         * loader.h (MonoMethod): we store the method token for use in the
29491         aot compiler. 
29492
29493 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29494
29495         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
29496         the hook function called when an assembly is loaded.
29497         
29498         * domain.c: Modified file.
29499         (mono_domain_assembly_load): removed hash table insertion of assemblies.
29500
29501         Fixes bug #33196.
29502
29503 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
29504
29505         * reflection.c: Map PEFileKind to the value expected by the WinNT
29506         image loader. 
29507
29508 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29509
29510         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
29511         Read until the buffer is filled completely.
29512
29513 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29514
29515         * icall.c: implemented MonoType.InternalGetEvent ().
29516
29517 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29518
29519         * appdomain.c: implemented InitAppDomainSetup. Delayed
29520         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
29521         the entry_assembly.
29522
29523         * assembly.c: base_dir is now an absolute path ending with
29524         G_DIR_SEPARATOR.
29525
29526         * icall.c: modified get_location according to the above changes.
29527
29528         * object.c: init AppDomain.SetupInformation for the default domain after
29529         we have the entry assembly.
29530
29531         * domain.c: when unloading a domain, setup = NULL.
29532
29533 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
29534
29535         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
29536
29537 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
29538
29539         * object.h, object.c: introduced mono_object_get_virtual_method ()
29540         to lookup the method invoked on an object when a callvirt is done on
29541         a method.
29542         * icall.c: make MethodInfo::Invoke() always do a virtual call.
29543
29544 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29545
29546         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
29547         current domain when loaded an assembly and failed to load it.
29548
29549         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
29550
29551 2002-10-31  Dick Porter  <dick@ximian.com>
29552
29553         * icall.c: 
29554         * file-io.h: 
29555         * file-io.c: Return the error status in a parameter, as the
29556         GetLastError() value has long since been blown away if we try and
29557         look it up in a subsequent internal call invocation.  Delete the
29558         GetLastError() internal call, because it's useless.
29559
29560 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
29561
29562         * class.[ch]: added cast_class to fix bug 29517
29563
29564 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
29565
29566         * marshal.c: create valid IL code in the filter clause:
29567         the new JIT is less forgiving:-)
29568
29569 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29570
29571         * icall.c: removed get_property internal call.
29572
29573 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
29574
29575         * appdomain.h domain.c: Added an ID to appdomains.
29576         
29577         * threads.c threads.h icall.c: Implement icall
29578         Thread:GetDomainID(), and remove unused icall 
29579         CurrentThreadDomain_internal.
29580
29581 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29582
29583         * icall.c: Don't recurse through the base types in GetConstructor.
29584         Fixes bug #32063. 
29585
29586 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
29587
29588         * mempool.h, mempool.c: added mono_mempool_empty() and
29589         mono_mempool_stats().
29590
29591 2002-10-23  Dick Porter  <dick@ximian.com>
29592
29593         * file-io.c: 
29594         * file-io.h: 
29595         * icall.c: Added MonoIO.GetFileType internal call
29596
29597 2002-10-17  Dick Porter  <dick@ximian.com>
29598
29599         * appdomain.c (mono_runtime_cleanup): Don't signal the async
29600         delegate semaphore before waiting for all threads to finish,
29601         because new threads can also call async delegates.  Fixes bug
29602         32004.
29603
29604         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
29605         of 3 seconds, in case another async job is queued.  (This part is
29606         needed because the bug fix reintroduced the 3s exit lag.)  This
29607         makes the mono_runtime_shutdown flag superfluous.
29608
29609 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29610
29611         * reflection.c: include ehader size in method section headers.
29612         Really check for suplicated modules entries.
29613
29614 2002-10-17  Martin Baulig  <martin@gnome.org>
29615
29616         * debug-mono-symfile.c: Added back support for locals.
29617
29618 2002-10-14  Martin Baulig  <martin@gnome.org>
29619
29620         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
29621         MONO_TYPE_VOID.
29622
29623 2002-10-14  Martin Baulig  <martin@gnome.org>
29624
29625         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
29626         mono_class_get() instead of looking in the class cache. 
29627
29628 2002-10-13  Martin Baulig  <martin@gnome.org>
29629
29630         * debug-mono-symfile.c: Set version number to 28, include the
29631         signature in method names.
29632
29633 2002-10-13  Martin Baulig  <martin@gnome.org>
29634
29635         * debug-mono-symfile.h: Set version number to 27.
29636
29637 2002-10-11  Martin Baulig  <martin@gnome.org>
29638
29639         * gc.c: Don't register/unregister NULL pointers as disappearing links.
29640
29641 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29642
29643         * metadata.c, metadata.h: added helper function to allocate signatures.
29644
29645 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29646
29647         * icall.c: added internal call to get the location of machine.config.
29648
29649 2002-10-08  Martin Baulig  <martin@gnome.org>
29650
29651         * debug-mono-symfile.c: Ignore classes with a pending init for the
29652         moment.
29653
29654 2002-10-03  Dick Porter  <dick@ximian.com>
29655
29656         * threads.c: Freebsd pthread_t is a pointer
29657
29658 2002-10-03  Dick Porter  <dick@ximian.com>
29659
29660         * socket-io.c: Implemented GetHostName_internal
29661
29662 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29663
29664         * mono-config.c:
29665         (mono_config_parse_file): don't leak the text.
29666
29667 2002-10-02  Martin Baulig  <martin@gnome.org>
29668
29669         * debug-mono-symfile.c: Added support for methods.
29670
29671 2002-10-01  Martin Baulig  <martin@gnome.org>
29672
29673         * debug-mono-symfile.c: Don't emit methods and line numbers for
29674         the dynamic symbol file, just write the type table.  We can easily
29675         have an external helper program which creates a symbol file for an
29676         IL file.        
29677
29678 2002-10-01  Dick Porter  <dick@ximian.com>
29679
29680         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
29681         Only add the handle to the cleanup array when we're about to
29682         launch the thread.  Bug 31425 deadlocked when the test was run on
29683         mono under w32.
29684
29685 2002-10-01  Martin Baulig  <martin@gnome.org>
29686
29687         * debug-mono-symfile.c: Added support for properties.
29688
29689 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29690
29691         * reflection.c: unaligned store fix from Mark Crichton
29692         <crichton@gimp.org>.
29693
29694 2002-09-27  Martin Baulig  <martin@gnome.org>
29695
29696         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
29697         New interncall.
29698
29699 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
29700
29701         * assembly.h, assembly.c: use a sane API to hook into the assembly
29702         loading process instead of a useless special-purpouse hack
29703         (ngen needs a hook, too, for example).
29704
29705 2002-09-27  Dick Porter  <dick@ximian.com>
29706
29707         * threads.c (mono_thread_init): Call GetCurrentProcess() so
29708         io-layer can set up some process handle info.  Not needed on w32,
29709         but doesn't hurt either.
29710
29711         * process.c: Pass the program name in the second parameter to
29712         CreateProcess, so the path is searched.  Include the working
29713         directory. Implemented process name, process enumeration, and some
29714         process detail internal calls.
29715         
29716         * icall.c: Added internal calls for process lookup, and some
29717         process details
29718
29719 2002-09-26  Martin Baulig  <martin@gnome.org>
29720
29721         * assembly.c (mono_install_open_assembly_hook): New global
29722         function to install a function to be invoked each time a new
29723         assembly is loaded.
29724         (mono_assembly_open): Run this callback function if set.
29725
29726         * debug-mono-symfile.c: Put back line numbers for the dynamic
29727         symbol file and also record the .il file as source file.  This
29728         allows us to install the temporary symbol file as `file.dbg' just
29729         like a compiler-generated one.
29730
29731 2002-09-26  Nick Zigarovich <nick@chemlab.org>
29732
29733         * Corrected typo in gc.c (BOHEM vs BOEHM).
29734
29735 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29736
29737         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
29738         GetProperties. Also avoid calling g_slist_length in GetProperties and
29739         GetMethods.
29740
29741 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29742
29743         * reflection.c: avoid unaligned stores (bug spotted by
29744         Mark Crichton  <crichton@gimp.org>).
29745
29746 2002-09-25  Martin Baulig  <martin@gnome.org>
29747
29748         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
29749         instead of guint64 for addresses and added prologue/epilogue info.
29750
29751 2002-09-25  Martin Baulig  <martin@gnome.org>
29752
29753         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
29754         store line number info.  For the dynamic symbol file, we only need
29755         to provide the JIT generated dynamic line number info for the dynamic
29756         symbol file.
29757
29758 2002-09-25  Martin Baulig  <martin@gnome.org>
29759
29760         * debug-mono-symfile.h: Incremented version number.
29761
29762 2002-09-24  Martin Baulig  <martin@gnome.org>
29763
29764         * class.c (mono_debugger_class_init_func): New global function
29765         pointer variable.
29766         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
29767         call it.
29768
29769         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
29770         function.  This is called via the mono_debugger_class_init_func
29771         hook to add all types to the dynamic type table.
29772         (ves_icall_MonoDebugger_GetType): New interncall to get a class
29773         from its metadata token.
29774
29775         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
29776         New interncall for the debugger.
29777
29778 2002-09-24  Nick Drochak <ndrochak@gol.com>
29779
29780         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
29781         before using it in case it is null.
29782         
29783 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29784
29785         * metadata.c: allow custom modifiers in local var signatures
29786         (bug spotted by Zoltan Varga).
29787
29788 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29789
29790         * class.c: deal with the <Module> class that may have a NULL vtable.
29791         Eliminate warnings.
29792
29793 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29794
29795         * image.c, image.h: more strong name helpers.
29796         * monosn.c: more work: convert pem keys to cryptoapi format.
29797
29798 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29799
29800         * string-icalls.c: speedup IndexOf.
29801
29802 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29803
29804         * icall.c: updates from Zoltan.2.Varga@nokia.com.
29805
29806 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
29807
29808         * icall.c: cleanup: use mono_object_domain ().
29809
29810 2002-09-23  Martin Baulig  <martin@gnome.org>
29811
29812         * debug-mono-symfile.c: Improved type support.
29813
29814 2002-09-22  Martin Baulig  <martin@gnome.org>
29815
29816         * debug-mono-symfile.c: Added support for reference types and strings.
29817
29818 2002-09-22  Martin Baulig  <martin@gnome.org>
29819
29820         * debug-mono-symfile.c: Started to work on the type table.
29821
29822 2002-09-21  Martin Baulig  <martin@gnome.org>
29823
29824         * debug-mono-symfile.c: Largely reworked the symbol table format.
29825         The symbol table is now incrementally updated each time a new
29826         method is added.  We're now also using our own magic and version
29827         so that you don't need to recompile all your classes if the
29828         dynamic table changes.
29829         (mono_debug_update_mono_symbol_file): Removed.
29830         (mono_debug_symfile_add_method): New function to add a method.
29831
29832 2002-09-21  Martin Baulig  <martin@gnome.org>
29833
29834         * icall.c
29835         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
29836         New interncall.
29837
29838         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
29839         New interncall to get a method from its metadata token.
29840
29841 2002-09-21  Martin Baulig  <martin@gnome.org>
29842
29843         * debug-mono-symfile.c: Create type table.
29844
29845 2002-09-20  Martin Baulig  <martin@gnome.org>
29846
29847         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
29848
29849 2002-09-20  Martin Baulig  <martin@gnome.org>
29850
29851         * debug-mono-symfile.c: Provide information about params and locals.
29852
29853 2002-09-20  Martin Baulig  <martin@gnome.org>
29854
29855         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
29856         New interncall.
29857
29858         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
29859         interncall to get a method from its metadata token.
29860
29861 2002-09-20  Martin Baulig  <martin@gnome.org>
29862
29863         * debug-mono-symfile.c: Added a few checks for method->header
29864         being non-NULL.  This should never happen, but for the moment
29865         let's use a g_warning() rather than a g_assert().
29866
29867 2002-09-19  Mark Crichton  <crichton@gimp.org>
29868
29869         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
29870         even if support for it isn't present.  Added an #ifdef to fix this.
29871
29872         * socket-io.c: Added checks back for Solaris support.
29873
29874 2002-09-19  Martin Baulig  <martin@gnome.org>
29875
29876         * debug-mono-symfile.c (read_string, write_string): Reflect latest
29877         changes in the symbol file format.
29878
29879 2002-09-18  Martin Baulig  <martin@gnome.org>
29880
29881         * debug-mono-symfile.c: Set version number to 21.
29882
29883 2002-09-18  Dick Porter  <dick@ximian.com>
29884
29885         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
29886         on netbsd.  Fixes bug 30051.
29887
29888 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29889
29890         * reflection.c:
29891         (set_version_from_string): little fix.
29892
29893 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29894
29895         * monosn.c, Makefile.am: added strong name utility.
29896         * reflection.h, reflection.c: implemented delayed signing,
29897         locale, version and hash id assembly attributes.
29898
29899 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29900
29901         * loader.c, metadata.c: load param attributes in signatures.
29902
29903 2002-09-16  Martin Baulig  <martin@gnome.org>
29904
29905         * debug-mono-symfile.c: Added string table with all method names.
29906
29907 2002-09-14  Martin Baulig  <martin@gnome.org>
29908
29909         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
29910         fast method lookup.
29911
29912 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29913
29914         * reflection.c: record the public key token of referenced assemblies.
29915
29916 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29917
29918         * image.c, image.h: added functions to get the strong name and the
29919         public key of an assembly.
29920         * pedump.c: use them.
29921
29922 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
29923
29924         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
29925
29926 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
29927
29928         * marshal.c (mono_marshal_get_managed_wrapper): Added
29929         MONO_TYPE_BOOLEAN 
29930
29931 2002-09-11  Martin Baulig  <martin@gnome.org>
29932
29933         * gc.c: Call GC_unregister_disappearing_link() on all links when
29934         finalizing them, this is necessary to aviod a crash in boehm's
29935         finalize handler.
29936
29937 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29938
29939         * gc.c: handle GetTarget for finalized objects spotted and fixed by
29940         nick@chemlab.org.
29941
29942 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29943
29944         * icall.c: implemented MonoType::Module.
29945         * reflection.c, reflection.h: mono_module_get_object () from
29946         Tomi Pakarinen <tomi.pakarinen@welho.com>.
29947
29948 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29949
29950         * icall.c: ignore overridden methods in GetMethods ().
29951         Fix for FieldInfo::SetValue().
29952         * object.c: handle float/double in runtime invoke.
29953
29954 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29955
29956         * object.c: allow a constructor to be called again on an object.
29957
29958 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29959
29960         * class.h, class.c: move field layout code to it's own function and
29961         export it. Get an interface id earlier. Move fields in MonoClass
29962         so they are more cache friendly and align the bitfields.
29963         * loader.c: temporary handle get_param_names() for a runtime method.
29964         * reflection.c, reflection.h: more code to handle runtime creation of
29965         types.
29966
29967 2002-09-09  Martin Baulig  <martin@gnome.org>
29968
29969         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
29970         signature with the pinvoke field being set for the actual call.
29971
29972 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29973
29974         * icall.c: removed some unused icalls. Start of map of glib charsets
29975         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
29976
29977 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29978
29979         * debug-helpers.c: break infinite loop (found and fixed by
29980         Holger Arnold <harnold@gmx.de>).
29981
29982 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29983
29984         * icall.c: target may be null in create_delegate.
29985
29986 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29987
29988         * marshal.c: handle a boolean return type.
29989
29990 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29991
29992         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
29993
29994 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29995
29996         * gc.c: fix weakreferences.
29997
29998 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29999
30000         * icall.c: added icall to get default codepage.
30001
30002 2002-09-03  Dick Porter  <dick@ximian.com>
30003
30004         * threads.h: 
30005         * threads.c: Use MonoThread instead of MonoObject where
30006         apropriate.
30007
30008         Store running thread objects in a hash table, so that we have all
30009         the info to hand when waiting for them to finish
30010         (means we don't need OpenThread() any more, so mingw builds should
30011         be fully functional again.)
30012
30013         * verify.c:
30014         * object.h: Added thread ID to MonoThread
30015
30016 2002-09-03  Martin Baulig  <martin@gnome.org>
30017
30018         * icall.c (System.Reflection.Assembly::get_location): New interncall.
30019
30020 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30021
30022         * icall.c: fixed leak in get_temp_path. Thanks lupus.
30023
30024 2002-09-03  Martin Baulig  <martin@gnome.org>
30025
30026         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
30027         argument to store the end address of the disassembled instruction.
30028
30029         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
30030         here from debug-symfile.h.
30031         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
30032         JIT into this struct.
30033         (MonoSymbolFile): Added `char *image_file' field.
30034         (MonoDebugGetMethodFunc): Removed.
30035         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
30036         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
30037         (mono_debug_find_method): New method.
30038
30039         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
30040         create a full symbol file.
30041         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
30042         and static symbol files.
30043         (mono_debug_find_method): The symbol file keeps an internal method hash,
30044         call this to get a MonoDebugMethodInfo from a MonoMethod.
30045
30046         * debug-symfile.[ch]: Removed.
30047
30048 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
30049
30050         * image.c (do_mono_image_open): Remove linker version check.
30051
30052 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
30053
30054         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
30055         wrappers for instance methods.
30056         
30057 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30058
30059         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
30060
30061 2002-08-28  Dick Porter  <dick@ximian.com>
30062
30063         * Makefile.am: Export HOST_CC for w32 builds
30064
30065 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
30066
30067         * file-io.c process.c: MonoString are null terminated, no
30068         need for mono_string_to_utf16() anymore.
30069
30070 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
30071
30072         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
30073
30074 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
30075
30076         * icall.c, reflection.h: speedup System.MonoType.
30077
30078 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
30079
30080         * reflection.c: allow null as the value of a string argument in
30081         custom attributes constructors.
30082
30083 2002-08-27  Martin Baulig  <martin@gnome.org>
30084
30085         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
30086         `trampoline_address' field.
30087
30088 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
30089
30090         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
30091         check (fixes bug #29486) 
30092
30093 2002-08-27  Martin Baulig  <martin@gnome.org>
30094
30095         * debug-mono-symfile.c: Changed the file format in a way that allows us
30096         open it read-only and to use a specially malloced area for all the
30097         dynamic data.  We can now also generate a symbol file on-the-fly if we're
30098         debugging IL code and there is no MCS generated symbol file for it.
30099
30100 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30101
30102         * object.c: added a define for a good string and array
30103         creation speedup (not enabled by default because we need to deal with
30104         the synch stuff).
30105
30106 2002-08-26  Martin Baulig  <martin@gnome.org>
30107
30108         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
30109         function to create a dynamic symbol file.  This is used by the
30110         debugger to create a symbol file for IL code on-the-fly.
30111
30112 2002-08-26  Martin Baulig  <martin@gnome.org>
30113
30114         * loader.c (mono_lookup_pinvoke_call): Include the error message
30115         from g_module_error() in the error message.
30116
30117 2002-08-24  Martin Baulig  <martin@gnome.org>
30118
30119         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
30120         function to update the symbol file.  The symbol file is mmap()ed
30121         writable, but private.  This allows us to install the symbol file
30122         together with the assembly.
30123
30124 2002-08-24  Martin Baulig  <martin@gnome.org>
30125
30126         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
30127         but they can read the new symbol file format which mcs is now creating.
30128
30129         * debug-symfile.c (mono_debug_find_source_location): Moved to
30130         debug-mono-symfile.c; this is now operating on the new symbol file.
30131
30132 2002-08-23  Martin Baulig  <martin@gnome.org>
30133
30134         * debug-helpers.c (mono_method_desc_from_method): New function to get
30135         a MonoMethodDesc from a MonoMethod.
30136
30137 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
30138
30139         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
30140         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
30141
30142 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
30143
30144         * string-icalls.[ch]: make helper methods static.
30145
30146 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30147
30148         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
30149         types to it and to SetValueInternal.
30150
30151         * object.c: Moved handle_enum label to its proper place. This was the
30152         f... bug! ;-)
30153
30154         This time i compiled mcs and gtk-sharp and they both work.
30155
30156 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30157
30158         * icall.c: reverted partially my previous patch until 
30159         object.c:set_value handles enums correcly.
30160
30161 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30162
30163         * icall.c:
30164         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
30165         (ves_icall_System_Environment_get_MachineName): removed warning when
30166         compiling under cygwin.
30167
30168 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
30169
30170         * object.c: fixed field_get_value() for reference types.
30171
30172 2002-08-22  Dick Porter  <dick@ximian.com>
30173
30174         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
30175         Don't free a buffer while it's still needed.  Patch from Jonathan
30176         Liger <Jonathan.liger@wanadoo.fr>
30177
30178 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
30179
30180         * icall.c (ves_icall_System_Environment_get_Platform): Add new
30181         internal call.
30182
30183 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
30184
30185         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
30186         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
30187
30188         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
30189         we call unmanaged code which throws exceptions.
30190
30191 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
30192
30193         * appdomain.h: added per-domain entry_assembly.
30194         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
30195         arguments.
30196         * icall.c: Assembly::GetEntryAssembly icall.
30197         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
30198         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
30199
30200 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
30201
30202         * appdomain.h, gc.c: added mono_domain_finalize ().
30203
30204 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30205
30206         * object.c:
30207         (mono_print_unhandled_exception): changed g_warning by g_printerr
30208         because g_log has a 1024 characters limit (yeah, i got a big stack
30209         trace). Don't print exception name, that should be in ToString 
30210         returned string.
30211
30212 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30213
30214         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
30215         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
30216
30217 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30218
30219         * object.c:
30220         (mono_print_unhandled_exception): after previous commit, i realized
30221         that MS calls ToString on the exception. I changed this function to
30222         do that. This way we get stack_trace for free.
30223
30224 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30225
30226         * object.c:
30227         (mono_print_unhandled_exception): invoke Message property instead of
30228         getting 'message' field from Exception. Don't allocate memory for
30229         'trace' and 'message' if not needed.
30230
30231 2002-08-18  Dick Porter  <dick@ximian.com>
30232
30233         * unicode.c: Fix asserts to match Encoder.cs checks
30234
30235 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
30236
30237         * marshal.c: fix unaligned store issue and a few wrong
30238         opcode argument types.
30239
30240 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30241
30242         * icall.c: added GetUninitializedObjectInternal internal call.
30243
30244 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
30245
30246         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
30247         to the right domain.
30248
30249 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
30250
30251         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
30252
30253         * class.c (class_compute_field_layout): set blittable to false for Strings
30254
30255         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
30256
30257 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
30258
30259         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
30260         first chunk of code to create types at runtime. Code to
30261         handle ReflectedType/DeclaringType. Make reflection handles
30262         domain specific.
30263
30264 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
30265
30266         * class.c: set correct name in arrays.
30267
30268 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
30269
30270         * appdomain.c (mono_domain_transfer_object): make it work with
30271         valuetypes. bug fixes.
30272
30273 2002-08-12  Dick Porter  <dick@ximian.com>
30274
30275         * object.h: Rename some parameters to avoid c++ keywords (Patch
30276         from Joseph Wenninger <kde@jowenn.at>)
30277
30278 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
30279
30280         * icall.c: added icall to implement Assembly.GetFile*.
30281
30282 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
30283
30284         * reflection.h, reflection.c: code to embed managed resources.
30285
30286 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
30287
30288         * class.c: move all the type size stuff into
30289         class_compute_field_layout().
30290
30291 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
30292
30293         * class.c: ensure enums have always the correct instance size.
30294         * unicode.c: remove wrong assert.
30295
30296 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
30297
30298         * assembly.c: fix mem corruption issue.
30299         * image.h, image.c: added mono_image_get_resource () to access
30300         managed resources.
30301         * icall.c: implemented Assembly.EntryPoint property and some
30302         Managed Resources related internalcalls.
30303
30304
30305 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
30306
30307         * image.c, image.h: impemented mono_image_get_entry_point ().
30308         * appdomain.c: use mono_image_get_entry_point.
30309
30310 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
30311
30312         * reflection.c: support the object type argument when loading
30313         custom attributes.
30314
30315 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
30316
30317         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
30318         String as return type.
30319
30320 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
30321
30322         * reflection.c: fix encoding of named args for custom attrs to match
30323         the ms implementation. Read them back when instantiating custom
30324         attributes.
30325
30326 2002-08-02  Radek Doulik  <rodo@ximian.com>
30327
30328         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
30329         by Dietmar as quick fix
30330         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
30331         16 as stack size, used on more places as quick fix before Dietmar
30332         will fix it properly
30333
30334 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
30335
30336         * object.h, object.c: added accessors for fields and properties.
30337
30338 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
30339
30340         * class.c, class.h: made mono_class_get_field_from_name ()
30341         loop on parent types.
30342         Added mono_class_get_property_from_name ().
30343
30344 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30345
30346         * class.c, class.h: move the code to setup the type vtable in its own
30347         function so that it can be reused also for types created at runtime.
30348         Eliminate the "class" identifier from the header file.
30349         * reflection.c: setup the vtable for enums so that we can create
30350         objects for use in SetConstant ().
30351
30352 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
30353
30354         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
30355         instead of the delegate itself as this pointer (bug #28383)
30356
30357 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
30358
30359         * marshal.c (mono_marshal_get_managed_wrapper): added return type
30360         conversions.
30361
30362 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30363
30364         * loader.c: don't set the pinvoke bit on icalls.
30365
30366 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
30367
30368         * debug-helpers.c (mono_method_full_name): only print a number to
30369         indicate wrapper type (so that the output is more readable in traces).
30370
30371 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
30372
30373         * class.c (mono_class_init): include method override patch from Paolo
30374
30375 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
30376
30377         * icall.c: fixed GetTypeCode().
30378
30379 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
30380
30381         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
30382         use real delegate invoke function to make it work with multicast
30383         delegates (fix bug# 28291).
30384
30385 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30386
30387         * object.c: load constant strings.
30388
30389 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30390
30391         * reflection.c: no magic numbers.
30392         * tabledefs.h: security action enum.
30393
30394 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
30395
30396         * assembly.c: fix possible memory corruption.
30397
30398 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
30399
30400         * reflection.h, reflection.c: added support for linking resources.
30401         * verify.c: check we have an updated corlib.
30402
30403 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
30404
30405         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
30406         string arrays.
30407         (mono_marshal_string_array): null terminate unmanaged string arrays.
30408         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
30409
30410 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30411
30412         * icall.c: Type.GetType () can now return also types from the
30413         calling assembly.
30414
30415 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
30416
30417         * loader.h, loader.c: stack walking support.
30418         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
30419         GetCallingAssembly.
30420
30421 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
30422
30423         * marshal.c: added optimisations for blittable types 
30424
30425         * class.c (mono_array_class_get): do not set blittable attribute on arrays
30426         (mono_class_setup_mono_type): set blittable attribute for single
30427         and double.
30428
30429         * marshal.c (mono_string_utf8_to_builder): impl.
30430         (mono_string_builder_to_utf8): impl.
30431         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
30432
30433 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
30434
30435         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
30436         (mono_marshal_get_managed_wrapper): impl. byref types
30437
30438 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30439
30440         * icall.c:
30441         (search_method): don't display debug message. 
30442
30443 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
30444
30445         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
30446
30447 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
30448
30449         * appdomain.c: set the missing filename when throwing exception.
30450
30451 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
30452
30453         * metadata.c (mono_type_size): code cleanup
30454         (mono_type_stack_size): removed some test code
30455
30456 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
30457
30458         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
30459         mono_get_exception_file_not_found now.
30460
30461         * exception.c (mono_exception_from_name_two_strings): New version
30462         that will call a constructor with two string arguments. 
30463         (mono_get_exception_file_not_found): New helper routine, used to
30464         report file-not-found errors.
30465
30466 2002-07-20  Dick Porter  <dick@ximian.com>
30467
30468         * process.h:
30469         * process.c: Pass file handles to CreateProcess
30470         
30471         * icall.c:
30472         * file-io.h:
30473         * file-io.c: Implemented CreatePipe
30474
30475 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
30476
30477         * metadata.c (mono_get_param_info): set alignment for value types
30478
30479 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
30480
30481         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
30482         Constify mono_domain_assembly_open().
30483         * loader.c: handle null namespace in icalls.
30484
30485 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
30486
30487         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
30488         (emit_str_to_ptr_conv): marshal object as structs
30489
30490         * metadata.c (mono_type_to_unmanaged): marshal object as structs
30491
30492         * marshal.c (mono_marshal_get_runtime_invoke): support value types
30493
30494 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
30495
30496         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
30497         (mono_marshal_get_native_wrapper): we an now return value types
30498
30499 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30500
30501         * verify.c: more checks implemented.
30502
30503 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
30504
30505         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
30506         (fix bug #27695)
30507         (mono_marshal_get_native_wrapper): allow byref arguments
30508         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
30509         impl. PtrToStringXXX methods
30510         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
30511         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
30512         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
30513         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
30514         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
30515
30516 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
30517
30518         * reflection.c: fix buglet in parsing an assembly name.
30519
30520 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
30521
30522         * marshal.c (emit_ptr_to_str_conv): first impl.
30523
30524 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
30525
30526         * object.c, class.h: cache the vtable in the class as suggested by
30527         vargaz@freemail.hu (Zoltan Varga).
30528
30529 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
30530
30531         * class.h, loader.c: added mono_field_from_token().
30532         * verify.c: first cut of type checking code.
30533
30534 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
30535
30536         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
30537
30538 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
30539
30540         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
30541         (fix bug #27782)
30542         (mono_marshal_get_remoting_invoke): impl.
30543         (mono_delegate_begin_invoke): impl.
30544         (mono_mb_emit_save_args): impl.
30545         (mono_delegate_end_invoke): impl.
30546         (mono_marshal_get_delegate_begin_invoke):
30547         (mono_marshal_get_delegate_end_invoke):
30548         (mono_marshal_get_delegate_invoke): generate a special name for
30549         those methods (including the signature) and associate them whith
30550         the delegate class. 
30551
30552 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
30553
30554         * reflection.[ch]: 
30555         (mono_reflection_type_from_name): now it has a MonoImage parameter
30556         which is used as the default image to search the type in. If the image
30557         is NULL or getting the type from it fails, it defaults to corlib.
30558
30559         * icall.c: changed 1 call to mono_reflection_type_from_name to match
30560         new parameter.
30561
30562 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
30563
30564         * reflection.c: update the parameter table index.
30565
30566 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
30567
30568         * domain.c: don't include the mark byte in the string hash.
30569
30570 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
30571
30572         * icall.cs: icall for Type.GetTypeCode ().
30573         * verify: a couple of fixes and disabled local initialization checks.
30574
30575 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
30576
30577         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
30578
30579         * debug-helpers.c (mono_method_full_name): print the type of the
30580         runtime wrapper
30581
30582         * metadata.c (mono_signature_hash): a hash function for signatures
30583         (mono_signature_hash): better hash algorithm
30584
30585         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
30586
30587         * debug-helpers.c (mono_method_full_name): this can now generate
30588         method names with signatures
30589
30590         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
30591         method dont have this pointers.
30592
30593 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30594
30595         * reflection.c: fixup typebuilder tokens.
30596         * image.c: fix buglet.
30597         * marshal.h: remove whitespace.
30598         * metadata.h, metadata.c: reinstate code that was removed.
30599         * verify.c: handle catch directives and fix another couple of bugs.
30600
30601 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
30602
30603         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
30604         (mono_marshal_get_native_wrapper): make it comp. with the old code
30605         (mono_marshal_get_native_wrapper): support boolean
30606         (mono_marshal_get_managed_wrapper): support more types
30607
30608 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
30609
30610         * class.c (class_compute_field_layout): compute class->blittable attribute.
30611
30612 2002-07-09  Dick Porter  <dick@ximian.com>
30613
30614         * threads.c: Make the thread cleaning up cope with threads that
30615         call ExitThread()
30616
30617 2002-07-08  Radek Doulik  <rodo@ximian.com>
30618
30619         * reflection.c (method_encode_code): use non-translated values to
30620         compute finally_start, this fixes exception handling on ppc, yay!
30621
30622         * decimal.h (struct signscale): fix endianess
30623
30624 2002-07-07  Radek Doulik  <rodo@ximian.com>
30625
30626         * reflection.c: swap box_val and not val
30627
30628 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
30629
30630         * reflection.c, reflection.h: handle full assembly info in type name.
30631         Handle Type arguments when loading custom attributes.
30632         * icall.c: updated to use new mono_reflection_type_from_name () method.
30633
30634 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30635
30636         * loader.c:
30637         (method_from_memberref): also print assembly name when method not found.
30638
30639 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30640
30641         * icall.c:
30642         (ves_icall_TypeGetProperties): fixed bug #27473. 
30643
30644 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30645
30646         * reflection.c: display image name and token when cannot find the
30647         .ctor for an attribute.
30648
30649 2002-07-05  Martin Baulig  <martin@gnome.org>
30650
30651         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
30652
30653 2002-07-04  Dick Porter  <dick@ximian.com>
30654
30655         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
30656         compile on mingw.  This will cause mingw builds to not wait for
30657         subthreads to terminate after the main thread does.  I've lodged a
30658         bug with the mingw developers for them to wrap OpenThread().
30659
30660 2002-07-03  Dick Porter  <dick@ximian.com>
30661
30662         * threads.c: Store thread IDs instead of handles, because
30663         GetCurrentThread() returns a pseudohandle and therefore stores
30664         useless values.  mono_thread_cleanup() continues checking the
30665         array of threads until it is empty, to cope with subthreads
30666         spawning new threads after the main thread has finished.
30667
30668         * profiler.h:
30669         * profiler.c:
30670         * profiler-private.h: Pass the thread ID to thread profiler
30671         functions, instead of a handle
30672
30673 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
30674
30675         * verify.c: fixes to make it more usable.
30676         * pedump.c: added --verify code to verify IL code in an assembly.
30677
30678 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30679
30680         * reflection.c: turn errors into warnings to allow compiling corlib.
30681
30682 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
30683
30684         * reflection.c: add special cases to compile corlib.
30685
30686 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
30687
30688         * reflection.c: handle properties with only a set method.
30689
30690 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
30691
30692         * opcodes.h: add enum with opcodes in opval order.
30693
30694 2002-07-01  Dick Porter  <dick@ximian.com>
30695         
30696         * object.h:
30697         * object.c (mono_runtime_run_main): Removed unneeded argument
30698
30699 2002-06-28  Martin Baulig  <martin@gnome.org>
30700
30701         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
30702
30703 2002-06-27  Dick Porter  <dick@ximian.com>
30704
30705         * threads.c: Store the handle in both the parent thread and in the
30706         subthread, to minimise the time between starting a new thread and
30707         storing its ID.
30708
30709 2002-06-26  Dick Porter  <dick@ximian.com>
30710
30711         * appdomain.c (mono_runtime_cleanup): Close the socket library
30712         after all the threads have finished, not before
30713
30714 2002-06-26  Martin Baulig  <martin@gnome.org>
30715
30716         * debug-symfile.c (mono_debug_find_source_location): Added
30717         `guint32 *line_number' argument.  If it's not NULL, store the line number
30718         there and return the file name without the line number.
30719
30720 2002-06-25  Dick Porter  <dick@ximian.com>
30721
30722         * icall.c:
30723         * process.h:
30724         * process.c: Process forking and other support functions
30725
30726 2002-06-25  Dick Porter  <dick@ximian.com>
30727
30728         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
30729         things dont happen when the image is closed.
30730         (mono_image_lookup_resource): Walk the resource section looking
30731         for a particular entry
30732
30733         * cil-coff.h: PE resource section decoding
30734
30735 2002-06-25  Dick Porter  <dick@ximian.com>
30736         
30737         * assembly.h:
30738         * assembly.c: 
30739         (mono_assembly_foreach): Accessor functions to walk the list of
30740         loaded assemblies
30741         (mono_assembly_set_main):
30742         (mono_assembly_get_main): Process methods need to know which
30743         assembly is the "main" one
30744
30745         * object.c (mono_runtime_run_main): Record the main assembly
30746
30747         * debug-helpers.c: Fix typo
30748
30749 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
30750
30751         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
30752         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
30753
30754 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
30755
30756         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
30757
30758 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
30759
30760         * image.c (do_mono_image_open): Initialize reference count,
30761         otherwise we leak the MonoImage.
30762
30763 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
30764
30765         * reflection.c: small tweak to handle self-hosting.
30766
30767 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
30768
30769         * reflection.c: fix type name parse code.
30770
30771 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30772
30773         * reflection.c: break out of the loop.
30774         * image.c: special case corlib.
30775
30776 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30777
30778         * reflection.c: add all the custom attrs at the end to ensure the
30779         ctors have been properly initialized when the attributes are defined
30780         in the current assembly.
30781
30782 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
30783
30784         * reflection.c: handle correctly multiple-nested types.
30785
30786 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
30787
30788         * row-indexes.h: fix typos.
30789         * reflection.c: adjust for typos and fix method_def_or_ref
30790         encoding in MethodImpl table.
30791
30792 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30793
30794         * reflection.c: fix entry point patching (thanks Serge!).
30795
30796 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
30797
30798         * verify.c: add check for System.Exception
30799
30800 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
30801
30802         * image.c, class.c: minifix for code just c&p'ed.
30803         * reflection.c: warning fix.
30804         * object.h, loader.h, domain.c: load also StringBuilder.
30805
30806 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
30807
30808         * marshal.h, marshal.c: some support code to handle complex marshaling.
30809
30810 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30811
30812         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
30813         Better signatures with vtable error dump.
30814
30815 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
30816
30817         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
30818
30819 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
30820
30821         * icall.c (ves_icall_Type_GetField): impl.
30822
30823 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30824
30825         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
30826         to retrieve a marshal description blob for a field or param.
30827
30828 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
30829
30830         * reflection.h, reflection.c: change order of nested type emission
30831         to avoid table corruption. The NestedTypes table is sorted.
30832         * icall.c: change order of GetConstructor results to workaround mcs bug.
30833
30834 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30835
30836         * reflection.h, reflection.c: handle field and param marshal
30837         information.
30838
30839 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
30840
30841         * icall.c, marshal.c marshal.h: more Marshal class implementation.
30842
30843 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
30844
30845         * reflection.c: fix call convention.
30846
30847 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
30848
30849         * reflection.h, reflection.c: mono_image_get_memberref_token()
30850         takes a type instead of a class, now. Added
30851         mono_image_get_array_token() to create tokens for the special
30852         multi-dim array methods.
30853
30854 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
30855
30856         * assembly.c: handle modules (no assembly table). Split
30857         loading references in its own function.
30858         * class.c: handle moduleref resolution scope.
30859         * image.c, image.h: cache module name in image.
30860
30861 2002-06-07  Martin Baulig  <martin@gnome.org>
30862
30863         * reflection.c (mono_image_get_type_info): Only add a class layout entry
30864         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
30865
30866 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
30867
30868         * icall.c: more signature fixes that used uint instead of int.
30869
30870 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30871
30872         * reflection.c: fixed signature of field refs.
30873
30874 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30875
30876         * class.c, reflection.c: handle typerefs of nested types
30877         (both on read and when writing files).
30878
30879 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
30880
30881         * icall.c: fix method signatures that tried to workaround the previous
30882         typo, d'oh!
30883
30884 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
30885
30886         * debug-helpers.c: fix typo.
30887
30888 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
30889
30890         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
30891         rewrote the PE/COFF writing code (our programs are understood by the
30892         ms runtime, now).
30893
30894 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
30895
30896         * gc.c, gc.h, icall.c: weakreference support.
30897
30898 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
30899
30900         * Makefile.am, mono-config.c: use $(sysconfdir).
30901
30902 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30903
30904         * icall.c: changed default precision of Double.ToString() to 15.
30905         Fixed memory leak. Unified with Single.ToString.
30906
30907 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
30908
30909         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
30910
30911 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
30912
30913         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
30914         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
30915         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
30916         and myself.
30917
30918 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30919
30920         * debug-symfile.c, sysmath.c: yet more compilation fixes.
30921
30922 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30923
30924         * reflection.c, socket-io.c: more compilation fixes.
30925
30926 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30927
30928         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
30929         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
30930         unicode.c: warning and compiler compatibility fixes.
30931
30932 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30933
30934         * class.h, metadata.c: fixed warnings/compilation errors.
30935
30936 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
30937
30938         * Makefile.am, mono-config.c, mono-config.h: configuration file
30939         support routines.
30940         * loader.c, loader.h: make Dll mapping configurable at runtime in the
30941         config file. Export methods to insert and lookup mappings.
30942
30943 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
30944
30945         * reflection.c: handle types and boxed objects in custom attr
30946         constructors.
30947
30948 2002-05-30  Martin Baulig  <martin@gnome.org>
30949
30950         * debug-symfile.c
30951         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
30952
30953 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
30954
30955         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
30956         to lookup the implmap row for a P/Invoke method.
30957         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
30958         P/Invoke method from the runtime on an as needed basis.
30959
30960 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
30961
30962         * metadata.c (mono_metadata_parse_signature): impl.
30963
30964 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30965
30966         * class.c: handle .pack directive.
30967
30968 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
30969
30970         * object.c: initialize static fields with RVA data.
30971
30972 2002-05-25  Martin Baulig  <martin@gnome.org>
30973
30974         * debug-symfile.c
30975         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
30976
30977 2002-05-24  Martin Baulig  <martin@gnome.org>
30978
30979         * debug-symfile.c
30980         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
30981         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
30982         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
30983
30984 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30985
30986         * object.c: special case string ctros in invoke.
30987         * gc.c: silly whitespace changes.
30988
30989 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
30990
30991         * threadpool.[ch]: impl. a threadpool that can
30992         be used by mint and mono.
30993
30994 2002-05-22  Martin Baulig  <martin@gnome.org>
30995
30996         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
30997         The first argument is now a `MonoReflectionModuleBuilder *', the return
30998         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
30999         `methods' field to get the method builder.  The `token' argument is the
31000         unfixed token.
31001
31002         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
31003         invalid characters instead of g_assert_not_reached()ing.  This seems
31004         to be the behaviour of mscorlib.
31005
31006 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
31007
31008         * object.c (mono_runtime_invoke_array): applied patch from Rachel
31009         Hestilow to fix bug #25104
31010
31011 2002-05-21  Martin Baulig  <martin@gnome.org>
31012
31013         * debug-symfile.c (mono_debug_find_source_location): New function.
31014         Looks up an IL offset in the line number table and returns the source
31015         location as a string.
31016
31017 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31018
31019         * icall.c:
31020         (mono_double_ToStringImpl): changed %f by %g until we have something
31021         better.
31022
31023 2002-05-21  Nick Drochak  <ndrochak@gol.com>
31024
31025         * icall.c : Use different name for Math.Pow's icall.  Needed to check
31026         parameters first in C#.
31027
31028 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
31029
31030         * icall.c, reflection.h: added icall to get info about an event.
31031
31032 2002-05-20  Radek Doulik  <rodo@ximian.com>
31033
31034         * object.c (mono_value_box): don't use memcpy for boxing on BIG
31035         endian
31036         (mono_value_box): don't use memcpy for small sizes on
31037         architectures with unaligned access
31038
31039 2002-05-20  Martin Baulig  <martin@gnome.org>
31040
31041         * reflection.c (mono_reflection_setup_internal_class): Don't crash
31042         if `tb->parent == NULL'.
31043         (mono_reflection_create_internal_class): New function.  This is
31044         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
31045         for enum types.
31046
31047         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
31048         New interncall.
31049
31050 2002-05-19  Martin Baulig  <martin@gnome.org>
31051
31052         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
31053         argument to get the length, don't default to the array length.
31054
31055 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
31056
31057         * assembly.c (mono_assembly_setrootdir): New function used to
31058         override the MONO_ASSEMBLIES directory.
31059
31060 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
31061
31062         * icall.c: ValueType_GetHashCode() initialize local var.
31063
31064 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
31065
31066         * reflection.c: sort custom attributes table.
31067
31068 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
31069
31070         * reflection.c: support named args in custom attributes (write support).
31071
31072 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
31073
31074         * reflection.c: fix finally position calculation.
31075
31076 2002-05-15  Radek Doulik  <rodo@ximian.com>
31077
31078         * reflection.c: fixed endianess at many places
31079
31080         * icall.c (ves_icall_InitializeArray): comment out debug msg
31081
31082 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
31083
31084         * object.c (mono_unhandled_exception): new function to handle
31085         unhandled exceptions.
31086         (mono_unhandled_exception): call the UnhandledException event.
31087         (mono_runtime_delegate_invoke): impl.
31088
31089 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
31090
31091         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
31092         returns the RVA, not the direct pointer to the data. Handle the case
31093         when the class size is fixed.
31094
31095 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
31096
31097         * reflection.c: fix some endianess issues.
31098
31099 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
31100
31101         * object.c (mono_runtime_invoke): is now able to catch exceptions.
31102
31103         * threads.c (mono_thread_init): added a callback which is invoked
31104         at thread start.
31105
31106 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
31107         
31108         * icall.c: make GetHashCode return non-negative values.
31109
31110 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
31111
31112         * object.c, icall.c, gc.c: revert to address-based hashcode.
31113
31114 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
31115
31116         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
31117
31118 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
31119
31120         * icall.c, class.c: special case <Module>.
31121
31122 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
31123
31124         * icall.c: fix bug in GetNow().
31125
31126 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
31127
31128         * object.c (mono_runtime_class_init): make sure that we call all
31129         static class constructors.
31130
31131 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
31132
31133         * reflection.c: sort methodsemantics table.
31134
31135 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
31136
31137         * reflection.h, reflection.c: honour init locals setting.
31138
31139 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
31140
31141         * icall.c: copied Double ToStringImpl for Single ToStringImpl
31142
31143 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
31144
31145         * reflection.c: support ContructorBuilders in attribute blob creation.
31146
31147 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
31148
31149         * reflection.c: some changes to build a binary that can be run
31150         directly in windows.
31151
31152 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
31153
31154         * loader.c: print a big message when an icall can't be found.
31155
31156 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31157
31158         * string-icalls.c: fix bug 24248.
31159
31160 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
31161
31162         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
31163         icall.c, reflection.h: separate assembly loading by pathname and by
31164         assembly name. Use the MONO_PATH env var to search for assemblies.
31165
31166 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
31167
31168         * assembly.c, image.h: add some support for assemblies
31169         with multiple modules.
31170         * class.c, class.h: export mono_class_from_typeref().
31171         * loader.c: remove duplicated code and use mono_class_from_typeref(),
31172         instead.
31173
31174 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
31175
31176         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
31177         documentation says (the ECMA one is correct).
31178
31179 2002-05-02  Dick Porter  <dick@ximian.com>
31180
31181         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
31182         Don't name the synchronisation mutex.
31183
31184 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
31185
31186         * rand.c
31187         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
31188         Make the prototypes match.
31189         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
31190         Same.
31191
31192         * icall.c
31193         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
31194         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
31195         all systems have tm.tm_zone, so use strftime() with %Z to print
31196         the timezone abreviation into a temp string.
31197
31198         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
31199         rather than mono_array_addr() on a MonoString on Big Endian
31200         machines.
31201
31202 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
31203
31204         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
31205         fix bug 24041
31206
31207 2002-04-30  Dick Porter  <dick@ximian.com>
31208
31209         * socket-io.c: Cope with SOCKET being an integer rather than a
31210         pointer now.
31211
31212         * threads.c: Added Thread_free_internal, to deal with thread
31213         handle cleanup.  Moved calls to handle_store() and handle_remove()
31214         to start_wrapper(), so each can only be called once.  Allocate
31215         synchronisation blocks with GC_malloc(), and use GC finalisation
31216         to close the handles.
31217
31218         * icall.c: added System.Threading.Thread::Thread_free_internal
31219
31220 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
31221
31222         * icall.c: support Environment.Exit, CommandLineArgs().
31223
31224 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
31225
31226         * object.c, object.h: added mono_runtime_run_main () and
31227         mono_runtime_get_main_args () for use in System.Environment.
31228
31229 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
31230
31231         * gc.c: fix thinko, enable actual finalization since the jit is now
31232         fixed.
31233
31234 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
31235
31236         * gc.c, object.c: take into account that an object may be offset wrt the address
31237         returned by GC_malloc().
31238
31239 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
31240
31241         * image.c: handle files without entries in the assembly table (modules).
31242
31243 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
31244
31245         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
31246         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
31247         allowed to be null when it's System.Object class setup.
31248
31249 2002-04-27  Martin Baulig  <martin@gnome.org>
31250
31251         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
31252         if `tb->parent == NULL' rather than crashing.
31253
31254 2002-04-28  Nick Drochak  <ndrochak@gol.com>
31255
31256         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
31257         calling acos() where asin() should have been called.
31258
31259 2002-04-26  Martin Baulig  <martin@gnome.org>
31260
31261         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
31262         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
31263         there's a subdirectory called `System', but we don't want to read that
31264         subdirectory as an assembly.
31265
31266 2002-04-25  Martin Baulig  <martin@gnome.org>
31267
31268         * debug-symfile.c: Reflect latest MonoString changes.
31269
31270 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
31271
31272         * rand.c, rand.h: instance method icalls need to have an explicit
31273         this pointer as first argument in the C implementation.
31274
31275 2002-04-25  Nick Drochak <ndrochak@gol.com>
31276
31277         * icall.c: Fix typo in map for GetNonZeroBytes
31278
31279 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
31280
31281         * string-icalls.c : String does now passes unit tests without any 
31282         errors, the following changes has been made:
31283         
31284         Implemented replace methods.
31285         Renaming of methods to (try) follow the standard.
31286         Fixed compare ordinal
31287         Made all memory allocated directly to function instead of via icall function.
31288         Small performance fix in is_in_array function
31289                         
31290  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
31291
31292         c (mono_string_Internal_ctor_charp_int_int):
31293         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
31294         sindex < 0, throw ArgumentOutOfRangeException instead of
31295         ArgumentNullException.
31296
31297         Added new check for length == 0, however
31298         I need to make it return String.Empty from the C code.
31299         
31300         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
31301         that calculate the length for us here.
31302         
31303         (mono_string_Internal_ctor_sbytep_int_int): Replaced
31304         mono_string_new_utf16 with mono_string_new, since value is utf8.
31305
31306 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
31307
31308         * object.c: register the object for finalization if needed.
31309         Allocate one more char in the string for the terminating 0 char.
31310
31311 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
31312
31313         * class.c, class.h, image.c: check if a type implemenst a destructor.
31314         Use the proper key for array class lookups.
31315         * icall.c: register the icalls in the System.GC class.
31316         * gc.c, gc.h: GC-related functions and icalls.
31317
31318 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31319
31320         * icall.c:
31321         * socket-io.c:
31322         * unicode.c: free some strings gotten from mono_string_to_utf8 and
31323         changed a couple of free () by g_free ().
31324
31325         * decimal.c: one-liner in the comments for decimal2string ().
31326
31327 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
31328
31329         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
31330
31331 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
31332
31333         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
31334         * object.c (mono_runtime_invoke_array) : handle null in params
31335
31336 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
31337
31338         * string-icalls.c: fixed bug in split (one off bug)
31339
31340 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
31341
31342         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
31343         * icalls.c: added String::Equals as internal method
31344
31345 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
31346
31347         * threads.c: fixed bug in the double interlocked functions
31348
31349 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
31350
31351         * threads.c: implemented all of the new interlocked icalls.
31352         * string-icalls.c: fix a bug in insert.
31353         * icalls.c: added the icalls for interlocked, removed old string functions.
31354         
31355 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
31356
31357         * loader.c: fix off-by-one error when reading argument names.
31358
31359 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
31360
31361         * profiler.c: win32 counter implementation (untested).
31362         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
31363         (the latter needs testing and more complete impl. from win32 folks).
31364
31365 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
31366
31367         * object.c: mono_array_new_full workaround mono_array_class_get
31368         problem.
31369
31370 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
31371
31372         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
31373         * object.h (mono_string_chars): Changed casting type.
31374
31375 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
31376
31377         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
31378                            method signatures to use gunichar2 instead of gint16.
31379
31380 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
31381
31382         * object.h, object.c: domain-specific versions of mono_object_new and
31383         mono_array_new.
31384
31385 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
31386
31387         * object.c: changed String layout
31388
31389         * string-icalls.c (mono_string_Internal_ctor_chara): added
31390         internal string constructors.
31391
31392 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
31393
31394         * threads.c: pass 'this' to the thread start routine.
31395
31396 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31397
31398         * string-icalls.c: fix IndexOf and LastIndexOf. Now
31399         InternalCompareStr don't call twice mono_string_cmp_char for the last
31400         character. Improved performance in mono_string_cmp_char.
31401
31402 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
31403
31404         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
31405         code into its own library: libmonoruntime.
31406
31407 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
31408
31409         * object.h, object.c: changed array format so that szarrays do not
31410         require a bounds structure.
31411         * icall.c, appdomain.c: support for new szarray format.
31412
31413 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
31414
31415         * metadata.c: compare also the retuns type when comparing signatures:
31416         we didn't do this as an optimization since really overloaded methods
31417         must differ also in the arguments, but this doesn't work with
31418         low-level IL code (or when using explicit conversion operators: see
31419         bug#23498 for an example).
31420
31421 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
31422
31423         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
31424
31425 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
31426
31427         * icall.c: make MonoType::GetElementType its own icall.
31428
31429 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
31430
31431         * icall.c: remove MonoMethod_get_Name().
31432         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
31433         object.
31434
31435 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
31436
31437         * string-icalls.c: optimized a few methods.
31438
31439 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
31440
31441         * icall.c: added all new string internal calls
31442         * string-icalls.c: added, new string internal call implementation.
31443         * object.c: added mono_string_new_size for allocating a string a size
31444
31445 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
31446
31447         * object.c (mono_object_isinst): use the same code as in the
31448         optimized x86 version.
31449
31450 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
31451
31452         * profiler.c: TSC-based timer code (faster and more accurate).
31453         Not hooked up in configure, yet (set USE_X86TSC to 1).
31454
31455 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
31456
31457         * profiler.c, profiler.h: track time spent compiling methods.
31458         * threads.c: track thread creation/destruction.
31459
31460 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
31461
31462         * profiler.c, profiler.h, profiler-private.h: profiling interface
31463         and sample implementation. Moved here so that it can be used also by
31464         the jit.
31465
31466 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
31467
31468         * reflection.c, reflection.h: keep types and other handles separate in
31469         the hash tables for referred tokens. Add guid for modules.
31470
31471 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
31472
31473         * assembly.c: fix bugs found with valgrind.
31474         * metadata.h, metadata.c: added mono_metadata_guid_heap().
31475
31476 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
31477
31478         * threads: added icall support for getting current domain for
31479                    the thread.
31480  
31481 2002-04-13  Martin Baulig  <martin@gnome.org>
31482
31483         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
31484         (MonoDebugVarInfo): Added `index' field for register based addresses.
31485         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
31486         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
31487         `MonoDebugVarInfo *params' and `guint32 this_offset' with
31488         `MonoDebugVarInfo *this_var'.
31489
31490         * debug-symfile.c (relocate_variable): New static function to write
31491         a location description for a local variable or method parameter.
31492
31493 2002-04-12  Martin Baulig  <martin@gnome.org>
31494
31495         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
31496         stack offset and begin/end scope address of a local variable.
31497         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
31498         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
31499         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
31500
31501         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
31502         Added new relocation types for start/end scope of a local variable.
31503
31504 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
31505
31506         * object.h: add mono_object_domain() macro.
31507         * reflection.c: handle typespecs.
31508         * icall.c: MonoMethod::get_Name() implementation.
31509
31510 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
31511
31512         * icall.c: String::GetHashCode() icall implementation.
31513
31514 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
31515
31516         * icall.c: String::IndexOfAny icall.
31517         * object.c, object.h: make array->max_length more useful.
31518         Intrduced mono_object_class() and mono_string_length() macros.
31519
31520 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31521
31522         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
31523         instead of g_unichar_isdigit.
31524
31525 2002-04-11  Nick Drochak  <ndrochak@gol.com>
31526
31527         * icall.c: Implement a simple Double.ToString().
31528
31529 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
31530
31531         * appdomain.h: only io-layer.h is supposed to be included.
31532         * icall.c: explicitly import environ. Fix warning.
31533
31534 2002-04-10  Nick Drochak  <ndrochak@gol.com>
31535
31536         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
31537                 return true even if it's not Daylight Savings time.
31538                 Only return false for the case where the function isn't
31539                 implemented for a plaform (read Windows).
31540
31541 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
31542
31543         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
31544         data with a mutex.
31545
31546 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
31547
31548         * mempool.c (mono_mempool_alloc): only use g_malloc when
31549         absolutely necessary.
31550
31551 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
31552
31553         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
31554
31555         * class.c (mono_class_vtable): use domain mempool to allocate vtable
31556         (mono_class_proxy_vtable): use domain mempool
31557
31558 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
31559
31560         * appdomain.h, appdomain.c: split initialization that requires the
31561         execution engine support into mono_runtime_init().
31562
31563 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
31564
31565         * class.c (mono_class_init): don't include vtable inside MonoClass
31566         to save some memory, gather some statistics.
31567         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
31568
31569 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
31570
31571         * icall.c: internalcall implementation for ValueType.Equals().
31572
31573 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
31574
31575         * object.c (mono_message_init): moved 
31576         (mono_runtime_exec_main): new arch. independent impl.
31577         (mono_runtime_invoke_array): new method - like
31578         mono_runtime_invoke, but you can pass an array of objects.
31579         (mono_remoting_invoke): new arch. independent impl.
31580         (mono_message_invoke): new arch. independent impl.
31581         (mono_runtime_class_init): new arch. independent impl.
31582         (mono_runtime_object_init): new arch. independent impl.
31583
31584 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
31585
31586         * metadata.c, object.c, reflection.c: documented the exported
31587         functions.
31588
31589 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
31590
31591         * icall.c: simpler code to pass the assembly builder data to corlib.
31592         Implement GetNestedTypes() internalcall.
31593
31594 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
31595
31596         * class.c: warn if a type can't be loaded.
31597
31598 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
31599
31600         * image.h: typedef MonoImageOpenStatus
31601         * types.h: removed unused file
31602         
31603 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
31604
31605         * icall.c: Enum_ToObject accepts enum value arguments.
31606
31607 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
31608
31609         * class.c: move initialization of properties, events and nested
31610         classes, so that they happen for interfaces, too.
31611
31612 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
31613
31614         * icall.c: cleanup some ugly casts in Array_SetValue*.
31615
31616 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
31617
31618         * icall.c: the values array fro enums is of the correct type, now.
31619         Implement (correctly) getFullName instead of assQualifiedName for
31620         MonoType.
31621         * reflection.h, reflection.c: added mono_type_get_name ().
31622
31623 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
31624
31625         * assembly.c, image.h: for each MonoImage, record from wich assembly
31626         it was loaded.
31627         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
31628         Make Type.Assembly work.
31629
31630 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
31631
31632         * debug-symfile.h: use char* instead of gpointer to avoid
31633         unnecessary casts.
31634
31635         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
31636
31637         * icall.c (ves_icall_InternalExecute): impl. FielSetter
31638         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
31639
31640 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
31641
31642         * icall.c (mono_message_init): impl. (code cleanup)
31643         (ves_icall_InternalExecute): impl. FieldGetter
31644
31645         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
31646         defined we call all (non-static)methods through the vtable. 
31647
31648 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
31649
31650         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
31651         finalizer even though the memory is still referenced (and the chunk of
31652         memory is not freed).
31653
31654 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
31655
31656         * assembly.c: fix brokeness.
31657
31658 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
31659
31660         * class.c: kill some warnings. Check explicit interface method
31661         implementation also without considering the namespace.
31662         Load also literal strings in static class data.
31663
31664 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
31665
31666         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
31667         (default_assembly_name_resolver): Make the resolver take the
31668         "base" directory where the assembly was originally defined, so we
31669         can load DLLs that are in the same directory as the assembly that
31670         is being referenced.
31671
31672 2002-03-28  Dick Porter  <dick@ximian.com>
31673
31674         * file-io.h: 
31675         * file-io.c:
31676         * socket-io.c: 
31677         * unicode.h: 
31678         * unicode.c: Warning cleanups
31679
31680 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
31681
31682         * object.h, reflection.h: use the correct type instead of MonoObject.
31683
31684 2002-03-28  Martin Baulig  <martin@gnome.org>
31685
31686         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
31687         (mono_debug_update_symbol_file): Initialize classes if necessary.
31688
31689 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
31690
31691         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
31692         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
31693
31694 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
31695
31696         * assembly.h: fix function prototype.
31697         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
31698         * mono-endian.h: use const cast.
31699
31700 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
31701
31702         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
31703
31704 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
31705
31706         * loader.c: don't assert when a typeref can't be loaded, give
31707         a chance to the runtime to trow an exception instead.
31708         * loader.h: fix warning.
31709
31710 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
31711
31712         * class.c (mono_class_proxy_vtable): added proxy support
31713
31714 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
31715
31716         * icall.c: removed last of PAL calls, added System.Environment
31717         * file-io.h, file-io.c: MonoIO implementation
31718         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
31719
31720 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
31721
31722         * appdomain.c: do not use the byte marker in ldstr table lookup.
31723         * debug-helpers.c: allow two ':' to separate class and method name.
31724         * object.c: allocate arrays bounds with the GC, too.
31725         * verify: add a few more checks.
31726
31727 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
31728
31729         * reflection.c: output also literal strings. Allocate parameter data
31730         with GC_malloc() (thanks, Martin, for catching this!).
31731
31732 2002-03-26  Martin Baulig  <martin@gnome.org>
31733
31734         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
31735         include the `this' offset in the `param_offsets'.
31736
31737 2002-03-25  Martin Baulig  <martin@gnome.org>
31738
31739         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
31740         mono_debug_get_class() function to get the classes. Added new
31741         relocation types for arrays and strings.
31742         (mono_debug_get_class): New static function to search in all
31743         referenced assemblies for a metadata token.
31744
31745         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
31746
31747 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
31748
31749         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
31750         hold gc-allocated objects. Make the string heap a stream like the
31751         others. Removed duplicated code when writing stream info.
31752         Added asserts to catch possible buffer overflows. Set the sorted map
31753         for tables that need sorting. Added some documentation.
31754
31755 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
31756
31757         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
31758         for interned strings and vtables.
31759
31760 2002-03-24  Martin Baulig  <martin@gnome.org>
31761
31762         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
31763         it in the array since it was created with g_slist_prepend().
31764
31765 2002-03-24  Martin Baulig  <martin@gnome.org>
31766
31767         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
31768         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
31769         (mono_debug_method_from_token): Renamed to
31770         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
31771         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
31772
31773         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
31774         relocation types.
31775
31776         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
31777
31778 2002-03-24  Martin Baulig  <martin@gnome.org>
31779
31780         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
31781         (mono_debug_method_from_token): New func.
31782
31783         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
31784         New interncall, calls mono_debug_local_type_from_signature().
31785         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
31786         calls mono_debug_method_from_token().
31787
31788 2002-03-23  Martin Baulig  <martin@gnome.org>
31789
31790         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
31791         specifies the number of bytes to be converted, not the array size.
31792         Return the number of chars, not the number of bytes.
31793         (ves_icall_iconv_get_chars): The `byteCount' argument
31794         specifies the number of bytes to be converted, not the array size.
31795
31796 2002-03-23  Martin Baulig  <martin@gnome.org>
31797
31798         * reflection.h (MonoReflectionSigHelper): New type.
31799
31800         * reflection.c (mono_reflection_sighelper_get_signature_local),
31801         (mono_reflection_sighelper_get_signature_local): New functions.
31802
31803         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
31804         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
31805         interncalls.
31806
31807 2002-03-23  Martin Baulig  <martin@gnome.org>
31808
31809         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
31810         is_writeable is set.
31811         (mono_raw_buffer_update): New function to write the modified map
31812         back to disk.
31813
31814         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
31815
31816         * debug-symfile.c (mono_debug_update_symbol_file): Call
31817         mono_raw_buffer_update() when done writing.
31818
31819 2002-03-23  Martin Baulig  <martin@gnome.org>
31820
31821         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
31822
31823         * debug-symfile.c: Added support for arguments and local variables.
31824
31825 2002-03-23  Dick Porter  <dick@ximian.com>
31826
31827         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
31828         protected by ifdefs, hence breaking the w32 build.
31829
31830 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31831
31832         * object.c: implement is_interned() the right way.
31833
31834 2002-03-21  Martin Baulig  <martin@gnome.org>
31835
31836         * debug-symfile.[ch]: New files to handle debugging information
31837         files. There's also support to dynamically update these symbol
31838         files to include machine dependent information.
31839
31840 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
31841
31842         * threads.c (mono_thread_create): new function to create thread
31843         from C
31844
31845 2002-03-20  Martin Baulig  <martin@gnome.org>
31846
31847         * icall.c (ves_icall_InternalInvoke): Create a new object if the
31848         method is a constructor.
31849         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
31850         points to ves_icall_InternalInvoke().
31851
31852 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
31853
31854         * file-io.c: Flush shouldn't throw exceptions.
31855
31856 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
31857
31858         * file-io.c: FileStream flush support; FileSetLength now
31859         restores file pointer.
31860
31861 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
31862
31863         * class.c: set image for pointer classes.
31864
31865 2002/03/19  Nick Drochak <ndrochak@gol.com>
31866
31867         * sysmath.c: Forgot one.
31868
31869 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
31870
31871         * sysmath.c: Avoid redefining existing names.
31872
31873 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
31874
31875         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
31876         handled by runtime as icall rather than dllimport from libm.so
31877         * file-io.c, file-io.h: fixed handle argument type.
31878
31879 2002-03-18  Dick Porter  <dick@ximian.com>
31880
31881         * reflection.c (mono_image_get_type_info): rename interface to
31882         iface, because of "#define interface struct" on windows.
31883
31884 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
31885
31886         * class.c, class.h: rename and export mono_ptr_class_get().
31887         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
31888         * reflection.c, reflection.h, icall.c: better/saner type name
31889         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
31890         method signatures.
31891
31892 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
31893
31894         * class.c (mono_class_init): removed hardcoded GHC_SLOT
31895
31896         * icall.c (ves_icall_InternalInvoke): impl.
31897
31898 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
31899
31900         * reflection.c: output the interface map table, too.
31901
31902 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
31903
31904         * class.c (class_compute_field_layout): separate computation of 
31905         static field layout
31906
31907 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
31908
31909         * icall.c: added System.Buffer support.
31910         * file-io.c: moved file icalls from PAL to FileStream.
31911
31912 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
31913
31914         * icall.c (ves_icall_System_Object_GetHashCode): impl.
31915
31916 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
31917
31918         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
31919
31920 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31921
31922         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
31923
31924 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
31925
31926         * debug-helpers.{c,h}: moved here from monograph some useful functions
31927         to locate a method by name/signature in a class or image. Included
31928         also a small and flexible IL disassembler.
31929
31930 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
31931
31932         * reflection.c: fixup tokens in methods with small header size, too.
31933
31934 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
31935
31936         * object.c (mono_string_to_utf8): remove assert(!error), instead
31937         print a warning. 
31938
31939 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
31940
31941         * icall.c: update to the new mono_Array_class_get interface.
31942
31943 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
31944
31945         * appdomain.c, object.c: Boehm-GC enable.
31946         * icall.c: make get_data_chunk() support split data requests.
31947         Ensure a class is initialized in more cases. Return only the first
31948         property found in GetProperties() or the compiler gets confused. 
31949         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
31950         * reflection.h, reflection.c: add fixup mechanism for field and method
31951         tokens. Initialize assembly->typeref in a single place. Output
31952         properties after events. Support custom attributes for events, too.
31953         Typo fix for paramter custom attrs.
31954
31955 2002-03-07  Martin Baulig  <martin@gnome.org>
31956
31957         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
31958
31959 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
31960
31961         * class.c (mono_array_class_get): fix. for multi. dim. arrays
31962
31963 2002-03-06  Martin Baulig  <martin@gnome.org>
31964
31965         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
31966         non-zero lower bounds. See testcases #F10-#F13.
31967
31968 2002-03-05  Martin Baulig  <martin@gnome.org>
31969
31970         * exception.c (mono_get_exception_argument_out_of_range): New exception.
31971
31972         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
31973         ves_icall_System_Array_GetValue(), only calculate the absolute array position
31974         here.
31975         (ves_icall_System_Array_SetValue): Likewise.
31976         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
31977         as argument and does the actual work. This function is used when copying a
31978         multi-dimensional array.
31979         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
31980         now do all the widening conversions of value types.
31981         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
31982
31983 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31984
31985         * class.c: remove some magic numbers and use the smbolic names,
31986         instead. Added init_events() to load event info at class init time.
31987         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
31988         and mono_metadata_methods_from_event().
31989         * reflection.h, reflection.c: added support for writing out the evnets
31990         related information.
31991
31992 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
31993
31994         * reflection.h, icall.c: use a different method (GetInterfaces)
31995         to gather interface info and add isbyref, isprimitive and
31996         ispointer to the ves_icall_get_type_info() return value.
31997
31998 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
31999
32000         * class.h: stared adding support for events.
32001         * icall.c: split find_members implementation. Added debug icall to get
32002         the address of an object.
32003         * reflection.c: handle TypeBuilders in mono_type_get_object().
32004
32005 2002-03-01  Martin Baulig  <martin@gnome.org>
32006
32007         * icall.c (ves_icall_System_Array_GetLength): This must throw an
32008         ArgumentOutOfRangeException(), not an ArgumentException().
32009         (ves_icall_System_Array_GetLowerBound): Likewise.
32010         (ves_icall_System_Array_GetValue): Improved argument checking.
32011         (ves_icall_System_Array_SetValue): Improved argument checking.
32012
32013 2002-03-01  Martin Baulig  <martin@gnome.org>
32014
32015         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
32016         called with invalid arguments rather than just dying with g_assert().
32017         (ves_icall_System_Array_SetValue): Likewise.
32018         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
32019         raise a NotImplementedException instead.
32020         (ves_icall_System_Array_GetLength): Added argument checking.
32021         (ves_icall_System_Array_GetLowerBound): Added argument checking.
32022
32023 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
32024
32025         * object.h (mono_assert): new macros mono_assert and
32026         mono_assert_not_reached
32027
32028 2002-02-28  Martin Baulig  <martin@gnome.org>
32029
32030         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
32031         and "System::String::IsInterned" to "System::String::_IsInterned".
32032
32033 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
32034
32035         * icall.c: remove hacks for typebuilder. Added icall to create a
32036         modified type from a tybebuilder.
32037         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
32038         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
32039         to create a backing MonoClass for a TypeBuilder.
32040
32041 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
32042
32043         * class.c, class.h: more refactoring of class init.
32044         Export mono_class_setup_mono_type() and mono_class_setup_parent().
32045
32046 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
32047
32048         * marshal.c, marshal.h: start of marshaling interface.
32049
32050 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
32051
32052         * icall.c: fix order in assembly qualified name icall.
32053
32054 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
32055
32056         * class.c: do not free str, since we store it in the hash table.
32057         * reflection.h: add label field to MonoILExceptionInfo.
32058         * reflection.c: handle references to more than one assembly. Handle
32059         case when there isn't a module created in the assembly.
32060
32061 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
32062
32063         * class.c: Fix typo. Start refactoring of class init code.
32064
32065 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
32066
32067         * appdomain.c: exit with 1 on error.
32068         * class.c: we already have the name in MonoClassField.
32069         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
32070         MonoStreamHeader instead of an offset of image->raw_metadata.
32071
32072 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
32073
32074         * appdomain.c (mono_init): Be even more descriptive about the error.
32075
32076 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
32077
32078         * appdomain.c: give the user an informative message when corlib can't
32079         be loaded.
32080
32081 2002-02-26  Martin Baulig  <martin@gnome.org>
32082
32083         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
32084         New icall to get the time zone data.
32085
32086 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
32087
32088         * reflection.c: set virtual and raw size of section correctly.
32089         * threads.c: transfer domain information to newly created threads.
32090
32091 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
32092
32093         * class.c: when instancing a class in a domain, load the default
32094         vaules for static fields from the constant table. Fix System.Enum to
32095         not be an enum.
32096         * icall.c: implement Object::GetType() internalcall. Implemented
32097         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
32098         Fixed checking of binding flags in find_members().
32099         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
32100         * reflection.c: handle enumerations when writing to the constant
32101         table. Use a different object cache for types.
32102
32103
32104 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
32105
32106         * object.c (mono_object_isinst): fix for arrays
32107
32108         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
32109
32110 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
32111
32112         * object.c: don't use mprotect ()  and fix intern pool hash table
32113         lookup for big endian systems.
32114
32115 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
32116
32117         * icall.c: change type_is_subtype_of () signature.
32118
32119 2002-02-21  Mark Crichton  <crichton@gimp.org>
32120
32121         * rand.c, rand.h: Added random number generator for
32122         System.Security.Cryptography classes.
32123
32124         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
32125
32126         * icall.c: Added System.Security.Cryptography calls.
32127
32128 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
32129
32130         * class.c, icall.c, metadata.c: better support for pointer types.
32131         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
32132         * reflection.c: Add support for getting custom attrs for properties
32133         and simplify some code.
32134
32135 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
32136
32137         * icall.c: change getToken () and add custom attribute GetBlob()helper
32138         method.
32139         * reflection.h: add custom attrs array to the reflection builder structures.
32140         * reflection.c: encode and emit custom attributes for all the relevant
32141         reflection objects. Cache fieldref and methodref tokens. Change
32142         mono_image_create_token() interface to take a MonoDynamicAssembly.
32143         More complete custom attributes decoder. Load custom attributes for
32144         Assembly, Field, Method and Constructor objects, too. Make the
32145         returned array an Attribute[] one, not object[]. Added
32146         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
32147         custom attribute constructor.
32148
32149 2002-02-20  Dick Porter  <dick@ximian.com>
32150
32151         * icall.c:
32152         * rawbuffer.c:
32153         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
32154         problem code out for now).
32155
32156 2002-02-19  Radek Doulik  <rodo@ximian.com>
32157
32158         * object.c (mono_ldstr): use hash table to avoid multiple swapping
32159
32160 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
32161
32162         * icall.c: register the GetCustomAttributes method.
32163         * object.c, object.h: add mono_string_new_len ().
32164         * reflection.h, reflection.c: added mono_runtime_invoke(),
32165         mono_install_runtime_invoke(). Added
32166         mono_reflection_get_custom_attrs () to load custom attributes and
32167         create the attribute objects.
32168
32169 2002-02-19  Dick Porter  <dick@ximian.com>
32170         * threads-dummy-types.c:
32171         * threads-dummy-types.h:
32172         * threads-dummy.c:
32173         * threads-dummy.h:
32174         * threads-pthread-types.c:
32175         * threads-pthread-types.h:
32176         * threads-pthread.c:
32177         * threads-pthread.h:  Deleted obsolete files
32178
32179 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
32180
32181         * class.c (mono_class_vtable): runtime init the class when we
32182         allocate static class data.
32183
32184         * icall.c (ves_icall_System_Array_SetValue): check for null values.
32185
32186         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
32187         and String - but we will need generic marshalling support in the
32188         future. 
32189         (mono_init): set the domain name in a ms compatible way
32190
32191         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
32192         String[].
32193
32194 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
32195
32196         * object.c (mono_array_clone): use alloca() instead of g_malloc  
32197         for sizes
32198
32199         * appdomain.c (mono_domain_unload): impl.
32200
32201 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
32202
32203         * appdomain.c, object.c: fix intern pool implementation.
32204         * class.c: fix alignment code.
32205
32206 2002-02-16  Radek Doulik  <rodo@ximian.com>
32207
32208         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
32209         and s2 > s1, just copy lower bytes to be compatible with little
32210         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
32211         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
32212
32213         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
32214         force big_endian to be 1 for big endian machines 
32215         (ves_icall_iconv_new_decoder): ditto
32216
32217 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
32218
32219         * socket-io.c (convert_sockopt_level_and_name): If the system
32220         doesn't define SOL_IP or SOL_TCP, get them by hand using
32221         getprotobyname() and caching the values (because this could be a
32222         slow operation).
32223         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
32224         Use the appropriate struct when the system does support it. Ie,
32225         not all systems have struct ip_mreqn so use struct ip_mreq when
32226         appropriate.
32227
32228 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
32229
32230         * reflection.c: handle finally clauses.
32231
32232 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
32233
32234         * socket-io.c: use g_snprintf() instead of snprintf.
32235
32236 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
32237
32238         * reflection.c (mono_param_get_objects): Cast second argument to
32239         mono_method_get_param_names to a const char** to silence the
32240         compiler warning.
32241
32242         * appdomain.c (mono_domain_assembly_open): Put parens around the
32243         truth statement in the for-loop.
32244
32245         * unicode.c (iconv_convert): Got rid of a compiler warning about
32246         int i being unused when the system has a new iconv.
32247         (iconv_get_length): Same.
32248
32249         * image.c (load_class_names): Cast the second argument to
32250         g_hash_table_insert() to char* to hush compiler warnings about the
32251         arg being a const.
32252         (mono_image_open): Same here.
32253
32254         * socket-io.c: Don't conditionally include sys/filio.h or
32255         sys/sockio.h here anymore since we now get them from
32256         io-layer/io-layer.h
32257         (inet_pton): If the system doesn't support inet_aton, implement
32258         using inet_addr and also #define INADDR_NONE if it isn't defined
32259         by the system.
32260
32261 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
32262
32263         * metadata.c, metadata.h: added function to get packing and size info
32264         of a typedef.
32265         * reflection.h, reflection.c: handle field RVA data. Save info about
32266         the table layout if needed. Assign typedef indexes to all the types
32267         before dumping the info about them to avoid forward reference problems.
32268
32269 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
32270
32271         * socket-io.c (convert_sockopt_level_and_name): ifdef
32272         SO_ACCEPTCONN because it is not defined on my system (old debian)
32273
32274 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
32275
32276         * opcode.c: use stddef.h to get NULL.
32277
32278 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
32279
32280         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
32281         for FIONBIO, FIONREAD and SIOCATMARK.
32282         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
32283         define INADDR_NONE and besides, inet_addr() is deprecated and
32284         should not be used. Use inet_pton() instead - it also has the
32285         added bonus that it can easily handle IPv6 addresses as well.
32286         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
32287
32288 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
32289
32290         * decimal.c: remove _MSC_VER conditional.
32291
32292 2002-02-13  Dick Porter  <dick@ximian.com>
32293
32294         * socket-io.c: 
32295         * icall.c: Internal calls for Blocking, Select, Shutdown,
32296         GetSocketOption and SetSocketOption
32297
32298 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
32299
32300         * assembly.cs: better resolver: use it instead of some kludgy
32301         code.
32302
32303 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
32304
32305         * reflection.c: the best way to speed-up the compiler is to avoid
32306         infinite loops.
32307
32308 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
32309
32310         * class.c (mono_class_vtable): changed the object layout
32311         (obj->vtable->class). 
32312         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
32313
32314 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
32315
32316         * assembly.c: look for assemblies in the assembly dir, too.
32317
32318 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
32319
32320         * class.c: fix thinko in mono_class_from_type().
32321
32322 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
32323
32324         * exception.h, exception.c: added TypeLoadException.
32325         * object.h, object.c: added mono_array_clone ().
32326         * icall.c: handle throwOnError in AssemblyGetType().
32327         Added Array.Clone().
32328         * opcode.h, opcode.c: use a single value for the opcode val.
32329         Compile fix for non-gcc compilers.
32330
32331 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
32332
32333         * opcodes.c, opcodes.h: export interesting info about opcodes.
32334
32335 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
32336
32337         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
32338         icalls. 
32339
32340         * class.c (class_compute_field_layout): set element_class for enums
32341         (mono_class_create_from_typedef): set element_class for normal classes
32342
32343         * icall.c (ves_icall_System_Enum_get_value): impl.
32344
32345         * class.c (mono_class_create_from_typedef): do not set valuetype
32346         flag for System.ValueType and System.Enum
32347
32348 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
32349
32350         * unicode.c (iconv_convert): fix big endian problem.
32351
32352 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
32353
32354         * class.c: add asserts if we are ever going to scribble over memory.
32355         * socket-io.c: not all systems have AF_IRDA defined.
32356
32357 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
32358
32359         * class.c (class_compute_field_layout): do not consider static
32360         fields to compute alignment
32361
32362 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
32363
32364         * appdomain.c (mono_appdomain_get): impl.
32365         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
32366
32367 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
32368
32369         * icall.c: ignore "file://" prefix when loading an assembly.
32370
32371 2002-01-23  Dick Porter  <dick@ximian.com>
32372
32373         * socket-io.c:
32374         * icall.c:
32375         * Makefile.am: Added socket support
32376
32377 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
32378
32379         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
32380         code back.  This should return the assemblies that are loaded by
32381         the runtime on behalf of an application domain. 
32382
32383         The current implementation is still broken, it just returns every
32384         assembly loaded, but until we get real applications domain this
32385         will do.
32386
32387 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
32388
32389         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
32390         AppDomain object.
32391
32392 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
32393
32394         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
32395         the mono_class_from_name lookup.
32396         (ves_icall_get_parameter_info): ditto.
32397         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
32398         method.
32399         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
32400
32401 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
32402
32403         * class.c: load also nested classes on class init.
32404         System.ValueType instance methods gets passed boxed
32405         values, unless methods in derived classed that get a pointer to the
32406         data.
32407         * icall.c: use better name parsing code in GetType().
32408         * image.c, image.h: add mono_image_loaded ().
32409         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
32410         * reflection.c, reflection.h: added mono_reflection_parse_type().
32411
32412 2002-01-22  Veronica De Santis <veron78@interfree.it>
32413
32414         * icall.c : Added mapping of internal calls for Manual and Auto reset events
32415         * threads.c : Added the implementation of internal calls for events
32416         * threads.h : Added prototypes of internal calls for events
32417         
32418 2002-01-21  Radek Doulik  <rodo@ximian.com>
32419
32420         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
32421
32422 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
32423
32424         * class.c (mono_class_init): set min_align to 1 (instead of 0)
32425         (mono_class_value_size): use min_align
32426
32427 2002-01-20  Dick Porter  <dick@ximian.com>
32428
32429         * threads.h:
32430         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
32431         so it compiles on w32.
32432
32433 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
32434
32435         * metadata.c (mono_type_stack_size): impl.
32436
32437         * class.c (mono_class_get_field): impl. memberref token
32438
32439 2002-01-16 Veronica De Santis <veron78@@interfree.it>
32440
32441         * icall.h : Added the internal calls mapping for CreateMutex_internal
32442                     and ReleaseMutex_internal.
32443         * threads.h : Added the prototype of mutexes internal calls.
32444         * threads.c : Added the implementations of mutexes internal calls.
32445
32446 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
32447
32448         * metaparse.h: removed unused file.
32449         * reflection.c, reflection.h: added stream_data_align () function 
32450         to align data in streams and keep stream aligned. Add support for
32451         exception support in method headers.
32452
32453 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
32454
32455         * unicode.c: make iconv_convert () return the number of bytess written
32456         in the output buffer.
32457
32458 2002-01-15  Dick Porter  <dick@ximian.com>
32459         * threads.c: Make the runtime's idea of infinite timeouts coincide
32460         with the class library's
32461
32462         Fix a particularly egregious bug in mono_thread_cleanup(). That
32463         code was so utterly bogus it must have been written on a Monday.
32464
32465 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
32466
32467         * reflection.h: add subtypes field to TypeBuilder.
32468         * reflection.c: encode constants for literal fields.
32469         Handle subtypes. Fix user string token (and add a zero byte)
32470         at the end.
32471         
32472 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
32473
32474         * class.c (mono_class_init): bug fix: assign slot numbers for
32475         abstract methods.
32476
32477 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
32478
32479         * reflection.c: don't try to output a code RVA for abstract methods.
32480         Small fixes for method header format. Output parameter info to the
32481         ParamDef table. Save method overriding info to MethodImpl table.
32482         Fix property support. Allow typedef.extends to be a type in the
32483         building assembly.
32484         * verify.c: fix off-by-one error.
32485
32486 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
32487
32488         * class.c: fix mono_class_from_mono_type () for szarray types.
32489         Remove unused cache check in mono_class_from_type_spec().
32490         * icall.c: *type_from_name () functions handle simple arrays and byref.
32491         * reflection.c: handle byref and szarray types. Handle methods without
32492         body (gets P/Invoke compilation working). Handle types and fields in
32493         get_token ().
32494         * reflection.h: add rank to MonoTypeInfo.
32495
32496 2002-01-10  Dick Porter  <dick@ximian.com>
32497
32498         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
32499         internal calls
32500
32501 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
32502
32503         * icall.c: initialize class in type_from_handle ().
32504         Loop also in parent classes for get_method ().
32505         * reflection.c: properly encode class and valuetype types.
32506         Start on encoding TypeBuilder types. Handle fieldrefs.
32507         Use correct length when registering a user string.
32508         Handle ConstructorBuilder and MonoMethod in get_token ().
32509         Make mono_type_get_object () aware of cached types.
32510         * object.c: back out change to mono_string_new ().
32511
32512 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
32513         * object.c: mono_string_new should return a NULL when the string 
32514         passed in is NULL -- not try to deference it.
32515         
32516 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
32517
32518         * icall.c: hack to make IsSubType work for TypeBuilders.
32519         * reflection.c: emit constructors before methods.
32520         Retrieve param names in mono_param_get_objects().
32521
32522 2002/01/05  Nick Drochak  <ndrochak@gol.com>
32523
32524         * Makefile.am: fix list of headers and sources so automake 1.5
32525         doesn't complain. Removed \# at end of list.
32526
32527 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
32528
32529         * reflection.c: get token for a method ref. Set return type of
32530         constructor to void.
32531         * loader.c: debug message.
32532         * class.c: typo fix.
32533
32534 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
32535
32536         * icall.c: fix array init with rank > 1. FindMembers
32537         loops in parent class as well.
32538         * image.c: do not insert nested types in name cache.
32539         * reflection.c: warning fix.
32540         * reflection.h: add override method (for interface impl).
32541
32542 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
32543
32544         * metadata.c: fix customattr decoding.
32545
32546 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
32547
32548         * rawbuffer.cs: Added native Win32 implementation, avoids using
32549         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
32550
32551 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
32552
32553         * class.c: make the low-level routines handle the cache.
32554
32555 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
32556
32557         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
32558
32559 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
32560
32561         * class.c: fix mono_array_element_size() for objects.
32562         * class.h, class.c: add properties to MonoClass and load them
32563         at init time.
32564         * icall.c: check with isinst() when assigning a value to an array
32565         instead of requiring the classes to match exactly.
32566         Implemented icall for System.Type::GetType().
32567         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
32568         enums. Handle bindingflags when looking for methods and fields.
32569         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
32570         and mono_metadata_methods_from_property().
32571         * reflection.h, reflection.c: added structures for propreties,
32572         parameters and enums. Implemented mono_property_get_object() and
32573         mono_param_get_objects().
32574
32575 2001-12-18  Dick Porter  <dick@ximian.com>
32576
32577         * file-io.c: Use mono_string_to_utf16() instead of
32578         mono_string_chars()
32579
32580         * object.c: Added mono_string_to_utf16(), which copies the non
32581         NULL-terminated MonoString into a new double-null-terminated
32582         buffer.
32583
32584 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
32585
32586         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
32587
32588 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
32589
32590         * file-io.c: raise exceptions if handle is invalid.
32591
32592 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
32593
32594         * assembly.c: yet another check for mscorlib.
32595         * class.c, class.h: load nesting info for classes.
32596         * icall.c: many new functions to support the Reflection classes.
32597         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
32598         * reflection.h, reflection.c: mono_image_create_token(),
32599         mono_assembly_get_object(), mono_type_get_object(),
32600         mono_method_get_object(), mono_field_get_object(): methods to return
32601         objects that parallel the C representation of assemblies, types,
32602         methods, fields.
32603
32604 2001-12-11  Dick Porter  <dick@ximian.com>
32605
32606         * icall.c:
32607         * file-io.c: Internal calls for file IO.
32608
32609 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
32610
32611         * tabledefs.h: missing FileAttributes.
32612         * verify.h, verify.c: use is_valid_string () to simplify and check for
32613         valid strings more correctly. Fix warnings and speeling.
32614         Check more tables: Filed, File, ModuleRef, StandAloneSig.
32615         Check code: branches, maxstack, method calls.
32616
32617 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
32618
32619         * object.c (mono_object_allocate): removed static, so that the jit
32620         can allocate value types.
32621
32622         * icall.c (ves_icall_System_DateTime_GetNow): impl.
32623
32624 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
32625
32626         * class.c: init enum types right away and register the
32627         token->MonoClass map in mono_class_create_from_typedef ().
32628         * verify.h, verify.c: first cut of the verifier.
32629         * pedump.c: add --verify switch to verify metadata tables.
32630         * tabledefs.h: add some missing enums.
32631
32632 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
32633
32634         * class.c (mono_install_runtime_class_init): impl.
32635         (mono_class_init): renamed mono_class_metadata_init to
32636         mono_class_init, also removed the metadata_inited flag
32637
32638         * object.c (mono_object_isinst): use faster algorithm
32639
32640 2001-11-30  Radek Doulik  <rodo@ximian.com>
32641
32642         * mono-endian.h: reverted last change
32643         added function prototypes
32644
32645         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
32646         add mono-endian.c back
32647
32648         * mono-endian.c: returned back, as Paolo pointed out, it's needed
32649         for unaligned access, I've mistaked it with endianess. I am
32650         sorry.
32651         (mono_read16): fix reverted endianess
32652         (mono_read64): ditto
32653         (mono_read32): ditto
32654
32655 2001-11-30  Dick Porter  <dick@ximian.com>
32656
32657         * exception.c: Implement mono_exception_from_name()
32658
32659 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
32660
32661         * metadata.h, metadata.c: remove params_size and locals_size and their
32662         calculation from the metadata code: they are only usefult to the
32663         interp.
32664
32665 2001-11-29  Radek Doulik  <rodo@ximian.com>
32666
32667         * object.c (mono_ldstr): swap bytes here, it's probably not the
32668         best place, but works for me now, I'll redo it once I know mono
32669         better, also note that I add PROT_WRITE and don't reset back, also
32670         note that it's only affects big endians, so x86 should be OK
32671
32672         * mono-endian.h (read16): use just glib macros for both endians
32673
32674         * mono-endian.c: removed as glib macros are used in in
32675         mono-endian.h so we don't need to care about endianess for read
32676         macros as glib does that for us already
32677
32678 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
32679
32680         * class.h, class.h: take minimum alignment into consideration so
32681         that the fields of a class remain aligned also when in an array.
32682
32683 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
32684
32685         * loader.h, loader.c: add mono_method_get_param_names().
32686         * class.c: 0-init class fields.
32687
32688 2001-11-26  Dick Porter  <dick@ximian.com>
32689
32690         * icall.c:
32691         * threads-types.h:
32692         * threads.c: New file that handles System.Threading on all platforms
32693
32694         * object.c: 
32695         * object.h: Remove the synchronisation struct from MonoObject,
32696         replace it with a pointer that gets initialised on demand
32697
32698         * Makefile.am: Replace all the system-specific threading code with
32699         a single file that uses the new wrapper library
32700
32701 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
32702
32703         * class.c, class.h: add mono_install_trampoline() so that the runtime
32704         can register a function to create a trampoline: removes the ugly
32705         requirement that a runtime needed to export arch_create_jit_trampoline.
32706         * object.h, object.c: added mono_install_handler() so that the runtime
32707         can install an handler for exceptions generated in C code (with
32708         mono_raise_exception()). Added C struct for System.Delegate.
32709         * pedump.c: removed arch_create_jit_trampoline.
32710         * reflection.c: some cleanups to allow registering user strings and
32711         later getting a token for methodrefs and fieldrefs before the assembly
32712         is built.
32713         * row-indexes.h: updates and fixes from the new ECMA specs.
32714
32715 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
32716
32717         * class.h, class.c: add enum_basetype field to MonoClass.
32718         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
32719         to get index in the constant table reated to a field, param or
32720         property.
32721         * reflection.h, reflection.c: handle constructors. Set public-key and
32722         version number of the built assembly to 0.
32723         * row-indexes.h: update from new ECMA spec.
32724
32725 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
32726
32727         * class.h, class.c: add a max_interface_id to MonoClass.
32728         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
32729         since it's used to do that. Added mono_type_type_from_obj().
32730         Make GetType() return NULL instead of segfaulting if the type was not
32731         found. Handle simple arrays in assQualifiedName.
32732         * object.h: add a struct to represent an Exception.
32733         * reflection.c: output call convention in method signature.
32734         Add code to support P/Invoke methods and fixed offsets for fields.
32735
32736 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
32737
32738         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
32739         the value.
32740         * icall.c: use mono_array_addr instead of array->vector: fixes the
32741         reflection image writing.
32742         * reflection.c: init call convention byte to 0 in method signature.
32743         Encode the property signature. Don't output property-related methods
32744         twice. Really process the properties for a type (don't cast a field to
32745         a property, my mom always told me that).
32746         Fix 64 bit issues in pointer alignment in a different and more
32747         readable way.
32748
32749 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
32750
32751         * loader.h: Removed type class from MonoDefaults, added monotype
32752
32753         * loader.c: Loaded MonoType, removed loading of Type
32754
32755         * icall.c (my_mono_new_object): Now returns a System.MonoType,
32756         and fills in System.Type._impl with a RuntimeTypeHandle rather
32757         than the actual MonoClass *
32758
32759         (ves_icall_type_from_handle): change from type_class to
32760         monotype_class
32761
32762         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
32763         implemented
32764
32765         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
32766         implemented
32767
32768         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
32769
32770         (ves_icall_System_Reflection_Assembly_GetType): implemented
32771
32772         (ves_icall_System_MonoType_assQualifiedName): implemented
32773
32774         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
32775
32776 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
32777
32778         * assembly.c (mono_assembly_open): Implement a cache for the
32779         assemblies. 
32780
32781         (mono_assembly_close): only destroy the assembly when the last
32782         reference is gone.
32783         
32784 2001-11-09  Dick Porter  <dick@ximian.com>
32785
32786         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
32787
32788 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
32789
32790         * class.c (mono_class_metadata_init): bug fix: compute the right slot
32791
32792 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
32793
32794         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
32795         from Martin Weindel.
32796         * object.h: add mono_string_chars ().
32797
32798 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
32799
32800         * reflection.c (build_compressed_metadata): Eliminates warnings
32801         and uses 64-bit clean code.
32802
32803         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
32804         (mono_type_equal): Change signature to eliminate warnings.
32805
32806 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
32807
32808         * icall.c, loader.c: remove the internalcall array constructors.
32809         Changes to match the new MonoArray structure.
32810         * object.h, object.c: an array object doesn't allocate an extra
32811         vector. Add mono_array_new_full () to create jagged arrays easily.
32812
32813 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
32814
32815         * metadata.h, metadata.c: add mono_metadata_field_info () to
32816         retreive all the info about a field from vairous tables.
32817         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
32818         * class.h, class.c: augment MonoClassField with more info.
32819         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
32820         policy and load a field's RVA if needed.
32821
32822 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
32823
32824         * class.c (mono_class_metadata_init): create a trampoline for all
32825         virtual functions instead of actually compiling them.
32826
32827 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
32828
32829         * class.h, class.c: include name in MonoClassField.
32830         * class.c: fix fundamental type of System.Object and System.String.
32831         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
32832         tokens in ldtoken.
32833         * icall.c: remove internalcalls for the Reflection stuff that is now
32834         done in C# code.
32835         * loader.c: mono_field_from_memberref () implementation.
32836         * mono-endian.c: thinko (s/struct/union/g).
32837         * object.c, object.h: make the mono_string_* prototypes actually use
32838         MonoString instead of MonoObject.
32839         * reflection.c, reflection.h: updates for changes in the reflection
32840         code in corlib: we use C structures that map to the actual C# classes.
32841         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
32842         fat method header if needed and use the info from the ILGenerator for
32843         methods. Handle fields in types. Misc fixes.
32844
32845 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
32846
32847         * class.c (mono_class_metadata_init): bug fix: always allocate
32848         space for static class data
32849
32850 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
32851
32852         * class.c (mono_compute_relative_numbering): use relative
32853         numbering to support fast runtime type checks.
32854
32855 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
32856
32857         * class.c (mono_class_create_from_typeref): added debugging output
32858         to print class name when MonoDummy is returned instead of real class
32859
32860 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
32861
32862         * class.c (mono_class_metadata_init): interface offset table now
32863         contains pointers into the vtable - this is more efficient for the jit
32864
32865 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
32866
32867         * class.c (mono_class_metadata_init): use a temporary vtable (the
32868         old algorithm only worked for the interpreter, but not for the jit)
32869
32870 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
32871
32872         * loader.c (method_from_memberref): use mono_class_get to get the
32873         class of an array instead of using System.Array directly.
32874         (mono_get_method): also add MEMBERREF methods to the method cache
32875         which usefull for arrays.
32876
32877 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
32878
32879         * pedump.c (arch_compile_method): added to compute vtable entry
32880
32881         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
32882         number of interfaces.
32883         
32884         * class.h: merged MonoArrayClass into MonoClass
32885
32886         * class.c (mono_class_create_from_typedef): compute the vtable size and
32887         allocate space to include the vtable inside MonoClass
32888         (mono_class_metadata_init): initialize the vtable
32889
32890 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
32891
32892         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
32893         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
32894         * image.c: endian fixes by Laurent Rioux.
32895         * object.h, object.c: rename MonoStringObject to MonoString and
32896         MonoArrayObject to MonoArray. Change some function names to conform to
32897         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
32898         guint16* as first argument, so don't use char*.
32899         Provide macros to do the interesting things on arrays in a portable way.
32900         * threads-pthread.c: updates for the API changes and #include <sched.h>
32901         (required for sched_yield()).
32902         * icall.c: updates for the API changes above.
32903         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
32904         platforms that need them.
32905
32906 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
32907
32908         * class.c: set the correct type for all the fundamental
32909         type when loading the class.
32910
32911 2001-10-05  Dick Porter  <dick@ximian.com>
32912
32913         * threads-pthread.c (pthread_mutex_timedlock): Simple
32914         compatibility version for C libraries that lack this call.
32915
32916 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
32917
32918         * class.c: MonoTypes stored in MonoClass are stored as
32919         fundamental MonoTypes when the class represents a
32920         fundamental type (System.Int32, ...).
32921         The TypeHandle return by ldtoken is a MonoType*.
32922         * icall.c: ves_icall_get_data_chunk () write out all the
32923         PE/COFF stuff. Implement ves_icall_define_method (),
32924         ves_icall_set_method_body (), ves_icall_type_from_handle ().
32925         * image.c: properly skip unknown streams.
32926         * loader.h, loader.c: add type_class to mono_defaults.
32927         * metadata.c, metadata.h: export compute_size () as
32928         mono_metadata_compute_size () with a better interface.
32929         Typo and C&P fixes.
32930         * pedump.c: don't try to print the entry point RVA if there is no entry point.
32931         * reflection.c, reflection.h: many cleanups, fixes, output method
32932         signatures and headers, typedef and typeref info, compress the metadata
32933         tables, output all the heap streams, cli header etc.
32934         * row-indexes.h: typo fixes.
32935
32936 2001-10-04  Dick Porter  <dick@ximian.com>
32937
32938         * object.h: Add a synchronisation mutex struct to MonoObject
32939
32940         * object.c (mono_new_object): Initialise the object
32941         synchronisation mutexes
32942
32943         * icall.c: System.Threading.Monitor internal calls
32944         
32945         * threads-pthread.h:
32946         * threads-pthread.c: System.Threading.Monitor internal calls
32947
32948         * threads-types.h: New file, includes the system-specific thread
32949         structures
32950         
32951         * threads-pthread-types.h:
32952         * threads-pthread-types.c: New files, handle pthread-specific
32953         synchronisation types
32954
32955         * threads-dummy-types.h: 
32956         * threads-dummy-types.c: New files of dummy support for
32957         thread-specific types
32958
32959         * metadata.c:
32960         * image.c:
32961         * pedump.c: include mono-endian.h not endian.h
32962         
32963         * Makefile.am: More threads files.
32964         Name mono-endian.h not endian.h
32965
32966 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
32967
32968         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
32969         stuff and implement a few more bits.
32970         * icall.c: a field needs to be dereferenced twice. Do not use the same
32971         name for two variables in the same scope.
32972         * image.c, image.h: cleanups.
32973
32974 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
32975
32976         * class.c (mono_class_metadata_init): bug fix: compute the right size
32977
32978 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
32979
32980         * icall.c: implemented some of the Reflection internalcalls.
32981         * image.c, image.h: start writing out the PE/COFF image.
32982         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
32983         that does the reverse than decode_blob_size ().
32984         * object.c: use mono_metadata_encode_value (). Move here
32985         temporary implementation of mono_string_to_utf8 ().
32986         * rawbuffer.c: make malloc_map static.
32987
32988 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
32989
32990         * metadata.c: fix type comparison for arrays.
32991         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
32992         Added a couple of new classes to monodefaults.
32993         * icall.c: added a couple of Reflection-related internalcalls.
32994         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
32995         Added a byval_arg MonoType to MonoClass.
32996
32997 2001-09-28  Dick Porter  <dick@ximian.com>
32998
32999         * icall.c:
33000         * threads-pthread.h: 
33001         * threads-pthread.c: Implemented internal calls for
33002         LocalDataStoreSlot operations.  Applied mutexes around all shared
33003         data.  Reworked the thread creation and Start() operations to
33004         avoid a race condition.
33005         
33006         * threads-dummy.h:
33007         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
33008
33009 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
33010
33011         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
33012
33013 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
33014
33015         * class.c, loader.c: warn and return NULL instead of erroring out.
33016         * icall.c: added System.AppDomain::getCurDomain().
33017         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
33018
33019 2001-09-25  Dick Porter  <dick@ximian.com>
33020
33021         * threads-pthread.h:
33022         * threads-pthread.c: Implemented timed thread joining and added
33023         System.Threading.Thread::Join_internal internal call
33024
33025         * icall.c: Added System.Threading.Thread::Join_internal internal call
33026
33027         * threads-dummy.h:
33028         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
33029
33030 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
33031
33032         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
33033         mono_string_intern () to implement the semantics of the ldstr opcode
33034         and the interning of System.Strings.
33035         * icall.c: provide hooks to make String::IsIntern and String::Intern
33036         internalcalls.
33037
33038 2001-09-23  Dick Porter  <dick@ximian.com>
33039
33040         * threads-dummy.c: 
33041         * threads-dummy.h: New files of dummy threading routines
33042
33043         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
33044         support code based on system specifics
33045
33046         Rename PTHREAD_LIBS to THREAD_LIBS
33047         
33048 2001-09-23  Dick Porter  <dick@ximian.com>
33049
33050         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
33051         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
33052         internal calls.
33053         (mono_thread_init): Set up a Thread object instance to return when
33054         the main thread calls Thread.CurrentThread
33055         (mono_thread_cleanup): Wait for all subthreads to exit
33056
33057         * icall.c: New internal calls for System.Threading.Thread::Sleep
33058         (including Schedule) and CurrentThread
33059
33060         * threads.h: New file, to insulate thread-specific stuff from the
33061         rest of the code
33062
33063 2001-09-21  Dick Porter  <dick@ximian.com>
33064
33065         * threads-pthread.h: 
33066         * threads-pthread.c: New file, for handling pthreads-style
33067         threading support.  Start() now starts a new thread and executes
33068         the ThreadStart delegate instance.
33069
33070         * icall.c: Added the internalcall for
33071         System.Threading.Thread::Start_internal
33072
33073         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
33074
33075 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
33076
33077         * loader.c: work around the different signatures for delegates
33078         constructors csc generates in compiled code vs the ones compiled in mscorlib.
33079
33080 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
33081
33082         * class.h, class.c: add mono_class_get_field_from_name ().
33083         * *: Fix C comments and other ANSI C issues.
33084
33085 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
33086
33087         * endian.h, assembly.c: fix some endianness issues.
33088
33089 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
33090
33091         * loader.h, load.c: add delegate_class to mono_defaults.
33092         Handle runtime provided methods in mono_get_method ().
33093
33094 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
33095
33096         * loader.c (mono_get_method): use pinvoke for internal call
33097
33098         * icall.c: use pinvoke for internal call
33099
33100         * loader.c (method_from_memberref): set the method name
33101
33102 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
33103
33104         * metadata.c: help the compiler generate better code for
33105         mono_class_from_mono_type ().
33106
33107 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
33108
33109         * class.c (mono_class_metadata_init): delayed computing of the
33110         class size to mono_class_metadata_init ()
33111
33112 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
33113
33114         * class.c, class.h: add an interfaces member to MonoClass.
33115         * image.c, image.h: add assembly_name field to MonoImage
33116         from the assembly table.
33117         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
33118
33119 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
33120
33121         * class.c: Handle Array in mono_class_from_mono_type ().
33122         * metadata.c, pedump.c: some endian fixes.
33123
33124 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
33125
33126         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
33127         * metadata.c: fix small problem introduced with the latest commit.
33128
33129 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
33130
33131         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
33132         We don't need a MonoMetadata pointer anymore to compare signatures in
33133         mono_metadata_signature_equal (), update callers.
33134         Reduced memory usage an number of allocations for MonoMethodHeader and
33135         MonoMethodSignature.
33136
33137 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
33138
33139         * metadata.c: added compare for szarray.
33140
33141 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
33142
33143         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
33144         and add a couple more types to it and mono_defaults. Give an hint on
33145         classes that need implementing in our corlib and are referenced
33146         in mscorlib.
33147
33148 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
33149
33150         * class.h, class.c: keep track if a class is also an Enum.
33151         * loader.c: Implement a couple more types for use in libffi
33152         marshalling. Gives better diagnostics when failing to dlopen
33153         a library. Set method->klass for P/Invoke methods, too.
33154
33155 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
33156
33157         * class.c, class.h: add a MonoType this_arg to MonoClass that
33158         represents a pointer to an object of the class' type that
33159         can be used by the interpreter and later the type cache.
33160         Add best guess alignment info for valuetype objects.
33161
33162 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
33163
33164         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
33165         into MonoType: one less level of indirection and allocation and
33166         simplifies quite a bit of code. Added cache for MonoTypes that are
33167         used frequently, so that we don't need to allocate them all the time.
33168
33169 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
33170
33171         * class.c (mono_class_create_from_typedef): System.Enum is also a
33172         value type, although it does not derive from System.ValueType
33173         (maybe a bug in the ms compiler?)
33174
33175         * metadata.c (mono_type_size): return the right size for value types
33176
33177         * loader.c (mono_get_method): only initialize method header if not abstract
33178
33179         * class.c (mono_class_from_mono_type): use mono_default values. 
33180
33181 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
33182
33183         * *: use MonoClass pointers instead of <type_tokens>
33184         
33185         * class.h: new flag: metadata_inited.
33186
33187         * class.c (mono_class_metadata_init): impl.
33188         (mono_class_instance_size): impl.
33189         (mono_class_data_size): impl.
33190
33191 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
33192
33193         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
33194         MonoClass now has the name and name_space fields. 
33195         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
33196         mono_get_method () takes and optional MonoClass as argument.
33197         Removed mono_typedef_from_name() and added mono_class_token_from_name()
33198         instead that takes advantage of a map from class names to typedef
33199         tokens in MonoImage.
33200
33201 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
33202
33203         * metadata.c: zero is not a valid alignment boundary.
33204         Merge MONO_TYPE_VOID in default decoding code.
33205
33206 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
33207
33208         * image.h: merged MonoMetadata into MonoImage
33209
33210         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
33211         identify the type of elements.
33212
33213 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
33214
33215         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
33216         * cil-coff.h: split MonoMSDOSHeader and add size info.
33217         * image.c: add some consistency checks.
33218         * metadata.c: fix row size computation: one programmer
33219         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
33220         add explanation for the locator routine.
33221         Fix decoding of size in method header.
33222         
33223 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
33224
33225         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
33226         (g_concat_dir_and_file): Bring g_concat_dir_and_file
33227         function from gnome-libs.  This uses the right path separator
33228         based on the OS, and also works around a bug in some systems where
33229         a double slash is not allowed. 
33230         (default_assembly_name_resolver): Use g_concat_dir_and_file
33231         (mono_assembly_open): ditto.
33232
33233 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
33234
33235         * metadata.c (mono_metadata_signature_equal): impl.
33236
33237         * *: void is now a realy MonoType (instead of using NULL)
33238         
33239         * metadata.c (do_mono_metadata_parse_type): use
33240         mono_metadata_parse_type to parse void value.
33241
33242 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
33243
33244         * metadata.c, metadata.h: in the signature and method header store
33245         only the space required for holding the loca vars and incoming arguments.
33246
33247 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
33248
33249         * metadata.c (do_mono_metadata_parse_type): treat void like any
33250         other type (instead of assigning NULL);
33251
33252 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
33253
33254         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
33255
33256 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
33257
33258         * image.c (do_mono_image_open): added a cache for arrays.
33259
33260 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
33261
33262         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
33263         decode a single column from a row in a metadata table and changes
33264         to take advantage of it in the typedef locator (gives a nice speed up).
33265         Store offset info for function params.
33266
33267 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
33268
33269         * image.h (MONO_IMAGE_IS_CORLIB): removed 
33270
33271 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
33272
33273         * assembly.c: how could mono_assembly_close () had ever worked?
33274         * metadata.c, metadata.h: provide offset info for local vars.
33275         Implement mono_type_size () to take care of alignment as well
33276         as size (it was mono_field_type_size in cli/class.c before).
33277
33278 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
33279
33280         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
33281
33282         * assembly.h (CORLIB_NAME): set to corlib.dll
33283
33284         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
33285
33286 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
33287
33288         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
33289         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
33290         tokentype.h: massive namespace cleanup.
33291
33292 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
33293
33294         * metadata.h, metadata.c: decode exception clauses when parsing method header.
33295
33296 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
33297
33298         * metadata.c (mono_metadata_free_type): added check for type !=
33299         NULL (void) before calling mono_metadata_free_type()
33300
33301 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
33302
33303         * metadata.h, row_indexes.h: added header with enumerations to use
33304         to index in the columns from tables in metadata and to decode coded
33305         tokens: we should start using this instead of embedding magic numbers
33306         all over the code.
33307
33308 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
33309
33310         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
33311         Move metadata_t info from cli_image_info_t to MonoImage, where
33312         it's easily accessible. Changed all the uses accordingly.
33313         Added the method and class caches to MonoImage.
33314         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
33315         and mono_metadata_decode_value () signature to be more consistent
33316         with the other parse functions (and simplify code). Taken advantage
33317         of zero-length array allocation with GCC. Removed reduntant (and
33318         wrong) MonoFieldType struct and use MonoParam instead. Changed
33319         mono_metadata_parse_field_type () to use common code for parsing.
33320         Added mono_metadata_typedef_from_field () and
33321         mono_metadata_typedef_from_method () to lookup a typedef index from a
33322         field or method token.
33323         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
33324
33325 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
33326
33327         * metadata.c (mono_metadata_parse_field_type): Implement. 
33328         (do_mono_metadata_parse_type): Split engine from
33329         mono_metadata_parse_type, so that we can create smaller structures
33330         for things that just have one pointer to the MonoType (look at
33331         the MonoFieldType)
33332
33333 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
33334
33335         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
33336         as Jan Gray found out, it is incorrect. 
33337
33338 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
33339
33340         * assembly.c: Implement asssembly loading.  This loads an image
33341         and loads all the referenced assemblies.  Come to think of it, we
33342         could always do lazy loading of the assemblies. 
33343
33344         * image.c (mono_image_open): Keep loaded images in a hashtable.
33345
33346         * image.h (MonoImage): Add reference count.
33347
33348 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
33349
33350         * assembly.c (mono_assembly_open): Keep track of the file name in
33351         case the assembly has no ASSEMBLY table.
33352
33353         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
33354         from get.c here.
33355
33356 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
33357
33358         * metadata.c, metadata.h: decode local vars in method header
33359         parse function. Change callers accordingly.
33360
33361 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
33362
33363         * metadata.h, cil-coff.h: protect against multiple inclusion.
33364         Added some new structures to hold information decoded from metadata:
33365         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
33366         and relevant decoding/free functions.
33367         * metadata.c: implement decoding functions. Add warning for out of bounds
33368         index in mono_metadata_locate(). Implement mono_get_method () to retreive
33369         all the info about a method signature and invocation. Remove check on
33370         uninitialized local var in parse_mh() and fix memory leak.
33371
33372 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
33373
33374         * metadata.h: More macros.
33375
33376         * tokentype.h: New file.
33377
33378 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
33379
33380         * assembly.c: added a consistency check and initialize
33381         some structures with g_new0().
33382         * metadata.c: fixed a couple more bugs in table size computation
33383         and add other checks for out-of bound access to metadata.
33384
33385 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
33386
33387         * metatada.c: fix bugs computing table sizes. Spew a
33388         warning when index in string heap is out of bounds.
33389
33390 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
33391
33392         * metadata.h: Add a couple of macros to manipulate tokens. 
33393
33394 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
33395
33396         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
33397         cli_section_tables).
33398
33399 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
33400
33401         * metadata.c (mono_metadata_user_string): New function, provides
33402         access to the UserString heap. 
33403
33404 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
33405
33406         * metadata.c: Add inline documentation.
33407
33408 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
33409
33410         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
33411         files. 
33412
33413 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
33414
33415         * typeattr.h: New file, TypeAttribute flags. 
33416
33417 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
33418
33419         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
33420         mono_assembly_ensure_section): Section loading code.
33421         (load_section_tables): Load the sections.
33422
33423         * mono/metadata/metadata.c (mono_metadata_locate_token,
33424         mono_metadata_locate): Functions to locate the information
33425         definition given a token or a table and an index.
33426         (mono_metadata_compute_table_bases): New.
33427         (compute_size): New function to compute the sizes of the various
33428         tables.
33429
33430         * mono/metadata/metadata.h: Finish listing the different index
33431         types. 
33432
33433         * mono/metadata/pedump.c: Improve to dump new information.
33434
33435 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
33436
33437         * mono/metadata/metadata.c: Entered all the tables matching
33438         Beta2. 
33439
33440         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
33441
33442
33443
33444