2009-05-12 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2
3         * gc.c: Fix a warning.
4
5 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6
7         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
8         prevous wait that resulted in a deadlock on Windows when initializing
9         the runtime form DllMain. Also results in improved startup time.
10         (finalizer_thread): Get rid of thread_started_event.
11         * threads.c, threads-types.h (mono_thread_create_internal): Return the
12         resulting MonoThread.
13
14         Contributed under MIT/X11 license.
15
16 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
17
18         * metadata-verify.c: Verify the implmap table.
19         Don't require that #US and #Strings be present.
20
21 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
22
23         * security-core-clr.c: Delegate checks are done at creation time,
24         not a invocation time. Fix exception for Telerik Silverlight demo
25
26 2009-05-11  Mark Probst  <mark.probst@gmail.com>
27
28         * sgen-gc.c (need_remove_object_for_domain): Remove the special
29         case for the Thread class.
30
31         * threads.c: Do clean-up of abort exception/state in
32         thread_cleanup() instead of Thread.free_internal().  Also clean up
33         current_appcontext.  The reason we have to do that is because
34         those references might point into another domain and if that
35         domain is unloaded before the thread is finalized, they point to
36         invalid data.
37
38 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
39
40         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
41         stub signatures.
42         
43         Contributed unter MIT/X11 license.
44
45 2009-05-09  Miguel de Icaza  <miguel@novell.com>
46
47         * verify.c, metadata-verifier.c: Add support for disabling the
48         verifier in some builds.
49
50         [ Sorry, my previous commit accidentally commited some work in
51         progress ]
52
53 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
54
55         * class.c (mono_class_setup_fields): Set class->field.first for
56         generic instances.
57
58 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
59
60         * metadata-verify.c: Verify the typespec table.
61
62 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
63
64         * metadata-verify.c: Verify the module table.
65
66 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
67
68         * metadata-verify.c: Verify the methodimpl table.
69
70 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
71
72         * metadata-verify.c: Verify the property table.
73
74 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
75
76         * debug-helpers.c (mono_method_desc_match): Add support for generic
77         glob patterns.
78
79 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
80
81         * metadata-verify.c: Verify the propertymap table.
82
83 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
84
85         * metadata-verify.c: Verify the event table.
86
87         * metadata-verify.c (search_sorted_table): Fix offset
88         calculation.
89
90 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
91
92         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
93
94 2009-05-01  Mark Probst  <mark.probst@gmail.com>
95
96         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
97         because mono_delegate_free_ftnptr() needs it.
98
99 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
100
101         * metadata-verify.c: Verify the eventmap table.
102
103 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
104
105         * metadata-verify.c: Verify the standalonesig table.
106
107 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * metadata-verify.c: Verify the field layout table.
110
111 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
112
113         * class.c (mono_type_get_name_recurse): Don't crash
114         for ownerless generic params.
115
116         * debug-helpers.c (mono_type_get_desc): Correct the format
117         for ownerless generic params.
118
119 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
120
121         * metadata-verify.c: Verify the class layout table.
122
123 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
124
125         * metadata-verify.c: Verify the decl security table.
126
127 2009-04-30  Mark Probst  <mark.probst@gmail.com>
128
129         * domain.c (mono_domain_set_internal_with_options): Don't do
130         anything if the old domain is the same as the old one.  Fixes
131         #499326.
132
133 2009-04-30  Mark Probst  <mark.probst@gmail.com>
134
135         * appdomain.c: Deregister the reflection_info roots when unloading
136         a domain.
137
138         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
139         memory allocated by a domain and frees its disappearing links.
140
141         * boehm-gc.c, null-gc.c: Empty implementation of
142         mono_gc_clear_domain().
143
144 2009-04-30  Mark Probst  <mark.probst@gmail.com>
145
146         * appdomain.c (clear_cached_vtable): Free the static fields memory
147         block.
148
149 2009-04-30  Mark Probst  <mark.probst@gmail.com>
150
151         * gc.c: Set the correct domain when invoking finalizers.
152
153         * appdomain.c: Set the correct domain when creating threads.
154
155 2009-04-30  Mark Probst  <mark.probst@gmail.com>
156
157         * sgen-gc.c: Fix skip size for vectors.
158
159 2009-05-03  Martin Baulig  <martin@ximian.com>
160
161         * mono-debug-debugger.c
162         (mono_debugger_check_breakpoints): Check class init handlers even
163         if we don't have any method load handers.
164
165 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
166
167         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
168         returning refonly assemblies if refonly is FALSE. Fixes #499013.
169
170 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
171
172         * metadata-verify.c: Verify the field marshal table.
173
174 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
175
176         * metadata-verify.c: Verify the custom attribute table.
177
178 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
179
180         * metadata-verify.c: Verify the constant table.
181
182 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
183
184         * metadata-verify.c: Verify the memberef table.
185
186 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
187
188         * metadata-verify.c (get_coded_index_token): Remove
189         dead argument.
190
191 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
192
193         * metadata-verify.c: Verify the interfaceimpl table.
194
195 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
196
197         * verify.c: Improve error message.
198
199         * debug-helpers.c (mono_type_get_desc): Harden the code that
200         deals with VAR and MVAR.
201
202 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
203
204         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
205         part of #498692.
206
207 2009-04-23 Tom Hindle <tom_hindle@sil.org>
208
209         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
210         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
211
212 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
213
214         * security-core-clr.c: Avoid redundant checks for platform code, 
215         e.g. check for method and for class (very common) and check
216         for class and outer class (less common)...
217
218 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
219
220         * reflection.c: Avoid returning random cattrs for synthetic methods.
221         Fixes #498545.
222
223 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
224
225         * assembly.c: assemblies in the GAC should never be shadow-copied.
226
227 2009-04-26  Mark Probst  <mark.probst@gmail.com>
228
229         * domain.c, domain-internals.h: Disable
230         track_resurrection_{objects,handles}_hash in MonoDomain if using
231         SGen.
232
233 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
234
235         * metadata-verify.c: Verify the param table.
236
237 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
238
239         * metadata-verify.c (verify_typedef_table): Range check FieldList and
240         MethodList.
241
242         * metadata-verify.c (verify_method_table): Proper check the ParamList
243         field.
244
245 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
246
247         * metadata-verify.c (verify_method_table): Check for runtime
248         implemented functions such as delegate .ctors. Remove spurious
249         printf.
250         
251 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
252
253         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
254
255 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
256
257         Don't allocate MonoGenericInfo for ownerless generic params.
258         * class-internals.h (MonoGenericParam::info): Move field to ...
259         (MonoGenericParamFull): ... this.  New struct.
260         (MonoGenericContainer::type_params): Change type to
261         MonoGenericParamFull.
262         (MonoGenericParam, MonoGenericContainer): Update accessors.
263         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
264         'info' field for ownerless generic param.
265         (mono_metadata_load_generic_params): Update to changes.
266         * reflection.c (mono_reflection_create_generic_class): Likewise.
267         (reflection_methodbuilder_to_mono_method): Likewise.
268         (mono_reflection_initialize_generic_parameter): Likewise.
269
270 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
271
272         Don't use MonoGenericParamInfo for ownerless generic params.
273         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
274         use ParamInfo class at all.
275         (mono_class_from_generic_parameter): Use them.
276         (make_generic_param_class): Fix a couple of instances where 'pinfo
277         == NULL' wasn't handle.
278
279 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
280
281         * class.c (make_generic_param_class): Carve out of ...
282         (mono_class_from_generic_parameter): ... here.
283
284 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
285
286         Simplify mono_class_from_generic_parameter
287         * class-internals.h (MonoGenericParamInfo::token): New field.
288         * metadata.c (mono_metadata_load_generic_params): Initialize it
289         from metadata.
290         * class.c (mono_class_from_generic_parameter): Use it instead of
291         searching through metadata.
292
293 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
294
295         * metadata-verify.c: Add verification of the method table.
296
297 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
298
299         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
300         Delegate::Invoke optimization.
301
302 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
303
304         * appdomain.c (mono_domain_create_appdomain_internal): Free the
305         string returned by get_shadow_assembly_location_base.
306
307         * appdomain.c (get_shadow_assembly_location_base): Add a comment
308         about caller's ownership.
309
310 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
311
312         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
313         reflection memory on domain unload.
314
315         * domain.c (mono_domain_free): Don't free refobject_hash, let the
316         reflection cleanup code do it.
317
318         * domain-internals.h: Add mono_reflection_cleanup_domain.
319
320         This fixes a memory leak for managed mirrors of reflection objects
321         on domain unload. 
322
323 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
324
325         * metadata-verify.c: Implement more verification of the field table.
326
327 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
328
329         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
330         doesn't try to parse the input assembly, which can be broken.
331
332 2009-04-23  Mark Probst  <mark.probst@gmail.com>
333
334         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
335         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
336         by using the lowest bit in the link to store whether the link is
337         tracked.  Move the track_resurrection hashes into boehm-gc.c.
338
339 2009-04-22  Miguel de Icaza  <miguel@novell.com>
340
341         * Makefile.am: Split the console support in platform specific code
342         and put together a framework for making this easy in the future so
343         that we can start splitting code instead of having a mess of PLATFORM_WIN32
344
345 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
346
347         * pedump.c: Fix a warning.
348
349 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
350
351         * verify.c (mono_delegate_type_equal): Compare valuetypes using
352         mono_class_from_mono_type to avoid bad interactions with the dual representation
353         of the generic type definition.
354
355 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
356
357         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
358         get the MonoClass for the call context type as it might be a generic
359         instance.
360
361         Fixes #491483.
362
363 2009-04-21  Mark Probst  <mark.probst@gmail.com>
364
365         * object-internals.h: The Thread object has no execution_context
366         member anymore.
367
368         * threads.c, threadpool.c, threads-types.h: Accessor functions for
369         the execution context.
370
371         * appdomain.c: Bump corlib version.
372
373 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
374
375         * verify.c (do_newobj): Improve error message.
376
377 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
378
379         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
380         is nested in the filter block.
381
382         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
383         block is not fully nested.
384
385         Fixes #495656.
386
387 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
388
389         * verify.c (verify_type_compatibility_full): Compare MonoClass and
390         not MonoType to check for equality of valuetypes as the generic type
391         definition allows for two different encodings: the generic type definition
392         class or a generic instance over the GTD arguments.
393
394         Fixes #496175.
395
396 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
397
398         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
399
400         * verify.c (do_initobj): Improve error message.
401
402 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
403
404         * metadata-verify.c: Enable pe verification as the issue with #496453
405         is that the authenticode data directory have a different unspecified
406         format. Ignore it for now.
407
408         * pedump.c: Run the metadata verifier together with the IL verifier.
409
410         Fixes ##496453.
411
412 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
413
414         * metadata-verify.c: Temporarily disable pe verification due to #496453.
415
416 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
417
418         * class.c (can_access_type): Check visibility against
419         the element type for pointers and arrays.
420
421         Fixes #496150.
422
423 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
424
425         * metadata-verify.c: Fix cli and table verification to use information
426         from the MonoImage. A lot of duplicated code got killed.
427
428 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
429
430
431         This patch starts to integrate the metadata verifier with the runtime code.
432
433         This patch causes major regression in functionality for the metadata verifier
434         as cli and table verification are disabled since they require to be ported to
435         use MonoImage information.
436
437         * image.c (do_mono_image_load): Split the code in this function
438         into mono_image_load_pe_data and mono_image_load_cli_data.
439         Add     care_about_pecoff parameter to not load pecoff data.
440         Call into the metadata verifier for pecoff and cli verification.
441
442         * image.c (mono_image_open_raw): New function that doesn't perform
443         any parsing of the image contents.
444         
445         The reason for the 3 new functions is to give pedump better control
446         into the interaction with the verifier.
447
448         * metadata-internals.h: Add new functions from image.c as part of the
449         internal mono API.
450
451         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
452         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
453         to make those functions work together with the runtime.
454
455         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
456         true if the image needs to be verified.
457
458         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
459
460         * pedump.c: Use new metadata verifier API.
461
462 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
463
464         * object.c (mono_install_vtable_trampoline): Make this receive a
465         trampoline creation function instead of trampoline, allowing the JIT
466         to use a different trampoline for each vtable.
467
468 2009-04-18  Mark Probst  <mark.probst@gmail.com>
469
470         * object.c (mono_raise_exception): Don't reset the thread abort
471         exception state here.
472
473 2009-04-18  Mark Probst  <mark.probst@gmail.com>
474
475         * icall-def.h: New icall for getting the thread abort exception
476         state for a thread.
477
478         * object.c, thread.c, object-internals.h: A thread's abort
479         exception state is now a GC handle.  To get the object it stands
480         for, we must move it into the current app domain, if it's
481         different than the one where it originated from.
482
483         * appdomain.c: Bump corlib version.
484
485         * domain.c, domain-internals.h: New function for setting the
486         domain and migrate the thread abort exception or not.
487
488 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
489
490         * metadata-verify.c: Add initial verification of the
491         field table.
492
493 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
494
495         * metadata-verify.c: Add a macro to conditionally enable
496         dumping of verification information. Add  make_coded_token
497         and search_sorted_table to enable search sorted tables
498         by a given coded token.
499
500 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * metadata-verify.c: Add array mapping from table index
503         to description offset. Add get_col_offset and get_col_size
504         functions.
505
506 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
507
508         * metadata-verify.c: Add remaining table descriptions offsets.
509         Add remaining coded index descriptions.
510
511 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
512
513         * metadata-verify.c: Fixed constant table description.
514         Fixed calculation of HasCustomAttribute coded index size.
515         Fixed calculation of size for many table indexes. 
516
517 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
518
519         * pedump.c (dump_metadata): Dump table offset instead
520         of useless pointer in memory.
521
522 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
523
524         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
525
526 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
527
528         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
529         a missing of for interface types.
530
531 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
532
533         * metadata-verify.c (verify_pe_optional_header): Add comment of why
534         the code is commented.
535
536         * metadata-verify.c (verify_resources_table): Remove spurious printf
537         and don't fail if there are unmanaged resources. Gmcs generates a useless
538         one     for all assemblies - I bet it's some MS compatibility junk.
539
540 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
541
542         * metadata-verify.c (verify_typedef_table): Verify the extends field.
543
544         * metadata-verify.c (mono_image_verify): Add a is_corlib.
545
546         * verify-internals.h: Same.
547
548         * pedump.c: Fix for mono_image_verify new signature.
549
550 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
551
552         * metadata-verify.c (verify_typedef_table): Verify for some invalid
553         flags combinations.
554
555 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
556
557         * metadata-verify.c (verify_module_table): Ignore the generation field.
558
559 2009-04-15  Martin Baulig  <martin@ximian.com>
560
561         * debug-mono-symfile.c
562         (mono_debug_symfile_lookup_location): Don't print a warning for
563         unknown extended opcodes if they're within 0x40 and 0x7f.
564
565 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
566
567         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
568         invoke signatures returning an enum. Fixes #494847.
569
570 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
571
572         * metadata-verify.c: Initial code to verify the typedef table.
573
574 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
575
576         * verify.c (mono_method_verify): Don't fail if an unconditional branch
577         with non empty stack happens before the beginning of a try block.
578
579         Fixes #494812.
580
581 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
582
583         * metadata-verify.c: Verify typename and typenamespace fields of
584         the typeref table.
585
586 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
587
588         * metadata-verify.c: Initial code to verify the typeref table.
589
590 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
591
592         * verify.c (verify_delegate_compatibility): Fix error message.
593
594 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
595
596         * security-core-clr.c: Fix typo
597
598 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
599
600         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
601         a MonoGHashTable to keep its values alive.
602         (emit_marshal_boolean): Fix a warning.
603
604 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
605
606         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
607         not have any interface configured for IPv4/IPv6.
608
609 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
610
611         * assembly.c: fix typo in error message.
612
613 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
614
615         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
616         allocating the location holding the this argument to prevent
617         'too many root sets' errors.
618
619         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
620         to mark fields as special static.
621         (mono_field_static_get_value): Handle special static fields.
622         (mono_field_static_set_value): Ditto.
623
624         * class-internals.h (struct _MonoClassField): Document this.
625
626 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
627
628         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
629           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
630           case.  This will handle when managed code returns null to native code.
631
632         Code is contributed under MIT/X11 license.
633
634 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
635
636         * object.c (build_imt_slots): Changing a free to a g_free to match
637           the g_malloc0 in add_imt_builder_entry that allocated this memory.
638
639         Code is contributed under MIT/X11 license.
640
641 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
642
643         * marshal.c (emit_marshal_boolean): Adding code to ensure that
644           the correct TRUE value is passed through the marshaling layer.
645
646         Code is contributed under MIT/X11 license.
647
648 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
649
650         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
651         correctly. Fixes #492330.
652         
653         * marshal.c: Fix the embedding of object pointers into JITted code in
654         the native-to-managed wrappers by allocating some GC tracked memory, and
655         embedding the address of that.
656
657 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
658
659         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
660         pointers into the vtable.
661
662 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
663
664         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
665
666         * verify.c (verify_ldftn_delegate): Improve error message.
667
668 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
669
670         * reflection.c (my_mono_class_from_mono_type): Remove.
671
672 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
673
674         Prepare to reduce memory usage of owner-less generic parameters (1/n)
675         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
676         and constraints fields into ...
677         (MonoGenericParamInfo): ... this.
678         (mono_generic_param_info, mono_generic_container_get_param_info):
679         New accessors.
680         * class.c, debug-helpers.c, icall.c: Update to changes.
681         * metadata.c, reflection.c, verify.c: Likewise.
682
683 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
684
685         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
686
687         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
688         
689         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
690         booleans with sbytes.
691
692 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
693
694         * class.c (can_access_instantiation): Verify accesibility of element types
695         for arrays and pointers.
696
697         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
698
699         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
700
701         Fixes #493068.
702
703 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
704
705         * verify.c (do_invoke_method): Improve error messages.
706
707 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
708
709         * verify.c:  Fixing the MSVC build.
710
711         Code is contributed under MIT/X11 license.
712
713 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
714
715         * security-core-clr.c: Simplify get_reflection_caller not to call
716         mono_method_get_last_managed (another stack walk) and adjust the
717         callers to handle a (should not happen) NULL return value.
718
719 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
720
721         Add accessors to some MonoGenericParam fields
722         * class-internals.h (mono_generic_param_owner): New accessor.
723         (mono_generic_param_num): Likewise.
724         (mono_type_get_generic_param_owner): New helper.
725         (mono_type_get_generic_param_num): New helper.
726         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
727
728 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
729
730         * class-internals.h (mono_generic_container_get_param): New wrapper.
731         * class.c, icall.c, metadata.c, verify.c: Use it.
732
733 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
734
735         Fix gtest-252.cs
736         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
737         the standard case/loop.  In particular, don't complain about
738         references to generic type definitions.
739
740 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
741
742         * debug-helpers.c (dis_one): Decode string arguments.
743
744 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
745
746         * pedump.c (dump_verify_info): Dump type name correctly.
747
748 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
749
750         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
751         are larger than code size.
752
753         This can happen in valid code if the try/catch block is not followed by any instruction
754         and do a backward branch on the leave instruction.
755
756         Fixes #492494.
757
758 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
759
760         * security-core-clr.c: Fix typo while comparing second method names
761         in can_avoid_corlib_reflection_delegate_optimization
762
763 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
764
765         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
766
767         Fixes #487738.
768
769 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
770
771         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
772         a MVAR using a class context.
773
774         Fixes #490335.
775
776 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
777
778         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
779
780         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
781
782         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
783         functions supplied by the JIT for the SGEN GC.
784
785         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
786         
787 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
788
789         monitor.c (mono_monitor_try_enter_internal):
790         Added calls to profile monitor contentions.
791         Also duplicated a small piece of code (the "get the monitor" logic)
792         from the fast path to the slow path, and changed the relevant goto
793         statements, so that monitor acquisition events can be emitted from the
794         slow path (this is by Paolo Molaro).
795
796 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
797
798         * profiler.c, profiler.h, profiler-private.h:
799         Added support for profiling monitor contentions.
800
801 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
802
803         * metadata-verify.c: Verify the modules table.
804
805 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
806
807         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
808         using the context of the method been verifier and not of the method been called.
809
810         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
811         safely inflate generic types. 
812
813 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
814
815         * security-core-clr.c: Change the strategy for checking the 
816         "reflection using delegates optimization" to avoid unneeded 
817         attributes in multiple class libraries.
818
819 2009-04-02  Mark Probst  <mark.probst@gmail.com>
820
821         * sgen-gc.c: Remove object element in the disappearing link struct
822         by storing the object pointer in the link.
823
824 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
825
826         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
827
828 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
829
830         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
831
832         * verify.c (mono_method_verify): Do proper bounds checking of exception
833         clause ranges.
834
835 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
836
837         * loader.c (mono_field_from_token): Don't crash if the field parent could
838         not be decoded.
839
840 2009-03-31  Mark Probst  <mark.probst@gmail.com>
841
842         * sgen-gc.c: Execute critical finalizers after ordinary
843         finalizers.
844
845         * class-internals.h, domain.c: Add CriticalFinalizerObject to
846         mono_defaults.
847
848 2009-03-31 Jb Evain <jbevain@novell.com>
849
850         * verify.c (do_ldstr): don't check if a string is in the user strings
851         heap if the current image is dynamic.
852
853 2009-03-31  Mark Probst  <mark.probst@gmail.com>
854
855         * sgen-gc.c: Wait until the last finalizer has executed when
856         returning from WaitForPendingFinalizers.
857
858 2009-03-31  Martin Baulig  <martin@ximian.com>
859
860         * mono-debug-debugger.h (MonoDebuggerEvent): Add
861         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
862         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
863         (mono_debugger_event_create_appdomain): New function.
864         (mono_debugger_event_unload_appdomain): New function.
865
866         * appdomain.c (mono_domain_create_appdomain_internal): Call
867         mono_debugger_event_create_appdomain().
868
869 2009-03-31  Martin Baulig  <martin@ximian.com>
870
871         * mono-debug-debugger.c
872         (mono_debugger_register_class_init_callback): Also register the
873         class init callback if the class is already initialized to make
874         things work with shadow copied assemblies.
875
876 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
877
878         * security-core-clr.c
879         (mono_security_core_clr_ensure_reflection_access_field): Let 
880         critical code access the field (just like we do for methods). Use
881         check_field_access helper.
882         (mono_security_core_clr_ensure_reflection_access_method): Use 
883         check_field_access helper.
884
885 2009-03-31  Mark Probst  <mark.probst@gmail.com>
886
887         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
888         call the run-finalize function directly.
889
890         * gc.c, gc-internal.h: Make run_finalize() non-static.
891
892 2009-03-31  Mark Probst  <mark.probst@gmail.com>
893
894         * sgen-gc.c: Use a separate struct for disappearing links.
895
896 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
897
898         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
899         * MaxIOVectorLength enabled, just ignore them.
900         Fixes bug #349688.
901
902 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
903
904         * metadata-verify.c: Fix eglib build.
905
906 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
907
908         * threads-types.h: Fix the win32 build.
909
910 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
911
912         * class.c: move coreclr inheritance/override checks to 
913         security-core.clr.c
914         * security-core.clr.c|h: add code from class.c with additional
915         documentation. Fix override check when the method is not critical.
916
917 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
918
919         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
920         (match_class): Ditto.
921
922 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
923
924         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
925
926         * metadata-verify.c: Implement table layout row size calculation. Verify
927         the total size of the tables.
928
929 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
930
931         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
932
933 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
934
935         * appdomain.c:
936         * console-io.[ch]: added new mono_console_init() to make sure that
937         file descriptors 0, 1 and 2 are opened.
938         Bug #489019 fixed.
939
940 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
941
942         * appdomain.h: Export a new callback type and a new function to
943         set this callback. This allow a mono host to provide it's own
944         definition for "platform code".
945         * metadata-internals.h: Add a core_clr_platform_code flag on 
946         _MonoImage to (cache and) know if it is representing platform 
947         code.
948         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
949         on platform code images.
950         * security-core-clr.c|h 
951         (mono_security_set_core_clr_platform_callback): Allow the host
952         to provide it's own platform check definition.
953         (mono_security_core_clr_determine_platform_image): Detect if an 
954         image is platform code (using the specified callback).
955         (mono_security_core_clr_is_platform_image): Return cached value 
956         for platform code.
957
958 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
959
960         * threads.c (mono_create_thread): New helper function to wrap CreateThread
961         which has different parameter types for the 'tid' argument in windows and
962         the io-layer.
963
964         * appdomain.c attach.c threads.c: Use the new helper.
965
966 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
967
968         * metadata-verify.c: Verify valid table bits.
969
970 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
971
972         * metadata-verify.c (verify_metadata_header): Store size in the size field.
973
974         * metadata-verify.c: Add initial table schema verification.
975
976 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
977
978         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
979         obtain the refclass argument needed by mono_param_get_objects (). Fixes
980         #488383.
981
982         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
983
984         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
985
986 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
987
988         * security-core-clr.c: Add/update documentation
989
990 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
991
992         * marshal.c (emit_marshal_object): Generate code to throw an exception
993         instead of throwing it. Fixes #488670.
994
995 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
996
997         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
998         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
999         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
1000         and add a call to mono_security_core_clr_ensure_delegate_creation
1001         to do the extra checks required by CoreCLR.
1002         * security-core-clr.c|h: Add function to check delegate creation,
1003         both in the binding and accessibility, under CoreCLR.
1004
1005 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
1006
1007         * reflection.c (mono_reflection_create_dynamic_method): when 
1008         coreclr is enabled make sure that every resolved object are
1009         checked (e.g. field and method access).
1010         * security-core-clr.c|h: Add function to check objects resolved
1011         when a dynamic method is created.
1012
1013 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1014
1015         * metadata-verify.c: Cache directory rva translations.
1016
1017         * metadata-verify.c: Add cli-header and streams verification.
1018
1019 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1020
1021         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
1022         the wrong offset (8 instead of 6).
1023
1024 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
1027         methods, return the native function address itself. Fixes
1028         #487758.
1029
1030 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1031
1032         * console-io.c: some of the values for control characters might not be
1033         present.
1034
1035 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
1036
1037         * exception.c|h: Add helpers to create [Field|Method]AccessException
1038         * icall.c: Add required coreclr check calls for field reflection.
1039         Move the existing (method) check logic into security-core-clr.c
1040         * security-core-clr.c: Add functions to check if the access of a
1041         field or method is allowed when reflecting under coreclr. This is
1042         mostly done using a stack walk to find the "real" caller: i.e. the
1043         code that is calling the reflection
1044
1045 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1046
1047         * gc-internal.h: Change location of gc_wrapper.h
1048
1049 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
1050
1051         * class.c: Simplification to coreclr checks for overrides that
1052         makes it easier to set breakpoints.
1053
1054 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
1055
1056         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
1057         mono_security_core_clr_method_level): Avoid potential 
1058         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
1059         user/application code) and make it easier to set breakpoints
1060
1061 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1062
1063         * metadata-verify.c: Reject cli header tables that mono don't handle.
1064
1065 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1066
1067         * pedump.c: Fix CLI header dumping.
1068
1069 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * metadata-verify.c: More CLI header verification.
1072
1073 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
1076
1077 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1078
1079         * metadata-verify.c: Initial verification of the CLI header.
1080
1081 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1082
1083         * metadata-verify.c (verify_resources_table): Fix verification of zero
1084         sized resource section and id entries count.
1085
1086 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1087
1088         * icall.c: Handle user types in many Type icalls. Fixes #486303.
1089
1090 2009-03-17  Jb Evain  <jbevain@novell.com>
1091
1092         * profiler.c: call mono_gc_base_init from mono_profiler_load.
1093
1094 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
1097         (mono_gc_make_descr_for_array): Ditto.
1098
1099 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1100
1101         * verify.c (mono_verifier_is_class_full_trust): Add support for
1102         CoreCLR security mode where trusted assemblies are defined as
1103         "platform code".
1104
1105 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1106
1107         * metadata-verify.c: Add minimal PECOFF resource verification.
1108
1109 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1110
1111         * metadata-verify.c: Be less restrictive with some coff fields.
1112
1113 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1114
1115         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
1116         params as boxed values on stack. Fixes #485706.
1117
1118 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1119
1120         * console-io.c: the termios values may vary in different flavors of unix.
1121
1122 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1123
1124         * console-io.[ch]: return the entire set of control characters when
1125         initializing the terminal.
1126         * appdomain.c: bump corlib version.
1127
1128 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
1129
1130         * mono-perfcounters.c: added support for in-process custom
1131         performance counters.
1132
1133 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1134
1135         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
1136
1137 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1138
1139         * metadata-verify.c: Verify the data pointed by the import table. 
1140
1141 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1142
1143         * metadata-verify.c (load_data_directories): Store data
1144         directory contents.
1145
1146         * metadata-verify.c: Verify the import table. 
1147
1148 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1149
1150         * metadata-verify.c: Verify data directories.
1151
1152 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1153
1154         * metadata-verify.c: Check section header flags.
1155
1156 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
1157
1158         * appdomain.c: if the assembly name is a shadow-copied file, return
1159         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
1160         in mono_make_shadow_copy.
1161         * icall.c: if the assembly name is a shadow-copied file, replace it
1162         with the original assembly path.
1163
1164         Bug #484244 fixed. NUnit tests for corlib can be run without
1165         --noshadow now.
1166
1167 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
1170         entries when the table is reallocated.
1171
1172         * icall.c: Allocate the memory used by the mono_ptr_array macros using
1173         mono_gc_alloc_fixed () since it contains GC refs.
1174
1175 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1176
1177         * reflection.c (ensure_complete_type): New helper function to call
1178         type resolve handlers for unfinished dynamic types.
1179         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1180
1181 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1184         #483247.
1185
1186 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1189
1190 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1191
1192         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1193         between GCHandles of type WeakTrackResurrection and the objects they
1194         point to.
1195
1196         * gc.c: Partly implement the sematics of GCHandles of type 
1197         WeakTrackResurrection: these handles should only be cleared after the
1198         finalizer of the object they are pointing to has ran.
1199
1200 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1201
1202         * icall.c: Partially revert r126631 because using the jump
1203         trampolines for generic shared methods makes it superfluous.
1204
1205 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1206
1207         * threads.c (handle_store): Create the 'threads' hash table with the proper
1208         MONO_HASH_VALUE_GC type.
1209
1210 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1213         FIRST_GC_TRACKED.
1214
1215         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1216         and LAST_GC_TRACKED as a GC root.
1217
1218         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1219
1220         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1221         the static data even if it consists of 1 reference.
1222
1223         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1224         if there is a GC descriptor.
1225
1226         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1227         instead of through the GC since they contain no object references.
1228
1229 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1230
1231         * generic-sharing.c (instantiate_other_info): Always return a jump
1232         trampoline for method code.
1233
1234 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1235
1236         * culture-info-tables.h: generated to include the en-tt culture.
1237
1238 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1239
1240         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1241         capture the thread context.
1242
1243         * object.c (mono_async_result_new): Cache the invoke wrappers to
1244         ExecutionContext::Capture.
1245
1246 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1247
1248         * marshal.h: Add a prototype for what mono_compile_method returns
1249         for invoke wrappers.
1250
1251         * gc.c: Use the new prototype declaration.
1252
1253 2009-03-04  Geoff Norton  <gnorton@novell.com>
1254
1255         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1256         * gc-internal.h:
1257         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1258
1259 2009-03-04  Martin Baulig  <martin@ximian.com>
1260
1261         * mono-debug.h
1262         (mono_debugger_runtime_invoke): Removed.
1263
1264         * mono-debug-debugger.c
1265         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1266
1267 2009-03-02  Martin Baulig  <martin@ximian.com>
1268
1269         * mono-debug.h
1270         (mono_debugger_unhandled_exception): Removed.
1271         (mono_debugger_handle_exception): Removed.
1272         (mono_debugger_throw_exception): Removed.
1273
1274         * mono-debug.c
1275         (mono_debug_debugger_version): Bump to 5.
1276
1277         * mono-debug-debugger.c: Moved the exception handling code to
1278         ../mini/debug-mini.c
1279
1280 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1281
1282         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1283         finalize_objects_hash.
1284
1285         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1286         
1287         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1288         field.
1289
1290         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1291         cache.
1292
1293         * image.c (mono_image_close): Free it.
1294         
1295         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1296         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1297         on the this argument.
1298
1299         * gc.c (run_finalize): Optimize the calling of the finalizers.
1300
1301 2009-03-03  Martin Baulig  <martin@ximian.com>
1302
1303         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1304         of the `MonoGenericInst' changes.
1305
1306 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1307
1308         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1309         mono_array_class_get_cached to reduce locking contention. Extract
1310         a domain var.
1311
1312         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1313         intermediary managed arrays. Use caching version of mono_array_new
1314         to allocate the result array.
1315
1316         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1317
1318         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1319
1320         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1321         to reduce locking contention.
1322
1323 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1324                 
1325         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1326         thunk builder code for the non-interface case.
1327
1328 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1329
1330         * object.c (get_generic_virtual_entries): New helper function to collect
1331         the virtual generic method instances which need to be added to an IMT
1332         thunk.
1333         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1334         Instead of creating a new IMT thunk, reset the vtable slot to the
1335         trampoline, the thunk will be created the next time the trampoline is called.
1336         (build_imt_slots): Add support for virtual generic methods in interfaces by
1337         adding to the IMT thunk all the methods registered using 
1338         mono_method_add_generic_virtual_invocation ().
1339
1340         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1341         (struct _MonoIMTCheckItem): Ditto.
1342
1343         * object.c (mono_method_add_generic_virtual_invocation): Take a
1344         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1345         the IMT thunk to include all items.
1346         
1347         * object.c (mono_class_create_runtime_vtable): Add a missing
1348         mono_loader_unlock ().
1349
1350 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1351
1352         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1353
1354         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1355
1356 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1357
1358         * object-internals.h: Rename _MonoReflectionEvent to
1359         MonoReflectionMonoEvent so it reflects the right managed type.
1360         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1361
1362         * icall.c:
1363         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1364         type.
1365
1366 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1367
1368         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1369         intermediary managed arrays. Use caching version of mono_array_new
1370         to allocate the result array.
1371
1372 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1373
1374         * reflection.c: Use cached version of mono_array_new alongside
1375         the mono_reflection_get_custom_attrs_by_type call path.
1376
1377 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1378
1379         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1380         intermediary managed arrays. Use caching version of mono_array_new
1381         to allocate the result array.
1382
1383         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1384
1385 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1386
1387         * icall.c: Add small implementation of a growable stack bound array.
1388
1389         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1390
1391         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1392         intermediary managed arrays. Use caching version of mono_array_new
1393         to allocate the result array.
1394
1395 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1396
1397         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1398         helps Enum::CompareTo to be implemented without reboxing all enums
1399         to their underlying type.
1400 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1403         since it acquires a global lock leading to scalability problems.
1404
1405         * profiler.c: Make the stat profiler work with multiple appdomains, this
1406         currently only works when no appdomains are unloaded.
1407
1408 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1409
1410         * appdomain.c: make the check to avoid copying when the assembly is
1411         already shadow copied actually work.
1412
1413 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1414
1415         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1416
1417         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1418         changes to the managed side.
1419
1420 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1421
1422         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1423         classes + a separate lock for it, as it is used frequently at runtime, not
1424         just during metadata loading/JIT compilation.
1425
1426         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1427         for szarrays.
1428         
1429         * object-internals.h (mono_class_from_name_cached): New macro to cache
1430         the results of the lookup locally without having to declare a static
1431         variable to hold it.
1432         (mono_class_get_field_from_name_cached): Ditto.
1433         (mono_array_class_get_cached): Ditto.
1434
1435         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1436         the new macros.
1437         
1438         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1439         slower search in metadata.
1440
1441         * pedump.c: Fix a warning.
1442
1443 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1444
1445         * reflection.c (encode_locals): Add checks for user types.
1446         (method_encode_clauses): Ditto.
1447         (method_encode_code): Ditto.
1448         (mono_image_create_token): Ditto.
1449
1450         * object-internals.h: Change the type of more fields from MonoReflectionType*
1451         to MonoObject*.
1452
1453 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1454
1455         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1456         the a thread does not suspend within 100ms.
1457
1458         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1459         in addition to StopRequested as well.
1460
1461         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1462
1463         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1464         search the method_hash before inserting a new entry, to avoid crashes when
1465         the same method is inserted multiple times, causing the old 
1466         MonoDebugMethodInfo structure to be freed by the value dtor function.
1467
1468 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1469
1470         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1471         SO_EXLUSIVEADDRUSE where available.
1472
1473 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1474
1475         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1476         runtime invoke wrappers, this time it is string ctor wrappers, which
1477         pass a dummy string as 'this' instead of their obj argument. Fixes
1478         #478473.
1479
1480 2009-02-21  Jb Evain  <jbevain@novell.com>
1481
1482         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1483         only get create_culture once.
1484
1485 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1488         check before the locking.
1489         
1490         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1491         (mono_reflection_create_runtime_class): Ditto.
1492         (mono_reflection_sighelper_get_signature_local): Ditto.
1493         (mono_reflection_sighelper_get_signature_field): Ditto.
1494
1495         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
1496         is a System.MonoType object or similar.
1497         (monotype_cast): New helper function to cast a MonoObject to a 
1498         MonoReflectionType object.
1499
1500         * object-internals.h: Change MonoReflectionType* members in structures to
1501         MonoObject* members to force the usage of the monotype_cast () function.
1502
1503         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
1504         structures/arrays. This causes us to assert instead of crashing when 
1505         instances of user defined subclasses of System.Type are encountered.
1506
1507 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1508
1509         * cil-coff.h:
1510         * icall-def.h:
1511         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
1512         win32 resource loaded from a PE file.
1513
1514         * image.c: fix mono_image_lookup_resource.
1515
1516 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1517
1518         * icall-def.h:
1519         * threads-types.h:
1520         * threads.c: added internal call for WaitHandle.SignalAndWait.
1521
1522 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
1523
1524         * cominterop.c : Adding cominterop_type_from_handle and 
1525           registering it as an icall.  Replacing all references
1526           to type_from_handle.
1527
1528         Code is contributed under MIT/X11 license.
1529
1530 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1531
1532         * Makefile.am: Add lock-tracer.h and lock-trace.c.
1533
1534         * appdomain.c: Call the tracer init function.
1535
1536         * domain-internals.h: Enable the tracer for the domain locks.
1537
1538         * image.c: Enable the tracer for image locks.
1539
1540         * loader.c: Enable the trace for the loader lock.
1541
1542         * lock-tracer.h:
1543         * lock-tracer.c: Initial implementation of the lock trace utility.
1544         The tracer requires a compile time define to be enabled and a env var
1545         to be enabled at runtime.
1546
1547 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1548
1549         * domain.c (mono_domain_code_foreach): Improve documentation.
1550
1551 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1552
1553         * appdomain.c:
1554         * generic-sharing.c:
1555         * object.c:
1556         * reflection.c:  Adjust locking order to the new semantics where the loader lock
1557         comes first.
1558
1559 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1560
1561         * domain.c: Add mono_domain_code_* functions that perform locking
1562         around the domain codeman.
1563
1564         * domain-internals.h: Export those functions.
1565
1566         * object.c: Use new functions instead of acquiring the domain lock.
1567
1568 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
1569
1570         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
1571         delegate. Fixes #477396.
1572
1573 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * reflection.c (create_custom_attr): Get rid of alloca.
1576
1577 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
1578
1579         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
1580           Adding exception handling for all CCW calls.
1581
1582         Code is contributed under MIT/X11 license.
1583
1584 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1585
1586         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
1587
1588         * marshal.c (emit_marshal_boolean): Add null checks to the new 
1589         native->managed marshalling code. Fixes #476247.
1590
1591 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * class.c (mono_class_get_vtable_entry): Move the addition of
1594         static rgctx invoke wrappers for vtable methods here, this simplifies
1595         a lot of code and causes fewer rgctx wrappers to be created.
1596
1597         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
1598         name of the statistics to begin with an uppercase.
1599
1600 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1601
1602         * reflection.c: Revert previous change as it breaks the build.
1603         
1604 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1605
1606         * verify.c: Properly handle SZARRAY element type.
1607
1608         Fixes #474271.
1609
1610 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1611
1612         * reflection.c (mono_image_create_method_token): Correctly encode
1613         MethodDef MemberRefParent token.
1614
1615         Fixes #472845.
1616
1617 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1618
1619         * image.c (mono_image_close): Delete the critical section before
1620         freeing the memory holding it.
1621
1622 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1623
1624         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
1625         Fixes #476257.
1626
1627 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1628
1629         * pedump.c (main): Call mono_marshal_init so pedump
1630         doesn't crash.
1631
1632 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1633
1634         * loader.c (method_from_memberref): Properly fix #474271 and
1635         don't break the runtime bad.
1636
1637 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
1640         (mono_domain_alloc0): Ditto.
1641
1642 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1643
1644         * loader.c (method_from_memberref): Don't abort if the array
1645         method is not found. A regular loader failure is more informative
1646         and correct.
1647
1648         Fixes #474271.
1649
1650 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1651
1652         *loader.c: Guard MonoImage::method_cache/methodref_cache
1653         using the image lock instead of the loader lock.
1654
1655         * metadata.h: Add comments about which fields are protected by
1656         the image lock.
1657
1658 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1659
1660         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
1661
1662         * generic-sharing.c (mono_method_construct_object_context): Remove the
1663         wrapper_type == NONE assert, it is not needed.
1664
1665 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1666
1667         * reflection.c (clear_cached_object): New helper function.
1668         (mono_method_clear_object): New function to clear the cached reflection
1669         objects for a dynamic method.
1670
1671         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
1672         Partly fixes # 463323.
1673         
1674 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1675
1676         * class.c:
1677         * loader.c:
1678         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
1679
1680 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1681
1682         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
1683         take the image lock instead of the loader lock.
1684
1685         * metadata-internals.h: Export new functions.
1686
1687 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1688
1689         * domain.c (app_config_parse): Remove another use of stat that is
1690         not necessary as g_file_get_contents already does the presence
1691         check. 
1692
1693 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1694
1695         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
1696
1697         * marshal.c: Move the bstr handling code to cominterop.c.
1698
1699         * marshal.c: Remove some COM interop code missed previously.
1700
1701 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1702
1703         More Paolo patches from the Wii port:
1704         
1705         * security.c: Remove ves_icall_System_Environment_get_UserName
1706         from here.
1707
1708         * icall.c: And put ves_icall_System_Environment_get_UserName
1709         here. 
1710
1711         * appdomain.c (mono_set_private_bin_path_from_config): Remove
1712         redundant call to stat that was only used to test for the file
1713         existence.   Patch from Paolo.
1714
1715         * gc.c (run_finalize): If COM is disabled, do not link in
1716         mono_marshal_free_ccw.
1717
1718         * generic-sharing.c: Use alloca.h here as well.
1719
1720 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
1721
1722         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
1723
1724 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * cominterop.c cominterop.h: New files.
1727
1728         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
1729         function/typedefs which are needed by cominterop.c global.
1730
1731 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1732
1733         * generic-sharing.c: Don't take the loader lock to guard image
1734         mempool allocs.
1735
1736 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1737
1738         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
1739         called without the loader lock which is required to guard MonoImage:tokens.
1740
1741 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1742
1743         * class.c:
1744         * metadata.c:
1745         * method-builder.c:
1746         * marshal.c:
1747         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
1748
1749 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1750
1751         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1752         Rework the code to use regular mono_image_alloc/0.
1753
1754         * loader.c: Rework the code to use regular mono_image_alloc/0.
1755
1756         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1757
1758 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
1759
1760         * object-internals.h : Fixing a typo in the 
1761           MonoReflectionComVisibleAttribute struct.
1762
1763         * marshal.c (cominterop_com_visible): Check the implemented 
1764           interfaces for ComImport.
1765
1766         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
1767           assume that bools should be treated as VARIANTBOOLs.
1768
1769         * marshal.c (emit_marshal_boolean): Adding cases for 
1770           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
1771
1772         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
1773           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
1774
1775         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
1776           should be treated as VARIANTBOOLs.    
1777
1778         Code is contributed under MIT/X11 license.
1779
1780 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1781
1782         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
1783         allocation with the image lock.
1784
1785 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1786
1787         This patch is the last of a series to remove explicit reference of MonoImage::mempool
1788         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
1789
1790         * object.c: Add mono_string_to_utf8_image.
1791
1792         * object-internals.h: Export mono_string_to_utf8_image.
1793
1794         * reflection.c: Rework all explicit references to the the image mempool to go thought
1795         the mono_image_alloc set of functions.
1796
1797 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1798
1799         This patch is the third of a series to remove explicit reference of MonoImage::mempool
1800         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
1801         and generics-sharing.c.
1802
1803         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
1804         as first argument. Note that this function remains broken as it doesn't perform locking around the
1805         mempool allocation.
1806
1807         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
1808
1809         * image.c: Add g_slist_append_image.
1810
1811         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
1812         the supplied image for allocation. Move code into mono_metadata_field_info_full.
1813
1814         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
1815         Fix all related code to do the same.
1816
1817         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
1818
1819         * metadata-internals.h: Fix the signatures.
1820
1821 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1822
1823         This patch is the second of a series to remove explicit reference of MonoImage::mempool
1824         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
1825         and similar to work using MonoImage.
1826
1827         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
1828         MonoMemPool.
1829
1830         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
1831
1832         * class.c (mono_metadata_signature_deep_dup): Same.
1833
1834         * class.c (inflate_generic_type): Same.
1835
1836         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
1837
1838         * metadata.c (mono_metadata_signature_dup_full): Same.
1839
1840         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
1841         mono_metadata_signature_dup_full.
1842
1843         * metadata.c (mono_metadata_type_dup): Same.
1844
1845         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
1846
1847         * reflection.c: Same.
1848
1849         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
1850
1851         * metadata-internals.h: Fix the signatures.
1852
1853         * class-internals.h: Same.
1854
1855 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1856
1857         This patch is the first of a series to remove explicit reference of MonoImage::mempool
1858         and use mono_image_alloc set of functions instead. 
1859
1860         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
1861         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
1862         of a MonoMemPool.
1863
1864         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
1865
1866         * class.c (g_list_prepend_mempool): Removed.
1867
1868         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
1869
1870         * image.c: Add g_list_prepend_image.
1871
1872         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
1873
1874         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
1875
1876
1877 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1878
1879         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
1880         mono_image_unlock.
1881
1882         * image.c (mono_image_init): Init the lock field.
1883  
1884         * image.c (mono_image_init): Cleanup the lock field.
1885
1886         * image.c: Add mono_image_(un)lock functions.
1887
1888 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1889
1890         * class.c, class-internals.h: mono_method_get_context_general()
1891         combines the functionality of mono_method_get_context() and
1892         mini_method_get_context().
1893
1894         * generic-sharing.c, domain-internals.h:
1895         mono_method_construct_object_context() and
1896         mono_domain_lookup_shared_generic() moved from mini.
1897
1898         * icall.c (ves_icall_InternalInvoke): Handle the case where the
1899         method doesn't have the correct instantiation because it's shared
1900         generic code.  Fixes #473999.
1901
1902 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1903
1904         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
1905
1906         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
1907         
1908 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1909
1910         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
1911
1912         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
1913
1914         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
1915         and recheck the cache for dups after it.
1916
1917         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
1918
1919         Fixes one of the deadlocks found in #473150.
1920
1921 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
1922
1923         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
1924           For Win32, add additional break conditions for accept.
1925
1926         Code is contributed under MIT/X11 license.
1927
1928 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
1931         lazily initialize the native wrapper cache.
1932         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
1933         cache, since they are different from the normal wrappers.
1934
1935         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
1936
1937         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
1938         AOT compiled native wrappers.
1939
1940 2009-02-09  Geoff Norton  <gnorton@novell.com>
1941
1942         * appdomain.h:
1943         * security-core-clr.c: Allow enabling core-clr from the embedding
1944         API.
1945
1946 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1947
1948         * socket-io.c: when requesting all the local ips, if there are no
1949         interfaces up and running, MS returns 127.0.0.1.
1950
1951 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1952
1953         * mono-perfcounters-def.h: processor time is an inverse time.
1954         Fixes bug #468625.
1955
1956 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1957
1958         * socket-io.c: an empty host name returns the list of local IPs.
1959         Fixes bug #386637 part 1/2.
1960
1961 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * verify.c (mono_class_interface_implements_interface): Call
1964         mono_class_setup_interfaces ().
1965         (merge_stacks): Ditto.
1966
1967 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * class.c (mono_class_setup_interfaces): New function to lazily initalize
1970         klass->interfaces.
1971         (mono_generic_class_get_class): Don't initalize klass->interfaces.
1972         (mono_generic_class_get_class): Ditto.
1973
1974 2009-02-06  U-QUACK\miguel  <miguel@quack>
1975
1976         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
1977         they live in security.c
1978
1979         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
1980         another bit from Paolo's code.
1981
1982 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1983
1984         * object.c (build_imt_slots): Add a small optimization to avoid inflating
1985         methods which will be discarded by add_imt_builder_entry ().
1986
1987         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
1988         need to be boxed.
1989
1990         * loader.c: Add a statistics for the size of the memberref signature cache.
1991         
1992         * loader.c (find_cached_memberref_sig): New helper function.
1993         (cache_memberref_sig): Ditto.
1994
1995         * loader.c: Cache the result of parsing memberref signatures, since otherwise
1996         they will be parsed again for every generic instantiation, leading to unbounded
1997         memory growth.
1998
1999 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2000
2001         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
2002         parameters of generic methods.
2003
2004         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
2005         after the original method is copied to the inflated method.
2006         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
2007
2008         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
2009         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
2010
2011         * class.c metadata.c: Update after the changes above.
2012
2013 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2014
2015         * metadata-verify.c: Simplified error handling and added
2016         section table validation.
2017
2018 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2019
2020         * class-internals.h (MonoClassExt): New structure containing rarely used
2021         fields of MonoClass.
2022         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
2023         through a new 'ext' field.
2024
2025         * class.c (mono_class_alloc_ext): New helper function to allocate 
2026         class->ext.
2027
2028         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
2029
2030 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2031
2032         * object.c (mono_object_get_virtual_method): Properly inflate
2033         generic methods.  Fixes #472692.
2034
2035 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2036
2037         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
2038         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
2039         for the parent type, the created type must be ready to be used on a generic
2040         instantiation.
2041         We fill this_arg/byval_arg if the parent is a generic instance to make sure
2042         we won't have duplicated entries in generic_inst_cache.
2043
2044         Fixes #469553.
2045
2046 2009-02-05  Miguel De Icaza  <miguel@novell.com>
2047
2048         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
2049         replace with plain BSD per the comments on the bug MONO77637.
2050
2051 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2052
2053         * class.c (mono_class_get_generic_class): New accessor function.
2054         (mono_class_get_generic_container): Ditto.
2055
2056         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
2057         fields, similar to the ones in MonoMethod.
2058
2059         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
2060         (mono_class_create_from_typedef): Set klass->is_generic if needed.
2061
2062         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
2063         
2064         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
2065         the same information as element_class->byval_arg.
2066
2067         * class.c reflection.c: Remove references to class->byval_arg.
2068
2069         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
2070         klass->enum_basetype directly.
2071
2072         * verify.c metadata.c object.c icall.c reflection.c: Use 
2073         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
2074         directly.
2075
2076 2009-02-04  Miguel de Icaza  <miguel@novell.com>
2077
2078         * icall-def.h: Remove internal calls for sockets when
2079         DISABLE_SOCKET is defined, file system writing features when the
2080         OS only support reading and not writing data and Policy support if
2081         the Policy is disabled.
2082         
2083         * image.c (do_mono_image_open): Apply Paolo's patches for using
2084         mono_file_map_ APIs here.
2085
2086         * assembly.c: Add support for platforms to avoid prefix
2087         auto-detection. 
2088
2089 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2090
2091         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
2092         warning.
2093
2094         * class.c (mono_class_inflate_generic_class): New helper function.
2095
2096         * class.c: Use mono_class_inflate_generic_class in a few places. Add
2097         statistics for inflated methods/classes.
2098
2099         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
2100
2101         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
2102         the call is made from Delegate.CreateDelegate () for the invoke method of
2103         a delegate.
2104
2105         * loader.c: Add a statistics for the memory occupied by inflated signatures.
2106
2107         * metadata.c (mono_metadata_signature_size): New helper function.
2108
2109         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
2110         generic instances.
2111
2112         * metadata.c (inflated_method_in_image): Avoid calling 
2113         mono_method_signature () if the method does not already have a signature.
2114
2115 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2116
2117         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
2118         valuetype is compatible with target type, check by inheritance as a
2119         VT is not really compatible with System.ValueType, for example.
2120
2121         * verify.c (do_invoke_method): Improve error message.
2122
2123         * verify.c (do_box_value): If boxing a nullable, use the type argument
2124         on stack instead.
2125
2126         * verify.c (do_newobj): Improve error message.  
2127
2128         Fixes #469549.
2129
2130 2009-02-03  Miguel de Icaza  <miguel@novell.com>
2131
2132         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
2133
2134 2009-02-03  Mark Probst  <mark.probst@gmail.com>
2135
2136         * generic-sharing.c: Don't hold domain lock when calling
2137         instantiate_other_info().  Fixes #471958.
2138
2139         * domain-internals.h, loader.c: Describe locking policy of domain
2140         lock vs loader lock.
2141
2142 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2143
2144         * verify.c (mono_delegate_signature_equal): Make it possible to check
2145         first-arg-bound delegates to static method.
2146
2147         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
2148         static methods with the first arg bound.
2149
2150         Fixes #469529.
2151
2152 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2153
2154         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
2155         errors.
2156
2157         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
2158         under strict mode. Any type, when boxed can be seen as a reference type.
2159
2160         Fixes #469528.
2161
2162 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2163
2164         * object.h: The lower bound of an array is a signed integer value.
2165         Introduce mono_array_lower_bound_t typedef. It should be used instead of
2166         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
2167
2168         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
2169         calculate the upper bound.
2170         
2171         Fixes #471252.
2172
2173 2009-02-02  Miguel de Icaza  <miguel@novell.com>
2174
2175         From Paolo's work, refactored, cleared up:
2176         
2177         * threadpool.c, icall.c: ifdef code that requires a working socket
2178         stack.
2179
2180         * metadata.c (mono_metadata_field_info): Do not attempt to return
2181         a value from a function declared as void.
2182
2183         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2184         from the console stack.
2185
2186         * assembly.c: use strrchr instead of rindex.
2187
2188         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2189         alloca.h on systems that have it.
2190
2191         * environment.c: Avoid code that uses stuff from
2192         HAVE_SYS_UTSNAME_H
2193         
2194         * appdomain.c: Include sys/time.h.
2195
2196         * console-io.c: include sys/ioctl.h if it is available.
2197
2198 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2201
2202         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2203         the method builder.
2204
2205         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2206         after it was created and cached, as the later is not thread safe.
2207         
2208 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2211         called while the debugging module is not initialized. Fixes #471669.
2212
2213 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2214
2215         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2216
2217         Fixes #471255.
2218
2219 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2220
2221         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2222         loader lock is not taken while the templates lock is held.  Fixes
2223         #471089.
2224
2225 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2226
2227         * metadata.c (type_in_image): Added a check to fix a monodis
2228         crash.
2229
2230 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2233         nullable arguments.
2234
2235         * object.c (mono_runtime_invoke_array): Ditto.
2236         
2237         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2238         freeing wrappers of dynamic methods.
2239
2240         * loader.c (mono_free_method): Call it. Fixes #463323.
2241         
2242         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2243         methods taking vtype/byref arguments, to fix yet another bug caused by
2244         the sharing of runtime invoke wrappers. Partly fixes #471259.
2245
2246 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2247
2248         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2249         <first file in file table>:1 when the IL offset does not have an associated
2250         line number.
2251
2252 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2255         variable info for a method.
2256
2257         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2258         
2259 2009-01-30  Jb Evain  <jbevain@novell.com>
2260
2261         * pedump.c: reuse code from monodis to make sure pedump honors
2262         MONO_PATH, which is needed to verify net_2_1 assemblies.
2263
2264 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2267         there is no line number info.
2268
2269 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2270
2271         Avoid some MonoType allocations
2272         * reflection.c (mono_reflection_initialize_generic_parameter):
2273         Reuse MonoType from param->pklass rather than allocating one.
2274         (mono_dynamic_image_free): Update to changes.
2275
2276 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2277
2278         Rearrange some code to improve consistency
2279         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2280         (mono_reflection_initialize_generic_parameter): ... here.
2281
2282 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2283
2284         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2285         with type constraints as an experiment.
2286
2287         * boehm-gc.c (on_gc_notification): Update mono_stats.
2288
2289 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2290
2291         Avoid some allocations
2292         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2293         pointer to tail array to avoid extra allocation.
2294         * metadata.c (free_generic_inst): Update to changes.
2295         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2296         on-stack struct.
2297
2298 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2299
2300         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2301         return TRUE if the two type objects are the same.
2302
2303 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2304
2305         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2306         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2307         klass->min_align, since klass->min_align contains the managed alignment,
2308         while the native alignment can be different, like for longs on x86.
2309         Fixes #469135.
2310
2311         * class-internals.h (MonoMarshalType): Add a min_align field.
2312
2313 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2314
2315         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2316         the 1.0 format.
2317
2318 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2319
2320         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2321         some comments about the usage of the used_regs field.
2322
2323         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2324         Fixes #469217.
2325
2326 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2327
2328         * appdomain.c: return NULL instead of throwing FileNotFoundException
2329         when LoadAssembly() fails.
2330
2331 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2332
2333         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2334         image if the owner is NULL.  Fixes the AOT failures.
2335
2336 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2339         MonoGenericParam structure using memset so the image field is initialized
2340         as well.
2341
2342 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2343
2344         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2345         a plain store.
2346
2347 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * class.c (mono_class_setup_vtable_general): In the generic instance
2350         optimization, set method->slot for abstract virtual methods. Fixes part of
2351         #467834.
2352
2353 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2354
2355         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2356         which signals that the unloading has started but all appdomain services must
2357         remain operational.
2358
2359         * appdomain.c (mono_domain_unload): The initial state for unloading now
2360         is unloading_start and we switch to unloading after the managed call to
2361         AppDomain::DomainUnload has finished.
2362
2363         The new unloading state has to be created because managed code in the
2364         DomainUnload event can depend on things like the threadpool still working.
2365         The domain must remain fully functional while the event executes.
2366
2367         This shown as an issue due to Process::WaitForExit, which waits for
2368         async reads of stdout and stderr to complete. Since those are processed
2369         in the threadpool the code deadlocks because the DomainUnload callback 
2370         waits for the async read finished event, which should have been set by a
2371         threadpool job but has been discarded due to the domain been in unload
2372         state.
2373
2374 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2375
2376         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2377         image must match.
2378
2379 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2380
2381         * reflection.c (resolve_object): For fields, inflate the class and
2382         then get the field in the inflated class.
2383
2384 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2385
2386         * object-internals.h (struct _MonoException): Added a comment
2387         explaining the new use of trace_ips.
2388
2389 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2390
2391         * generic-sharing.c (inflate_other_data): Inflate array methods
2392         correctly.
2393
2394         * loader.c, class-internals.h: Rename search_in_array_class() to
2395         mono_method_search_in_array_class() and make it non-static.
2396
2397 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2398
2399         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2400         Hopefully fixes #458168.
2401
2402 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2403
2404         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2405         as it is performed elsewhere.
2406
2407         Code is contributed under MIT/X11 license
2408
2409 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2410
2411         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2412         requests queued.
2413         * object.c (mono_raise_exception): Increment the exceptions total
2414         counter when an exception is thrown.
2415         * class-internals.h: Add a location for storing the total number of
2416         asp.net requests served.
2417         * mono-perfcounters.c: Implement update support for asp.net counters
2418         from the class libraries. Implement read support for asp.net counters
2419         and exceptions total counter.
2420
2421 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2422
2423         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2424         accessing klass->methods. Fixes #467385.
2425
2426 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2427
2428         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2429         for byval arguments without an [Out] attribute. Fixes #467212.
2430
2431         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2432         Fix compilation under android.
2433         
2434         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2435         processed, scan them directly after they are copied, to achieve better locality
2436         and cache usage.
2437
2438         * socket-io.c: Applied patch from Koushik Dutta
2439         (koush@koushikdutta.com). Disable IPV6 when running under android.
2440
2441 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2442
2443         * icall.c (ves_icall_InternalExecute): Add write barriers.
2444
2445         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2446         the GC code.
2447
2448         * sgen-gc.c: Implement write barriers in IL code.
2449
2450 2009-01-17  Geoff Norton  <gnorton@novell.com>
2451
2452         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2453
2454 2009-01-17  Geoff Norton  <gnorton@novell.com>
2455
2456         * image.c: When unloading the image->references table, there can be gaps
2457         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2458         when unloading an appdomain.
2459
2460 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2463         speed up ptr-in-nursery checks.
2464
2465         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2466         threads_lock () to prevent deadlocks.
2467
2468         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2469         does not need to be scanned during minor collections, since writes to it
2470         must use write barriers.
2471
2472 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2473
2474         * metadata-verify.c: Add pe nt header verification.
2475         
2476 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2477
2478         * gc.c: Fix a few warnings when using SGEN.
2479
2480 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2481
2482         * metadata-verify.c: Add pe optional header verification.
2483
2484 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2485
2486         * sgen-gc.c: Add support for user defined marker functions, used by
2487         MonoGHashTable to avoid registering a GC root for every hash node.
2488
2489 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
2492         non-pinned roots into separate hashes to avoid having to traverse them
2493         in functions which are only interested in one kind.
2494
2495 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2496
2497         * metadata-verify.c: Add pe header machine field verification.
2498         
2499 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2500
2501         * metadata-verify.c: Add pe header size verification.
2502
2503 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
2506         using the GC, they don't contain references.
2507
2508         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
2509
2510 2009-01-13  Geoff Norton  <gnorton@novell.com>
2511
2512         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
2513         AppDomains created on the native side can be cleaned up on the native side.
2514
2515 2009-01-13  Geoff Norton  <gnorton@novell.com>
2516
2517         * appdomain.c: Ensure that we call mono_context_init for the embedding api
2518         as well as the managed api.
2519
2520 2009-01-13  Geoff Norton  <gnorton@novell.com>
2521
2522         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
2523         with a MonoAppDomain initialized against it.
2524
2525 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2526
2527         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
2528         
2529         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
2530
2531         * marshal.c: Avoid setting the exception clauses after a method has been entered 
2532         into the wrapper caches. Fixes #465700.
2533
2534         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
2535         method builder.
2536         (mono_mb_create_method): Set the clauses from the method builder.
2537
2538 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2539
2540         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
2541         Patch from Makoto Kishimoto.
2542
2543 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
2546         encoding them as ROOT_DESC_COMPLEX.
2547         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
2548
2549 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
2552         no longer point to the nursery.
2553
2554         * sgen-gc.c: Add a few comments/FIXMEs.
2555         
2556         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
2557
2558         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
2559         initialization of the various _method variables thread safe. Fixes
2560         #465377.
2561
2562 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2563
2564         * domain.c, domain-internals.h: Remove the shared_generics_hash
2565         and its lookup functions.
2566
2567 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
2568
2569         * socket-io.c:  Fixing the MSVC build. 
2570
2571         Code is contributed under MIT/X11 license.
2572
2573 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
2574
2575         * metadata-verify.c: Add pe header watermark verification.
2576
2577 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2578
2579         * metadata-verify.c: Add lfanew verification.
2580
2581 2009-01-12  Jb Evain  <jbevain@novell.com>
2582
2583         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
2584         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
2585
2586 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * socket-io.c: Fix the build.
2589
2590         * environment.c: Fix an #ifdef.
2591
2592 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2593
2594         * threadpool.c (async_invoke_thread): Handle the wait function returning
2595         WAIT_IO_COMPLETION as well.
2596         (async_invoke_io_thread): Ditto.
2597
2598 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
2599
2600         * threads.c: Fixing the Windows build.
2601
2602         Code is contributed under MIT/X11 license.
2603
2604 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2605  
2606         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
2607         interrupt a wait.
2608         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
2609         the thread to wait again.
2610
2611 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2612
2613         * metadata-verify.c: Initial skeleton of the metadata verifier.
2614
2615         * pedump.c: Add support for the metadata verifier.
2616
2617         * verify-internal.h: Export the whole assembly metadata verifier function.
2618
2619 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2620
2621         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
2622
2623 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2624
2625         * Makefile.am: Upgrade dtrace-prelink.sh location.
2626
2627 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2628
2629         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
2630         well. Otherwise the shutdown deadlock that happens on unix will can happen
2631         as well.
2632         If the main thread code finishes too fast it's possible that the finalizer
2633         thread won't have executed yet, won't record itself as the finalizer thread
2634         and the shutdown sequence will wait on it forever.
2635
2636 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2637
2638         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
2639         with MSVC.
2640
2641 2009-01-08  Miguel de Icaza  <miguel@novell.com>
2642
2643         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
2644         Robert Jordan for pointing this out.
2645
2646 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
2647
2648         * icall.c
2649         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
2650         ves_icall_System_IO_DriveInfo_GetDriveType.
2651
2652 2009-01-07  Miguel de Icaza  <miguel@novell.com>
2653
2654         * icall.c: Wrap calls to mono_strtod in CriticalSection
2655         invocations when using eglib, to work around #464316.
2656
2657 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2658
2659         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
2660         return value of GetCurrentDirectory to never access unitialized memory.
2661
2662 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2663
2664         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
2665         return value of GetCurrentDirectory and expand the buffer if needed.
2666
2667         Fixes #459094.
2668
2669 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
2670
2671         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
2672           Adding a call to mono_init_com_types.
2673
2674         Code is contributed under MIT/X11 license.
2675
2676 2009-01-07  Geoff Norton  <gnorton@novell.com>
2677
2678         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
2679         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
2680         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
2681         be the value of the ip buffer.
2682
2683 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2684
2685         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
2686         interfaces_packed here.
2687
2688         Fixes part of #463294.
2689
2690 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2691
2692         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
2693
2694         Fixes part of #463294.
2695
2696 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2697
2698         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
2699         is a boxed complex as well.
2700
2701         Fixes part of #463294.
2702
2703 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2704
2705         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
2706         control if a methodspec should be created for the generic method definition from external assemblies.
2707         Caching of methodspec is done using the handleref hash table.
2708
2709         Fixes #462592.
2710
2711 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
2712
2713         * loader.c (find_method): When searching the interfaces of a class
2714         check the transitive closure of implemented interfaces.
2715
2716         Fixes #463303.
2717
2718 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2719
2720         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
2721         
2722 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2723
2724         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
2725         interfaces calculation to fill_valuetype_array_derived_types.
2726
2727         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
2728         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
2729         for example.
2730
2731         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
2732         interfaces for valuetypes if needed.    
2733
2734         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
2735         for their basetype as well. Types are array expanded if rank is > 0.
2736
2737         Fixes #400716.
2738
2739 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
2740
2741         * socket-io.h : Changing the signature of
2742           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
2743           the blocking state.
2744
2745         * icall-def.h :  Changing the signature of
2746           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
2747
2748         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
2749           For Windows only.  Avoid blocking when calling accept by
2750           querying for a connection via select.  The loop also queries
2751           the thread state every 1000 micro seconds for the thread
2752           stop state.  This will avoid the process hanging on shutdown
2753           when using a TcpChannel that is never connected to.
2754
2755         Code is contributed under MIT/X11 license.
2756
2757 2008-12-30  Marek Safar  <marek.safar@gmail.com>
2758
2759         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
2760
2761 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2762
2763         * class.c (get_implicit_generic_array_interfaces): Extract common
2764         code to a helper function making it a lot easier on the eyes.
2765
2766 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2767
2768         * class.c (get_implicit_generic_array_interfaces): If the internal
2769         enumerator is an interface inflate System.Object instead of itself.
2770
2771         Fixes #461261.
2772
2773 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
2774
2775         * object.c (mono_runtime_invoke_array): Don't assert with
2776         byref nullable types.
2777
2778         * marshal.c (mono_marshal_get_runtime_invoke): To handle
2779         byref nullables we unbox the object and store it on the
2780         stack. 
2781         We can't use the boxed object since it is the T of Nullable<T>
2782         and the boxed representation of a nullable it's underlying type
2783         or null.
2784         We could cheat and create a boxed nullable and use the same
2785         machinery of other byref VTs but this feels like a hack and
2786         using the stack has the bonus of reducing heap pressure.
2787
2788         Fixes #461941.
2789
2790 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
2791
2792         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
2793         return value.
2794
2795         Fixes #461867.
2796
2797 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
2798
2799         * icall-def.h : Adding an internal call definition for 
2800           System.Environment.internalBroadcastSettingChange.
2801
2802         * icall.c : Adding a Windows only implementation to broadcast a 
2803           WM_SETTINGCHANGE when an environment variable has changed.
2804
2805         Code is contributed under MIT/X11 license.
2806
2807 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2808
2809         * class.c, class-internals.h: Made
2810         mono_class_has_parent_and_ignore_generics() non-static.
2811
2812 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
2813
2814         * image.c: deal with the mmap failing when loading an image.
2815
2816 2008-12-17  Geoff Norton  <gnorton@novell.com>
2817
2818         * threadpool.c: Ensure that the io_queue_lock is initialized
2819         in all circumstances, as we always attempt to cleanup against it.
2820
2821 2008-12-17  Miguel de Icaza  <miguel@novell.com>
2822
2823         * icall.c (ves_icall_System_Environment_get_Platform): For
2824         compatibility reasons for existing client code we will keep
2825         returning 4 for a while.   
2826
2827         For how long will depend on the documentation being updated, and
2828         for us to give client code a chance to be updated.
2829
2830         This reverts the original decison on #433108 since we did not
2831         catch roughly 33 instances of the broken code in our own source
2832         code base, we did not catch failures on the buildbots, and QA did
2833         not bring this as a problem.
2834
2835         Only today I found some customer's code breaking due to our own
2836         class libraries not being fully updated and tracked it down to
2837         this change.  I am reverting it because if we could not even get
2838         our story straight in our own code base, how can we hope that our
2839         end user code be fixed?
2840
2841         As of this morning, our Wiki page that documents how to detect
2842         Unix had not been fixed.    
2843
2844 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
2845
2846         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
2847
2848         * class.c (mono_class_get_fields): Handle loading errors.
2849
2850 2008-12-12 Mark Mason <mmason@upwardaccess.com>
2851
2852         * 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.
2853         
2854 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
2855
2856         * mono-perfcounters.c: avoid warning.
2857
2858 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2859
2860         * reflection.c (ensure_runtime_vtable): Work on generic instances and
2861         make sure all interfaces have MonoClass::interface_id set.
2862
2863         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
2864         method table is property set.
2865
2866 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2867
2868         * class.c: New function mono_class_setup_interface_id that setup
2869         MonoClass::interface_id if needed.
2870
2871         * class-internals.h: Export new function.
2872
2873 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2874
2875         * class.c: Add code to sanity check the vtable after setup_vtable_general
2876         has done it's work.
2877
2878 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2879
2880         * icall.c: make Assembly.GetExecutingAssembly work properly when
2881         reflection is used to invoke the method.
2882         Bug #321781 fixed.
2883
2884 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2885
2886         * metadata/generic-sharing.c: Look for constraints in all type
2887         arguments, not just the first one.
2888
2889 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2890
2891         * appdomain.c: return the correct CodeBase for an Assembly instance
2892         that was loaded from the shadow-copy directories.
2893         Bug #458190 fixed.
2894
2895 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2896
2897         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
2898
2899         * sgen-gc.c (check_object): New debugging helper function.
2900
2901         * object.c: Fix calls to mono_value_copy_array ().
2902
2903 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2904
2905         * class.c (mono_class_setup_fields): If working on an inflated class
2906         first check if the generic definition did init with success.
2907
2908         Fixes #445361.
2909
2910 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2911
2912         pedump.c (main): Fix a warning.
2913
2914 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
2915
2916         * object-internals.h : Adding a definition for 
2917           MonoReflectionComVisibleAttribute.
2918
2919         * marshal.c (cominterop_com_visible) :  Method added to check the 
2920           ComVisible attribute of a class.
2921
2922         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
2923           cominterop_raise_hr_exception added to consolidate common code 
2924           to raise hr exceptions.
2925
2926         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
2927           if a managed class should support IDispatch.
2928
2929         * marshal.c 
2930           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
2931           Added additional checks for managed object when getting 
2932           an IDispatch interface.
2933
2934         Code is contributed under MIT/X11 license.
2935
2936 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2937
2938         pedump.c (main): Handle mono_get_method () returning NULL. 
2939
2940 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * marshal.h: Fix a warning.
2943
2944 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2945
2946         * marshal.c : Adding cominterop_release_all_rcws to release all
2947           runtime callable wrappers held by the runtime.
2948
2949         * marshal.h : Adding declaration for cominterop_release_all_rcws.
2950           
2951         Code is contributed under MIT/X11 license.
2952
2953 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2954
2955         * metadata.c (mono_image_alloc_lock): New helper function.
2956         (mono_image_alloc0_lock): Ditto.
2957
2958         * metadata.c: Use the alloc_lock () helper functions for allocating
2959         memory from the image mempool.
2960
2961 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
2962
2963         * class.c (mono_class_from_generic_parameter): Document it's
2964         locking behavior. Fix double checked locking here, we stored in
2965         param->pklass a partially initialized MonoClass and no membar was used.
2966
2967 2008-12-05  Marek Habersack  <mhabersack@novell.com>
2968
2969         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
2970         (3) functions are present in the C library use them to do the
2971         job. If they are absent, make sure that the sum of int_part and
2972         dec_part is rounded before returning. This is necessary due to the
2973         division of dec_part by the power of 10 before the final addition
2974         is performed - if the result is not rounded in some cases it will
2975         yield invalid results.
2976
2977 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
2980         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
2981         instruction instead of a pointer constant.
2982
2983 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * loader.c (mono_method_get_header): Do most of the work outside the
2986         loader lock, to avoid assembly load hook deadlocks.
2987
2988         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
2989         (mono_metadata_parse_type_full): Ditto.
2990
2991 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
2992
2993         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
2994         Make the stack depth fixed. Ensure proper argument passing to the backtrace
2995         funtions. Finally, use a lock to produce well ordered output.
2996
2997         The lock looks silly, as all calls to the corlib mempool should be guarded
2998         with the loader lock, but for some reason this fact doesn't help. 
2999
3000         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
3001
3002 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3003
3004         * socket-io.c: 64 bit big-endian fixes.
3005
3006 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3007
3008         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
3009         targets that require strict compatibility between the types.
3010
3011         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
3012         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
3013         Kill the strict argument and create a new one valuetype_must_be_boxed.
3014
3015         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
3016         state that all valuetypes must be boxed.
3017
3018         Fixes #448560.
3019
3020 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
3021
3022         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
3023         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
3024
3025         Contributed under MIT/X11 license.
3026
3027 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
3028
3029         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
3030         the inflate_generic_type machinery should handle it.
3031
3032         This avoids a crash when the field's flags is zero and it's type is
3033         a primitive.
3034         What happens is that mono_metadata_parse_type_full will see that opt_attrs
3035         is zero and will return one of the cached built-in primitive types. Since
3036         those types live in read-only memory, the code that copies it crashes.  
3037
3038 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3039
3040         * object.c: Don't put function descriptors into generalized IMT
3041         thunks.
3042
3043 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3044
3045         * class.c: Enable generic code sharing on PPC64.
3046
3047 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3048
3049         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
3050         from mini/mini.c.
3051
3052         * generic-sharing.c: Allocate the method template slists from the
3053         image mempool so it doesn't leak.
3054
3055 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
3056
3057         * class.c (generic_array_methods): Release the linked list.
3058
3059 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3060
3061         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
3062         invocation to g_utf16_to_utf8().
3063
3064 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3065
3066         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
3067         arguments on big endian archs.
3068
3069 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3070
3071         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
3072         the type name (test added in corlib).
3073
3074 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3075
3076         * pedump.c: initialize perf. counters. Fixes a segv.
3077
3078 2008-11-25  Martin Baulig  <martin@ximian.com>
3079
3080         * mono-debug-debugger.c
3081         (mono_debugger_runtime_invoke): Return the exception object if an
3082         exception was thrown.  Visual Studio displays the exception object
3083         in the locals window.
3084
3085 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3086
3087         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
3088         ftnptr.
3089
3090 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3091
3092         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
3093         MONO_TYPE_U are sizeof (gpointer), too.
3094
3095 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3096
3097         * marshal.c (mono_type_native_stack_size): Fixed size and
3098         alignment for reference types.
3099
3100 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3101
3102         * class.c (mono_class_generic_sharing_enabled): Disable generic
3103         code sharing for PPC64.
3104
3105 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
3106
3107         * icall.c (mono_method_get_equivalent_method): Make sure
3108         method->klass->methods is inited before looping over it.
3109
3110 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3111
3112         * object.c: when calling ExecuteAssembly in a newly created domain,
3113         the configuration file and application base are already set up.
3114         Bug #446353 take 2 fixed.
3115
3116 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
3117
3118         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
3119         Fixes #444715. Fix a warning.
3120
3121 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
3122
3123         * appdomain.c: write the full path of the assembly to the .ini file
3124         created when "shadow-copying"
3125         Bug #446353 fixed.
3126
3127 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3128
3129         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
3130         if signature==FALSE.
3131
3132 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3133
3134         * marshal.h : Fix the cygwin build.
3135            marshal.c:12442: undefined reference to `_IID_IMarshal'
3136           
3137         Code is contributed under MIT/X11 license.
3138
3139 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3140
3141         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
3142           free threaded marshaler when QueryInterface is called on a COM callable
3143           wrapper requesting the IMarshal interface.
3144           
3145         Code is contributed under MIT/X11 license.
3146
3147 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
3150
3151         * reflection.c (mono_type_get_object): Special case the very common
3152         void type.
3153
3154         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
3155         hold typeof(void).
3156
3157 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
3158
3159         * process.h : Adding method declaration for
3160           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3161           
3162         * process.c : Adding implementation for
3163           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3164           
3165         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
3166           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3167
3168         Code is contributed under MIT/X11 license.
3169
3170 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
3171
3172         * appdomain.c (unload_thread_main): Clean up threadpool by
3173         calling mono_thread_pool_remove_domain_jobs.
3174
3175         * domain-internals.h (struct _MonoDomain): Add new fields to
3176         help coordinate the cleanup of the threadpool.
3177
3178         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3179         that cleans up the threadpool of all jobs associated with an appdomain.
3180         It does that by cleaning up the queues and making sure all active
3181         threads are accounted.
3182
3183         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3184         unloaded or in the process of. Take this is such way that there is
3185         no race condition between another thread starting the unload and the
3186         current thread acknowledging it.
3187
3188         * threadpool.c (async_invoke_thread): Same.
3189
3190         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3191         firing the new thread.
3192
3193         * threadpool.c (start_tpthread): Same.
3194
3195         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3196
3197         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3198
3199 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3200
3201         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3202         Add support for DuplicateHandle.
3203         
3204         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3205         Add support for DuplicateHandle.
3206         
3207         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3208         Add support for DuplicateHandle.
3209
3210         Code is contributed under MIT/X11 license.
3211
3212 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3213
3214         * class-internals.h: Make min_align into a whole byte.
3215
3216         * class.c: Set min_align for SIMD types to 16.
3217
3218 2008-11-05  Geoff Norton  <gnorton@novell.com>
3219
3220         * attach.c: Default the attacher to enabled for all cases including
3221         embedded.
3222
3223 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3224
3225         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3226         change r117650.
3227
3228 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3229
3230         * monitor.c, monitor.h: New function for querying offsets of
3231         members of MonoThreadsSync.
3232
3233 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3234
3235         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3236         to speed up this function and to avoid the boundless memory growth caused by
3237         the signature_dup () calls.
3238
3239 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3240
3241         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3242         wrapper.
3243
3244         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3245         by 1 bit.
3246
3247         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3248
3249 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3250
3251         * appdomain.c:
3252         * domain-internals.h: made mono_set_private_bin_path_from_config()
3253         "internal".
3254         * object.c: call the above function after setting the configuration
3255         file path for the root domain.
3256         Fixes bug #314478.
3257
3258 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3259
3260         * assembly.c: when the assembly is loaded from an absolute path, end
3261         basedir with a directory separator.
3262         Bug #440781 fixed.
3263
3264 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3265
3266         * monitor.c (mono_monitor_get_fast_enter_method): If
3267         CompareExchange is not available, don't create the fastpath
3268         instead of asserting.  (The method is missing in the 1.1 profile.)
3269
3270 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3271
3272         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3273
3274         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3275         Monitor.Exit IL fastpaths.
3276
3277 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3278
3279         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3280
3281 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3282
3283         * class.c (mono_class_create_from_typedef): Added Vector2l.
3284
3285 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3286
3287         * class.c (mono_class_create_from_typedef): Added Vector2d.
3288
3289 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3290
3291         * appdomain.c: translate \ into / for cache_path.
3292         * domain-internals.h: new mono_is_shadow_copy_enabled().
3293         * icall.c: (fill_reflection_assembly_name) do the same path
3294         manipulations that get_code_base does.
3295         (get_code_base) use mono_is_shadow_copy_enabled.
3296
3297 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3298
3299         * appdomain.c: shadow-copied assemblies go to CachePath +
3300         ApplicationName when both are set. DynamicBase has nothing to do with
3301         shadow copies.
3302         Bug #406877 fixed.
3303
3304 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3305
3306         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3307         STANDALONESIG table.
3308
3309         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3310         standalone signatures.
3311
3312         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3313         comparison code: instead of comparing the signatures using a custom
3314         equals function, transform them to a common signature and compare that. This
3315         works better with AOT.
3316
3317 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3318
3319         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3320
3321         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3322         call for generic instances.
3323         (mono_class_setup_properties): Call setup_properties () before accessing
3324         gklass->properties.
3325
3326         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3327         over the virtual methods of a class using metadata if possible, avoiding the
3328         creation of MonoMethod's for non-virtual methods.
3329         
3330         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3331         get_virtual_methods () to iterate over the virtual methods of classes.
3332
3333 2008-10-25  Martin Baulig  <martin@ximian.com>
3334
3335         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3336
3337 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3338
3339         * class.c (mono_class_create_from_typedef): Added Vector4i.
3340
3341 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3342
3343         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3344         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3345         special-casing applies to eliminate the call completely.
3346
3347 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3348
3349         * class.c (mono_class_create_from_typedef): Added Vector8s.
3350
3351 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3352
3353         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3354
3355 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3356
3357         * icall.c: get rid of annoying warning.
3358
3359 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3360
3361         * threadpool.c: in 1.x, if you change the background status of the
3362         threadpool thread, it's not reset.
3363         Remove unnecessary calls to SetState.
3364
3365 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3366
3367         * threadpool.c: asynchronously create a set of idle threads upon first
3368         use of the threadpool. SetMinThreads will now start the appropriate
3369         number of idle threads if they are not already running. The default is
3370         1 threadpool thread per CPU. Increased the maximum number of threads
3371         per CPU to 10.
3372
3373 2008-10-22  Martin Baulig  <martin@ximian.com>
3374
3375         Revert r116521 from Zoltan, it breaks the debugger:
3376
3377         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3378         over the virtual methods of a class using metadata if possible, avoiding the
3379         creation of MonoMethod's for non-virtual methods.
3380         
3381         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3382         get_virtual_methods () to iterate over the virtual methods of classes.
3383
3384 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3385
3386         * threads.c: when creating a threadpool thread, set its state to
3387         'background'.
3388         * threadpool.c: reset the background state of a threadpool thread
3389         after finishing each work item
3390         Bug #437888 fixed.
3391
3392 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3393
3394         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3395         
3396         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3397         generic instances which works by inflating the methods in the container
3398         class's vtable.
3399
3400         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3401         variant which doesn't make a copy if no inflation was done.
3402         (mono_class_setup_fields): Use it.
3403
3404         * metadata.c (mono_metadata_get_shared_type): New helper function to
3405         return a shared instance of a given MonoType.
3406
3407         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3408         a copy of most non-generic types.
3409
3410 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3411
3412         * threadpool.c: remove one more GetSystemInfo () call.
3413
3414 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3415
3416         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3417         use the code in mono-proclib.h to get processor information.
3418
3419 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3420
3421         * appdomain.c: fixed the logic that determines whether assemblies in a
3422         directory are "shadow-copied" or not. Bug #433483 fixed.
3423
3424 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3425
3426         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3427         warning.
3428
3429 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3430
3431         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3432         returning a vtype.
3433
3434         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3435         reflection.c: Use mono_field_get_name () for accessing a field's name.
3436
3437         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3438         class.c
3439
3440         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3441         field.
3442
3443         * loader.c (find_method_in_class): Reenable the metadata optimization by
3444         not using it for generic instances.
3445
3446         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3447         data/def_type fields from MonoClassField into a separate structure.
3448         (struct MonoClassField): Remove data/def_type fields.
3449         (struct _MonoClass): Add a 'field_def_values' array to store the default
3450         values/RVA for fields.
3451
3452         * class.c reflection.c: Update after the changes.
3453         
3454         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3455         for accessing field->data.
3456
3457         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3458
3459         * loader.c (find_method_in_class): Revert the last change for now as
3460         it breaks Mono.C5 unit tests.
3461
3462         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3463         'field_generic_types' and 'field_objects' which contain the information
3464         previously stored in MonoInflatedField.
3465         (MonoInflatedField): Delete.
3466         (struct _MonoClassField): Delete 'generic_info' field.
3467
3468         * reflection.c: Store the information which was previously in 
3469         field->generic_info in MonoDynamicGenericClass instead.
3470
3471         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3472         MonoClassField changes.
3473
3474 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3475
3476         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3477         store the value inside the data array of the MonoMethodWrapper.
3478         This saves memory, is faster and fixes the lifetime issues (methods
3479         were never removed from the hash previously). May also fix bug#436996.
3480
3481 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3482
3483         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3484         generic instances, compute the type from the generic definition instead of
3485         looking in field->generic_info.
3486
3487         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3488         for inflated fields, the only user was get_fieldref_token () which no
3489         longer needs it.
3490
3491         * class.c (mono_class_init): Revert the last change as it seems to cause
3492         crashes.
3493
3494         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
3495         bytes on 64 bit platforms.
3496
3497         * object.c (mono_class_create_runtime_vtable): Fix a warning.
3498         
3499         * object.c (mono_class_create_runtime_vtable): Don't initalize
3500         field->data/field->def_type here, it is done lazily by 
3501         mono_class_get_field_default_value ().
3502
3503         * icall.c (ves_icall_get_enum_info): Call 
3504         mono_class_get_field_default_value () instead of directly accessing
3505         field->data and field->def_type.
3506
3507         * object.c (get_default_field_value): Ditto.
3508
3509         * class.c (mono_field_get_data): Ditto.
3510         
3511         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
3512         call for generic instances.
3513
3514         * loader.c (find_method_in_class): If klass != from_class, then inflate
3515         the method with the context of from_class, since the caller assumes this.
3516
3517 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
3518
3519         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
3520         for accessing method->slot.
3521
3522 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
3523
3524         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
3525
3526 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3527
3528         * class.c (mono_method_get_vtable_index): Use
3529         mono_method_get_vtable_slot () for accessing method->slot.
3530
3531         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
3532         accessing klass->methods.
3533
3534         * class.c (mono_method_get_vtable_slot): New helper function.
3535         (mono_class_get_vtable_entry): Ditto.
3536         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
3537         accessing method->slot.
3538
3539         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
3540         method to get_inflated_method ().
3541
3542         * class.c (mono_class_get_inflated_method): New helper method to obtain
3543         a method of an inflated class without calling setup_methods ().
3544         (mono_class_get_cctor): Use get_inflated_method.
3545
3546         * generic-sharing.c (mono_class_get_method_generic): Ditto.
3547         
3548         * marshal.c image.c: Lazily create all the marshal caches.
3549
3550         * image.c (mono_image_init): Move initialization of runtime_invoke
3551         caches to marshal.c.
3552
3553         * marshal.c (get_cache): New helper function to lazily initialize a 
3554         wrapper cache.
3555         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
3556
3557         * debug-helpers.c (mono_method_full_name): Include generic arguments.
3558
3559 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
3560
3561         * loader.c: fixed check for interface type.
3562
3563 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3564
3565         * appdomain.c: check for NULL setup before it's referenced.
3566
3567 p
3568 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3569
3570         * class.c: remove the unused old vtable setup code.
3571
3572 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3573
3574         * class.c: don't depend on interface order in
3575         setup_interface_offsets (bug #435777).
3576         * reflection.c: sort the InterfaceImpl table (patch from
3577         Jb Evain  <jbevain@novell.com>).
3578
3579 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3580
3581         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
3582         the low level assemblies lock.
3583
3584 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
3585
3586         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
3587         object.c, reflection.c, socket-io.c, threads.c: introduced
3588         mono_framework_version () to return the major framewrok version,
3589         changed the code that was using more complex patterns to use it.
3590         Return the correct value for PlatformID for OSX.
3591
3592 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
3593
3594         * icall-def.h, process.h, process.c: added an icall to get info about
3595         processes using mono-proclib.
3596
3597 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
3598
3599         * mono-perfcounters.c: use the mono-proclib functions to
3600         access process information.
3601
3602 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3603
3604         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
3605         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
3606         reflection.c: remove rawbuffer usage: mmap support is more sanely
3607         provided by utils/mono-mmap.
3608
3609 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
3610
3611         * gc.c: use posix semaphores when possible so that
3612         mono_gc_finalize_notify() is signal safe.
3613
3614 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
3615
3616         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
3617         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
3618         be #ifdef-ed out, the linker will remove the rest.
3619
3620         * marshal.c: Implement DISABLE_COM.
3621
3622         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
3623
3624 2008-10-11  Miguel de Icaza  <miguel@novell.com>
3625
3626         * locales.c (string_invariant_compare_char): Optimization: do not
3627         call g_unichar_type unless we actually need the information.
3628
3629 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3630
3631         * object.c, class-internals.h: Also create remoting trampolines
3632         for generic methods.  Pass the domain to the remoting trampoline
3633         creation function, too.
3634
3635 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
3638
3639 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3640
3641         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
3642         Vector4ui.
3643
3644 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3645
3646         * assembly.c:
3647         * locales.c: remove the use of g_strdown. Fixes bug #322313.
3648
3649 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3650
3651         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
3652         for the least possible amount of time (extending the fix in r113458).
3653
3654 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3655
3656         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
3657
3658 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3659
3660         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
3661         as possible simd intrinsic types.
3662         Optimized the test to check for the common prefix first.
3663
3664 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
3665
3666         * class.c: back out part of a broken optimization committed on
3667         May 23th (bug #433908).
3668
3669 2008-10-09  Mark Probst  <mark.probst@gmail.com>
3670
3671         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
3672         Win32.  Should fix #432388 for most cases until we have the new
3673         profiler on Win32.
3674
3675 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3676
3677         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
3678         instead of using inst->id so the hash is stable for AOT.
3679
3680 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3681
3682         * appdomain.c:
3683         * icall.c: create a .ini file for shadow-copied assemblies that
3684         contains the location of the original assembly. Use this to return the
3685         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
3686         Also fix the number of '/' for windows when returning the CodeBase.
3687         Fixes bug #430920.
3688
3689 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3690
3691         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
3692
3693         Code is contributed under MIT/X11 license.
3694
3695 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3696
3697         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
3698           if if the class vtable needs initialized.
3699
3700         Code is contributed under MIT/X11 license.
3701
3702 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3703
3704         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
3705           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
3706           STRING->BSTR, and CLASS->INTERFACE.
3707
3708         Code is contributed under MIT/X11 license.
3709
3710 2008-10-07  Marek Habersack  <mhabersack@novell.com>
3711
3712         * sysmath.h: changed the declaration of the
3713         ves_icall_System_Math_Round2 icall by adding an extra
3714         away_from_zero parameter.
3715
3716         * sysmath.c (ves_icall_System_Math_Round2): added support for
3717         away from zero rounding. The icall now takes an extra boolean
3718         parameter to signal that away from zero operation is requested.
3719
3720 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3721
3722         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
3723         the delegate klass so it can work with full-aot.
3724         (mono_marshal_get_delegate_end_invoke): Ditto.
3725         (mono_marshal_get_delegate_invoke): Ditto.
3726
3727 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
3728
3729         * gc.c, attach.h, attach.c: remove a bad pattern:
3730         add_finalizer_callback () is not implemented correctly, it can't
3731         without adding more overhead to the finalizer loop and it's not
3732         even needed, since we know exactly what we need to call, so there is
3733         no need to do so through an expensive function pointer.
3734
3735 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
3736
3737         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
3738         for the no-gc case.
3739         * attach.c (mono_attach_init): Remove the #ifdef.
3740
3741 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3742
3743         * attach.c (mono_attach_init): Don't use
3744         mono_gc_add_finalizer_thread_callback when compiling without GC.
3745         Fixes #432306.
3746         
3747         Code is contributed under MIT/X11 license.
3748
3749 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * class.c (mono_class_create_from_typedef): Remove the 
3752         #ifndef DISABLE_SIMD stuff.
3753
3754 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3755
3756         * class-internals.h (MonoClass): Added simd_type bit field.
3757
3758         * class.c (mono_class_create_from_typedef): Check if type is a simd
3759         intrinsic.
3760
3761 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3762
3763         * object.c (mono_method_add_generic_virtual_invocation): Only add
3764         instantiations to the thunk whose count is at least as large as
3765         the threshold.
3766
3767 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3768
3769         * icall.c: changed the Type of the exception thrown when trying to
3770         invoke a constructor on an abstract class. Part of the fix for bug
3771         #324185.
3772
3773 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3774
3775         * class.c, class-internals.h (mono_method_get_vtable_index): New
3776         function which returns the index into the vtable and properly
3777         handles inflated virtual generic methods.
3778
3779 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3780
3781         * object.c, domain.c, object-internals.h, domain-internals.h:
3782         Generalize IMT thunk machinery to also handle thunks for virtual
3783         generic method invokes.  When a virtual generic method is invoked
3784         more than a number of times we insert it into the thunk so that it
3785         can be called without lookup in unmanaged code.
3786
3787         * generic-sharing.c, class-internals.h: Fetching a
3788         MonoGenericInst* for a method from an (M)RGCTX.
3789
3790 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3791
3792         * marshal.c (emit_marshal_string): Applied a variant of a patch by
3793         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
3794         marshalling. Fixes #431304.
3795
3796 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
3797
3798         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3799           handle when ref is specified without In or Out.
3800
3801         Code is contributed under MIT/X11 license.
3802
3803 2008-09-30  Mark Probst  <mark.probst@gmail.com>
3804
3805         * loader.c (mono_get_method_constrained): Don't expand method with
3806         the class's context, because it's already a method of that class.
3807
3808 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
3809
3810         * attach.c : should be correct build fix.
3811
3812 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
3813
3814         * attach.c: Fix the previous change.
3815
3816 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
3817
3818         * attach.c : quick w32 build fix.
3819
3820 2008-09-27  Miguel de Icaza  <miguel@novell.com>
3821
3822         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
3823         crashes MonoDevelop: #430455.
3824
3825 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
3826
3827         * domain-internals.h (struct _MonoDomain): Move most fields used only by
3828         the JIT do MonoJitDomainInfo in ../mini/mini.h.
3829
3830         * domain.c: Remove initialization/cleanup of the removed fields.
3831
3832 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3833
3834         * class.c (mono_class_generic_sharing_enabled): Enable generic
3835         code sharing for PPC.
3836
3837 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
3838
3839         * attach.c : Fixing the Windows builds.
3840
3841         Code is contributed under MIT/X11 license.
3842
3843 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3844
3845         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
3846         the default generic sharing mode to 'all'.
3847
3848 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3849
3850         * generic-sharing.c, class-internals.h: New function for checking
3851         whether a method needs a static RGCTX invoke wrapper.  A few
3852         funtions moved from mini/generic-sharing.c.
3853
3854         * icall.c: New function used.
3855
3856 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3857
3858         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
3859         Static RGCTX invoke wrapping applies to value type methods, too.
3860
3861         * class.c (mono_class_setup_vtable_general): In generic-shared
3862         value types, wrap methods with a static RGCTX invoke wrapper.
3863
3864 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3865
3866         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
3867         osx build.
3868
3869 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
3870
3871         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
3872         register a callback which is called when the finalizer thread is woken
3873         up.
3874         (finalizer_thread): Call the callback if it exists.
3875
3876         * attach.h attach.c: New files, implementing the attach mechanism.
3877
3878         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
3879         
3880         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
3881         by the previous change.
3882
3883 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
3884
3885         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
3886         loader.c, marshal.c, metadata-internals.h, metadata.c,
3887         method-builder.c, object.c, reflection.c: introduced specific functions
3888         to allocate from the domain and image mempools and cleaned up most of
3889         the code to use them (still missing a few in reflection.c).
3890         Keep the loader bytes counter updated.
3891
3892 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
3893
3894         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
3895         loader-related counters.
3896
3897 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
3898
3899         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
3900         added more MS-compatible counters.
3901
3902 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
3903
3904         * class.c (mono_class_setup_fields): Call setup_fields before accessing
3905         class->blittable. Fixes #428217.
3906
3907 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
3908
3909         * reflection.c (mono_image_get_field_on_inst_token): Call 
3910         field_encode_signature () since that handles custom modifiers too.
3911         Fixes #424663.
3912
3913 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
3914
3915         * reflection.c (add_custom_modifiers): New helper function to merge custom
3916         modifiers stored in objects to a MonoType.
3917         (fieldref_encode_signature): Encode custom modifiers.
3918         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
3919         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
3920
3921 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
3922
3923         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
3924         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
3925         64-bit IL only images because imports are not resolved for IL only images.
3926         Special thanks to Bill Holmes for finding this bug and testing the patch.
3927         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
3928
3929         Contributed under MIT/X11 license.
3930
3931 2008-09-19  Miguel de Icaza  <miguel@novell.com>
3932
3933         * mono-config.c (dllmap_start): Add support for the bits keyword
3934         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
3935
3936 2008-09-19  Mark Probst  <mark.probst@gmail.com>
3937
3938         * reflection.c (inflate_mono_method): When the class the method is
3939         to be inflated for is itself not inflated, just return the method.
3940
3941 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
3942
3943         * mono-perfcounters.c: use more user friendly process instance names.
3944
3945 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
3946
3947         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3948           handle "[in] ref" and "[in][out] ref" cases.
3949
3950         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
3951           to mono_mb_create_method.  This was causing problems calling native to
3952           managed passing Variants by value.
3953
3954         Code is contributed under MIT/X11 license.
3955
3956 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * class.c (can_access_internals): Call mono_assembly_load_friends ()
3959         before accessing the friend_assembly_names field.
3960
3961         * assembly.c (mono_assembly_load_friends): Make this callable multiple
3962         times.
3963         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
3964         called lazily when it is needed.
3965
3966         * metadata-internals.h (struct _MonoAssembly): Add 
3967         'friend_assembly_names_inited' flag.
3968
3969 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
3970
3971         * mono-perfcounters-def.h: fix the types of a few counters.
3972         * mono-perfcounters.c: implemented the instance names getter
3973         and a few bugfixes.
3974
3975 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
3976
3977         * culture-info-table.h : regenerated.
3978
3979 2008-09-17  Robert Jordan  <robertj@gmx.net>
3980
3981         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
3982         context bound objects. Fixes #415577.
3983
3984         Code is contributed under MIT/X11 license.
3985
3986 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
3987
3988         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
3989         implementation (bug #423582).
3990
3991 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
3992
3993         * object.c (mono_object_get_virtual_method): Handle the case method->slot
3994         is not set. Fixes #426309.
3995
3996 2008-09-16  Jb Evain  <jbevain@novell.com>
3997
3998         * class.c (mono_class_from_name): fix the exported type look up
3999         when the type is defined in a referenced assembly.
4000
4001 2008-09-16  Jb Evain  <jbevain@novell.com>
4002
4003         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
4004         increment the next index counter on each iteration to make that work
4005         for more than one type forwarder. Unmanaged part to fix #422929.
4006
4007 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4008
4009         * object-internals.h: enum ComInterfaceType in
4010         MonoInterfaceTypeAttribute is guint32, not guint16.
4011
4012 2008-09-12  Mark Probst  <mark.probst@gmail.com>
4013
4014         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
4015         writing code.
4016
4017 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4018
4019         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
4020         not gboolean.
4021
4022 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4023
4024         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
4025         Endianness fixes for MonoSymbolFileOffsetTable.
4026
4027 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4028
4029         * process.c (complete_path) : Removing quotes from the 
4030           input path.  The glib file routines do not handle file paths
4031           that have quotes around them.
4032
4033         Code is contributed under MIT/X11 license.
4034
4035 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4036
4037         * socket-io.h : Adding a comment to provide locations where 
4038           changes to MonoSocketAsyncResult need to be synced.
4039
4040         Code is contributed under MIT/X11 license.
4041
4042 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
4043
4044         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
4045         parameters as well. Fixes #425001.
4046
4047 2008-09-08  Miguel de Icaza  <miguel@novell.com>
4048
4049         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
4050         windows build.
4051
4052 2008-09-07  Miguel de Icaza  <miguel@novell.com>
4053
4054         * console-io.c: Add support for tracking the window size if it
4055         changes.
4056
4057         The setup is very simple: the TtySetup function will now return a
4058         pointer to a location in memory that tracks the current console
4059         size.  The managed code checks its current value every time its
4060         queried against the last value set, and updates accordingly.
4061
4062         With this setup we can work with multiple consoles, and we do not
4063         require to poke into managed code from a signal handler.
4064
4065         Additionally, the environment for COLUMNS and LINES is now handled
4066         in unmanaged code.
4067
4068         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
4069
4070 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4071
4072         * marshal.c (mono_type_native_stack_size): Treat
4073         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
4074
4075 2008-09-04  Jb Evain  <jbevain@novell.com>
4076
4077         * class.c (mono_class_is_assignable_from): fix assignability of nullables
4078         to nullables.
4079
4080 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
4081
4082         * verify.c (verify_type_compatibility_full): Revert change
4083         to allow converting a native int to unmanaged pointer be verifiable
4084         under non-strict mode.
4085         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
4086
4087         * verify.c: Added some TODOs.
4088
4089 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
4090
4091         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
4092           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
4093           Changed to use GlobalAlloc for the memory returned on Windows platforms.
4094
4095         Code is contributed under MIT/X11 license.
4096
4097 2008-09-02  Jb Evain  <jbevain@novell.com>
4098
4099         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
4100
4101 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
4102
4103         reflection.c (typebuilder_setup_fields): Handle classes with
4104         explicit size.
4105
4106 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
4107
4108         class.c (mono_class_setup_events): Add memory barrier due to
4109         double checked locking.
4110         
4111         class.c (mono_class_setup_properties): Same.
4112
4113 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * class.c (mono_class_is_assignable_from): Fix the build.
4116         
4117         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
4118         before accessing klass->interface_bitmap. Fixes #421744.
4119
4120 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
4123         the runtime into no-exec mode, useful when running the AOT compiler.
4124
4125         * appdomain.c gc.c object.c: Avoid executing managed code when running
4126         in no-exec mode.
4127         
4128         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
4129
4130         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
4131         special case when the mono_assembly_loaded () returns NULL because the 
4132         search hook is not installed.
4133
4134 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4135
4136         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
4137         crashes in bstr marshalling on linux.
4138
4139 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4140
4141         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
4142         with more than one parameter.
4143
4144 2008-08-24  Miguel de Icaza  <miguel@novell.com>
4145
4146         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
4147         start/stop flow control as well when turning off ICANON (allows
4148         C-s and C-q to be read by Console.ReadKey).
4149
4150 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4151
4152         * class.c (mono_class_init): Move the initialization of nested classes
4153         into mono_class_get_nested_types (). Fixes #418433.
4154
4155         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
4156         flag.
4157
4158         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
4159         iterating tough the nested classes of a class.
4160
4161 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4162
4163         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
4164         on arm.
4165
4166 2008-08-22  Miguel de Icaza  <miguel@novell.com>
4167
4168         * console-io.c (sigcont_handler): Support signal chaining for
4169         SIGCONT.
4170
4171         (console_set_signal_handlers): Use best practices with sigaction,
4172         clear the structure before using it. 
4173
4174 2008-08-22  Robert Jordan  <robertj@gmx.net>
4175
4176         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4177         Fix the Windows build.
4178
4179 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * class.c (mono_class_generic_sharing_enabled): Make the default
4182         sharing mode 'corlib'.
4183
4184 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4185
4186         * console-io.c (console_set_signal_handlers): Fix a warning.
4187
4188         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4189         method normally, the JIT will take care of avoiding recursion.
4190
4191 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4192
4193         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4194
4195         Code is contributed under MIT/X11 license.
4196
4197 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4198
4199         * console-io.c (sigcont_handler): We need to restore the entire
4200         termios state, not only the original settings, as things like echo
4201         can be controlled after this (Booish exposes this issue with its
4202         own ReadLine implementation).
4203
4204         Additionally, we need to set the terminal back into keypad_xmit
4205         mode.
4206         
4207         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4208         string as a paramter as well.   Otherwise we get different
4209         keyboard sequences.
4210
4211 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4212
4213         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4214         delegates with byref out parameter passing. Fixes #351520.
4215
4216         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4217         a generic context.
4218         (mono_type_get_desc): Add the type arguments for GENERICINST.
4219         (mono_method_full_name): Stringify the class name using mono_type_full_name
4220         so it picks up generic arguments.
4221
4222 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4223
4224         * console-io.c: Removed debug output.
4225
4226 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4227
4228         reflection.c (mono_reflection_create_runtime_class): Alloc
4229         the nested classes linked list using the dynamic image mempool.
4230         Fixes leak in corlib compilation.
4231
4232 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4233
4234         * console-io.c: Fix incredibly annoying behavior on the console
4235         after resuming execution after control-z.   This affected every
4236         console application.
4237
4238 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4239
4240         * mempool-internals.h: Header for mono private mempool functions. The first
4241         two function are for allocating glib linked lists using pools.
4242
4243         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4244
4245         * Makefile.am: Added mempool-internals.h.
4246
4247 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4250         (mono_domain_free): Ditto.
4251
4252         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4253         be used by the JIT to store its domain-specific information, instead of putting
4254         it directly into MonoDomain.
4255
4256         * domain.c (mono_install_create_domain_hook): New helper function to install
4257         a hook which initializes domain->runtime_info.
4258
4259         * domain.c (mono_install_free_domain_hook): Ditto.
4260         
4261 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4264         asserting if the ares parameter is null.
4265
4266         * mono-perfcounters.c: Fix warnings.
4267
4268         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4269         is not needed, don't check for interruptions either.
4270         (mono_marshal_get_delegate_end_invoke): Ditto.
4271
4272 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4273
4274         * mono-perfcounters.c (predef_readonly_counter): added support for
4275         reading the ASP.NET Requests Queued counter from another process.
4276
4277 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4278
4279         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4280         MonoImage to simplify the AOT code.
4281
4282 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4283
4284         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4285         marshalling. Fixes #416078.
4286
4287 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4288         
4289         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4290         it is set, looking up the icall address is deferred to the JIT, since 
4291         in embedded scenarios, the icall might not be registered in the runtime
4292         doing the AOT compilation. Backported from the 2.0 branch.
4293
4294 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4295
4296         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4297         Fixes #415621.
4298
4299 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4300
4301         * Makefile.am: added support for cross-compilation.
4302
4303 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4306
4307 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4308
4309         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4310
4311 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4312
4313         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4314         mono-perfcounters.c: performance counters implementation.
4315
4316 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4317
4318         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4319         to gpointer, letting the AOT code decide what to store in it.
4320
4321 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4322
4323         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4324           mono_class_setup_methods if the methods are not initialized.
4325
4326         Code is contributed under MIT/X11 license.
4327
4328 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4329
4330         * verify.c: Remove some debug code I commited by accident.
4331
4332         * verify.c (mono_method_is_valid_in_context): Change the return value
4333         to make possible to distinguish between invalid and unverifiable.
4334
4335         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4336         methods.
4337
4338 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4339
4340         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4341         constraints. Fixes regression in gtest-253.
4342
4343 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4344
4345         * verify.c (mono_verifier_verify_class): Don't allow generic types
4346         with explicit layout.
4347
4348         * verify.c (mono_method_verify): Check locals and argument types.
4349
4350 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4351
4352         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4353         wait if the thread is in StopRequested state.
4354
4355         * class.c (mono_class_from_name): Refactor the module searching code into
4356         a separate function so it can be reused in the AOT case too.
4357
4358 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4359
4360         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4361         Check both the type and it's generic type definition for loader errors.
4362         
4363         * verify.c (mono_method_is_valid_in_context): Don't generate another
4364         error when a type errors occur, this leads to the wrong exception been
4365         thrown.
4366
4367 2008-07-28  Dick Porter  <dick@ximian.com>
4368
4369         * icall-def.h
4370         * process.c
4371         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4372         New internal calls to duplicate and close a process handle.
4373
4374 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4375
4376         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4377
4378 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4381
4382 2008-07-27  Robert Jordan  <robertj@gmx.net>
4383
4384         * class.c (mono_class_init): Don't compute class.has_finalize for
4385         valuetypes. Fixes #412477.
4386
4387 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * verify.c: Implement constraint equivalence checking.
4390         This is required when a generic parameter is used as
4391         argument to a constrained one.
4392
4393         Fixes #410637.
4394
4395 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4396
4397         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4398
4399         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4400
4401         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4402         synch with managed object layout.
4403
4404 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4405
4406         * verify.c (do_branch_op): Handle valuetypes and generic
4407         arguments properly.
4408
4409         * verify.c (do_cmp_op): Same.
4410
4411         Fixes #410383.
4412
4413 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4414
4415         * generic-sharing.c: Fix memory leaks.
4416
4417         * class.c, class-internals.h: Make
4418         mono_class_inflate_generic_type_with_mempool() non-static.
4419
4420 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4421
4422         * pedump.c (dump_verify_info): Dump full class name.
4423
4424 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4425
4426         * generic-sharing.c: Removed some old code that didn't do anything.
4427
4428 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4429         * profiler.c: Added runtime_initialized_event,
4430         mono_profiler_install_runtime_initialized and
4431         mono_profiler_runtime_initialized. This new hook tells the profiler
4432         when the runtime is sufficiently initialized to be able to call
4433         mono_thread_attach on the root appdomain.
4434         * profiler.h, profiler-private.h: Likewise.
4435
4436 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4437
4438         * verify.c (do_cast): Do boxing for generic arguments as well.
4439
4440         * class.c (is_nesting_type): Drop generic instantiations before
4441         checking for nesting.
4442
4443         * class.c (can_access_instantiation): Allow access to generic
4444         arguments.
4445
4446 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4447
4448         * verify.c (verify_class_for_overlapping_reference_fields):
4449         On some cases, the field size might be zero, guard against that.
4450         Fix the explicit layout check to work as expected.
4451
4452 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4455         mono_thread_resume () during shutdown, since the thread we want to abort
4456         might be suspended.
4457
4458 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4459
4460         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4461         warning.
4462
4463         * debug-mono-symfile.c: Fix a warning.
4464
4465         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4466
4467         * object.c (mono_class_vtable): Check if exception_type is set, and return
4468         NULL as defined by the function comments.
4469
4470 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4471
4472         * mempool.c: Use malloc for every single mempool allocation if the
4473         configure option is set.  This makes it easier to track mempool
4474         allocations with tools like Valgrind.
4475
4476 2008-07-22  Jb Evain  <jbevain@novell.com>
4477
4478         * reflection.c (create_dynamic_mono_image): emit the same
4479         metadata version that SL2 does when creating a SL2 image.
4480
4481 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4482
4483         * icall-def.h:
4484         * icall.c: New icall System.Enum:get_hashcode. This function
4485         avoids the overhead of boxing the enum to the underlying type.
4486
4487 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4488
4489         * reflection.c (mono_method_get_object): Don't let static RGCTX
4490         invoke wrappers get into MonoReflectionMethods.
4491
4492 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
4493
4494         * object-internals.h:
4495         * object.c: New mono_runtime_class_init_full function
4496         that makes throwing the exception optinal.
4497
4498         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
4499         for the case where the exception object is supplied.
4500
4501 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
4502
4503         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
4504         old ld versions.
4505
4506         Contributed under MIT/X11 license.
4507
4508 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4509
4510         * string-icalls.c (ves_icall_System_String_InternalSplit):
4511         Optimize array allocation by caching the MonoClass of the
4512         array type.
4513
4514         * icall.c (ves_icall_Type_GetMethodsByName): Same.
4515
4516         * reflection.c (mono_param_get_objects): Same.
4517
4518 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4519
4520         * icall-def.h:
4521         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
4522         It inflates the given type using the class context.
4523
4524 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4525
4526         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
4527         the vtable if it already exists.
4528
4529         * object-internals.h: Add mono_class_try_get_vtable as part of the
4530         internal API.
4531
4532         * reflection.c (mono_type_get_object): Use the MonoObject from the
4533         vtable when possible. Reduces locking contention on reflection heavy
4534         code.
4535
4536 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
4537
4538         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
4539         g_bit_nth_msf () since that macro is not implemented in eglib.
4540
4541 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4542
4543         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
4544         on platforms which do not support it.
4545
4546 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4547
4548         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
4549
4550 2008-07-11  Martin Baulig  <martin@ximian.com>
4551
4552         * mono-debug-debugger.h
4553         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
4554
4555         * mono-debug-debugger.c
4556         (_mono_debugger_interruption_request): New global volatile variable.
4557         (mono_debugger_check_interruption): New public function.
4558
4559         * threads.c
4560         (mono_thread_current_check_pending_interrupt): Call
4561         mono_debugger_check_interruption().
4562         (mono_thread_interruption_checkpoint_request): Likewise.
4563
4564 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4565
4566         * verify.c: Add more type checks for loaded types. Verify the result
4567         handle from ldtoken.
4568
4569 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4570
4571         * loader.c (field_from_memberref): Don't crash if the field
4572         wasn't found.
4573
4574 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4575
4576         * verify.c: Verify if type and method instantiations
4577         don't have invalid VAR or MVAR arguments.
4578
4579 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4580
4581         * verify.c: Fix double free of function pointer list.
4582
4583 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * object.c (mono_string_to_utf8): Comment the new code as it
4586         breaks under eglib.
4587
4588 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
4589
4590         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
4591
4592 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
4593
4594         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
4595           is not throw too many times.
4596
4597         Code is contributed under MIT/X11 license.
4598
4599 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4600
4601         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
4602         debugging is turned off.
4603
4604 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
4605
4606         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
4607
4608 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4609
4610         * class-internals.h, class.c: Added new generic sharing option:
4611         Share only stuff in System.Collections.Generic, which is now the
4612         default.
4613
4614 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4615
4616         * generic-sharing.c, class-internals.h: New function for getting a
4617         generic method in a generic class given the corresponding method
4618         for a different instantiation of the class.  Partly refactored
4619         from mini-trampolines.c.
4620
4621         * class.c: Make sure generic methods have a class_inst if they are
4622         part of a generic class.
4623
4624         * metadata.c (mono_type_stack_size_internal): Handle type
4625         variables.
4626
4627 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4628
4629         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
4630         Signifies whether information on the this/vtable/mrgctx variable
4631         is available.
4632
4633 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4634
4635         * object.c, object-internals.h, icall.c: New function
4636         mono_delegate_ctor_with_method(), which does the same as
4637         mono_delegate_ctor(), but takes an explicit method argument
4638         instead of taking the method from the jit info.
4639
4640         * marshal.c: When creating a delegate with an inflated method take
4641         the "this" argument as the target class for the castclass.
4642
4643 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4644
4645         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
4646         mono_jit_info_table_find() to perform very badly in some cases.
4647
4648 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4649
4650         * icall.c (type_from_typename): Handle 'string'.
4651
4652         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
4653         wrappers into the wrapper_hash, since the key is not a MonoMethod.
4654
4655 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4656
4657         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
4658
4659         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
4660         number of available managed allocator types.
4661
4662         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
4663         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
4664
4665 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4666
4667         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
4668         which is a low level lock protecting just the 'jit_code_hash' hash table.
4669
4670         * domain.c: Initialize+cleanup jit_code_hash_lock.
4671         
4672 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4673
4674         * coree.c (mono_load_coree): Set coree_module_handle global variable only
4675         after initialization.
4676
4677         * coree.h: Make MonoFixupExe internal.
4678
4679         Contributed under MIT/X11 license.
4680
4681 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4682
4683         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
4684         because that is platform independent. Check NumberOfRvaAndSizes in PE32
4685         as well.
4686         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
4687         image being loaded is a CLI image and _CorValidateImage gets called.
4688
4689         * coree.h: Add MonoLoadImage.
4690
4691         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
4692         instead of LoadLibrary.
4693
4694         Contributed under MIT/X11 license.
4695
4696 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
4697
4698         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
4699         for any primitive type.
4700
4701 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4702
4703         * object.c (mono_array_new_specific): Optimize this and the other allocation
4704         functions a bit.
4705         
4706         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
4707         domains too if mono_dont_free_domains is set.
4708
4709         * domain-internals.h (mono_dont_free_domains): New internal option controlling
4710         whenever to free appdomain data after it has been unloaded.
4711
4712         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
4713         
4714 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
4715
4716         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
4717         (mono_method_get_equivalent_method): Fix a warning.
4718
4719         * object.c (mono_message_init): Avoid looking up array types for each call.
4720
4721 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4722
4723         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
4724         call.
4725
4726         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
4727         even more.
4728
4729         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
4730         each iteration.
4731
4732         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
4733         fields of an enum.
4734
4735 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
4736
4737         * object.c (mono_value_box): Fix boxing of nullables.
4738
4739 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4740
4741         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
4742         mono_module_handle that is defined by the linker; no initialization required.
4743         * coree.h: Remove mono_module_handle, add __ImageBase, update
4744         mono_image_open_from_module_handle.
4745         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
4746         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
4747         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
4748         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
4749         to 4 GB away from image base address. IA64 version is not tested but was very
4750         easy to implement and should work if we ever need it.
4751         * domain.c (mono_init_internal): Avoid system error message boxes.
4752         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
4753         with has_entry_point. Handle do_mono_image_load fauilre correctly.
4754         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
4755         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
4756         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
4757
4758         Contributed under MIT/X11 license.
4759
4760 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4761
4762         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
4763         as part of the private mono API.
4764         
4765         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
4766         Do proper argument checking for methods that belong to generic classes.
4767         Do proper type resolution for GMFH/2.
4768         Fixes #377324.
4769         
4770 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4771
4772         * verify.c (do_switch): Fix a memory corruption bug with
4773         the jump index is out of bound.
4774
4775 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4776
4777         * verify.c: Disable debug code.
4778
4779 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4780
4781         * reflection.c (mono_image_get_methodbuilder_token): Use
4782         mono_image_get_methodspec_token_for_generic_method_definition
4783         instead of mono_image_get_memberref_token. We cache more memberef
4784         entries now.
4785
4786 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4787
4788         * verify.c: Inflate exception clause types.
4789         Fixes #402606.
4790         
4791 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4792
4793         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
4794         name.
4795
4796         * reflection.c (mono_image_get_ctorbuilder_token): Same.
4797
4798         * reflection.c (mono_image_create_method_token): Same.
4799
4800 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4801
4802         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
4803         It does the same as mono_image_get_methodref_token but works on
4804         MethodBuilder.
4805
4806         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
4807         and always generate a methodspec. This follows the old behavior and fixes
4808         the regressions in System.Core. 
4809
4810 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
4813         don't event mono_class_get () succeeds. Fixes #402182.
4814
4815 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4816
4817         * metadata-internals.h: Added MonoDynamicImage::methodspec
4818         hashtable to store methodspec tokens created for MethodBuilders.
4819
4820         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
4821         MethodBuilders as open instantiations if a methodspec was requested.
4822
4823         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
4824
4825         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
4826
4827         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
4828
4829         Fixes bug #349190.
4830
4831 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4832
4833         * loader.c (method_from_methodspec): Avoid crashing if the
4834         method lookup fails.
4835
4836 2008-06-20  Dick Porter  <dick@ximian.com>
4837
4838         * socket-io.c (get_socket_assembly): Cope with Moonlight network
4839         classes being in a different assembly.  Fixes bug 399184.
4840
4841 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
4842
4843         * loader.c (mono_loader_init): Make this callable multiple times.
4844         (mono_dllmap_insert): Call mono_loader_init () so this works even before
4845         the runtime is initialized. Fixes #401755.
4846
4847 2008-06-19  Dick Porter  <dick@ximian.com>
4848
4849         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
4850         Fixes bug 349688.
4851
4852 2008-06-19  Dick Porter  <dick@ximian.com>
4853
4854         * socket-io.c:
4855         * icall-def.h: Implement Socket generic Send() and Receive()
4856         methods.  Fixes bug 395168.
4857
4858 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
4859
4860         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
4861
4862         Contributed under MIT/X11 license.
4863
4864 2008-06-18  Martin Baulig  <martin@ximian.com>
4865
4866         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
4867         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
4868         set to 80.0.  The debugger <-> runtime interface is now frozen as
4869         well.   
4870
4871         * mono-debug.c
4872         (mono_debug_debugger_version): Bump to 4.
4873
4874 2008-06-18  Martin Baulig  <martin@ximian.com>
4875
4876         * debug-mono-symfile.c
4877         (load_symfile): Don't check the minor version.
4878
4879         * debug-mono-symfile.h: Bump the version number to 50.0.
4880
4881 2008-06-18  Martin Baulig  <martin@ximian.com>
4882
4883         * debug-mono-symfile.c
4884         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
4885         minimum required version.
4886
4887 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4888
4889         * reflection.c (mono_custom_attrs_from_property): Fix support for
4890         retriveving cattrs of dynamic inflated generic types.
4891
4892         * reflection.c (mono_custom_attrs_from_event): Same.
4893
4894         * reflection.c (mono_custom_attrs_from_field): Same;
4895
4896         * reflection.c (typebuilder_setup_events): Same cattrs of events.
4897
4898         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
4899         Moved to metadata.c.
4900
4901         * metadata.c: New functions to retrive the equivalent field, event
4902         of property from the generic type definition.
4903
4904         * metadata-internals.h: Added new functions from metadata.c.
4905
4906 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4907
4908         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
4909         to cached in a mempool is used.
4910
4911         * metadata.c (free_generic_class): In some situations field generic_info type
4912         is not properly dup'ed and leads to double free'ing.
4913
4914         Fixes #400643.
4915
4916 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4917
4918         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
4919         this arguments (will be needed later for generic methods).
4920         Collect stats.
4921
4922 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4923
4924         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4925         Create a static RGCTX invoke wrapper for methods which require it.
4926
4927 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4928
4929         * object.c, class-internals.h: New function for checking whether
4930         an individual field is special static.
4931
4932 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4933
4934         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
4935         linear search since the table is sorted.
4936
4937         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
4938         Fixes #324180.
4939
4940 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4941
4942         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
4943         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
4944
4945         * gc.c (mono_domain_finalize): Allow an infinite timeout.
4946
4947         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
4948         
4949         * threads.c (mono_thread_request_interruption): Get rid of locking, use
4950         InterlockedCompareExchange to query and modify 
4951         thread->interruption_requested.
4952
4953         * object-internals.h (struct _MonoThread): Change interruption_requested
4954         to a gint32 so it can be modified by atomic operations. Add 
4955         'critical_region_level' from the managed side, change small_id to a guint32,
4956         add new set of 'unused' fields.
4957
4958         * appdomain.c: Bump corlib version.
4959
4960 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * class.c (mono_class_from_name): Search modules as well. Fixes
4963         #322332.
4964
4965 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4966
4967         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
4968         templates.  Templates are generalized with an additional type_argc
4969         argument.  RGCTX templates have type_argc==0, MRGCTX templates
4970         have type_argc>0.
4971
4972         * domain-internals.h, domain.c: New hash table for looking up
4973         MRGCTXs.
4974
4975         * metadata.c, metadata-internals.h: Rename hash and equal
4976         functions for MonoGenericInst's and make them public.
4977
4978         * class-internals.h: New data structures for the MRGCTX.  Macros
4979         for distinguishing slots in the RGCTX and the MRGCTX.
4980
4981 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4982
4983         * object.c (mono_method_get_imt_slot): Put the same methods of
4984         different instantiations of the same generic interface in the same
4985         IMT slots, to make generic sharing simpler.
4986
4987 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4988
4989         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
4990
4991         * metadata.c (mono_metadata_field_info_with_mempool): Added.
4992         This function works just like mono_metadata_field_info, but
4993         accept a mempool as argument to be used allocating memory.
4994
4995         * marshal.c (mono_marshal_load_type_info): Use new function
4996         to load marshal data into image mempool.
4997
4998 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4999
5000         * class.c (mono_class_inflate_generic_type_with_mempool):
5001         This function allows to inflate a generic type using
5002         a mempool.
5003
5004         * class.c (inflate_generic_type): Take a mempool as argument
5005         and use it to do type dup'ing.
5006
5007         * class.c (mono_class_setup_fields): Field type for generic
5008         generic classes are allocated from the image mempool.
5009
5010         * metadata.c (free_generic_class): Inflated field type is
5011         now allocated in the image mempool.
5012
5013 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5014
5015         * threads.c (thread_cleanup): Free MonoThread::name.
5016
5017 2008-06-12  Marek Habersack  <mhabersack@novell.com>
5018
5019         * appdomain.c (ensure_directory_exists): avoid unnecessary
5020         mkdir(2) calls when the shadow directory already exists.
5021         (mono_make_shadow_copy): copy also satellite assemblies from the
5022         private bin directories.
5023
5024 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5025
5026         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
5027         
5028         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
5029         a page boundary. Fixes #396219.
5030
5031 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5032
5033         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
5034         due to double-checked locking.
5035
5036 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5037
5038         * assembly.c (build_assembly_name): Release memory on failure.
5039
5040         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
5041
5042 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5043
5044         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
5045         memory on failure.
5046
5047 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5048
5049         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
5050         memory on failure.
5051
5052 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5053
5054         * loader.c (field_from_memberref): Check if field signature type is equal
5055         to the non-inflated type of the field. Fixes #398980.
5056
5057 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5058
5059         * assembly.c (mono_assembly_load_from_full): Call 
5060         mono_assembly_load_friends () outside the assemblies lock, since it can
5061         acquire the loader lock. Fixes #323696.
5062
5063         * reflection.c (resolve_object): Inflate the inst with the context for
5064         FieldOnTypeBuilderInst. Fixes #399010.
5065
5066 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5067
5068         * reflection.c (mono_image_get_field_on_inst_token): Don't
5069         inflate the field to encode it's signature. If it's a
5070         VAR or MVAR it should stay that way in the signature.
5071         Fixes #399047.
5072
5073 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5074
5075         * reflection.c (resolve_object): Release memory of inflated types.
5076
5077 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5078
5079         * loader.c (mono_method_get_signature_full): Remove assert about
5080         loading a methodspec to a generic method. We have such methods, such as
5081         System.Threading.Interlocked::CompareExchange<T>.
5082         This assert was removed since it crashes the verifier when it checks
5083         methods calling CompareExchange<T>.
5084
5085 2008-06-10  Marek Safar  <marek.safar@gmail.com>
5086
5087         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
5088         of Type array and not MonoType.
5089
5090 2008-06-10  Marek Habersack  <mhabersack@novell.com>
5091
5092         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
5093         <lupus@ximian.com>
5094
5095 2008-06-10  Martin Baulig  <martin@ximian.com>
5096
5097         * debug-mono-symfile.h
5098         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
5099         changes to the file format, but we were generating incorrect
5100         source file indices in the line number table due to a bug, which
5101         made backtraces report an incorrect source file.
5102
5103 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5104
5105         * mono-debug.c: Moved mono_debug_free_method_jit_info from
5106         mini/debug-mini.c to here.
5107
5108         * mono-debug.c (il_offset_from_address): Free memory from find_method.
5109
5110         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
5111         use it to release structs returned by mono_debug_find_method.
5112
5113 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
5114
5115         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
5116         since it needs to set method->slot for all interface methods.
5117
5118 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5119
5120         * class-internals.h: Forgot to add.
5121
5122 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5123
5124         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
5125
5126         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
5127         Lookup the custom attributes from property_hash.
5128
5129         * reflection.c (mono_save_custom_attrs): Save the custom attributes
5130         in property_hash. Allocate all data using the image mempool.
5131
5132         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
5133         for dynamic_custom_attrs to checks if the image is dynamic.
5134
5135 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5136
5137         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
5138         assemblies array.
5139         
5140         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
5141         runtime functions while holding the domain assemblies lock.
5142
5143 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5144
5145         * verify.c: Reapplied the last bit of the reverted changes.
5146
5147 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5148
5149         * verify.c: Reapplied more of the reverted changes.
5150
5151 2008-06-09  Martin Baulig  <martin@ximian.com>
5152
5153         * debug-mono-symfile.c (load_symfile): Check the major version
5154         first; if it's wrong, don't print the minor version in the error message.
5155
5156 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5157
5158         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
5159         lock instead of the domain lock to avoid deadlocks, since the thread might
5160         already hold the loader lock.
5161
5162         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
5163         (mono_thread_attach): Ditto.
5164
5165         * monitor.c: Use a TLS variable for holding the current thread id instead
5166         of calling pthread_self ().
5167         (mono_monitor_init_tls): New internal function to initialize the TLS
5168         variable.
5169         (mono_monitor_try_enter_internal): Put the owner == id check after the
5170         owner == 0 check.
5171
5172         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
5173         missed optimizations when using gcc-4.3.
5174
5175 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
5176
5177         * reflection.c (mono_dynamic_image_free): Free the memory
5178         used by MonoGenericParam in MonoDynamicImage::gen_param.
5179
5180         * reflection.c (mono_reflection_setup_generic_class): Allocate
5181         container from mempool.
5182
5183         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5184         container from mempool.
5185
5186 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5187
5188         * threads.c (mono_set_pending_exception): New internal function to set the
5189         pending exception of the current thread.
5190         (mono_thread_get_and_clear_pending_exception): Check for 
5191         thread->pending_exception as well.
5192
5193         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5194
5195         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5196         it can trigger a collection.
5197
5198 2008-06-06  Martin Baulig  <martin@ximian.com>
5199
5200         Merged the `debugger-kahalo' branch.
5201
5202         * mono-debug.h
5203         (MONO_DEBUGGER_VERSION): Bumped to 72.
5204
5205         * debug-mono-symfile.h
5206         (MonoSymbolFileMethodIndexEntry): Removed.
5207         (MonoSymbolFileMethodEntry): New public typedef.
5208         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5209         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5210         `data_offset'.
5211         (MonoSymbolFileMethodEntry): Removed.
5212         (MonoSymbolFileLexicalBlockEntry): Removed.
5213         (MonoSymbolFileLineNumberEntry): Removed.
5214         (MonoDebugLexicalBlockEntry): Removed.
5215         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5216         removed `num_il_offsets' and `il_offsets'.
5217         (MonoSymbolFile): Replace `version' with `major_version' and
5218         `minor_version'.
5219         (MONO_SYMBOL_FILE_VERSION): Replace with
5220         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5221         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5222
5223         * debug-mono-symfile.c
5224         (mono_debug_symfile_lookup_location): Add support for the new line
5225         number table format.
5226
5227 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5228
5229         * metadata.c (free_generic_class): Release the inflated
5230         MonoClass of dynamic generic classes if it's not a generic
5231         type definition.
5232
5233 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5234
5235         * verify.c: Reapplied more of the reverted changes.
5236
5237 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5238
5239         * reflection.c (lookup_custom_attr): Clean the cached flag or
5240         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5241         for SRE types.
5242
5243 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5244
5245         * verify.c: Reapplied a small part of the reverted changes.
5246
5247 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5250
5251         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5252         previously in managed code.
5253         (mono_monitor_exit): Ditto.
5254         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5255
5256         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5257         the managed definition.
5258
5259 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5260
5261         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5262
5263 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5264
5265         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5266         
5267         * monitor.c: Add some micro optimizations.
5268
5269         * icall.c (type_from_typename): Handle 'bool'.
5270
5271 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5272
5273         * verify.c: Implement constructor verification per P III 1.8.1.4.
5274         Fixes #396716.
5275
5276 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5277
5278         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5279         holding the assemblies lock here too.
5280
5281 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5282
5283         * verify.c: Kill stack_top function.
5284
5285 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5286
5287         * verify.c: Kill stack_get function.
5288
5289 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5290
5291         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5292
5293 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5294
5295         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5296         more reliable.
5297
5298         * verify.c (mono_method_verify): Inflate params and locals to avoid
5299         mismatch when checking for compatibility.
5300
5301 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5302
5303         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5304         Length prefix should be size in bytes. Fix bug #339530.
5305         
5306         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5307         Length prefix should be size in bytes. Fix bug #339530.
5308
5309         Code is contributed under MIT/X11 license.
5310
5311 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5312
5313         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5314
5315         Contributed under MIT/X11 license.
5316
5317 2008-06-05  Martin Baulig  <martin@ximian.com>
5318
5319         * mono-debug-debugger.c
5320         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5321
5322 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5323
5324         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5325         while holding the assemblies lock to prevent deadlocks. Handle the case
5326         where the search hook returns NULL but the assembly was still loaded.
5327         Fixes #323696.
5328
5329         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5330         modify domain state.
5331
5332 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5333
5334         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5335         * Makefile.am (pedump_LDADD): Post-process object files and
5336         add dtrace-generated object file, if necessary.
5337
5338         Code is contributed under MIT/X11 license.
5339
5340 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5341
5342         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5343
5344 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5345
5346         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5347
5348 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5349
5350         * threads.c: Try to free everything from the delayed free table
5351         when shutting down threads, and set the variable to NULL after the
5352         table is freed so that calling
5353         mono_thread_hazardous_try_free_all() when shutting down the root
5354         domain doesn't crash.
5355
5356 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5357
5358         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5359         the caller if resulting type was inflated.
5360
5361         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5362         was inflated.
5363
5364         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5365
5366
5367 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5370         class library tests.
5371
5372         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5373         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5374         #396989.
5375
5376 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5377
5378         * domain.c, domain-internals.h: The JIT infos are now freed by the
5379         JIT info table code.  They are freed immediately if there only a
5380         single JIT info table in circulation.  If there is more, the free
5381         is delayed via a queue.
5382
5383         * threads.c, threads-types.h: New hazard pointer function for
5384         freeing all freeable delayed items in one sitting.
5385
5386 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5387
5388         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5389
5390         * reflection.c (typebuilder_setup_properties): Same.
5391
5392         * reflection.c (typebuilder_setup_events): Same.
5393
5394 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5395
5396         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5397         and use it for allocating memory.
5398
5399         * reflection.c (mono_marshal_spec_from_builder): Same.
5400
5401         * reflection.c: Change code to use new signatures.
5402
5403         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5404
5405 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5406
5407         * decimal.c (rescale128): Put back one line which was accidently commented
5408         out.
5409         
5410         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5411         to cause crashes.
5412
5413 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5414
5415         * reflection.c (mono_reflection_generic_class_initialize): Name must
5416         be always malloc'ed so we can free it later on. Do this for field, property
5417         and event.
5418
5419         * metadata.c (free_generic_class): Free field, property and event names.
5420
5421 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5422
5423         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5424         instead of g_memdup.
5425
5426         * reflection.c (typebuilder_setup_fields): Same.
5427
5428 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5429
5430         * decimal.c (rescale128): Optimize this function a bit more.
5431
5432 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5433
5434         * metadata.c (free_generic_class): Release some memory from
5435         SRE generic classes.
5436
5437 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5438
5439         * reflection.c (mono_image_get_generic_field_token): No reference
5440         to name is kept, free it.
5441
5442         * reflection.c (mono_reflection_generic_class_initialize): Free
5443         more memory of the inflated field.
5444
5445 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5448         code.
5449
5450 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5451
5452         * reflection.c (mono_dynamic_image_free): Release memory used by
5453         MonoDynamicImage::array_methods elements.
5454
5455         * reflection.c (assembly_add_win32_resources): Release memory after
5456         encoding.
5457
5458 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5459
5460         * decimal.c (log2_32): Use an optimized version for this function too.
5461         
5462         * decimal.c (log2_64): Fix this on 32 bit machines.
5463
5464 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5465
5466         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5467
5468         * class.c (mono_metadata_signature_deep_dup): Same.
5469
5470         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5471         a mempool.
5472
5473         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5474
5475         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5476
5477         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5478
5479         * class-internals.h: Update signatures to take a MonoMemPool.
5480
5481 2008-06-02  Dick Porter  <dick@ximian.com>
5482
5483         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5484         * icall-def.h: Add
5485         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5486         FormatMessage API to get the error text.  Fixes bug 321827.
5487
5488 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5489
5490         * decimal.c: Add some micro optimizations to make decimal operations faster.
5491
5492 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5493
5494         * reflection.c (method_encode_clauses): Take a mempool
5495         as parameter and use it to allocate the clause array.
5496
5497         * reflection.c (mono_image_get_field_on_inst_token): Free
5498         the inflated type after encoding it.
5499
5500         * reflection.c (mono_dynamic_image_free): Free each element
5501         of MonoDynamicImage::gen_params.
5502
5503         * reflection.c (reflection_methodbuilder_to_mono_method):
5504         Allocate the generic param array from the mempool.
5505         Allocate signature params from the mempool.
5506
5507         * reflection.c (mono_reflection_generic_class_initialize):
5508         Free inflated fields after been used.
5509
5510 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5511
5512         * icall.c: Reapply the memory leak fixes as they no
5513         longer make mono crash.
5514
5515 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5516
5517         * reflection.c (mono_type_get_object): Don't store the suplied
5518         MonoType with type_hash. A caller which pass a type that
5519         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
5520         might end with a pointer to freed memory.
5521         The solution is to use byval_arg or this_arg from the associated
5522         MonoClass of the supplied type.
5523
5524 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
5525
5526         * icall.c: Revert the rest of the last change as it breaks the build too.
5527
5528 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5529
5530         * icall.c: Revert a leak fix as it's breaking the build.
5531
5532 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5533
5534         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
5535
5536 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5537
5538         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
5539
5540 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5541
5542         * icall.c: Fix some memory leaks.
5543
5544 2008-05-29  Dick Porter  <dick@ximian.com>
5545
5546         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
5547         async socket operations from the pending list when a socket
5548         closes.  Leaving it until the threadpool services the event
5549         exposes a race condition when a socket descriptor is reused.
5550         Fixes bug 377589.
5551
5552 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5553
5554         * object.c: Fix negative index check for array alocation.
5555
5556 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5557
5558         * icall.c, marshal.c: Delegate wrappers should skip visibility.
5559         This check is performed by the verifier for IL created delegates
5560         and by Delegate::CreateDelegate for programatically created ones.
5561         Fixes #372406.
5562
5563 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5564
5565         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
5566         Fix code to use mono_array_size_t instead of int.
5567
5568         Based on patch by Luis F. Ortiz.
5569         Contributed under X11 license.
5570         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5571
5572 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5573
5574         * icall.c: Added ves_icall_System_Array_GetLongLength and
5575         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
5576         arrays.
5577
5578         * icall.h: Export both new functions.
5579
5580         Based on patch by Luis F. Ortiz.
5581         Contributed under X11 license.
5582         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5583
5584 2008-05-28  Martin Baulig  <martin@ximian.com>
5585
5586         The debugger now requires exactly r103463.
5587
5588         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
5589         This version is not supported by the debugger, wait for 72.
5590
5591 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5592
5593         * object.h: Changed array related functions to use
5594         mono_array_size_t instead of guint32. Forgot to commit this file.
5595
5596         Patch by Luis F. Ortiz.
5597         Contributed under X11 license.
5598         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5599
5600
5601 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5602
5603         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
5604         don't define it. Use the number literal instead.
5605
5606 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5607
5608         * icall.c: Changed array related functions to use
5609         mono_array_size_t instead of guint32.
5610
5611         * icall.c (ves_icall_System_Array_GetLength): Check for length
5612         overflow under MONO_BIG_ARRAYS.
5613
5614         Based on patch by Luis F. Ortiz.
5615         Contributed under X11 license.
5616         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5617
5618 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5619
5620         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
5621
5622         Based on patch by Luis F. Ortiz.
5623         Contributed under X11 license.
5624         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5625
5626 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5627
5628         * object.c, object.h: Changed array related functions to use
5629         mono_array_size_t instead of guint32.
5630
5631         Patch by Luis F. Ortiz.
5632         Contributed under X11 license.
5633         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5634
5635 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5636
5637         * object.h: Introduced mono_array_size_t typedef. This must be used
5638         in all places an array length is expected. This is 64bits wide if
5639         MONO_BIG_ARRAYS is enabled.
5640
5641         Patch by Luis F. Ortiz.
5642         Contributed under X11 license.
5643         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5644
5645 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5646
5647         * security-manager.c class.c: Set the class exception info by calling
5648         mono_class_set_failure ().
5649
5650         * class.c (mono_class_get_exception_data): New accessor function.
5651         (mono_class_set_failure): Store exception_data in the property hash.
5652
5653         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
5654         the struct as a property.
5655
5656         * loader.c (mono_get_method_full): Store the lookup result for method
5657         tokens in method_cache, the others in methodref_cache to decrease the memory
5658         usage of hash tables.
5659
5660         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
5661         (mono_image_init): method_cache is lazy inited now.
5662
5663         * metadata-internals.h (struct _MonoImage): Change method_cache to
5664         a MonoValueHashTable, add a separate methodref_cache.
5665
5666 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
5667
5668         * number-formatter.h: Fix tables to avoid arithemtic overflow in
5669           Double.ToString as exposed by Bug #383531.
5670
5671 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5672
5673         * number-formatter.h: Make some tables static.
5674
5675         * class.c (mono_method_set_generic_container): New accessor function.
5676         (mono_method_get_generic_container): Ditto.
5677
5678         * class-internals.h (struct _MonoMethod): Remove rarely used 
5679         'generic_container' field, store it in the property hash instead. Add 
5680         'is_generic' boolean field instead.
5681
5682         * image.c (mono_image_init): Initialize property_hash.
5683         (mono_image_close): Destroy property_hash.
5684
5685         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
5686         hold rarely used fields of runtime structures belonging to this image.
5687
5688         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
5689         to get/set method->generic_container.
5690
5691         * loader.c (mono_get_method_from_token): Avoid loading the method header for
5692         generic methods.
5693
5694 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
5695
5696         * class.c (mono_class_inflate_generic_method_full): Don't increase
5697         mono_stats.inflated_method_count for methods found in the cache.
5698
5699         * threads.c (mono_thread_request_interruption): Add a comment about 
5700         QueueUserAPC ().
5701
5702 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
5703
5704         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
5705         interface_offsets_packed table.
5706         
5707         * class.c (mono_class_init): Remove some dead code.
5708
5709         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
5710         mono_class_setup_vtable () when CAS is active to detect security problems.
5711
5712 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
5713
5714         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
5715
5716         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
5717         parameters as it's irrelevant for delegate checking.
5718
5719 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
5722
5723         * class.c (mono_class_init): Control the creation of a generic vtable using
5724         a global which is true by default, but set to false by the runtime startup code.
5725         
5726         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
5727         Disabled for now since it breaks the embedding API.
5728         Move the setup of class->methods for arrays to mono_class_setup_methods ().
5729         (mono_class_setup_methods): Add a memory barrier.
5730
5731         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
5732         when mono_class_init () doesn't compute the generic vtable.
5733         
5734 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
5735         * profiler.c: Added mono_profiler_install_statistical_call_chain,
5736         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
5737         to support call chains (backtrace) in the stat profiler.
5738         * profiler.c, profiler-private.h: Likewise.
5739
5740 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5741
5742         * generic-sharing.c: Init generic class when a method of it is
5743         requested via a runtime generic context.
5744
5745 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
5748
5749         * reflection.c (mono_type_get_object): Add a FIXME.
5750
5751         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
5752
5753         * class.c (mono_class_get_method_by_index): New helper function, returning an
5754         entry in the class->methods array.
5755
5756 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5757
5758         * class.c (mono_class_init): Only do the array optimization for szarrays. 
5759         Avoid creating a generic vtable for generic instances as well.
5760         (mono_class_get_method_from_name_flags): Don't search in the metadata for
5761         generic instances.
5762
5763 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5764
5765         * loader.c (mono_get_method_constrained): Inflate the signature
5766         with class context. Fix #325283.
5767
5768 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5769
5770         * object.c (mono_class_create_runtime_vtable): Add a comment.
5771
5772         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
5773         where needed.
5774         (setup_interface_offsets): Handle the case when this is called twice for arrays.
5775         (mono_class_setup_vtable_general): Add an assert.
5776         (mono_class_init): Avoid creating a generic vtable for arrays.
5777
5778         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
5779         here, let mono_class_init () do that.
5780
5781         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
5782         interfaces in mscorlib.
5783
5784         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
5785         interfaces. Add some comments.
5786         (mono_class_init): Call mono_class_setup_methods () here since it is no
5787         longer called by mono_class_setup_vtable ().
5788
5789         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
5790         not set in class->vtable.
5791         (mono_class_create_runtime_vtable): Reenable the disabled code.
5792
5793         * object.c (mono_class_create_runtime_vtable): Disable the last change for
5794         now as it causes some test failures.
5795
5796         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
5797         if using the vtable trampoline. Also remove some strange code which put the
5798         generic methods themselves into the vtable slots. Remove the AOT init_vtable
5799         stuff as it is no longer needed.
5800
5801 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * pedump.c: Give make --verify all option check code as well.
5804         Using --verify code won't check for metadata now.
5805
5806 2008-05-19  Martin Baulig  <martin@ximian.com>
5807
5808         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
5809
5810         * mono-debug.c
5811         (_mono_debug_using_mono_debugger): New global variable; it's set
5812         directly by the debugger, so mono_debug_using_mono_debugger() also
5813         works after attaching.
5814
5815 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5816
5817         * object.c (mono_class_create_runtime_vtable): Use memory barriers
5818         as we do double checked locking on MonoClass::runtime_info and
5819         MonoClassRuntimeInfo::domain_vtables.
5820
5821 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
5822
5823         * debug-helpers.c (print_field_value): Fix a warning.
5824
5825 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
5826
5827         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
5828         set in the AOT case.
5829
5830 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5831
5832         * class.c (mono_class_setup_vtable_general): Use memory barriers
5833         as we do double checked locking on MonoClass::vtable.
5834
5835 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5836
5837         * reflection.c (resolve_object): Inflate only if the generic context
5838         is not null. Fixes #389886.
5839
5840 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
5841
5842         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
5843         instead of g_free.
5844
5845         Code is contributed under MIT/X11 license.
5846
5847 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5848
5849         * class.c: Revert unrelated change.
5850
5851 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5852
5853         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
5854         a generic instantiation, use mono_class_from_mono_type instead of playing
5855         with MonoType directly.
5856
5857 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5858
5859         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
5860         checks must ignore generic instantiations, so mono_class_has_parent is not
5861         suitable. Fixes #390128.
5862
5863 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
5866         it to avoid registering tokens during metadata generation. Fixes #390023.
5867
5868 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5869
5870         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
5871         consistent.
5872
5873         Contributed under MIT/X11 license.
5874
5875 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5876
5877         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
5878         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
5879         to fixup the EXE image.
5880         (mono_cleanup): Use mono_close_exe_image.
5881         (mono_close_exe_image): New function.
5882         * image.c: Include "marshal.h".
5883         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
5884         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
5885         counting when the image is loaded outside of mono_image_open_full. Set status
5886         based on GetLastError.
5887         * coree.c: Include required headers. Add init_from_coree.
5888         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
5889         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
5890         (_CorExeMain): Set init_from_coree.
5891         (CorExitProcess): Only call ExitProcess for now.
5892         (CorBindToRuntimeEx): New stub implementation.
5893         (CorBindToRuntime): New function.
5894         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
5895         (MonoFixupExe): ILONLY executables require no fixups.
5896         (mono_set_act_ctx): New function to set activation context.
5897         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
5898         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
5899         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
5900         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
5901         as MONO_INTERNAL.
5902         * domain-internals.h: Add mono_close_exe_image.
5903
5904         Contributed under MIT/X11 license.
5905
5906 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
5907
5908         * metadata.c (mono_metadata_compute_size): Correctly calculate field
5909         size for generic param and event tables. Fixes #388977.
5910
5911 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
5912
5913         * loader.c (mono_method_signature): Use memory barriers because of the double
5914         checked locking pattern.
5915
5916         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
5917         aborting or aborted as well. Fixes #376391.
5918         
5919         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
5920         existing runtime state in the Suspend handler during shutdown.
5921
5922 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
5923
5924         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
5925
5926         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
5927         which are starting up or shutting down.
5928
5929         * threads.c (mono_threads_set_shutting_down): Don't return a value since
5930         this function never returns if the runtime is already shutting down.
5931
5932         * icall.c (ves_icall_System_Environment_Exit): Update after 
5933         mono_threads_set_shutting_down () signature change.
5934         
5935 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
5936
5937         * class.c: Added can_access_instantiation to verify if the instantiation
5938         is visible. Fix access check for nested types as they returned TRUE
5939         before doing type and generic instantiation visibility checks.
5940
5941 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
5942
5943         * reflection.c (mono_reflection_create_generic_class): The created type
5944         must have a different container from its TypeBuilder. Otherwise they
5945         will end sharing generic arguments, which is wrong.
5946
5947         Due to the sharing, making a generic instance of the created type using
5948         the TypeBuider generic arguments resulted in the generic type definition
5949         been returned, which is wrong as well.
5950
5951         As a bonus the code was leaking the type_params array. This memory should
5952         be allocated from the image mempool.
5953
5954         This fixes bug #354047.
5955
5956 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
5957
5958         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
5959         to here         as they are now used in assembly.c new code.
5960         Added a skipverification flag to MonoAssembly.
5961         New internal function mono_assembly_has_skip_verification.
5962
5963         * assembly.c: New function mono_assembly_has_skip_verification. It checks
5964         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
5965         part of #387274.
5966
5967 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5968
5969         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
5970         needed. Fixes #387034.
5971
5972         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
5973
5974 2008-05-06  Miguel de Icaza  <miguel@novell.com>
5975
5976         * assembly.c (mono_assembly_load_reference): Prevent crash while
5977         disassembling Silverlight 2.0 executables while we still do not
5978         have GACed libraries.
5979
5980 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5981
5982         * reflection.c: Special case generic type definitions as well. Fixes #383444.
5983
5984 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
5985
5986         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
5987         of the dynamic case. Fixes #387404.
5988
5989 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5990
5991         *verify.c (mono_verifier_is_class_full_trust): If under
5992         verify_all and the verifier mode was not set, only
5993         gac and corlib types are fulltrust. This makes --verify-all
5994         usable to detect unverifiable code, which is the expected
5995         use case.
5996
5997 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5998
5999         * verify.h: Ops, commited the header with debug
6000         enabled.
6001
6002 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6003
6004         * verify.c (merge_stack): Use the new value on unverifiable
6005         stack merges.
6006
6007         * verify.c (verify_type_compatibility_full): Comparison
6008         of nullable types can't use mono_class_is_assignable_from.
6009
6010         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
6011         that makes all verification errors be reported.
6012
6013         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
6014         mono_method_verify.
6015
6016 2008-05-05  Robert Jordan  <robertj@gmx.net>
6017
6018         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
6019         support for value types. See #386415.
6020
6021         * object.c: comments.
6022
6023         Code is contributed under MIT/X11 license.
6024
6025 2008-05-05  Martin Baulig  <martin@ximian.com>
6026
6027         * debug-mono-symfile.h
6028         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
6029         for old pre-terrania symbol files.
6030
6031 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6032
6033         * mono-config.c: Add ppc64 architecture.
6034
6035         Code is contributed under MIT/X11 license.
6036
6037 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6038
6039         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
6040           PPC64 uses function descriptors as well.
6041
6042         Code is contributed under MIT/X11 license.
6043
6044 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
6045
6046         * object.c (compute_class_bitmap): Ignore literal static fields.
6047
6048         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
6049         var has an invalid format.
6050         (describe_ptr): Add some sanity checks for the vtable.
6051         (add_nursery_frag): Clear unused nursery fragments.
6052         (major_collection): Clear all remaining nursery fragments.
6053
6054 2008-05-03  Robert Jordan  <robertj@gmx.net>
6055
6056         * image.c, metadata-internals.h: add thunk_invoke_cache.
6057
6058         * marshal.c, marshal.h: implement
6059         mono_marshal_get_thunk_invoke_wrapper ().
6060
6061         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
6062
6063         Code is contributed under MIT/X11 license.
6064
6065 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6066
6067         * verify.c (do_leave): Empty the stack.
6068
6069 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6070
6071         * class.c (mono_class_is_assignable_from): Variance
6072         doesn't work between reference and value types. For example,
6073         given type C<T+>, C<int32> is not assignable to C<object>.
6074         Break the argument checking loop on first error. 
6075
6076 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
6077
6078         * icall.c : base64_to_byte_array() needs some more strict
6079           check for sequence of '=' characters. Patch by Santa
6080           Marta (http://deee.g.hatena.ne.jp/santamarta).
6081
6082           Contributed under MIT/X11 license.
6083           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
6084
6085 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
6086
6087         * domain.c: Disable LoadLibrary support to fix Win32 build.
6088
6089         Code is contributed under MIT/X11 license.
6090
6091 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
6092
6093         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
6094         to help with cache behaviour.
6095
6096 2008-05-01  Miguel de Icaza  <miguel@novell.com>
6097
6098         * appdomain.c (mono_domain_from_appdomain): Add new accessor
6099         method. 
6100
6101 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
6102
6103         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
6104
6105 2008-05-01  Dick Porter  <dick@ximian.com>
6106
6107         * process.c (process_get_fileversion): Only pass 16 bits of
6108         language ID to VerLanguageName.  Fixes bug 381204.
6109
6110 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6111
6112         * verify.c (mono_method_verify): Fix the comparison
6113         operator for code bounds check.
6114
6115 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6116
6117         * verify.c (mono_method_verify): Check the bounds of
6118         all access of the code array.
6119
6120 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
6121
6122         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
6123
6124 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
6125
6126         * image.c (mono_image_strong_name_position): Fix return value when the rva is
6127         not valid.
6128
6129 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6130
6131         * loader.c (mono_get_method_from_token, mono_method_signature): Add
6132         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
6133         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
6134         fixup main EXE images when using mono.exe for mixed-mode assembly support.
6135         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
6136         mono_runtime_load.
6137         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
6138         runtime initialization from metadata.
6139         * assembly.c: Remove obsolete ceGetModuleFileNameA.
6140         (mono_set_rootdir): Use mono_get_module_file_name.
6141         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
6142         handles.
6143         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
6144         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
6145         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
6146         MonoCLIImageInfo. Add support for module handles.
6147         (load_cli_header): Update mono_cli_rva_image_map signature.
6148         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
6149         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
6150         (mono_image_rva_map): Add support for module handles.
6151         (mono_image_ensure_section_idx): Add support for module handles.
6152         (mono_image_close): Add support for module handles.
6153         (do_load_header): Add support for module handles.
6154         (mono_image_open_from_module_handle): New function for internal use.
6155         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
6156         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
6157         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
6158         handles.
6159         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
6160         * image.h: Add mono_image_fixup_vtable.
6161         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
6162         support.
6163         * coree.h: New file.
6164         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
6165         unsupported native code.
6166         (mono_marshal_set_callconv_from_modopt): New function splitted from
6167         mono_marshal_get_managed_wrapper.
6168         (mono_marshal_get_managed_wrapper): Use
6169         mono_marshal_set_callconv_from_modopt.
6170         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
6171         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
6172         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
6173         that results in a deadlock when the runtime is loaded in _CorDllMain.
6174         * Makefile.am: Add coree.c and coree.h.
6175
6176         Contributed under MIT/X11 license.
6177
6178 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6179
6180         * generic-sharing.c: Search for type arguments in array element
6181         types as well.
6182
6183 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6184
6185         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6186
6187         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6188
6189         * object.c: Don't setup the RGCTX when the vtable is created,
6190         because we're setting it up lazily now.
6191
6192 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6193
6194         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6195         64 bit support.
6196
6197 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6198
6199         * verify.c (verify_class_for_overlapping_reference_fields): 
6200         If class is under fulltrust allow reference types to overllap
6201         if they have the same RVA.
6202
6203 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6204
6205         * pedump.c: Added new flag valid-only, that makes the verifier
6206         behaves just like --security=validil. It won't fail type load
6207         due to unverifiable restrictions.
6208
6209 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6210
6211         * class-internals.h (struct MonoMethod): Added a verification_success
6212         field to cache verifier executions. Reduced MonoMethod:slot size by
6213         one bit.
6214
6215 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6216
6217         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6218         instead of a 'vt' argument to save an indirection and to allow these to be used
6219         for valuetypes.
6220         (scan_vtype): New helper function to scan an area using a gc descriptor.
6221         (mono_gc_wbarrier_value_copy): Implement this.
6222         (handle_remset): Add support for REMSET_VTYPE.
6223         (find_in_remset_loc): Ditto.
6224         (mono_gc_base_init): Allow some debugging options to be controlled through the
6225         use of the MONO_GC_DEBUG env variable.
6226         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6227         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6228
6229 2008-04-23  Martin Baulig  <martin@ximian.com>
6230
6231         * domain.c (mono_domain_create): Move the call to
6232         mono_debug_domain_create() down, after allocating the domain id.
6233
6234 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6235
6236         verify.c (verify_class_for_overlapping_reference_fields): Skip
6237         static fields while verifying for overlapping fields as they
6238         don't matter at all.
6239
6240 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6241
6242         * domain-internals.h: added a declaration of
6243         mono_make_shadow_copy.
6244
6245         * assembly.c (mono_assembly_open_full): shadow copying of
6246         assemblies moved to here, so that all the assemblies within the
6247         application domain's private binary directories can be
6248         processed. Fixes bug #380546
6249
6250         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6251         mono_make_shadow_copy and made non-static. The decision whether
6252         to shadow-copy an assembly is made based on its location - it's
6253         copied if it's in one of the private application domain binary
6254         directories and its different to the target file in the shadow
6255         directory. Fixes bug #380546
6256
6257 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6258
6259         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6260
6261         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6262         types.
6263
6264         * reflection.c (mono_image_create_token): Handle 
6265         Method/ConstructorOnTypeBuilderInst.
6266         (resolve_object): Ditto.
6267         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6268         so it can be called from resolve_object. Also handle the case when the inflated
6269         class already has its methods setup.
6270
6271 2008-04-21  Martin Baulig  <martin@ximian.com>
6272
6273         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6274
6275 2008-04-20  Geoff Norton  <gnorton@novell.com>
6276
6277         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6278         pointer dereference.
6279
6280 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6281
6282         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6283         portability API to look up the assembly file. Fixes behavior in
6284         situations when the application has a bin/ directory, but the
6285         assembly search patch refers to Bin/ (and thus the requested file
6286         name is Bin/SomeLibrary.dll). Fixes bug #379888
6287
6288 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6289
6290         verify.c (mono_type_is_generic_argument): Extracted this check
6291         from a dozen places to here.
6292
6293         verify.c: Fixed all issues related to boxing generic arguments
6294         and their constraints.
6295
6296 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6297
6298         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6299
6300 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6301
6302         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6303         isn't finished yet. Fixes #363447.
6304
6305 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6306
6307         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6308         Fixes #346419.
6309
6310 2008-04-13  Jb Evain  <jbevain@novell.com>
6311
6312         * domain.c: update the 2.1 profile versions.
6313         Merged from the Moonlight 2 branch.
6314
6315 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6318         mscorlibs for the non-refonly case as well.
6319
6320         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6321         in mono_assembly_load_from_full (). Fixes #378924.
6322
6323 2008-04-11  Geoff Norton  <gnorton@novell.com>
6324
6325         * icall.c: The global extern environ doesn't exist on Mac.  We
6326         need to call NSGetEnviron instead.
6327
6328 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6329
6330         verify.c: Add generic method constraint verification.
6331
6332 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6333
6334         class.c (mono_class_inflate_generic_method_full): Add a long
6335         explanation to the is_mb_open hack. Remove the FIXME.
6336
6337 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6338
6339         * verify.c (mono_method_verify): Mark all unknown opcodes
6340         as invalid. Mark jmp as unverifiable.
6341
6342 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6343
6344         * verify.c: Add code to do type constraint verification on class instances.
6345
6346         * verify.c (mono_verifier_verify_class): Use the type constraint 
6347         verification code.
6348
6349 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6350
6351         * class.c (mono_class_get_field_default_value): Don't pass cindex
6352         as hint to mono_metadata_get_constant_index. The local is not initialized
6353         and should contain garbage most of the time. This could only work
6354         with a lot of luck.
6355
6356 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6357
6358         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6359
6360 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6361
6362         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6363
6364         * class.c (mono_class_from_generic_parameter): Save the token of the
6365         generic param in MonoClass::sizes.generic_param_token.
6366
6367         * reflection.c (mono_custom_attrs_from_class): If the class type is
6368         VAR or MVAR retrieve the attributes of the generic param.
6369
6370 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6371
6372         * class.c (mono_class_init): Do class verification if the verifier
6373         is enabled.
6374
6375 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6376
6377         * verify-internal.h: Added mono_verifier_verify_class.
6378
6379         * verify.c: Added mono_verifier_verify_class. It checks for
6380         classes with explicit layout that have overlapping reference fields.
6381
6382         * pedump.c: Init the verifier state prior to verification. Fixed
6383         command line arguments.
6384
6385 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6386
6387         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6388
6389 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6390
6391         * verify-internals.h: Fix a warning.
6392
6393 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6394
6395         * verify-internals.h: New header with the verifier configuration
6396         extracted from mini.c.
6397
6398         * verify.c: Implemented the new functions exported by verify-internals.h.
6399
6400 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6401
6402         * verify.c: Add proper verification of ckfinite.
6403
6404 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6405
6406         * verify.c (do_conversion): Improved error message to something
6407         more meanfull.
6408
6409         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6410         with primitive types.
6411
6412 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6413
6414         * verify.c: Added tail prefix checking. Marked icall
6415         as unverifible.
6416
6417 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6418
6419         * verify.c: Fix the detection of branches to the middle
6420         of an instruction.
6421
6422 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6423
6424         * verify.c: Implemented verification of volatile. and
6425         unaligned. prefix. Check if a type is valid after retrieving it.
6426
6427 2008-04-01  Dick Porter  <dick@ximian.com>
6428
6429         * process.c (process_get_fileversion): If there's no string block,
6430         set the file language to en_US.  Fixes the other new part of bug
6431         374600.
6432
6433 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6434
6435         * class.c: New functions mono_method_can_access_field_full and
6436         mono_method_can_access_method_full. They perform type visibility
6437         and type site check.
6438
6439         * class-internal.h: Added exported functions.
6440
6441         * verify.c: Use new functions to implement proper visibility checks.
6442
6443 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6444
6445         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6446
6447 2008-03-28  Dick Porter  <dick@ximian.com>
6448
6449         * process.c (process_get_fileversion): Use the first language ID
6450         we see, rather than insisting on an invariant language.  Fixes bug
6451         374600.
6452
6453 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6454
6455         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6456         the streams to fix reading of invalid memory later.
6457
6458         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6459         to ease debugging.
6460
6461 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6462
6463         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6464         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6465
6466 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6467         * threads.h: Added MonoThreadManageCallback type and
6468         mono_thread_set_manage_callback prototype
6469         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6470         (used to store the mono_thread_manage callback).
6471         * threads.c: Added mono_thread_set_manage_callback, and handle
6472         "MonoThread->manage_callback" in build_wait_tids.
6473
6474 2008-03-26  Dick Porter  <dick@ximian.com>
6475
6476         * process.c (process_get_fileversion): Set FileVersionInfo strings
6477         to Empty when the resource doesn't have the particular info.
6478         Fixes bug 355717.
6479
6480 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6481
6482         * verify.c (mono_method_verify): Proper prefix validation.
6483
6484 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6487         itself in a separate argument instead of throwing them. Fixes #373448.
6488
6489         * appdomain.c: Bump corlib version.
6490
6491 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6492
6493         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
6494
6495 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6496
6497         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
6498         version macros.
6499
6500 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6501
6502         * generic-sharing.c, class-internals.h: Code for putting
6503         reflection types into the runtime generic context.
6504
6505 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6506
6507         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
6508         Fixes #340662. 
6509
6510
6511 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
6512
6513         * verify.c (VerifyContext): Added instruction prefix data to the struct.
6514
6515         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
6516
6517         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
6518
6519         * verify.c (do_cast): Let the result value keep the boxed status.
6520
6521         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
6522
6523 2008-03-17  Jb Evain  <jbevain@novell.com>
6524
6525         * reflection.c: when running on a 2.0 runtime, emit
6526         unconditionally the #~ header version as 2.0, and the
6527         CLI header version as 2.5, for symmetry's sake with csc.
6528
6529 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * class.c: Remove the unused cache_interface_offsets stuff.
6532
6533         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
6534         profiler.c: Fix warnings.
6535
6536 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6537
6538         * generic-sharing.c, class-internals.h: Support for putting
6539         methods into the runtime generic context.
6540
6541 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6542
6543         * class.c (mono_class_setup_fields): Ignore calls made to this function for
6544         classes which are generic instances of not-yet finished typebuilders. Fixes
6545         #351172.
6546
6547         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
6548
6549 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
6550
6551         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
6552
6553         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
6554         field, replace it with a hash table in MonoDynamicImage.
6555
6556         * reflection.c (inflate_mono_method): Access the generic definition object from
6557         image->generic_def_objects instead of imethod->reflection_info.
6558
6559         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
6560
6561         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
6562         
6563         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
6564         function in reflection.c so it is easier to keep in sync with the dynamic image
6565         creation code.
6566
6567         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
6568         mono_image_close ().
6569
6570 2008-03-15  Mark Probst  <mark.probst@gmail.com>
6571
6572         * class.c (mono_class_generic_sharing_enabled): Disable generic
6573         sharing for all architectures except AMD64 and x86 to fix build.
6574
6575 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6576
6577         * verify.c: Use the generic definition MonoGenericContext when available.
6578         Remove code for checking generics instance compatibility in favor of
6579         mono_class_is_assignable_from.
6580
6581 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6582
6583         * marshal.c, marshal.h, metadata-internals.h, image.c,
6584         wrapper-types.h: New wrapper for invoking a shared static method
6585         without having to pass the runtime generic context argument.
6586
6587 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6588
6589         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
6590
6591 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6592
6593         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
6594         
6595         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
6596         create a token from a FieldOnTypeBuilderInst.
6597         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
6598         (resolve_object): Ditto.
6599
6600         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
6601         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
6602
6603 2008-03-14  Martin Baulig  <martin@ximian.com>
6604
6605         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
6606
6607         * debug-mono-symfile.h
6608         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
6609         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
6610
6611 2008-03-10  Martin Baulig  <martin@ximian.com>
6612
6613         * debug-mono-symfile.h
6614         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
6615         `lexical_block_table_offset'.
6616         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
6617         `lexical_blocks'.
6618         (MonoSymbolFile): Added `version'.
6619
6620         * mono-debug.h
6621         (MonoDebugLexicalBlockEntry): Removed.
6622         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
6623         `lexical_blocks'.
6624
6625         * mono-debug.c (mono_debug_add_method): Don't compute lexical
6626         blocks here; the debugger now does this internally.
6627
6628 2008-02-27  Martin Baulig  <martin@ximian.com>
6629
6630         * object.c (mono_runtime_exec_main): Call
6631         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
6632         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
6633
6634 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6635
6636         * verify.c (verify_type_compatibility_full): Allow native int to be converted
6637         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
6638
6639 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6640
6641         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
6642         ldftn with a virtual method.
6643
6644 2008-03-13  Geoff Norton  <gnorton@novell.com>
6645
6646         * decimal.c:  Only include memory.h if the platform has it.
6647
6648 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
6649
6650         * assembly.c, class.c, metadata-internals.h: make sure public key
6651         tokesns are compared in a case-insensitive way. Also, all
6652         the lookups in the GAC use a lowercase public key token
6653         (gaacutil already does the lowercasing on install). Fixes
6654         bug #369541.
6655
6656 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
6657
6658         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
6659         and return value.
6660
6661 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
6662
6663         * image.c: when someone loads a mscorlib from a file, return the
6664         currently loaded mscorlib (fixes bug #369253).
6665
6666 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6667
6668         * class.c: handle types with no parents by forcing them to have
6669         System.Object as a parent and marking them as broken (this currently
6670         allows the first part of bug #369173 to work as well, likely because
6671         we don't check for typeload exceptions everywhere yet).
6672
6673 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
6674
6675         * class.c: more complete check that types belong to corlib
6676         (fixes second part of bug #369173).
6677
6678 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
6679
6680         * generic-sharing.c:  Including glib.h for the MSVC builds to define
6681           "inline" to "__inline" before including mono-membar.h.
6682           
6683         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
6684           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
6685           MSVC builds.
6686
6687         Contributed under MIT/X11 license.
6688
6689 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * verify.c (do_invoke_method): Remove return type validation.
6692
6693         * verify.c (do_ret): Do return type validation at return site instead of
6694         call site.
6695
6696 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6697
6698         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
6699
6700         * verify.c: Some todos cleaned and improved a few error messages.
6701
6702 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
6705
6706 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6707
6708         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
6709         system types correctly.
6710
6711         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
6712         function.
6713
6714 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6715
6716         * assembly.c (build_assembly_name): Fix a warning.
6717
6718 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6719
6720         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
6721         the called function takes an object type argument. Fixes storing or
6722         valuetypes across remoting as well as reducing memory usage.
6723         * image.c, metadata-internals.h: remove now unused ldfld_remote and
6724         stfld_remote wrapper caches.
6725
6726 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6727
6728         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
6729         is not found.
6730
6731         * reflection.c (mono_image_register_token): New helper function to save
6732         a token->object mapping.        
6733
6734         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
6735         managed code.
6736
6737         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
6738         one dimension arrays. Fixes #367670.
6739         (mono_reflection_get_type_internal): Ditto.
6740
6741 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6742
6743         * marshal.c: mono_load_remote_field_new() always returns object.
6744         so use the proper signature (fixes bug #366445).
6745
6746 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6747         
6748         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
6749         add an 'inline_failure' flag instead.
6750
6751 2008-03-04  Mark Probst  <mark.probst@gmail.com>
6752
6753         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
6754         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
6755         contains the location of "this", used for exception handling.
6756
6757 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6758
6759         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
6760         their size on all platforms for perf reasons.
6761
6762 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6763
6764         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
6765         object-internal.h
6766
6767         * object-internal.h: Same.
6768
6769 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6770
6771         * reflection.h: Fix the build I just broke.
6772
6773 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6774
6775         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
6776         Test if a token is valid, this remove explicit usage of 
6777         MonoDynamicImage::tokens from the verifier code.
6778
6779         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
6780
6781         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
6782         instead of direct access to MonoDynamicImage::tokens.
6783
6784 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6785
6786         * verify.c (token_bounds_check): Fix the build I just broke.
6787
6788 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6789
6790         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
6791
6792         * verify.c (verifier_load_method): Fixed the errors message.
6793
6794         * verify.c (mono_method_verify): Fixed a debug message.
6795
6796 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
6797
6798         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
6799         mono-perfcounters.h, class-internals.h: support for predefined
6800         writable counters, query of categories and counters, bugfixes.
6801
6802 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6803
6804         * verify.c (do_refanytype): Verify the refanytype opcode.
6805
6806         * verify.c (mono_method_verify): Use do_refanytype.
6807
6808 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6809
6810         * verify.c (do_mkrefany): Verify the mkrefany opcode.
6811
6812         * verify.c (mono_method_verify): Use do_mkrefany.
6813
6814 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
6815
6816         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
6817         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
6818         implementation.
6819
6820 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6821
6822         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
6823         the type load exception.
6824
6825 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
6826
6827         * verify.c: Added a few FIXME for method signatures
6828
6829         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
6830         of mono_method_get_signature and get vararg call working. Removed unused
6831         checks for return value.
6832
6833         * verify.c (do_refanyval): Verify the refanyval opcode.
6834
6835         * verify.c (mono_method_verify): Implemented verification of arglist and
6836         use do_refanyval.
6837
6838 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6839
6840         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
6841         vtypes to marshal.c.
6842
6843         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
6844         it works for AOT as well.
6845
6846 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6847
6848         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
6849         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
6850         the system time is adjusted.
6851
6852 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
6853
6854         * icall.c, icall-def.h: use the new time functions (fixes the
6855         non-monotonic behaviour of TickCount).
6856
6857 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
6858
6859         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
6860         it breaks the build.
6861         
6862         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
6863         cattr is not finished yet.
6864
6865 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6866
6867         * verify.c: Proper token validation for field, method and type.
6868
6869 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6870
6871         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
6872
6873         * loader.c (method_from_memberref): Generate type load error instead of method missing
6874         if the type is not found.
6875
6876 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
6877
6878         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
6879         some of the conversions caused the generation of a marshal directive exception.
6880
6881 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6882
6883         verify.c: Report which exception should be thrown by the JIT.
6884         Added a lot of FIXME notes.
6885
6886 2008-02-22  Mark Probst  <mark.probst@gmail.com>
6887
6888         * generic-sharing.c: Runtime generic context slots are not
6889         instantiated on init anymore.  Instead, provide function to do the
6890         instantiating on demand.
6891
6892         * class-internals.h: Added vtable to runtime generic context.
6893         Macros for encoding direct and indirect slot offsets in one
6894         guint32.
6895
6896 2008-02-21  Mark Probst  <mark.probst@gmail.com>
6897
6898         * object.c, generic-sharing.c: Moved some generic sharing code
6899         from object.c to generic-sharing.c.
6900
6901         * generic-sharing.c: Added support for extensible runtime generic
6902         context.
6903
6904         * metadata-internals.h: Two new hash tables in MonoImage for
6905         extensible runtime generic context support.
6906
6907         * domain.c: Unregister generic vtables upon domain unloading.
6908
6909         * image.c: Destroy new hash tables upon image unloading.
6910
6911         * metadata.c: Unregister generic subclasses upon image unloading.
6912
6913         * class-internals.h: New data structure for runtime generic
6914         context template.  New fields in the runtime generic context for
6915         extensible part.
6916
6917         * Makefile.am: Added generic-sharing.c.
6918
6919 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6920
6921         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
6922         there is a pending loader exception, raise it.
6923
6924         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
6925         same.
6926
6927         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
6928         same.
6929
6930         Fixes #363450.
6931
6932 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
6933
6934         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
6935
6936         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
6937         
6938         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
6939         ref-only requests for compatibility with MS.
6940
6941 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
6942
6943         * reflection.c (mono_custom_attrs_from_method): Don't silently
6944         return an empty list for generic method instances.
6945         (mono_custom_attrs_from_param): Likewise.
6946
6947 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
6948             Raja R Harinath  <harinath@hurrynot.org>
6949
6950         Fix #354757
6951         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
6952         * class.c (mono_class_inflate_generic_method_full): Initialize it
6953         when a fully-open method is instantiated.
6954         * metadata.c (inflated_method_equal, inflated_method_hash): Update
6955         to new field.
6956         * reflection.c (inflate_mono_method): Don't create a temporary context.
6957
6958 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
6959
6960         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
6961         Compute correct value, to prepare for imethod->reflection_info going away.
6962
6963 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
6964
6965         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
6966
6967 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
6968
6969         * verify.c: Implement skip visibility flag.
6970
6971 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
6972
6973         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
6974         which contains an extra field to tell the kind of exception that should be thrown.
6975
6976         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
6977
6978 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
6979
6980         * loader.c (mono_method_get_param_names): Initialize 'klass' after
6981         'method' is updated.
6982
6983 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
6984
6985         * class.c (mono_class_layout_fields): Set class->min_align for classes using
6986         explicit layout as well. Fixes #360375.
6987
6988 2008-02-11  Geoff Norton  <gnorton@novell.com>
6989
6990         * loader.c: Guard and dereference against inflated generic methods
6991
6992 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
6993
6994         * class.c: Include Retargetable spec in assembly name.
6995         * assembly.c: Always include PublicKeyToken spec in assembly name
6996         (with value "null" if assembly is not signed), and include
6997         Retargetable spec.
6998         * icall-def.h: Added icall for Assembly.get_fullname.
6999         * icall.c: Added icall returning the fullname of an assembly.
7000
7001 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7002
7003         * class.c (mono_class_setup_vtable_general): Add a missing call to
7004         mono_class_setup_methods () which is needed in the AOT case.
7005
7006 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
7007
7008         * verify.c (mono_type_get_stack_name): Added. Return the name for the
7009         stack type of the given MonoType.
7010
7011         * verify.c (verify_type_compatibility_full): Handle the void type.
7012
7013         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
7014         way stack merging works.
7015
7016         * verify.c (store_local): Improved verification message.
7017
7018         * verify.c (do_branch_op): If the merging is invalid, the method
7019         is unverifiable and not invalid. Improved error message.
7020
7021         * verify.c (merge_stacks): Properly merge a boxed valuetype and
7022         a reference type diferent than System.Object. Improved error
7023         message.
7024
7025 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
7026
7027         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
7028
7029         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
7030         type of an enum even if the argument is byref.
7031
7032         * verify.c: Replace all explicit uses of enumtype and enum_basetype
7033         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
7034
7035         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
7036
7037         *verify.c (verify_type_compatibility_full): Make enum types
7038         compatible with their base types.
7039
7040         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
7041         types are compatible for the special case of a boxed valuetype and
7042         System.Object.
7043
7044         * verify.c (verify_stack_type_compatibility): The function
7045         is_compatible_boxed_valuetype was extracted from here.
7046
7047         * verify.c (push_arg): Only set ctx->has_this_store if the method
7048         is not static.
7049
7050         * verify.c (do_ldelem): Fixed a typo in an error message and added
7051         strict check for mixing int32 and native int as the array type
7052         and ldelem type.
7053
7054         * verify.c (merge_stacks): Consider boxed valuetypes in the
7055         compatibility checks.
7056
7057 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
7058         * profiler.h: (MonoGCEvent): Added start-stop the world events.
7059
7060 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7061         *class.c: use_new_interface_vtable_code: renamed the env var to have
7062         a "MONO_" prefix, and fix the logic to enable it by default.
7063
7064 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7065         *class.c:
7066         mono_class_setup_vtable_general: rewrote the way in which interface
7067         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
7068         makes the code more maintainable.
7069         For now the old code is still there, and can be activated setting
7070         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
7071
7072 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
7073
7074         * verify.c: guarded some debug functions around and #ifdef.
7075
7076         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
7077
7078 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7079
7080         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
7081         changes for now since they seem to break too many things.
7082
7083 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7084
7085         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
7086         mono_marshal_find_nonzero_bit_offset): Added macro and function
7087         for finding the byte- and bit-offset of a bitfield within a
7088         struct.
7089
7090 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7091
7092         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
7093         (mono_marshal_get_struct_to_ptr): Ditto.
7094
7095         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
7096         cctor_signature.
7097
7098 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7099
7100         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
7101         between methods for non-corlib types.
7102
7103 2008-02-02  Geoff Norton  <gnorton@novell.com>
7104
7105         * loader.c (mono_method_get_param_names): Populate the parameter name for 
7106         generic parameters as well. (Fixes #342536)
7107
7108 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
7109
7110         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
7111
7112         * verify.c (do_invoke_method): Fix for calling with byref structs.
7113
7114         * verify.c (do_cast): push a boxed value type based on the type token and not
7115         the type of stack.
7116
7117 2008-01-31  William Holmes  <billholmes54@gmail.com>
7118
7119         * process.c (process_module_string_read): Check the size returned form 
7120           VerQueryValue to avoid out of memory exception. 
7121
7122 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7123
7124         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
7125         Handle properly modules which are not in the moduleref table. Fixes
7126         #356938.
7127
7128 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7129
7130         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
7131         the dynamic case which is now in managed code.
7132         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
7133
7134         * marshal.c (mono_string_to_bstr): Fix a warning.
7135         (init_com_provider_ms): Ditto.
7136
7137         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
7138
7139         * exception.c (mono_get_exception_out_of_memory): New helper function.
7140
7141 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
7142
7143         * marshal.c: Add support for BSTR marshalling
7144         using other COM systems.
7145
7146         Code is contributed under MIT/X11 license.
7147
7148 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7149
7150         * object.c (mono_runtime_invoke_array): reverted previous
7151         commit as it breaks the build.
7152
7153 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7154
7155         * object.c (mono_runtime_invoke_array): Verify arguments for
7156         invalid types. Fixes #348522.
7157
7158 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7159
7160         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
7161         non-final virtual calls using call. 
7162
7163         * verify.c (do_invoke): fixed some TODOs.
7164
7165         * verify.c (push_arg): set has_this_store for "ldarga 0".
7166
7167 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7168
7169         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
7170         which belong to an inflated class. Fixes #356531.
7171
7172 2008-01-26  Robert Jordan  <robertj@gmx.net>
7173
7174         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
7175         which resort to FindFirstFile when a certain error condition
7176         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7177         Code is contributed under MIT/X11 license.
7178
7179 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7180
7181         * marshal.c (emit_marshal_string): Fix out string marshalling
7182         to use specified encoding. Fixes #323900.
7183
7184         Code is contributed under MIT/X11 license.
7185
7186 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7187
7188         * class.c (mono_class_inflate_generic_method_full): Don't modify
7189         iresult->context after cache check.
7190
7191 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7192
7193         * class.c (mono_class_inflate_generic_method_full): Change the
7194         struct assignments to memcpy for better visibility and add some comments.
7195
7196 2008-01-23  Dick Porter  <dick@ximian.com>
7197
7198         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7199         procedure, and make it work on windows.
7200
7201 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7202
7203         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7204         a MonoReflectionTypeBuilder since it is always of that type.
7205
7206         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7207
7208         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7209
7210         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7211         
7212         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7213
7214         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7215
7216         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7217         instantiations from the type cache.
7218
7219 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7220
7221         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7222
7223         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7224
7225 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7226
7227         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7228
7229         * verify.c (mono_method_verify): removed old TODO
7230
7231 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7232
7233         * verify.c (do_newobj): add visibility check.
7234
7235 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7236
7237         * verify.c (do_load_function_ptr): add visibility check.
7238
7239 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7240         *class.c:
7241         mono_generic_class_get_class: hook profiler events.
7242         mono_field_get_offset: added to support heap-shot in the new profiler.
7243         *class.h: exported mono_field_get_offset.
7244         * reflection.c:
7245         mono_reflection_setup_internal_class: hook profiler events.
7246
7247 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7248
7249         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7250         argument here too and use it to avoid checking for pending exceptions if 
7251         possible.
7252
7253 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7254
7255         * assembly.c (build_assembly_name): add arg for passing the assembly
7256         flags. Do not consider a PublicKey with value "null" valid.
7257         (mono_assembly_name_parse_full): added boolean argument that will be
7258         set if the assembly name contains a PublicKeyToken spec. Added support
7259         for the Retargetable spec for which only Yes or No are allowed as valid
7260         value. Consider assembly name invalid if Retargetable spec is set, but
7261         either version, culture or public key (token) are not specified.
7262         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7263         with implementation in assembly.c.
7264         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7265         from MonoAssemblyName.
7266         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7267         introduced argument for mono_assembly_name_parse_full to know if the
7268         assembly name has a PublicKeyToken spec, and if it has instruct
7269         fill_reflection_assembly_name to use default value for keyToken (if
7270         PublicKeyToken is null).
7271
7272 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7273
7274         * verify.c (mono_method_verify): fixed ovf ops with
7275         float values. They are unverifiable now.
7276
7277 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7278
7279         * class.c (set_failure_from_loader_error): add BadImageException to the
7280         list of exceptions that can cause a type to fail to load.
7281
7282         * class.c (mono_class_get_exception_for_failure): same.
7283
7284 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * verify.c (in_any_exception_block): added, check if offset
7287         is part of any exception handling clause.
7288
7289         * verify.c (get_stack_type): added VAR and MVAR types.
7290
7291         * verify.c (do_stobj): better error messages.
7292
7293         * verify.c (do_cpobj): added, check cpobj.
7294
7295         * verify.c (do_initobj): added, check initobj.
7296
7297         * verify.c (do_sizeof): added, check sizeof.
7298
7299         * verify.c (do_localloc): added, check localloc.
7300
7301         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7302
7303 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7304
7305         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7306         save_lmf/restore_lmf opcodes.
7307
7308         * threads.c (mono_threads_install_notify_pending_exc): New function to
7309         install a callback notifying the JIT there is a pending exception on a thread.
7310         (mono_thread_request_interruption): Call the new callback.
7311         (mono_thread_get_and_clear_pending_exception): New function to return the
7312         exception pending on a thread.
7313
7314         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7315         to turn off checking for pending exceptions.
7316         (mono_marshal_get_native_wrapper): Ditto.
7317
7318 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * threads-types.h: Get rid of the unnecessary extern declarations.
7321
7322 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7323
7324         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7325         return field from parent class if not private.
7326         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7327         returns fields from parent class if they are not private.
7328         (method_nonpublic): added function to determine if a given method
7329         should be considered non-public. Returns false for private methods
7330         on parent class, and internal methods from parent on the 1.0 profile.
7331         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7332         use method_nonpublic function to determine whether method should be
7333         returned.
7334         (property_accessor_public): use newly introduced method_nonpublic
7335         function to determine whether accessor is non-public. 
7336         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7337         event from parent class if not private. Only return static event if
7338         Static flag is set, and only return static event from parent class if
7339         FlattenHierarchy flag is set.
7340         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7341         include non-private events from parent class.
7342
7343 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7344
7345         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7346         warning.
7347
7348 2008-01-16  Wade Berrier <wberrier@novell.com>
7349
7350         * security.c: Add assembly.h header to appease some warnings
7351
7352 2008-01-16  Dick Porter  <dick@ximian.com>
7353
7354         * process.c (process_module_string_read): Remove trailing null
7355         when saving string.
7356
7357 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7358
7359         * class-internals.h: A new data structure describing the layout of
7360         a runtime generic context (MonoRuntimeGenericContextTemplate).
7361
7362         * metadata-internals.h: Added a hash table to MonoDomain that maps
7363         from open generic classes to their runtime generic context
7364         templates.
7365
7366         * object.c: Building of the runtime generic context, including
7367         proper handling of generic type arguments of superclasses.
7368         Building of the runtime generic context according to the template.
7369
7370 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7371
7372         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7373         Fixes #350856.
7374
7375         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7376         mono_portability_find_file (). Fixes #325466.
7377         (mono_image_get_public_key): Fix a warning.
7378
7379 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7380
7381         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7382         Fixes #353550.
7383         (mono_class_from_name_case): Ditto.
7384
7385 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7386
7387         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7388           common storage for the tables used in the System/NumberFormatter class.
7389
7390 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7391
7392         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7393
7394 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7395
7396         * verify.c (get_boxable_mono_type): check if the token is valid.
7397
7398         * verify.c (set_stack_value): changed to add an error if an
7399         invalid type is set on stack. Changed all callers due to signature change.
7400
7401         * verify.c (do_stobj): implement stobj validation.
7402
7403 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7406         set container->is_method, it was set earlier.
7407
7408         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7409         generic methods.
7410
7411         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7412         is_method of the generic container to TRUE for methods.
7413
7414 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7415
7416         * metadata.c (type_in_image): Handle type parameters properly.
7417
7418         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7419         memory ownership of this structure.
7420
7421 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7422
7423         * verify.c (get_boxable_mono_type): make typedref types been just
7424         unverifiable. check for void type.
7425
7426         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7427
7428         * verify.c (do_load_function_ptr): accept method spec tokens.
7429
7430 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7431
7432         * marshal.c (mono_class_native_size): Always set *align even if this is called
7433         recursively.
7434
7435 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7436
7437         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7438         out-of-date.
7439
7440 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7441
7442         * verify.c: removed some old unused tables. A huge bunch of small fixes
7443         to things found while testing the verifier with mono basic.
7444
7445         * verify.c (dump_stack_value): dump null literal flag to.
7446
7447         * verify.c (verify_type_compatibility_full): fix comparison
7448         for types that have a generic super type.
7449
7450         * verify.c (verify_stack_type_compatibility): fix compatibility
7451         between null literals and reference types. fix compatibility between
7452         boxed valuetypes and object. fix corner case test for enums.
7453
7454         * verify.c (do_cmp_op): proper verification of cgt.un in case
7455         of reference types.
7456
7457         * verify.c (do_invoke_method): fix error message.
7458
7459         * verify.c (do_store_indirect
7460
7461         * verify.c (check_is_valid_type_for_field_ops): proper verification
7462         of managed pointers to valuetypes and boxed valuetypes. proper verification
7463         of null literals.
7464
7465         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7466         allow token to be a reference type.
7467
7468         * verify.c (do_cast): proper handling of boxes valuetypes.
7469
7470         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7471         in object[].
7472
7473         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7474         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7475         fixed the decoding of unbox_any
7476
7477 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7478
7479         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7480
7481 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7482
7483         * verify.c (do_newobj): do delegate verification.
7484
7485         * verify.c (verify_delegate_compatibility): perform delegate
7486         verification.
7487
7488         * verify.c (verify_ldftn_delegate): perform tests related to
7489         ldftn delegates.
7490
7491         * verify.c (mono_delegate_signature_equal): perform the
7492         slightly diferent signature comparison required by delegates.
7493
7494         * metadata.c (mono_metadata_type_equal_full): added and exported
7495         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
7496         allows signature only comparison.
7497
7498         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
7499         as MONO_INTERNAL.
7500
7501 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7502
7503         * verify.c: added a bunch of stack_slot_* functions to
7504         make access to stack slot type easier. This is required to
7505         allow optional flags, like null literal, boxed value and
7506         this pointer.
7507         All access paths to IlStackDesc::stype have been changed 
7508         to use these new funcions.
7509         Removed a bunch of unused functions and cleared all warnings.
7510         This patch introduces the usage of the this pointer and 
7511         boxed value flags.
7512
7513 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
7516
7517 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7518
7519         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
7520         match managed version.
7521
7522         * appdomain.c: Bump corlib version.
7523         
7524         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
7525         argument.
7526
7527 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
7528
7529         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
7530         Set public key token to zero-length byte array if assembly is not
7531         strongnamed.
7532
7533 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7534
7535         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
7536         writing a vtype array elem.
7537
7538 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
7539
7540         * assembly.c (build_assembly_name): return FALSE if length of token is
7541         not 16 (if not "null").
7542         (mono_assembly_name_parse_full): return FALSE if value of version,
7543         culture, token or key is 0.
7544         * icall.c (fill_reflection_assembly_name): add boolean arguments to
7545         specify whether public key and public key token must be set to default
7546         value (zero-length byte array) if not available. Set versioncompat to
7547         SameMachine. If public key is available or the default is set, then
7548         set PublicKey flag.
7549         (ves_icall_System_Reflection_Assembly_FillName): if no public key
7550         is available, use empty byte array as default value. On the 2.0
7551         profile, use default value for public key token if not set.
7552         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
7553         profile, use default value for public key if not set. On the 2.0
7554         profile, use default value for public key token if not set.
7555         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
7556         default values for public key and public key token.
7557
7558 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7559
7560         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
7561         field to keep it in synch with the managed object.
7562
7563         * marshal.c (emit_marshal_object): Add support for byref marshalling of
7564         delegates. Fixes #351520.
7565
7566         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
7567         contains defined memory.
7568         
7569         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
7570
7571         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
7572         
7573         * sgen-gc.c (check_consistency): New helper function to do a consistency check
7574         of the GC data structures.
7575
7576         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
7577
7578         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
7579         
7580         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
7581         barrier.
7582         (mono_array_clone_in_domain): Ditto.
7583         (mono_array_clone_in_domain): Ditto.
7584
7585         * threads.c (start_wrapper): Register the thread start argument as a GC root.
7586         (cache_culture): Use a write barrier.
7587
7588         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
7589         (ves_icall_get_property_info): Ditto.
7590
7591         * object.h (MONO_STRUCT_SETREF): New macro.
7592
7593         * class-internals.h (MonoStats): Add some GC statistics.
7594
7595         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
7596
7597 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
7598
7599         * exception.c (mono_exception_from_name_two_strings):
7600         Break from loop after method is found.
7601
7602 2008-01-04  Dick Porter  <dick@ximian.com>
7603
7604         * process.c (process_module_string_read): Rename variable to
7605         reflect correct usage, after fixing bug 345972.
7606
7607 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
7608
7609         * verify.c (mono_type_create_fnptr_from_mono_method): 
7610         created a MonoType function pointer instance to be used during
7611         verification. The verifier releases this memory at end.
7612
7613         * verify.c (mono_method_is_constructor): extracted repeated
7614         checks for constructor into a single class.
7615
7616         * verify.c (do_push_field): use new extracted method
7617         for constructor check.
7618
7619         * verify.c (do_newobj): same.
7620
7621         * verify.c (do_ldftn): renamed to do_load_function_ptr
7622         and make it verify ldvirtftn too.
7623
7624         * verify.c (mono_method_verify: proper verification
7625         of ldvirtftn. release created MonoMethod instances.
7626
7627 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7628
7629         * verify.c (token_bounds_check): added.
7630
7631         * verify.c (do_ldftn): added.
7632
7633         * verify.c (mono_method_verify): proper verificartion of ldftn.
7634
7635 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7636
7637         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
7638         than the table row count. It's the resposibility of the caller to
7639         make the bounds check and raise the correct error.
7640
7641         * metadata.c (mono_metadata_decode_row_col): Same.
7642
7643         * loader.c (mono_get_method_from_token): perform bounds check
7644         on token for methoddef table.
7645
7646 2007-12-29  Miguel de Icaza  <miguel@novell.com>
7647
7648         * icall.c
7649         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
7650         assert into a negative result, the managed code already coped with
7651         that.
7652
7653         Some folks on Windows reported this error. 
7654
7655 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
7656
7657         * appdomain.c: Bump corlib version.
7658         * icall.c:
7659         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
7660         CultureInfo.CreateCulture to create CultureInfo for name.
7661         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
7662         create CultureInfo for name. Fixes bug #347174.
7663
7664 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7665
7666         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
7667         flags.
7668
7669         * verify.c (is_valid_branch_instruction): allow branching to the
7670         first instruction of the protected block.
7671
7672         * verify.c (is_valid_cmp_branch_instruction): same.
7673
7674         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
7675         avoid double initialization.
7676
7677         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
7678         detect which cases the eval stack should just be copied.
7679
7680         * verify.c (mono_method_verify): check if the eval stack
7681         is empty when entering a protected block.
7682
7683 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7684
7685         * verify.c: added is_clause_in_range, is_clause_inside_range,
7686         is_clause_nested and verify_clause_relationship. They perform
7687         the verifications stated in P1 12.4.2.7.
7688
7689         * verify.c (mono_method_verify): remove some unused variables,
7690         add the new exception clause checks, add instruction border
7691         checks for protected block start/end, improved some error 
7692         messages and fixed a bug in the way invalid instruction access
7693         is detected.
7694
7695 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7696
7697         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
7698         from GC 7.0 if available.
7699
7700         * object.c: Remove an unused define.
7701         
7702         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
7703
7704         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
7705
7706         * null-gc.c (mono_gc_make_descr_for_array): Implement.
7707
7708         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
7709
7710         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
7711         to take the same arguments as the other make_descr functions.
7712
7713         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
7714
7715         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
7716         directly.
7717
7718         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
7719         mini.c.
7720
7721         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
7722         call to boehm-gc.c.
7723
7724         * boehm-gc.c (mono_gc_register_root): Fix a warning.
7725
7726         * null-gc.c (mono_gc_register_root): Fix a warning.
7727
7728         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
7729
7730         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
7731         (mono_gc_base_init): Call GC_init ().
7732
7733         * null-gc.c: Define mono_gc_register_root () as a no-op.
7734
7735         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7736
7737 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
7738
7739         * verify.c: add prototype for merge_stacks at top
7740
7741         * verify.c (do_switch): added.
7742
7743         * verify.c (merge_stacks): on some cases the stack merging
7744         was not happening properly. Unequal stack sizes at merge
7745         points should be invalid.
7746
7747         * verify.c (mono_method_verify): added more debug info on stack state.
7748         verify switch properly.
7749
7750 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
7751
7752         * method-builder.h: New file, moved the mono_mb_ declarations here from 
7753         marshal.h.
7754
7755         * boehm-gc.c marshal.c: Include method-builder.h.
7756
7757         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
7758
7759         * marshal.c: Remove some code which is now in method-builder.c.
7760
7761 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7762
7763         * method-builder.c: New file, extraction of the method builder functionality 
7764         from marshal.c.
7765
7766         * marshal.c: Move the mb functions into method-builder.c.
7767
7768         * marshal.h marshal.c: Export some mono_mb_... functions.
7769
7770         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
7771
7772         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
7773         the caller.
7774
7775         * class.c (mono_class_get_full): Check the token type in the dynamic case.
7776
7777         * loader.c (mono_field_from_token): Ditto.      
7778
7779         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
7780         type as well.
7781         
7782         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
7783         Fixes #342565.
7784
7785         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
7786         a helper function for setting it.
7787
7788         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
7789
7790         
7791         * assembly.c: Significally simplify code now that referenced assemblies are 
7792         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
7793
7794         * threads.h: Don't include  the internal threads-types.h header file. Fixes
7795         #349952.
7796
7797 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
7798
7799         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
7800         instructions that were target of branches or are at protected block boundaries.
7801
7802         * verify.c (in_same_block): handle filter clauses.
7803
7804         * verify.c (is_valid_branch_instruction): added. checks the target of
7805         instructions br or brtrue/false.
7806
7807         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
7808         binary branch instructions such as beq and bge.
7809
7810         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
7811         and made it pin the instruction as been part of the exception block.
7812
7813         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
7814         of in_same_block.
7815
7816         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
7817         of in_same_block.
7818
7819         * verify.c (do_ret): ret from a protected block is unverifiable and
7820         not invalid.
7821
7822         * verify.c (do_static_branch): verify br and br.s instructions.
7823
7824         * verify.c (merge_stacks): add extra param to support detection
7825         of branches in the middle of instructions.
7826         
7827         * verify.c (mono_method_verify): verify branches and exception blocks
7828         that target the middle of instructions. Proper verification of br and br.s.
7829
7830 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
7831
7832         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
7833         skip_visibility field.
7834         (reflection_methodbuilder_from_dynamic_method): Ditto.
7835
7836         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
7837         registrations. Fixes #348193.
7838
7839         * threads.h: Move the internal mono_thread_get_pending_exception () to
7840         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
7841
7842 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
7843
7844         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
7845         icall registration. Fixes #348193.
7846
7847         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
7848         for corlib classes into object. Fixes #349621.
7849
7850 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
7851
7852         * icall.c (property_accessor_nonpublic): new function to determine
7853         whether an accessor allows a property to be considered non-public.
7854         Returns false for private accessor(s) from parent class, and internal
7855         accessor(s) from parent on 2.0 profile (and higher).
7856         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
7857         to determine whether property should be included if NonPublic flag
7858         is set. Fixes bug #349078.
7859
7860 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
7861
7862         * verify.c (init_stack_with_value): added.
7863
7864         * verify.c (mono_method_verify): extracted common
7865         code for exception initialization into init_stack_with_value.
7866
7867         * verify.c (mono_method_verify): initialize the exception
7868         for handler clauses as well.
7869
7870         * verify.c (mono_method_verify): fix the exception clause
7871         ordering rules, it should use handler end offset and not
7872         start offset.
7873
7874 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
7875
7876         * rawbuffer.c: remove useless warning.
7877
7878 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
7879
7880         * threads.h, threads-types.h: move functions to the correct header
7881         (fixes bug#349952).
7882
7883 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7884
7885         * verify.c (mono_method_verify): proper verification
7886         of exception handling clauses ranges and fallthru in
7887         and out of protected blocks.
7888
7889 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7890
7891         * verify.c (mono_method_verify): fixed compilation issue.
7892
7893 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7894
7895         * verify.c (mono_method_verify): a printf slipped in, changed
7896         to use verifier debug macro.
7897
7898 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
7899
7900         * verify.c (is_correct_leave): check for filter clauses.
7901
7902         * verify.c (do_filter): added.
7903
7904         * verify.c (mono_method_verify): property verification of leave.
7905
7906
7907 2007-12-18  Mark Probst  <mark.probst@gmail.com>
7908
7909         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
7910         Win32 build, until we figure out how to do the proper thing on
7911         Win32.
7912
7913 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
7914
7915         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
7916         by the previous patch.
7917         
7918         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
7919         the assembly resolve handler for refonly assemblies.
7920
7921 2007-12-17  Mark Probst  <mark.probst@gmail.com>
7922
7923         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
7924         Make sure only one thread is allowed to commence shutdown, and
7925         don't allow new threads to be started once shutdown is in
7926         progress.
7927
7928 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
7929
7930         * verify.c (is_correct_endfilter): added.
7931
7932         * verify.c (is_unverifiable_endfilter): added.
7933
7934         * verify.c (do_endfilter): added.
7935
7936         * verify.c (mono_method_verify): property verification of endfilter
7937         and fixed a corner case or endfinally.
7938
7939 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
7940
7941         * verify.h: new flags to support fail fast of unverifiable code and
7942         do non-strict verification. Non-strict verification is required to
7943         have MS runtime compatibility. There are a huge amount of unverifiable
7944         code that it accepts as verifiable. The strict mode verifies the code
7945         as the specs says.
7946         Non-strict mode will be required in cases where code needs to be
7947         accepted as verifiable but fails under strict mode.
7948
7949         * pedump.c: added support to fail fast and non-strict verification.
7950
7951         * verify.c: added support for both fail fast and non-strict verification.
7952
7953 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
7954
7955         * verify.c (is_correct_endfinally): added.
7956
7957         * verify.c (mono_method_verify): property verification of endfinally.
7958
7959 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7960
7961         * verify.c (in_any_block): check for filter clauses.
7962
7963         * verify.c (is_correct_rethrow): added.
7964
7965         * verify.c (mono_method_verify): property verification of rethrow.
7966
7967         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
7968
7969 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7970
7971         * verify.c (do_throw): added.
7972
7973         * verify.c (mono_method_verify): property verification of throw
7974
7975 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
7976
7977         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
7978         assemblies. Fixes #346425.
7979
7980 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
7981
7982         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
7983         FieldBuilders.
7984
7985         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
7986
7987         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
7988         prevent asserts when this is called with a token which might not be valid.
7989
7990         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
7991         lookup_dynamic_token_class with valid_token == FALSE.
7992
7993         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
7994
7995         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
7996
7997         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
7998         
7999 2007-12-10  Mark Probst  <mark.probst@gmail.com>
8000
8001         * gc.c: Don't delay threadpool thread finalization unless Mono is
8002         shutting down.
8003
8004 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8005
8006         * threads.c: turn an assert into a non-fatal warning.
8007
8008 2007-12-09  Robert Jordan  <robertj@gmx.net>
8009
8010         * icall.c (GetVirtualMethod): Add missing argument validation.
8011
8012 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8013
8014         * verify.c (do_cast): added.
8015
8016         * verify.c (mono_method_verify): property verification of castclass and isinst.
8017
8018
8019 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8020
8021         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
8022
8023         * verify.c (do_stelem): added.
8024
8025         * verify.c (mono_method_verify): property verification of stelem.X.
8026
8027 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8028
8029         * class.c, class-internals.h: Introduce an environment variable
8030         (MONO_GENERIC_SHARING) through which the extent of generic code
8031         sharing can be controlled (share all classes, share only corlib
8032         classes, or share nothing).
8033
8034         * object.c: Only create runtime generic context for classes for
8035         which sharing is enabled.
8036
8037 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8038
8039         * verify.c (do_ldelem): refactor it to work with ldelem.any.
8040
8041         * verify.c (mono_method_verify): property verification of ldelem.any.
8042
8043 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8044
8045         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
8046         added ldelem.X opcodes.
8047
8048         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
8049
8050         * verify.c: proper verification of ldelem.X 
8051
8052 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8053
8054         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
8055
8056 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8057
8058         * verify.c (mono_method_verify): null literal requires special handling,
8059         the value pushed on stack need to be flagged as so.
8060
8061         * verify.c (do_ldelema): Verify ldelema properly.
8062
8063 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8064
8065         * verify.c: Verify ldlen properly.
8066
8067 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
8068
8069         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
8070         to the target object's type. Fixes #346160.
8071
8072 2007-12-05  Dick Porter  <dick@ximian.com>
8073
8074         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
8075         Solaris needs the same workaround as BSD-derived systems.  Fixes
8076         bug 323524, patch by Burkhard Linke
8077         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
8078
8079 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
8080
8081         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
8082         handle to use when error dialog is shown; otherwise, update mask
8083         to show no error dialog when an error occurs.
8084
8085 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8086
8087         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
8088
8089         * class.c (mono_class_get_field_default_value): New helper function to initialize
8090         field->def_type and field->data.
8091
8092 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8093
8094         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
8095         the general one.
8096
8097         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
8098
8099         * marshal.c: Avoid depending on delegate->method_info being set.
8100
8101         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
8102         
8103         * object.c (mono_delegate_ctor): Set delegate->method.
8104
8105         * object-internals.h (struct _MonoDelegate): Add 'method' field.
8106
8107         * appdomain.c: Bump corlib version.
8108
8109 2007-11-27  Raja R Harinath  <harinath@gmail.com>
8110
8111         * metadata.c (mono_generic_inst_equal_full): Short-circuit
8112         equality check if we're comparing canonicalized MonoGenericInsts.
8113
8114 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8115
8116         * class.c (generic_array_methods): Call mono_class_setup_methods () before
8117         accessing class->methods.
8118
8119 2007-11-22  Dick Porter  <dick@ximian.com>
8120
8121         * threads.c: Ensure that the synch_cs is set before trying to use
8122         it.
8123
8124 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
8125
8126         * profiler.c: r89126 broke the statistial profiler, unbreak.
8127
8128 2007-11-22  Martin Baulig  <martin@ximian.com>
8129
8130         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
8131
8132         * mono-debug.c
8133         (mono_debug_debugger_version): Bump to 3.
8134         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
8135         -> mono_debugger_class_initialized().
8136
8137         * mono-debug-debugger.c
8138         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
8139
8140         * class.c
8141         (mono_debugger_start_class_init_func): Removed.
8142         (mono_debugger_class_loaded_methods_func): Added.
8143         (mono_class_setup_methods): Call it here.
8144
8145 2007-11-22  Martin Baulig  <martin@ximian.com>
8146
8147         * mono-debug.c
8148         (mono_debug_add_delegate_trampoline): New public method.
8149         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
8150
8151         * mono-debug.h
8152         (MonoSymbolTable): Added `global_data_table'.
8153         (MonoDebuggerTypeKind): Removed.
8154
8155 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
8156
8157         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
8158         these methods.
8159
8160         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8161         
8162 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8163
8164         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
8165
8166 2007-11-20  Martin Baulig  <martin@ximian.com>
8167
8168         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
8169
8170         * mono-debug-debugger.c
8171         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
8172         (mono_debugger_remove_breakpoint): Likewise.
8173         (mono_debugger_check_breakpoints): Likewise.
8174         (mono_debugger_register_class_init_callback): New public method.
8175         (mono_debugger_remove_class_init_callback): Likewise.
8176         (mono_debugger_add_type): Likewise.
8177
8178         * mono-debug-debugger.h
8179         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8180
8181 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8182
8183         * class.c: more interface implementations needed for the
8184         array enumerator (fixes bug #341112).
8185
8186 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8187
8188         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8189         fix ParamName of ArgumentNullExceptions.
8190
8191 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8192
8193         * reflection.c (mono_reflection_encode_sighelper): Generate the
8194         modopts and modreqs.   I have a useless test that crashes monodis,
8195         but that shows the code working.
8196
8197 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8198
8199         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8200         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8201
8202 2007-11-15  Dick Porter  <dick@ximian.com>
8203
8204         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8205         When joining a thread, it's the thread that's calling Join that
8206         gets WaitSleepJoin state not the target.  Fixes the standalone
8207         test case in bug 334740, and hopefully the whole bug too.
8208
8209 2007-11-15  Dick Porter  <dick@ximian.com>
8210
8211         * process.c: Read file version info from the files pointed at by
8212         process modules, not the current process.  Fixes bug 315969.
8213
8214         Use windows typedef names in some places to fix warnings on the
8215         windows build.
8216
8217 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8218
8219         * image.c, metadata-internals.h: Added a generic_class_cache hash
8220         to MonoImage for looking up generic classes when sharing generics.
8221
8222 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8223
8224         * sgen-gc.c: warning cleanups.
8225
8226 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8227
8228         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8229         inherited properties.
8230
8231 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8232
8233         * object.c, class-internals.h: Added more information to the
8234         runtime generic context.
8235
8236 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8237
8238         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8239         instead of just the target method. Generalize the abstract method handling to
8240         handle any non-static method.
8241
8242         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8243         mono_marshal_get_delegate_invoke () signature change.
8244
8245 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8246
8247         * class.c, class-internals.h: Made
8248         mono_type_get_basic_type_from_generic () public.  Fixed member
8249         access check for shared generics.
8250
8251         * loader.c: Don't insert field into field cache if it's part of a
8252         non-inflated generic class.
8253
8254         * domain.c, domain-internals.h: The generic sharing context is now
8255         part of the jit info data structure.  Added two accessor
8256         functions.
8257
8258 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8259
8260         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8261         the array Get/Set/Address methods, since the JIT inlines them.
8262
8263         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8264
8265         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8266         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8267
8268         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8269         mono_marshal_get_delegate_invoke signature change.
8270
8271         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8272         an additional argument. Add support for invoking abstract methods.
8273
8274         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8275
8276         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8277
8278 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8279
8280         * class.c: Do field layout for open generic classes as well.
8281
8282 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8283
8284         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8285         other objects, because the threadpool is still around.  Put them
8286         in a list instead and after finalizing all other objects in the
8287         root domain shut down the thread pool and then finalize the
8288         threads.  Fixes bug #337383.
8289
8290         * threads.c, thread-types.h: New mono_thread_create_internal()
8291         function for marking a thread with the threadpool flag before it
8292         started.  Set synch_cs to NULL after freeing it.
8293
8294         * threadpool.c: Mark threadpool threads before they start.
8295
8296 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8297
8298         * reflection.h, reflection.c: don't export random functions
8299         and lazy load dbnull and missing objects.
8300
8301 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8302
8303         * class.c: Initialize COM types if COM interfaces
8304         are present (not just COM classes).
8305         
8306         Code is contributed under MIT/X11 license.
8307
8308 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8309         * reflection.c:
8310         create_dynamic_mono_image: hook module profiler events (dynamic case).
8311         mono_image_basic_init: hook assembly profiler events (dynamic case).
8312
8313 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8314         * profiler.c:
8315         simple_appdomain_unload: completely terminate the profiler
8316         instead of only processing the statistical samples.
8317         simple_shutdown: make sure this is really called exactly once,
8318         even in multithreaded applications, and always listen to
8319         appdomain events.
8320         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8321         here, the "[un]load" functions will do it.
8322         Fixes bugs #333791 and #325261.
8323
8324 2007-11-07  Geoff Norton  <gnorton@novell.com>
8325
8326         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8327         rather than depend on __APPLE__.
8328
8329 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8330
8331         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8332
8333 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8334
8335         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8336         UTF16 MonoString. Fix the crash from bug #335488
8337
8338 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8339
8340         * marshal.c: Correct (for non-Win32 OS) length != size in 
8341         mono_string_from_bstr. Fix #339530.
8342
8343 2007-11-06  Geoff Norton  <gnorton@novell.com>
8344
8345         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8346         to succeed
8347
8348 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
8349
8350         * process.c: Added run-time GetProcessId API detection for Windows.
8351
8352 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8353
8354         * reflection.c  (mono_param_get_objects): If a parameter has the
8355         attribute [System.Runtime.InteropServices.Optional] we should
8356         set the DefaultValue of the ParameterInfo to be
8357         System.Reflection.Missing instead of DBNull.
8358
8359         See bug #339013.
8360
8361         (mono_get_reflection_missing_object): New method,
8362         returns the System.Reflection.Missing.Value singleton instance.
8363
8364 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8365
8366         * culture-info-table.h : regenerated.
8367
8368 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8369
8370         * icall.c: Use GetEnvironmentStrings on windows
8371         so we are using the same environment block as 
8372         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8373         #333740.
8374         
8375         Code is contributed under MIT/X11 license.
8376
8377 2007-10-31  Martin Baulig  <martin@ximian.com>
8378
8379         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8380
8381         * mono-debug-debugger.h
8382         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8383
8384 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8385
8386         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8387         classes.
8388
8389 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8390
8391         * culture-info-table.h : regenerated.
8392
8393 2007-10-30  Robert Jordan  <robertj@gmx.net>
8394
8395         * icall-def.h, icall.c:
8396         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8397
8398         Code is contributed under MIT/X11 license.
8399
8400 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8401
8402         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8403         inflated class instead of inflating them again.
8404         
8405         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8406         dynamic case.
8407
8408         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8409         Call setup_supertypes () after klass->parent is set.
8410         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8411
8412         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8413         for inflated instances of not yet created dynamic generic classes.
8414         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8415         times from inflated_method.
8416         (methodbuilder_to_mono_method): Ditto.
8417
8418 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8419
8420         * gc.c: code cleanup and removed old untested option of not creating the
8421         finalizer thread.
8422
8423 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8424
8425         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8426         creating a jump trampoline for dynamic methods.
8427
8428 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8429
8430         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8431         generic TypeBuilders when called from another method of the same type (bug #335131).
8432
8433
8434 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8435
8436         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8437         doesn't seem to work perfectly.
8438         
8439         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8440         called multiple times.
8441         (methodbuilder_to_mono_method): Ditto.
8442         (resolve_object): Inflate FieldBuilder's.
8443
8444 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8445
8446         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8447         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8448         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8449
8450 2007-10-26  Dick Porter  <dick@ximian.com>
8451
8452         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8453         Thread initialisation changes
8454
8455 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8456
8457         * verify.c: fix compatibility check between arrays and System.Array
8458
8459 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8460
8461         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8462         too. Fixes #336999.
8463
8464 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8465
8466         * object.c (mono_value_box): Use typed allocation here.
8467
8468 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8471         trampoline instead of compiling the method right away.
8472
8473         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8474
8475 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8476
8477         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8478         related fields for dynamic classes. Fixes #334493.
8479
8480 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8481
8482         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8483         
8484         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8485
8486         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8487         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8488
8489         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8490
8491         * reflection.c (create_generic_typespec): Initialize klass->generic_container
8492         if needed.
8493         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
8494
8495 2007-10-18  Jonathan Chambers <joncham@gmail.com>
8496
8497         * marshal.c: Use correct key when removing item
8498         from ccw_hash.
8499         
8500         Code is contributed under MIT/X11 license.
8501
8502 2007-10-17  William Holmes  <billholmes54@gmail.com>
8503
8504         *marshal.c: Adding a case to marshal booleans to U1
8505
8506         Code is contributed under MIT/X11 license.
8507
8508 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
8509
8510         * class.c (mono_class_from_name): Search the modules compromising dynamic
8511         assemblies. Fixes #331601.
8512
8513 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
8514
8515         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
8516         exception if the type name contains an assembly component. Fixes #334203.
8517
8518         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
8519         modules inside dynamic assemblies. Fixes #334200.
8520         
8521         * reflection.c: Set image->public_key and image->public_key_length;
8522
8523         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
8524         fields.
8525
8526         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
8527         
8528 2007-10-16  Mark Probst  <mark.probst@gmail.com>
8529
8530         * metadata.c: Implemented correct comparing of generic classes.
8531         An inflated generic class can be equal to a non-inflated one if it
8532         is inflated with generic type variables as type arguments.  Fixes
8533         bug #333798.
8534
8535 2007-10-15  Dick Porter  <dick@ximian.com>
8536
8537         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
8538         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
8539         81646.
8540
8541         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
8542         instead of a monitor lock.  This means that monitor_try_enter and
8543         co can set the thread state safely.
8544         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
8545         thread_interrupt_requested, so interrupt actually works.
8546
8547         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
8548         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
8549         state accessor function
8550
8551 2007-10-15  Martin Baulig  <martin@ximian.com>
8552
8553         * mono-debug.h
8554         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
8555         the debugger with the current runtime.
8556
8557 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8558
8559         * object.c, object-internals.h: added the ability to set a single
8560         trampoline for all the slots in a vtable.
8561
8562 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8563
8564         * marshal.c: deal with a possible race condition during multicast
8565         delegate invocation.
8566
8567 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8568
8569         * class.c: ensure value type methods don't have the synchronized
8570         flag set.
8571
8572 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8573
8574         * string-icalls.c, string-icalls.h: reverted unapproved patch that
8575         breaks the build.
8576
8577 2007-10-11  Joel Reed  <joelwreed@comcast.com>
8578
8579         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
8580         to take an options parameter so that empty entries can be removed during
8581         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
8582
8583 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8584
8585         * marshal.c: make sure we don't store the signature from a dynamic
8586         method into the runtime invoke cache (bug #327189).
8587
8588 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8589
8590         * marshal.c: make sure the wrapper methods are properly initialized.
8591
8592 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8593
8594         * metadata.c, metadata-internals.h: Generalized
8595         mono_type_stack_size() to mono_type_stack_size_internal() which
8596         takes an additional argument specifying whether it allows open
8597         types.
8598
8599 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8600
8601         * verify.c (do_invoke_method): handle typedbyref params
8602         correctly and check for unverifiable return values.
8603
8604         * verify.c (do_newobj): fix a warning.
8605
8606 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8607
8608         * verify.c: don't tread typedbyref as allways unverifable,
8609         so uses, like (ld/st)loc.0 are valid. verify for the cases
8610         that it matters, like boxing related operations.
8611
8612 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8613
8614         * verify.c: add verification of the newobj opcode. verification
8615         of delegate instantation still missing due ldftn and virldftn not
8616         pushing the function type on stack
8617
8618 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8619
8620         * class-internals.h: Runtime generic context data structure
8621         definition.
8622
8623         * object.c: Initialization of runtime generic context at runtime
8624         vtable creation time.
8625
8626 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
8627         * class.c (mono_class_create_from_typedef,
8628         mono_class_from_generic_parameter, mono_ptr_class_get,
8629         mono_fnptr_class_get, mono_bounded_array_class_get)
8630         * domain.c (mono_domain_create, mono_domain_free)
8631         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
8632         * image.c (do_mono_image_load, mono_image_close):
8633         Hooked up load-unload profiler events.
8634
8635 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8636
8637         * domain.c: track statistics about the actual amount of native code
8638         allocated.
8639
8640 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8641
8642         * class.c: the valuetype enumerators don't have the additional
8643         supertypes interfaces.
8644
8645 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8646
8647         * class.c: need more interfaces setup for the IEnumerator<T>
8648         object created for arrays (tests/ienumerator-interfaces.2.cs).
8649
8650 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
8651
8652         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
8653
8654 2007-10-05  Alp Toker  <alp@atoker.com>
8655
8656         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8657         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8658         #315863.
8659
8660 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8661
8662         * verify.c (verify_type_compatibility_full): verification of
8663         compatibility improved, validates correctly non-strict checks between
8664         native int and I4 types different than (unsigned)int32.
8665
8666         * verify.c (do_store_indirect): added, do all verification of
8667         ldind.X opcodes. 
8668
8669         * verify.c (get_load_indirect_mono_type): renamed to
8670         get_indirect_op_mono_type, as it now returns the MonoType for 
8671         ldind.X and stind.X opcodes.
8672
8673 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8674
8675         * reflection.c: Fix the encoding of generic type definition for
8676         TypeBuilders.
8677
8678         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
8679         mono_image_typedef_or_ref but allows to specify if typespec lookups should
8680         be made. Typespec check is done prior to typeref cache lookup.
8681
8682         * reflection.c (mono_image_typedef_or_ref): now just delegate to
8683         mono_image_typedef_or_ref_full.
8684
8685         * reflection.c (encode_generic_class): encode the generic class
8686         directly instead of calling encode_type.
8687
8688         * reflection.c (encode_type): encode the generic type definition
8689         MonoClass as a generic instantiation.
8690
8691         * reflection.c (create_typespec): cache typespec tokens in
8692         the assembly->typespec cache. Don't create typespec for a generic
8693         instance MonoClass. Create typespec for the generic type defintion.
8694
8695         * reflection.c (create_generic_typespec): encode the generic
8696         class directly instead of calling encode_type.
8697
8698         * reflection.c (mono_image_create_token): encode the generic
8699         type definition not using a typespec for MonoType instances.
8700
8701
8702 2007-10-04  Raja R Harinath  <rharinath@novell.com>
8703
8704         Fix #328812
8705         * class.c (mono_image_init_name_cache): Don't return nested
8706         'protected internal' classes.
8707         (mono_class_from_name_case): Likewise.
8708
8709 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
8710
8711         * icall-def.h, icall.c : get_bundled_machine_config() is now the
8712           common function used by both DefaultConfig in System.dll and
8713           InternalConfigurationHost in System.Configuration.dll.
8714
8715 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8716
8717         * class.c: automatically add to vectors only a few essential explicit
8718         generic interfaces. The rest of the interfaces that arrays should
8719         provide are currently implicitly added (but still not lazily, see the
8720         design in the discussion of bug#325495 for the details of what is
8721         needed for that). Additionally, implicit interfaces are assigned the
8722         same vtable slot as the explicit interfaces (as they are compatible):
8723         this enables huge memory savings since we don't need to instantiate
8724         as many memthods and as large vtables anymore. Also, Since
8725         GetEnumerator<T> returns an instance of a type that is required to
8726         support a similarly large set of interfaces as arrays, we add
8727         implicit interfaces and interface offset sharing support to those
8728         types, too. This change adds all the required interfaces so that
8729         the anonarray.cs test case in the bug report works (we don't add
8730         all the interfaces to arrays of arrays 3-level deep and more because
8731         of the memory requirements explained in the bug and since they are much
8732         less common: the lazy-loading support will enabled them to work, too).
8733
8734 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8735
8736         * verify.c (merge_stacks): major clean up, all type compatibility
8737         checks are done by verify_type_compatibility. This fix my earlier lack
8738         of understanding of the CLR type system and merge_stacks no longer looks
8739         scary.
8740
8741         * verify.c: fixed some bad spelling.
8742
8743 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8744
8745         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
8746         a given stack slock.
8747         
8748         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
8749         verify_type_compatibility_full. This removed a near indentical function and fixed
8750         handling of Int32 and IntPtr across all opcodes.
8751
8752 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8753
8754         * class.c: only vectors have the additional generic interfaces.
8755
8756 2007-10-01  Jonathan Chambers <joncham@gmail.com>
8757
8758         * mono-config.c: Use g_strcasecmp instead of
8759         strcasecmp like everywhere else to fix
8760         compilation with MSVC.
8761         
8762         Code is contributed under MIT/X11 license.
8763
8764 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8765
8766         * object.c, object-internals.h: refactored the IMT code to enable
8767         building a single slot at a time and lazily creating the IMT trampolines
8768         and thunks.
8769
8770 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
8771
8772         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
8773
8774         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
8775         Fixes #328501.
8776         
8777 2007-09-29  Raja R Harinath  <harinath@gmail.com>
8778
8779         * loader.c (method_from_methodspec): Rearrange to avoid
8780         un-necessary exposition.  Don't assert out if the method's
8781         declaring type is a generic type definition.
8782
8783 2007-09-28  Martin Baulig  <martin@ximian.com>
8784
8785         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
8786
8787 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
8788
8789         * class-internals.h: optimize field layout of MonoClass to
8790         requires less cachelines at runtime and save a few bytes on 64 bit
8791         systems.
8792
8793 2007-09-28  Jb Evain  <jbevain@novell.com>
8794
8795         * reflection.c: when encoding type names in custom attributes,
8796         if the type is a closed generic type, its generic arguments
8797         have to be serialized as AssemblyQualifiedName, so that when
8798         they are deserialized, it's possible to re-create them properly.
8799         Fixes #329450.
8800
8801
8802 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8803
8804         * object.c, class-internals.h: added delegate-creation counter.
8805
8806 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8807
8808         * class.c: cleanup of the code that synthetizes interfaces for
8809         arrays in 2.0: saves quit a bit of corlib mempool memory.
8810         Code to fix bug #325495 ifdeffed out for now until the issues
8811         with memory usage and O(n^2) behaviour are fixed.
8812
8813 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8814
8815         * marshal.c: when possible, do not duplicate the name of the methods
8816         in the method builder and in the generated MonoMethod.
8817
8818 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8819         * verify.c: added support for type checking ldind_* opcodes.
8820
8821 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8822
8823         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
8824         which is used to distinguish the fully open instantiation of a TypeBuilder
8825         with the rest. This temporary hack is required to restore the property that
8826         the fully open instantiation is the same type of the generic type definition.
8827
8828         * class-internals.h (mono_generic_class_is_generic_type_definition):
8829         new function as part of the internal API.
8830
8831         * class.c (inflate_generic_type): return NULL when the generic inst is
8832         fully open. The fully open generic type is now the same as the generic type
8833         definition for non TypeBuilder types.
8834
8835         * class.c (mono_generic_class_get_class): removed assert since it is
8836         no longer valid, gklass->cached_class can point to the generic type definition.
8837
8838         * class.c (mono_generic_class_is_generic_type_definition): new.
8839
8840         * metadata.c (mono_generic_class_hash): added is_tb_open field
8841         to the hash calculation.
8842
8843         * metadata.c (free_generic_class): if the generic class is associated
8844         with the generic type definition, its field will come from the mempool and
8845         must not be freed.
8846
8847         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
8848         new, this function identifies the corner case of a TypeBuilder fully open
8849         instantiation.
8850
8851         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
8852         for lookup. Set gclass->cached_class to be the container class in case of
8853         the fully open instantiation of non TypeBuilder types.
8854
8855         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
8856         to compare generic classes.
8857
8858         * reflection.c (method_encode_methodspec): remove assert that
8859         no longer is valid.
8860
8861         * reflection.c (mono_reflection_generic_class_initialize): add
8862         an aditional assert to ensure the proper type is used.
8863
8864 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
8865
8866         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
8867         to enjoy it.
8868
8869 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8870
8871         * verify.c (push_arg): Fixed support for ldarga
8872         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
8873         MonoType used as first arg in case of instance calls.
8874
8875 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8876
8877         * verify.c: Support for verifying VAR and MVAR types, 
8878
8879 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
8880
8881         * icall.c (ves_icall_get_property_info): Set the reflected type of the
8882         accessors correctly.
8883
8884 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8885
8886         * threads.c: support OSX and other systems in
8887         mono_thread_get_stack_bounds (bug #328026).
8888
8889 2007-09-25  Martin Baulig  <martin@ximian.com>
8890
8891         * mono-debug.h
8892         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
8893
8894 2007-09-24  Martin Baulig  <martin@ximian.com>
8895
8896         * mono-debug.h
8897         (MonoDebugClassEntry): Moved the definition of this struct into
8898         mono-debug.c to make it private.
8899
8900         * mono-debug.c
8901         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
8902         type table per symbol file, we don't need to store the symfile id
8903         any longer.
8904
8905 2007-09-24  Martin Baulig  <martin@ximian.com>
8906
8907         Create one type table per symbol file, since a `MonoClass *' gets
8908         invalid when its image is unloaded.
8909
8910         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
8911         (MonoDebugHandle): Added `type_table'.
8912
8913 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
8914
8915         * mempool.c, mempool.h: added mono_mempool_new_size () API
8916         to be able to specify a smaller initial size for the pool.
8917         Adjusted the code to slowly increase pool size before using
8918         the previous default size.
8919         * image.c: use a small initial size for image mempools.
8920
8921 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
8922
8923         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
8924         Fixes ##320990.
8925
8926         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
8927         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
8928
8929 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
8930
8931         * metadata.c (mono_type_create_from_typespec): Remove an invalid
8932         free. Fixes #327438.
8933
8934 2007-09-21  Raja R Harinath  <harinath@gmail.com>
8935
8936         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
8937         generic instantiations, etc.
8938         <MONO_TYPE_ARRAY>: Likewise.
8939
8940 2007-09-21  Martin Baulig  <martin@ximian.com>
8941
8942         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
8943         these structs were never defined.
8944         (MonoDebugHandle): Removed the `_priv' field, it was never used.
8945
8946 2007-09-21  Martin Baulig  <martin@ximian.com>
8947
8948         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
8949
8950 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
8951
8952         * image.c: removed the guid hash tables: we can get the same info
8953         without the additional memory usage hit (partially fixes also bug #327052).
8954
8955 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
8956
8957         * profiler.h, profiler-private.h, profiler.c: add a new profiler
8958         event to handle unloading methods. After the event is called, the
8959         corresponding MonoMethod* must be considered invalid.
8960         * loader.c (mono_free_method): call the new mono_profiler_method_free
8961         event.
8962
8963 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8964
8965         * domain-internals.h: New flag in MonoJitInfo which marks shared
8966         generic methods.  New hash table (shared_generics_hash) in
8967         MonoDomain to keep track of shared generic methods.  Prototypes
8968         for functions to register and lookup shared generic methods.
8969
8970         * domain.c: Support for registering and looking up shared generic
8971         methods via a hash table (shared_generics_hash) in MonoDomain.
8972
8973         * class-internals.h: New exception to signal failure of shared
8974         compilation of a generic method.  New counters for generics
8975         sharing in MonoStats.
8976
8977 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
8978
8979         * image.c, metadata-internals.h: don't keep a file descriptor open
8980         for loaded assemblies (bug#325988).
8981
8982 2007-09-19  Raja R Harinath  <rharinath@novell.com>
8983
8984         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
8985         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
8986         use the corresponding datatypes.
8987         (type_in_image): Update to changes.
8988         (CleanForImageUserData): Simplify.
8989         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
8990         Avoid quadratic behaviour in handling the "stolen" list by
8991         separating the filter predicate out, and by prepending the stolen
8992         items rather than appending them.
8993         (steal_ginst_in_image): Likewise.
8994         (mono_metadata_clean_for_image): Update to changes.
8995
8996 2007-09-19  Martin Baulig  <martin@ximian.com>
8997
8998         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
8999
9000 2007-09-19  Martin Baulig  <martin@ximian.com>
9001
9002         * mono-debug.c (mono_debug_cleanup): Don't call
9003         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
9004
9005 2007-09-19  Raja R Harinath  <harinath@gmail.com>
9006
9007         Fix crash on 'make run-test' in mcs/errors
9008         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
9009         Avoid more potential allocations in mono_class_from_mono_type.
9010         (ginst_in_image): Update to changes.
9011         (gclass_in_image): Rearrange slightly.
9012
9013 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9014
9015         * class.c (mono_class_init): Move the code that sets up class->methods to 
9016         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
9017
9018         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
9019         canonical instance of an inflated generic signature.
9020         (mono_type_create_from_typespec): Remove an invalid free.
9021
9022         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
9023
9024 2007-09-18  Marek Habersack  <mhabersack@novell.com>
9025
9026         * domain-internals.h: added a declaration of the
9027         mono_assembly_load_full_nosearch internal function.
9028
9029         * assembly.c (mono_assembly_load_with_partial_name): use
9030         mono_try_assembly_resolve return value properly.
9031         (mono_assembly_load_full_nosearch): copied the function body from
9032         mono_assembly_load_full, without the code to invoke assembly
9033         search hooks.
9034         (mono_assembly_load_full): calls the above new function and if the
9035         assembly is not resolved, invokes the search hooks.
9036
9037         * appdomain.c (mono_runtime_init): restore the global postload
9038         assembly search handlers.
9039
9040 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9041
9042         * class.c (mono_class_init): Make sure class->methods and class->properties
9043         are never NULL in the generics case.
9044
9045         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
9046
9047 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9048
9049         * metadata.c (free_generic_class): Disable some code to fix the build.
9050
9051         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
9052
9053         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
9054         from the image mempool.
9055
9056         * metadata.c (free_generic_class): Free more data from the inflated class.
9057
9058         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
9059
9060         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
9061         mempool.
9062         (mono_type_create_from_typespec): Ditto.
9063
9064         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
9065         MonoImage to the caller.
9066         (mono_init_internal): Save the opened image in a global variable.
9067         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
9068
9069         * reflection.c (resolve_object): Fix a leak.
9070
9071         * metadata.c: Fix the freeing of data in the generics caches.
9072         
9073         * metadata.c (free_generic_inst): Comment this out to fix the build.
9074         (free_generic_class): Ditto.
9075
9076         * metadata.c: Free cached generic methods, instantinations and classes when
9077         they are removed from the caches.
9078         (mono_metadata_free_type): Free the type itself.
9079
9080         * class.c: Free the result of mono_class_inflate_generic_type () in a few
9081         places.
9082
9083 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9084
9085         * boehm-gc.c: restrict managed allocs to __thread supporting
9086         architectures.
9087
9088 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
9089
9090         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
9091         (mono_generic_class_get_class): Fix a leak.
9092
9093         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
9094         mono_metadata_free_type ().
9095         (mono_metadata_inflate_generic_inst): Fix a leak.
9096
9097 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9098
9099         * mono-debug.c (free_header_data): Fix a leak missed earlier.
9100
9101         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
9102         mempool.
9103
9104         * mono-debug.c (mono_debug_close_image): Fix call to 
9105         g_hash_table_remove ().
9106
9107 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9108
9109         * icall-def.h: redirect all the string ctor to the managed
9110         CreateString () methods.
9111         * string-icalls.c, string-icalls.h: removed dead code for string
9112         ctors and icalls.
9113
9114 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9115
9116         * mono-debug.c: Fix memory leaks.
9117
9118 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9119
9120         * threads-types.h: Implement mono_hazard_pointer_set and 
9121         mono_hazard_pointer_clear macros using do/while(0) to fix
9122         compilation with MSVC.
9123         
9124         Code is contributed under MIT/X11 license.
9125
9126 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9127
9128         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
9129         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
9130
9131 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9132
9133         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
9134         icalls.
9135
9136 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9137
9138         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
9139         managed-code allocated as well.
9140
9141 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9142
9143         * class.c (mono_class_is_assignable_from): Add support for generic variance.
9144
9145 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
9146
9147         * boehm-gc.c: fixed the build after the AOT changes.
9148
9149 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9150
9151         * wrapper-types.h: Add an ALLOC wrapper type.
9152
9153         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
9154         reference managed allocator methods.
9155
9156 2007-09-12  Marek Safar  <marek.safar@gmail.com>
9157
9158         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
9159         of Type array and not MonoType, a fix suggested by Hari.
9160         
9161 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9162
9163         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
9164         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
9165         
9166         Code is contributed under MIT/X11 license.
9167
9168 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9169
9170         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
9171
9172 2007-09-12  Marek Habersack  <mhabersack@novell.com>
9173
9174         * image.c (do_mono_image_open): if assembly file fails to open and
9175         MONO_IOMAP is in effect, try to find the path in a
9176         case-insensitive way.
9177
9178         * appdomain.c (mono_runtime_init): do not install postload hooks -
9179         tests show that MS.NET doesn't use anything of that sort to
9180         trigger the AppDomain.AssemblyResolve event.
9181         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9182         made non-static.
9183         (mono_runtime_init): init portability helpers here.
9184
9185         * assembly.c (mono_assembly_load_with_partial_name): if other   
9186         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9187         to resolve the assembly.
9188
9189         * domain-internals.h: added mono_try_assembly_resolve and marked
9190         it as internal.
9191
9192 2007-09-11  Jb Evain  <jbevain@novell.com>
9193
9194         * object-internals.h (MonoReflectionDynamicMethod): add
9195         a `MonoReflectionType *owner` field. The owner is used
9196         * reflection.c:
9197         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9198         method as the class declaring the dynamic method.
9199         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9200         dynamic method to the declaring type of the methodbuilder.
9201
9202 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9203
9204         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9205         rules for calling methods via reflection.
9206
9207 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9208
9209         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9210         Inflate MonoType's.
9211
9212 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9213
9214         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9215         provide a managed method that does fast allocations without needing
9216         a managed->unmanaged transition. Boehm GC implementation currently
9217         enabled for ptrfree objects on sane architectures.
9218
9219 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9220
9221         * marshal.c, marshal.h: exported a couple of useful functions and
9222         added mono_mb_get_label () to easily handle backward branches.
9223
9224 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9225
9226         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9227
9228 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9229
9230         * loader.c (find_method): Fixed the regression introduced while
9231         fixing bug #81466.
9232
9233 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9234
9235         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9236         well.
9237         
9238         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9239         icall.c reflection.c: Pass a MonoGenericContext argument to 
9240         mono_lookup_dynamic_token ().
9241
9242         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9243         #82744.
9244         
9245 2007-09-09  Robert Jordan  <robertj@gmx.net>
9246
9247         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9248         for generic methods.
9249
9250         * object.c (mono_object_get_virtual_method): Handle generic methods.
9251         Fixes bug #78882.
9252
9253         Code is contributed under MIT/X11 license.
9254
9255 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9256
9257         * image.c: fix locking in mono_image_load_file_for_image ().
9258
9259 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9260
9261         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9262         used only as a cache: added an icall to fill it.
9263
9264 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9265
9266         * reflection.h: exposed mono_reflection_free_type_info
9267         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9268         since mono_reflection_bind_generic_parameters makes a copy of it.
9269         * reflection.c (free_type_info): subinfos should be freed.
9270         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9271         made non static.
9272         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9273         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9274         this fixes #82695 and #81726.
9275    
9276
9277 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9278
9279         * process.h, process.c:  added support for user profile/info in
9280           ProcessStartInfo. For now only Windows works.
9281
9282 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9283
9284         * metadata.c: consider the generic arguments when comparing
9285         signatures (bug #82614).
9286
9287 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9288
9289         * cil-coff.h, image.c: updated assembly loader to cope with the
9290         PE32+ 64 bit file format.
9291
9292 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9293
9294         * assembly.c, class.c, domain.c, loader.c: remove useless
9295         inclusion of cil-coff.h.
9296
9297 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9298
9299         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9300         if interface is marked with CoClassAttribute. 
9301    
9302         Code is contributed under MIT/X11 license.
9303
9304 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9305
9306         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9307         if it's seen twice in major collections.
9308
9309 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9310
9311         * sgen-gc.c: big objects are not copied to the gray area, but they
9312         need to be considered for scanning, too, if they are brought alive
9313         by an object ready for finalizations or a survived one.
9314
9315 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9316
9317         * sgen-gc.c: properly account the number of disappearing links when
9318         they are nullified.
9319
9320 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9321
9322         * sgen-gc.c: share the code to scan the registered roots between the
9323         different types of collections.
9324
9325 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9326
9327         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9328
9329 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9330
9331         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9332         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9333
9334 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9335
9336         * security-manager.c (mono_security_manager_get_methods):
9337         LinkDemandSecurityException now has 2 arguments instead of 3.
9338
9339 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9340
9341         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9342         platforms which need it.
9343
9344 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9345
9346         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9347         dtor.
9348
9349 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9350
9351         * threads.c: free the thread static data on thread exit.
9352
9353 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9354
9355         * class.c: walk the hierarchy to find the generic definition for
9356         a class (fixes runtime part of bug #82498).
9357
9358 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9359
9360         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9361         ...
9362
9363         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9364
9365 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9366
9367         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9368
9369 2007-08-24  Robert Jordan  <robertj@gmx.net>
9370
9371         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9372
9373 2007-08-24  Jb Evain  <jbevain@novell.com>
9374
9375         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9376         for byref types.
9377
9378 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9379
9380         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9381         #82286.
9382
9383 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9384
9385         * assembly.c: Fix a warning.
9386         
9387 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9388
9389         * appdomain.c: parse the <runtime> section looking for the probing
9390         element with the 'privatePath' attribute, which sets additional
9391         directories in which the runtime should look for assemblies.
9392
9393 2007-08-23  Robert Jordan  <robertj@gmx.net>
9394
9395         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9396         Fixes #82499.
9397
9398 2007-08-23  Martin Baulig  <martin@ximian.com>
9399
9400         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9401         _mono_debug_init_corlib() and remove it from the header file.
9402
9403 2007-08-23  Martin Baulig  <martin@ximian.com>
9404
9405         * mono-debug-debugger.c
9406         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9407         don't notify the debugger about it.
9408
9409         * mono-debug-debugger.h
9410         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9411
9412 2007-08-23  Robert Jordan  <robertj@gmx.net>
9413
9414         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9415         Code is contributed under MIT/X11 license.
9416
9417 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9418
9419         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9420
9421 2007-08-22  Martin Baulig  <martin@ximian.com>
9422
9423         * mono-debug.c: Store debugging info on a per-domain basis and
9424         free it on domain unload.  Add support for unloading symbol files.
9425
9426         * mono-debug.h
9427         (MonoDebugList): New typedef.
9428         (MonoSymbolTable):
9429         - add `data_tables and `type_table'.
9430         - replace 'symbol_files' and `num_symbol_files' with a
9431           `MonoDebugList *'.
9432         (mono_debug_data_table): Removed.
9433         (mono_debug_list_add): New public function.
9434         (mono_debug_list_remove): New public function.
9435         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9436         (mono_debug_init_2_memory): Renamed into
9437         mono_debug_open_image_from_memory().
9438         (mono_debug_close_image): New public function.
9439         (mono_debug_domain_create): Likewise.
9440         (mono_debug_domain_unload): Likewise.
9441         (MONO_DEBUGGER_VERSION): Bump to 60.
9442
9443         * mono-debug-debugger.h
9444         (MonoDebuggerEvent):
9445         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9446         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9447         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9448         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9449           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9450         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9451           meaning.
9452         (mono_debugger_add_symbol_file): Removed.
9453         (mono_debugger_add_type): Removed.
9454         (mono_debugger_lookup_type): Removed.
9455         (mono_debugger_lookup_assembly): Removed.
9456
9457         * domain.c
9458         (mono_domain_create): Call mono_debug_domain_create().
9459         (mono_init_internal): Call mono_debug_init_corlib().
9460
9461         * assembly.c
9462         (mono_assembly_close): Call mono_debug_close_image().
9463
9464 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9465
9466         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9467         mmap call.
9468
9469 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9470
9471         * sgen-gc.c: ensure section->pin_queue_end is initialized
9472         correctly when non pinning objects in the section have been found.
9473
9474 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9475
9476         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9477         containing a list of directories separated by ':'. MSDN docs say
9478         the directories should be separated with ';'. Part of a bugfix for
9479         bug #81446
9480
9481 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9482
9483         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9484         it should MonoType and not MonoClass.
9485
9486 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9487
9488         * culture-info-table.h : regenerated.
9489
9490 2007-08-20  William Holmes  <billholmes54@gmail.com>
9491
9492         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
9493          to call ReplaceFile Kernel32 on windows or in io-layer.
9494         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
9495         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
9496          as an internal call.
9497
9498         Code is contributed under MIT/X11 license.
9499
9500 2007-08-20  Jb Evain  <jbevain@novell.com>
9501
9502         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
9503         and MONO_EXCEPTION_FIELD_ACCESS.
9504
9505         * debug-helpers.[c|h]: new mono_field_full_name function.
9506
9507 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9508
9509         * class.c: Removed class_security_level() and moved it to
9510         security-core-clr.c.
9511
9512         * security-core-clr.c, security-core-clr.h: class_security_level()
9513         is now public and renamed to mono_security_core_clr_class_level().
9514         It also looks for security attributes in the classes a class is
9515         nested in.
9516
9517 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9518
9519         * security-core-clr.c, security-core-clr.h: CoreCLR security
9520         utility functions.
9521
9522         * Makefile.am: Added security-core-clr.[ch].
9523
9524         * security-manager.c, security-manager.h: Functions and enum for
9525         setting and getting the security mode.
9526
9527         * class.c: CoreCLR security checks.
9528
9529 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9530
9531         * icall-def.h, process.c, process.h: implemented icall to get
9532         user/system processor times.
9533
9534 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9535
9536         * domain.c, threads.c, class-internals.h, domain-internals.h: New
9537         reader-lock-free jit_info_table.
9538
9539 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
9540
9541         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
9542
9543         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
9544
9545         * object-internals.h (MonoException): Add missing _data member.
9546
9547 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9548
9549         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
9550         checking that only methods with matching qname or fqname are picked
9551         from implemented interfaces.
9552
9553 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9554
9555         * verify.c (do_newarr):added, do type verification of
9556         newarr ops, push the right value on the eval stack.
9557         * verify.c (mono_method_verify): use do_newarr
9558
9559
9560 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9561
9562         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
9563         factored the common code into get_boxable_mono_type, which
9564         is now using mono_type_get_full, this fixed byref related tests.
9565
9566 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9567
9568         * class.c: added mono_type_get_full, this function has the same
9569         behavior of mono_class_get_full but the returned MonoType has
9570         all metadata of the associated token in case of a typespec token.
9571         * class.c: added mono_type_retrieve_from_typespec, used by 
9572         mono_type_get_full to retrieve the token type.
9573         * class.c (mono_class_create_from_typespec): changed to use
9574         mono_type_retrieve_from_typespec.
9575         * class.c (mono_ldtoken): changed to use mono_type_get_full
9576         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
9577         * class-internals.h: exported mono_type_get_full for internal use.
9578
9579 2007-08-16  Jb Evain  <jbevain@novell.com>
9580
9581         * domain.c (supported_runtimes): add entry for
9582         the 'moonlight' runtime version.
9583
9584 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9585
9586         * verify.c (mono_method_verify): small typo sliped in.  
9587
9588 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9589
9590         * verify.c (do_unbox_value): added, do type verification of
9591         unboxing ops
9592         * verify.c (mono_method_verify): use do_unbox_value
9593
9594
9595 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9596
9597         * verify.c (dump_stack_value): fixed typo, was printing string
9598         instead of object on stack.
9599         * verify.c (do_box_value): moved the byref check up as it leads
9600         to invalid code and should be done earlier.
9601         * verify.c: improved error messages for and ldobj
9602
9603 2007-08-15  William Holmes  <billholmes54@gmail.com>
9604
9605         * marshal.c (emit_marshal_custom): Omit the call to 
9606           marshal_native_to_managed when calling native to managed 
9607           and the argument is specified as an out argument.
9608
9609         Code is contributed under MIT/X11 license.
9610
9611 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9612
9613         * verify.c: fixed the type checks for generics, function pointers and vectors.
9614         Added type verification for ldobj and ldtoken. The verifier
9615         would segfault if header or signature of a method contained references
9616         to non-existant types.
9617
9618 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9619
9620         * marshal.c (cominterop_get_ccw): Patch from
9621         Bill Holmes to no walk up interface hierarchy. 
9622         All parent methods should be present in the interface for COM.
9623    
9624         Code is contributed under MIT/X11 license.
9625
9626 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9627
9628         * marshal.c (emit_marshal_com_interface): Patch from
9629         Bill Holmes to handle COM Interfaces as return values
9630         for native->managed calls.
9631    
9632         Code is contributed under MIT/X11 license.
9633
9634 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
9635
9636         * marshal.c (cominterop_get_idispatch_for_object): Implement
9637         for runtime callable wrappers.
9638    
9639         Code is contributed under MIT/X11 license.
9640
9641 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
9642
9643         * pedump.c (main): changed from mono_init to mono_init_from_assembly
9644         so 2.0 types are accessible
9645
9646
9647 2007-08-13  Miguel de Icaza  <miguel@novell.com>
9648
9649         * domain.c (mono_init_internal): Call mono_assembly_load_friends
9650         once we load mscorlib.   Due to the order in which we initialize,
9651         the mono_assembly_load_full routine that loads mscorlib did not
9652         load friends.   We now load it once we load the
9653         mono_defaults.internals_visible_class class. 
9654
9655         * assembly.c: Expose the mono_load_friend_assemblies method.
9656
9657 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
9658
9659         * verify.c: improved the handling of boxing, better
9660         type checking for unary ops and conversion. Fix bug
9661         regarding managed pointer compatibility checking
9662
9663 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9664
9665         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
9666
9667         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
9668
9669 2007-08-09  Raja R Harinath  <rharinath@novell.com>
9670
9671         * reflection.c (dup_type): Remove.
9672         * class.c (dup_type): Remove.
9673         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
9674         instead of the dodgy 'dup_type'.
9675         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
9676         handle the case where 'dup_type' needed the second argument.
9677
9678 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9679
9680         * domain.c: Fix a warning.
9681
9682 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9683
9684         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
9685         checking that methods with the same fqname are not overridden
9686         with a method from an ancestor.
9687
9688 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
9689
9690         * threads.c (free_thread_static_data_helper): Avoid a crash if
9691         thread->static_data is not yet set.
9692
9693 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
9694
9695         * marshal.c: Use correct image when emitting
9696         native wrapper for COM calls.
9697    
9698         Code is contributed under MIT/X11 license.
9699
9700 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
9701
9702         * icall-def.h, security.c, security.h :
9703           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
9704
9705 2007-08-07  Martin Baulig  <martin@ximian.com>
9706
9707         * mono-debug-debugger.h
9708         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
9709
9710         * domain.c (mono_domain_free): Call
9711         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
9712
9713 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9714
9715         * verify.c (check_underflow, check_overflow): error message now returns IL offset
9716         * verify.c (in_same_block): code should test if either offset is inside the clauses
9717         * verify.c (mono_method_verify): push the exception into the eval stack of exception
9718         and filter blocks
9719
9720 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9721
9722         * image.c (mono_image_close): Fix a leak.
9723
9724         * object.c (mono_runtime_invoke_array): Avoid using alloca.
9725
9726         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
9727
9728 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9729
9730         * domain.c, threads.c, threads-types.h: fix memory retention issue
9731         with thread static variables not being cleared on domain unload.
9732         Reuse thread static slots after domain unload.
9733
9734 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
9737         nullable type.
9738
9739         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
9740         now done in mono_runtime_invoke_array.
9741
9742         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
9743         receiver is a nullable type.
9744
9745         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
9746         generic parameter.
9747
9748 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
9749
9750         * marshal.c: Implement COM Objects as return type for 
9751         managed->unmanaged calls. Added Release calls for COM Object
9752         out/return values in managed->unmanaged calls.
9753
9754         Code is contributed under MIT/X11 license.
9755
9756 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9757
9758         * threads.h, threads-type.h: move the hazard pointer declarations
9759         to the private header.
9760
9761 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9762
9763         * file-io.c, appdomain.c: memory leak fixes.
9764
9765 2007-08-02  Dick Porter  <dick@ximian.com>
9766
9767         * socket-io.c
9768         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
9769         SO_REUSEADDR setting into io-layer/sockets.c.
9770
9771 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9772
9773         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
9774         from Object when called on a generic parameter. Fixes #82211.
9775
9776 2007-08-01  Dick Porter  <dick@ximian.com>
9777
9778         * file-io.c (convert_share): Test FileShare values bit-by-bit.
9779         Fixes bug 79250 yet again.
9780
9781 2007-07-30  Martin Baulig  <martin@ximian.com>
9782
9783         Merged the `debugger-dublin' branch.
9784
9785         * mono-debug.h
9786         (MonoDebugDataTable): New typedef.
9787         (MonoDebugMethodAddressList): New typedef.
9788         (MonoDebugWrapperData): Removed.
9789         (MonoDebugSymbolTable): Removed `current_data_table',
9790         `current_data_table_size', `current_data_table_offset'.
9791         (MonoDebugDataItemType): Moved into mono-debug.c.
9792         (MonoDebugMethodJitInfo): Remove `address'.
9793         (mono_debug_data_table): New global variable.
9794         (mono_debug_lookup_method_addresses): New public function.
9795         (mono_debug_find_method): Take a `MonoMethod *', not a
9796         `MonoDebugMethodInfo *'.
9797
9798         * mono-debug.c: Drop support for the old symbol tables.
9799
9800 2007-06-28  Martin Baulig  <martin@ximian.com>
9801
9802         * mono-debug.c (mono_debug_debugger_version): New public variable.
9803
9804 2007-07-31  William Holmes  <billholmes54@gmail.com>
9805
9806         * metadata.c Changed mono_type_create_from_typespec to not insert
9807           the type into the hash map until after
9808           do_mono_metadata_parse_type has completed.
9809         Fixes Bug #82194
9810         Code is contributed under MIT/X11 license.
9811
9812 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9813
9814         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
9815         generic parameter. Fixes #82211.
9816
9817 2007-07-27  Jb Evain  <jbevain@novell.com>
9818
9819         * pedump.c (dump_metadata, dump_metadata_header): dump
9820         versions contained in the metadata header.
9821
9822 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9823
9824         * threads.c: register small_id_table with the GC.
9825
9826 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9827
9828         * threads.c, threads.h, class-internals.h, object-internals.h:
9829         Hazard pointers, to be used by lock-free parallel algorithms.
9830
9831 2007-07-26  Dick Porter  <dick@ximian.com>
9832
9833         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
9834         routine on non-windows platforms, as I've not managed to think of
9835         a non-kludgy way of doing this.  Finishes off bug 78739.
9836
9837 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9838
9839         * object.c: properly setup interface_bitmap in proxy vtables.
9840
9841 2007-07-25  Marek Habersack  <mhabersack@novell.com>
9842
9843         * appdomain.c (get_shadow_assembly_location): do not use TickCount
9844         to create unique shadow copy target directories, use the domain's
9845         serial number instead. Each domain gets a unique target directory
9846         that way.
9847
9848         * domain.c (mono_domain_create): added code to increment domain
9849         shadow copy serial number and cache the value in the current
9850         domain structure.
9851
9852         * domain-internals.h (struct _MonoDomain): added a new field -
9853         shadow_serial to hold the serial number used in generation of
9854         shadow-copy directories. This is to make sure that the directory
9855         name is unique for each and every domain created. We avoid a race
9856         condition with overriding assemblies already in use by other app
9857         domains.
9858
9859 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
9860
9861         * class.c (mono_bounded_array_class_get): fixed memory leak when 
9862         binding generic parameters.
9863
9864 2007-07-24  Raja R Harinath  <rharinath@novell.com>
9865
9866         * metadata.c (do_mono_metadata_parse_generic_class): Use
9867         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
9868         error.
9869
9870 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9871
9872         * loader.c, class-internals.h, reflection.c: removed the per-method
9873         generics hashtable: we use the global one through the call of
9874         mono_class_inflate_generic_method ().
9875
9876 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9877
9878         * class.c, metadata.c, class-internals.h: introduce yet another
9879         generics global cache for inflated methods (fixes 98% of the perf
9880         issue in bug #81806).
9881
9882 2007-07-23  Raja R Harinath  <rharinath@novell.com>
9883
9884         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
9885         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
9886         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
9887         return a MonoGenericInst containing (a copy) of those types.
9888         (mono_metadata_inflate_generic_inst): Update to changes.
9889         (mono_metadata_parse_generic_inst): Likewise.
9890         (mono_get_shared_generic_inst): Likewise.
9891         * reflection.c (mono_class_bind_generic_parameters): Likewise.
9892         (mono_reflection_bind_generic_method_parameters): Likewise.
9893         * metadata-internals.h: Likewise.
9894         * icall.c (free_generic_context): Kill.
9895         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
9896
9897         * reflection.c (reflection_methodbuilder_to_mono_method): Use
9898         mono_metadata_type_dup.
9899         * marshal.c (mono_mb_create_method): Likewise.
9900
9901         * metadata.c (mono_metadata_type_dup): Rename from
9902         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
9903         MonoImage.  Handle a few more cases, esp. when no mempool is given.
9904         * marshal.c, metadata-internals.h: Update to changes.
9905
9906 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9907
9908         * class.c: fixed a small leak for array classes and removed warning.
9909
9910 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9911
9912         * loader.c (mono_method_get_param_token): Make this work on generic methods.
9913         Return 0x8000000 for return parameters. Fixes #82161.
9914
9915 2007-07-21  Marek Habersack  <grendello@gmail.com>
9916
9917         * appdomain.c (get_shadow_assembly_location): append the current
9918         ticks value to the path. Avoids overwriting the same assemblies by
9919         several threads at the same time.
9920
9921 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9922         and Raja R Harinath  <rharinath@novell.com>
9923
9924         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
9925         Simplify slightly.
9926         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
9927         property for testing if a method is a generic method definition.
9928
9929 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9930
9931         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
9932
9933 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9934
9935         * verify.c: used function from private branch, reverted to the one in class.h 
9936
9937 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9938
9939         * verify.c: a typo slipped in and the code wont compile
9940
9941 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9942
9943         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
9944         disabled box instruction as it is doing the wrong thing
9945         improved stack dump messages, now it is easier to debug type related issues
9946
9947
9948 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
9949
9950         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
9951
9952 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9953
9954         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
9955         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
9956         grouped with class and valuetype. This change will simply 
9957         the code as it should be handled just like unmanaged pointers.
9958
9959 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9960
9961         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
9962
9963 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9964
9965         * verify.c: several stack merge issues fixed, reference comparisons now
9966         check the type size. strict type check now works correctly.
9967         added more uses of IS_MANAGED_POINTER macro.
9968         fixed issues pointed by running the test suite against .net.
9969         
9970
9971 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9972
9973         * class.c, loader.c, class-internals.h: Removed the
9974         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
9975         defines.
9976
9977         * icall.c: Better error checking in some internal reflection
9978         methods.
9979
9980 2007-07-18  William Holmes  <billholmes54@gmail.com>
9981
9982         * filewatcher.c : removed unused variable 'filename' in 
9983           ves_icall_System_IO_FSW_SupportsFSW
9984
9985 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9986
9987         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
9988         obsolete, removed.
9989
9990 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
9993         
9994         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
9995
9996 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9997
9998         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
9999         Implement generics support.
10000         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10001
10002         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
10003         type_args and method_args arguments.
10004         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
10005         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10006         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
10007
10008 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
10009
10010         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
10011           It adds a rootimage parameter to mono_reflection_get_type_internal,
10012           adds new function mono_reflection_get_type_with_rootimage and use
10013           the rootimage to resolve the types instead of the current image
10014
10015 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10016
10017         * culture-info-table.h: Forgot to update after r78304.
10018
10019 2007-07-13  Raja R Harinath  <rharinath@novell.com>
10020
10021         * class.c (mono_class_is_open_constructed_type)
10022         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
10023
10024 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
10025
10026         * class.c (mono_bounded_array_class_get):  method fails if used with
10027         an incomplete TypeBuilder enum (no basetype field), fixed it by 
10028         avoiding calculating the size for such array as it cannot be instantiated.
10029         Fix bug #82015
10030
10031 2007-07-12  Raja R Harinath  <rharinath@novell.com>
10032
10033         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
10034         field.
10035         * metadata.c, reflection.c: Update to changes.
10036
10037 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
10038
10039         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
10040         mono_class_is_valid_enum, they are used to valide a enum when loading.
10041         * reflection.c: used new functions to throw TypeLoadException when and
10042         invalid enum is build with TypeBuilder. Fixes #82018
10043   
10044 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10045
10046         * object.c: forgot commit of mono_class_setup_methods () to access
10047         iface->methods.
10048         * object-internals.h: added a few more handy fields to
10049         MonoIMTCheckItem.
10050
10051 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10052
10053         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
10054         iface->methods.
10055
10056 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10057
10058         * class-internals.h, object-internals.h, object.c: IMT-based
10059         interface invocation core from Massimiliano Mantione
10060         (massi@ximian.com) with a reworked arch-specific interface,
10061         bsearch implementation and a few bugfixes and memory savings by me.
10062
10063 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
10064
10065         * class.c (mono_class_create_from_typedef): mono would segfault if 
10066         an enum did not have a __value field. It now throws a TypeLoadException
10067         for such cases. Fix bug #82022
10068
10069 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10070
10071         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
10072
10073 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10074
10075         * class.c (mono_class_init): If a class is already inited but has
10076         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
10077
10078 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10079
10080         * class.c: Properly handle the case of an unimplemented interface
10081         method.  Fixes: 81673.
10082
10083 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10084
10085         * class-internals.h, object.c: cleanup patch from massi: use
10086         MonoVTable->interface_bitmap since the vtable interfaces offset array
10087         is going away.
10088
10089 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10090
10091         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
10092         GetMDStreamVersion icall instead.
10093
10094 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10095
10096         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
10097         not use mono_dl_build_path() with a full library name: makes
10098         fallbacks to libgaim and libfam work.
10099
10100 2007-07-06  William Holmes  <billholmes54@gmail.com>
10101
10102         * assembly.c: Added a continue statement in probe_for_partial_name when
10103          parse_assembly_directory_name fails.  Fixes : 82002
10104
10105 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
10106
10107         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
10108         and added a verification  for TYPEDBYREF.
10109         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
10110         make native int interchangeable with int32 and some small cleanup and formating.
10111         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
10112         handle byref of byref.
10113         * verify.c (push_local): handle byref of byref.
10114         * verify.c (do_binop): invalid mix of values is unverifiable
10115         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
10116         added visibility checks
10117         * verify.c (field related method): added visibility checks
10118         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
10119
10120 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
10121
10122         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
10123         string.
10124
10125 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * profiler.c (mono_profiler_load): Fix an off-by-one error.
10128
10129         * marshal.c (emit_marshal_string): When returning a string from managed code,
10130         allways make a copy even for unicode strings. Fixes #81990.
10131
10132 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
10133
10134         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
10135         of byref generic inst types (bug #81997).
10136
10137 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10138
10139         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
10140         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
10141
10142 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
10143
10144         * marshal.c (emit_marshal_string): Add support for unicode strings in
10145         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
10146
10147 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
10148
10149         * verify.c: field load/store are now verified, missing only access checks now
10150
10151 2007-06-28  Martin Baulig  <martin@ximian.com>
10152
10153         * mono-debug.c (mono_debug_debugger_version): New public variable.
10154
10155 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
10156
10157         * locales.c: When constructing DateTimeFormat or NumberFormat for
10158         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
10159         MonoCultureInfo contructed from the current locale is always
10160         read-only and has UseUserOverride set to true. All MonoCultureInfo
10161         instances returned for GetCultures have both IsReadOnly and
10162         UseUserOverride set to true. Fixes part of bug #81930.
10163
10164 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
10165
10166        * icall-def.h: Update System.__ComObject icalls
10167        * marshal.c: Avoid managed transition (and object creation)
10168        when looking up COM interface in RCW.
10169        * marshal.h: Ditto.
10170        
10171        Code is contributed under MIT/X11 license.
10172
10173 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
10174
10175         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
10176         to avoid crashes during assembly unloading.
10177
10178 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10179
10180         Fix MethodInfo.IsGenericMethodDefinition
10181         * reflection.c (mono_reflection_bind_generic_method_parameters):
10182         Rearrange code to ensure we always uses a generic method definition.
10183         * class.c (mono_class_inflate_generic_method_full): Set
10184         'generic_container' field only for generic method definitions.
10185         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10186         Use presense of 'generic_container' field as indication of being a
10187         generic method definition.
10188
10189 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10190
10191         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10192
10193         * object-internals.h: Reflect changes in the layout of the managed Delegate
10194         class.
10195         
10196         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10197         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10198         runtime memory used by the dynamic method. Fixes #77146.
10199
10200 2007-06-21  Dick Porter  <dick@ximian.com>
10201
10202         * file-io.h: 
10203         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10204         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10205         81767.
10206
10207 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10208
10209         * reflection.c (method_encode_methodspec): Add a tripwire.
10210         * class.c (inflate_generic_type): The fully open generic type is
10211         not the same as the generic type definition.
10212
10213 2007-06-21  Martin Baulig  <martin@ximian.com>
10214
10215         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10216
10217         * mono-debug-debugger.h
10218         (MonoDebuggerBreakpointInfo): Removed.
10219         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10220         (mono_debugger_remove_breakpoint): Likewise.
10221         (mono_debugger_breakpoint_callback): Likewise.
10222         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10223
10224 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10225
10226         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10227         generic type is not the same as the generic type definition.
10228         * class.c (mono_generic_class_get_class): Likewise.
10229
10230 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10231
10232         * icall.c: The second argument to 
10233         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10234         is a MonoType not a MonoClass.
10235
10236 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10237
10238         * verify.c: support for function pointers in the verifier
10239
10240 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10241
10242         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10243
10244 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10245
10246         * assembly.c: removed Mono.Data.SqliteClient from the list of
10247         forward-compatible assemblies as it breaks the ABI (bug #81899).
10248
10249 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10250
10251         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10252         lookup/update with the loader lock.
10253         * reflection.c (mono_class_bind_generic_parameters): No need to
10254         protect mono_metadata_lookup_* with the loader lock.
10255         * class.c (inflate_generic_type): Likewise.
10256         
10257         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10258         on a generic instantiated type.
10259
10260 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10261
10262         *verify.c: produce meanfull error messages on verification error
10263         *verify.c: fixed some cases of verification errors reported as validation errors
10264         *pedump.c: fixed the error name array, now it shows validation errors properly
10265         *verify.h: fixed the contant that should be used for verification errors
10266
10267 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10268
10269         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10270         for bug #77596, 81858 and 80743 (generics data structures on domain
10271         unload).
10272
10273 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10274
10275         Avoid allocating 'MonoGenericContext' on the heap.
10276         * class-internals (_MonoMethodInflated::context): Make field
10277         inline, not a pointer.
10278         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10279         stack.  Use the context embedded within the inflated method as the
10280         hash key, rather than 'new_context'.
10281         * class.c (inflate_generic_context): Simplify.  Return a struct
10282         rather than allocating on the heap.
10283         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10284         doesn't salt away a copy of the context -- simplifying the
10285         lifetime rules of a 'MonoGenericContext *'.
10286         (mono_method_get_context): Return pointer to embedded context.
10287         (setup_generic_array_ifaces): Allocate temporary context on stack.
10288         * reflection.c (inflate_mono_method): Likewise.
10289         (mono_reflection_bind_generic_method_parameters): Likewise.
10290         Use the context embedded within the inflated method as the hash key.
10291
10292         Avoid a source of allocation of 'MonoGenericContext'.
10293         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10294         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10295         * class.c: Update to changes.
10296         (mono_generic_class_get_context): Simplify drastically.  Now just
10297         returns a pointer to the field.
10298         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10299         argument as a const pointer.
10300         (mono_metadata_generic_context_equal): Likewise.
10301         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10302         Update to changes.
10303
10304 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10305
10306         * verify.c improved the handling of brtrue/brfalse, factored out common code
10307
10308 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10309
10310         Kill MonoGenericMethod.
10311         * class-internals.h (MonoGenericContext::method_inst): Rename from
10312         'gmethod' and convert to a MonoGenericInst.
10313         (MonoGenericMethod): Remove.
10314         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10315         * loader.c (method_from_methodspec): Update to changes.  Use a
10316         MonoGenericContext as the key to the hashtable.
10317         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10318         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10319         (mono_metadata_generic_context_hash): Likewise from
10320         'mono_metadata_generic_method_hash'.  Change hash function.
10321         (mono_metadata_load_generic_params): Update to changes.
10322         (mono_get_shared_generic_method): Remove.
10323         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10324         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10325         (inflate_generic_context): Likewise.
10326         (mono_class_inflate_generic_method_full): Likewise.
10327         (setup_generic_array_ifaces): Likewise.
10328         (mono_class_create_from_typespec): Likewise.
10329         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10330         (method_encode_methodspec): Update callsite.
10331         (reflection_methodbuilder_to_mono_method): Update to changes.
10332         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10333         MonoGenericContext as the key to the hashtable.
10334         (inflate_mono_method): Update to changes.
10335
10336         * class-internals.h (MonoGenericMethod::container): Remove.
10337         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10338
10339 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10340
10341         * profiler-private.h, profiler.c, profiler.h: added API to profile
10342         exception events.
10343
10344 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10345
10346         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10347
10348 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10349
10350         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10351         Fixed overflow and underflow not aborting the verification process.
10352
10353 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10354
10355         * class-internals.h (MonoStats): Added stats entries for dynamic
10356         code allocations.
10357
10358 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * loader.c (mono_free_method): Free header->locals and header->clauses.
10361
10362         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10363         dynamic case.
10364
10365         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10366
10367         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10368
10369 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10370
10371         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10372         the tables.
10373
10374 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10375
10376         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10377
10378 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10379
10380         MonoGenericMethod on a diet
10381         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10382         here ...
10383         (_MonoGenericMethod::reflection_info): ... from here.
10384         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10385         Update to changes.
10386         * reflection.c (inflate_mono_method): Likewise.
10387         (mono_reflection_bind_generic_method_parameters): Likewise.
10388
10389 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10390
10391         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10392         *verify.c: factored long ldarg forms to share code with short forms
10393
10394 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10395
10396         *verify.c: fixed code formating factored some duplicate code
10397         into a new function
10398
10399         *verify.h: fixed binary incompatibility introduced earlier
10400
10401         *pedump.c: fixed formating
10402
10403 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10404
10405         Fix assertion when disassembling Mono.C5.dll
10406         * loader.c (method_from_methodspec): Avoid inflating a method
10407         twice with the same context.  If the methodref is inflated, use
10408         the declaring method instead.
10409
10410         * class.c (mono_class_from_generic_parameter): Fix case similar to
10411         bug #81830 handled below, but for method containers.
10412
10413 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10414
10415         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10416         get_shared_generic_class.  Directly inflate the instance.
10417         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10418         (inflate_generic_class): Delete.
10419         (get_shared_generic_class): Delete.  Move setting of
10420         'cached_class' and 'cached_context' ...
10421         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10422
10423         * metadata.c (mono_metadata_lookup_generic_class): Change
10424         signature to take the components of a MonoGenericClass rather than
10425         an allocated MonoGenericClass.  Change semantics to be intern-like.
10426         * reflection.c (mono_class_bind_generic_parameters): Update to
10427         changes.  Make locking region tighter.
10428         * class.c (inflate_generic_class): Update to changes.
10429         (get_shared_generic_class): Likewise.
10430         * metadata-internals.h: Likewise.
10431
10432         * reflection.c (mono_class_bind_generic_parameters): Take and
10433         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10434         (mono_reflection_bind_generic_parameters): Use
10435         'mono_class_bind_generic_parameters' rather than duplicate the code.
10436         * class.c (mono_bounded_array_class_get): Update to changes.
10437         * object-internals.h: Likewise.
10438
10439         * reflection.c (mono_class_bind_generic_parameters): Only support
10440         parameterizing generic type definitions.  Remove support for other
10441         open types.
10442
10443 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10444
10445         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10446
10447         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10448         in the dynamic case.
10449
10450 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10451
10452         * threads.c: When cleaning up thread, reset the Background bit.
10453         Fixes bug #81720.
10454
10455 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10456
10457        * metadata.c: Move variable declarations to top of scope.
10458        * verify.c: Move variable declarations to top of scope.
10459
10460        Code is contributed under MIT/X11 license.
10461
10462 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10463
10464         * reflection.c (mono_class_bind_generic_parameters): Replace
10465         open-coded loop with mono_metadata_inflate_generic_inst.
10466
10467         * class.c (get_shared_generic_class): Don't call
10468         mono_get_shared_generic_inst.  Use the container's own
10469         'class_inst'.
10470
10471         * metadata.c (mono_metadata_load_generic_params): Move
10472         initialization of 'context' field here from ...
10473         * class.c (mono_class_create_from_typedef): ... here, and ...
10474         * loader.c (mono_get_method_from_token): ... here.
10475
10476         * class.c (get_shared_generic_class): Rename from
10477         mono_get_shared_generic_class and make static.
10478         (mono_get_shared_generic_inst): Move to metadata.c.
10479         * loader.c (mono_get_shared_generic_method): Likewise.
10480         * class-internals.h, metadata-internals.h: Update to changes.
10481
10482         Fix #81830
10483         * class.c (mono_class_from_generic_parameter): Don't assume a
10484         generic container owner exists.  Generic containers from monodis
10485         don't have any.
10486
10487 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10488
10489         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10490         * verify.h: new typedefs to returns the non-verifiable status
10491         * verify.c: initial implementation of generics, stack merging and object compatibility check
10492
10493 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10494
10495         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10496         a MonoInternalHashTable again (fixed bug in internal hash table
10497         code).
10498
10499 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10500
10501         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10502         MonoInternalHashTable again (fixed bug in internal hash table
10503         code).
10504
10505 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10506
10507         * class.c, image.c, class-internals.h, domain.c,
10508         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
10509         changes.  Have to figure out what makes them break the SWF
10510         regression.
10511
10512 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10513
10514         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10515         a MonoInternalHashTable now.
10516
10517 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10518
10519         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10520         MonoInternalHashTable now.
10521
10522 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10523
10524         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
10525         invoke_impl code.
10526
10527         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
10528
10529         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
10530         dependent trampoline.
10531
10532         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10533
10534         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
10535
10536 2007-05-29  Robert Jordan  <robertj@gmx.net>
10537
10538         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
10539
10540 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
10543
10544 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
10545
10546        * marshal.c: Fix interface lookup loops for
10547        cominterop_get_com_slot_for_method and 
10548        cominterop_get_method_interface. Only need to lookup
10549        if type is a class, else use interface type method is on.
10550
10551        Code is contributed under MIT/X11 license.
10552
10553 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
10554
10555         * reflection.c: HasSecurity can be present even if no specially 
10556         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
10557         SecurityAttribute). Fix CAS regression tests on buildbot.
10558
10559 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10560
10561        * appdomain.c: Add configure checks for header files.
10562        * image.c: Add configure checks for header files.
10563        * file-io.c: Add configure checks for header files.
10564        * debug-mono-symfile.c: Add configure checks for header files.
10565        * threadpool.c: Add configure checks for header files.
10566        * console-io.c: Add configure checks for header files.
10567        * profiler.c: Add configure checks for header files.
10568        * rawbuffer.c: Add configure checks for header files.
10569        * icall.c: Add configure checks for header files.
10570        * rand.c: Add configure checks for header files.
10571        * socket-io.c: Add configure checks for header files.
10572
10573        Code is contributed under MIT/X11 license.
10574
10575 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
10576
10577         * reflection.c (mono_custom_attrs_from_builders): Remove the 
10578         assertion as it breaks the build.
10579         
10580         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
10581
10582         * reflection.c (lookup_custom_attr): Make a copy here too.
10583
10584         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
10585         dynamic images.
10586
10587         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
10588         images.
10589
10590         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
10591         info.
10592
10593 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10594
10595         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
10596         (load_cattr_value): Ditto.
10597
10598 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
10599
10600         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
10601
10602 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
10603
10604         * threads.c: In "start_wrapper", set apartment_state to MTA if
10605         apartment_state is Unknown and we're running on 2.0 profile or
10606         higher.
10607         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
10608         to main method, then set apartment_state to Unknown on 1.0 profile,
10609         and MTA on 2.0 profile.
10610
10611 2007-05-16  Jb Evain  <jb@nurv.fr>
10612
10613         * class-internals.h (MonoDefaults): Add an attribute_class and
10614           customattribute_data_class.
10615         * domain.c (mono_init_internal): Populate them.
10616         * reflection.c: Use them to remove duplicates. Make a vew
10617         MonoClass variables `static'.
10618
10619 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10620
10621         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
10622         step in implementing IMT, so that all isinst checks now can go
10623         through the bitmap.
10624         This was needed because vtables for TransparentProxy need to look
10625         like the vtable of the "target" class, so they need to point to
10626         its interface bitmap directly.
10627
10628         * object.c: inside "mono_class_create_runtime_vtable" and
10629         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
10630
10631 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
10632
10633         * object-internals.h
10634           culture-info.h : added territory field in MonoCulture and
10635           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
10636         * locales.c : fill territory field above too.
10637         * culture-info-table.h : regenerated.
10638
10639 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10640
10641         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
10642         Fixes #81599.
10643
10644 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
10645
10646         * object.c: Always initialize apartment, even if 
10647         there is no custom attributes on entry point.
10648         
10649         Code is contributed under MIT/X11 license.
10650
10651 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
10652
10653         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
10654         * metadata.c: If no encoding is set, check for unicode
10655         on class.
10656         
10657         Code is contributed under MIT/X11 license.
10658
10659 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10660
10661         * threads.c: Handle if mono_thread_current returns NULL 
10662         
10663         Code is contributed under MIT/X11 license.
10664
10665 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10666
10667         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
10668         in start_wrapper. Added mono_thread_init_apartment_state and
10669         mono_thread_cleanup_apartment_state.
10670         * object.c: Initialize thread apartment state on main thread
10671         by checking for STAThreadAttribute on entry point.
10672         * object-internals.h: Add apartment_state field to MonoThread.
10673         * threads-types.h: Add unmanaged definition of 
10674         System.Threading.ApartmentState, MonoThreadApartmentState.
10675         
10676         Code is contributed under MIT/X11 license.
10677         
10678 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
10679
10680         * class.c: Fix windows build.
10681         * class-internals.h: Fix windows build.
10682         
10683         Code is contributed under MIT/X11 license.
10684
10685 2007-05-08  Robert Jordan  <robertj@gmx.net>
10686
10687         * process.c (CreateProcess_internal):
10688         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
10689         .CreateNoWindow was specified. Fixes #81496.
10690
10691 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10692
10693         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
10694         step in implementing IMT, replaced it with two compact arrays
10695         (interfaces_packed and interface_offsets_packed) and a bitmap that
10696         is used for isinst checks (interface_bitmap).
10697
10698         * class.c: (compare_interface_ids): compare function to pass to
10699         bsearch when looking for an interface with a given id.
10700         (mono_class_interface_offset): reimplemented using bsearch on
10701         interfaces_packed, getting the offset from interface_offsets_packed.
10702         (print_implemented_interfaces): utility debugging function.
10703         (setup_interface_offsets): reworked to initialize interfaces_packed,
10704         interface_offsets_packed and interface_bitmap.
10705
10706         * object.c: replaced all accesses to "MonoClass.interface_offsets"
10707         with uses of interfaces_packed and interface_offsets_packed.
10708
10709 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10710
10711         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
10712         mono_class_interface_offset prototype to wrap all accesses to
10713         "MonoClass.interface_offsets".
10714
10715         * class.c: Implemented mono_class_interface_offset, and wrapped all
10716         accesses to "MonoClass.interface_offsets".
10717
10718         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
10719         "MonoClass.interface_offsets".
10720
10721 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
10722
10723         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
10724         GetMethodFromHandle overloads (bug #78637).
10725
10726 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10727
10728         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
10729         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
10730
10731 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
10732
10733         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
10734         #81498.
10735
10736         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
10737         gracefully.
10738         (mono_custom_attrs_from_index): Ditto.
10739
10740         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
10741         Fixes #81501.
10742
10743 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10744
10745         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
10746         is now allocated from a mempool.
10747
10748 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
10749
10750         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
10751         caller holds threads_lock, leading to deadlocks. Fixes #81476.
10752
10753 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10754
10755         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
10756         mono_loader_clear_error () too late. Fixes #81463.
10757
10758 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
10759
10760         * culture-info-table.h : regenerated.
10761
10762 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10763
10764         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
10765         is missing.
10766
10767 2007-04-25  Dick Porter  <dick@ximian.com>
10768
10769         * Makefile.am: Put the mingw enforced-optimisation back into the
10770         PLATFORM_WIN32 section.
10771
10772 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10773
10774         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
10775         patch.
10776
10777         * image.c (mono_image_load_module): New API function to load a module reference.
10778
10779         * image.c (load_modules): Load modules lazily. Fixes #80812.
10780
10781         * class.c (mono_class_from_typeref): Use mono_image_load_module.
10782         
10783         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
10784
10785         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
10786         to mono_image_load_module_dynamic.
10787
10788 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
10789
10790         * marshal.c: Fix calling convention for CCW on non-windows
10791         platforms. STDCALL on windows, CDECL everywhere else to work 
10792         with XPCOM and MainWin COM.
10793         
10794         Code is contributed under MIT/X11 license.
10795
10796 2007-04-23  Martin Baulig  <martin@ximian.com>
10797
10798         Fix #80969.
10799
10800         * loader.c
10801         (method_from_memberref): Added `gboolean *used_context' argument.
10802         (mono_get_method_from_token): Likewise.
10803         (mono_get_method_full): Don't insert the method in the cache when
10804         `used_context' is true.
10805
10806 2007-04-23  Raja R Harinath  <rharinath@novell.com>
10807
10808         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
10809
10810         * reflection.c (mono_reflection_bind_generic_parameters): Don't
10811         create new MonoTypes for returned types.
10812         * class.c (mono_generic_class_get_class): Export mono-internal.
10813         * class-internals.h: Update to changes.
10814
10815 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
10816
10817         * threadpool.c, threadpool.h, icall-def.h: patch from
10818         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
10819
10820 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
10821
10822         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
10823         
10824         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
10825
10826         * threads.c (mono_thread_get_stack_bounds): New helper function.
10827
10828         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
10829         Correctly compute stack bounds when attaching. Fixes #81394.
10830
10831 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
10832
10833         * reflection.c: fix handling of doubles in custom attributes
10834         for the arm-fpa format (bug #81368).
10835
10836 2007-04-18  Raja R Harinath  <rharinath@novell.com>
10837
10838         * reflection.c (assembly_add_win32_resources): Mildly relax an
10839         bounds check to let the end pointer point just past the end of the
10840         allocated buffer.  (may fix #81384)
10841
10842 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
10843
10844         * culture-info-table.h : regenerated.
10845
10846 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
10847
10848         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
10849         the thread is aborted early.
10850
10851 2007-04-05  Dick Porter  <dick@ximian.com>
10852
10853         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
10854         FindFirstFile()/FindNextFile() to find entries.  This lets the
10855         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
10856         81038.
10857
10858         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
10859         the parameters of
10860         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
10861
10862 2007-04-04  Martin Baulig  <martin@ximian.com>
10863
10864         * debug-helpers.c
10865         (mono_method_desc_full_match): Add support for nested classes.
10866
10867 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
10868
10869         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
10870
10871 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
10872
10873         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
10874         waiting for too many threads.
10875
10876 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
10877
10878         * environment.c: Fix return value check on uname so we can get the 
10879         executing version on Solaris operating systems.
10880
10881 2007-03-28  Jb Evain  <jbevain@gmail.com>
10882
10883         * class.c (mono_type_get_name_recurse): Complete the
10884         fix for the creation of assembly qualified names for
10885         pointer types. Fixes #81208.
10886
10887 2007-03-27  Dick Porter  <dick@ximian.com>
10888
10889         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
10890         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
10891         changed.
10892
10893         * threads.c
10894         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
10895         the value of ReleaseMutex().
10896
10897 2007-03-27  Dick Porter  <dick@ximian.com>
10898
10899         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
10900         in little-endian order, not network endian, so must be converted
10901         to host endian here.  Fixes bug 80593.
10902
10903 2007-03-22  Jb Evain  <jbevain@gmail.com>
10904
10905         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
10906         qualified names for pointer types. Fixes #81208.
10907
10908 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
10909
10910         * marshal.c: Add support for PreserveSigAttribute. 
10911         
10912         Code is contributed under MIT/X11 license.
10913
10914 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
10915
10916         * process.c: Fix endianness issues. Fixes #81126.
10917
10918         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
10919         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
10920
10921         * image.c (mono_image_lookup_resource): Make this work on big-endian
10922         machines.Change API contract so the caller needs to free the return value.
10923         
10924         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
10925         API change.
10926         
10927 2007-03-14  Martin Baulig  <martin@ximian.com>
10928
10929         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
10930         mono_type_get_desc() as well.
10931
10932 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10933
10934         * icall.c:  Fix environ access in VS.  
10935         
10936 2007-03-13  Alp Toker  <alp@atoker.com>
10937
10938         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
10939         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
10940         #63841.
10941
10942 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
10943
10944         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
10945         circular references among dynamic methods. Fixes #81091.
10946
10947         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
10948
10949 2007-03-09  Martin Baulig  <martin@ximian.com>
10950
10951         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
10952
10953 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
10954
10955         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
10956         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
10957         
10958         Code is contributed under MIT/X11 license.
10959         
10960 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
10961
10962         * loader.c: Reapply patch for bug #79424.
10963
10964 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * metadata.c (mono_type_to_unmanaged): Only convert object to
10967         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
10968
10969 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
10970
10971         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
10972         (and incorrectly set) is_reference field from MonoGenericInst.
10973
10974 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10975
10976         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
10977         a little earlier.
10978
10979         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
10980
10981         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
10982
10983 2007-03-05  Miguel de Icaza  <miguel@novell.com>
10984
10985         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
10986         FileOptions.1 value to mean "temporary", map that to
10987         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
10988
10989         Fixes 80688
10990
10991 2007-03-03  Marek Habersack  <mhabersack@novell.com>
10992
10993         * appdomain.c: implement MS .Net style shadow copying. Copies of
10994         the assemblies are made in a subdirectory of the dynamic base
10995         directory, the assembly names are preserved.
10996         Copy .mdb and .config files along with the assemblies being shadowed.
10997
10998 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
11001         (emit_marshal_handleref): Ditto.
11002
11003         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
11004         on Visual C++. Fixes #80671.
11005
11006 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11007
11008         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
11009         for clone operations.
11010
11011 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11012
11013         * marshal.c: Fix warnings.
11014
11015 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
11016
11017         * loader.c: allow case-insensitive matching of the dll name
11018         in dllmap handling when prefixed with "i:".
11019
11020 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
11021
11022         * threads.c: Fix #ifdef for dummy_apc function for VS.
11023
11024 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11025
11026         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
11027
11028 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
11029         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
11030         giving precedence to the methods with a fully qualified name
11031         (InterfaceName.MethodName) when building the interface sections
11032         of the vtable.
11033
11034 2007-02-16  Dick Porter  <dick@ximian.com>
11035
11036         * threadpool.c (append_job): Fix fast-path array handling, so it's
11037         less likely the array will grow exponentially when the load is
11038         heavy.
11039
11040 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11041
11042         * metadata-internals.h, loader.c: fix dllmap lookup order
11043         for non-function maps, too, and prepare for fallback code.
11044
11045 2007-02-12  Robert Jordan  <robertj@gmx.net>
11046
11047         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
11048         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
11049         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
11050         GlobalFree. Fixes a part of bug #77075.
11051
11052 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
11053
11054         * loader.c: implemented typedef parent in field memberref.
11055
11056 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
11057
11058         * marshal.c: Fix warnings and remember to call Release on
11059         IUnknown of RCW.
11060         
11061         Code is contributed under MIT/X11 license.
11062
11063 2007-02-10  Miguel de Icaza  <miguel@novell.com>
11064
11065         * class-internals.h: Add MonoHandleRef definition, and
11066         handleref_class to mono_defaults. 
11067
11068         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
11069         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
11070
11071         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
11072         (do nothing on this stage)
11073         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
11074         (emit_marshal_handleref): New method, used for argument handling
11075         of HandleRefs. 
11076
11077 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
11078
11079         * class.c (mono_class_setup_parent): Lazily init com types.
11080         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
11081         init com types.
11082         * object.c (mono_remote_class_vtable): Lazily init com types.
11083         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
11084         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
11085         * domain-internals.h: Expose mono_init_com_types.
11086         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
11087         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
11088         Add support for COM Callable Wrapper marshalling.
11089         * marshal.h: Add icall definitions.
11090         * gc.c: Handle freeing of CCWs in finalizer code.
11091         
11092         Code is contributed under MIT/X11 license.
11093
11094 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
11095
11096         * reflection.c: changed all the signature encoding code to use
11097         a variable-sized buffer.
11098
11099 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11100
11101         * marshal.c: locking fixes: never take the loader lock
11102         or other runtime locks when holding the marshal lock
11103         (fixes bug#80664).
11104
11105 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
11106
11107         * marshal.c: make the delegate function pointer mapping
11108         work for the moving GC.
11109
11110 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
11111
11112         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
11113         for bug #80618.
11114
11115 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11116
11117         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
11118         gmodule.
11119
11120 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11121
11122         * threadpool.c: made the code moving-GC safe.
11123
11124 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
11125
11126         * assembly.c, boehm-gc.c, class-internals.h, class.c,
11127         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
11128         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
11129         warning cleanup.
11130         * reflection.c: warning cleanup, some threading and moving GC fixes.
11131
11132 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
11133
11134         * class.c, loader.c: create the needed Set/Get/Address array methods
11135         as well as the .ctors in mono_class_init (), fixes bug #80567.
11136
11137 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11138
11139         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
11140         we doesn't decrease its alignment. Should fix the sparc build.
11141
11142 2007-01-24  Dick Porter  <dick@ximian.com>
11143
11144         * socket-io.c
11145         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
11146         Create the returned object if we need to ignore an unsupported
11147         socket option.  Fixes a segfault reported by Atsushi.
11148
11149 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11150
11151         * class.c, object.c: restrict GC-tracked fields to
11152         UIntPtr fields used inside corlib, so we provide better
11153         type info to the GC and also allow broken packing as in
11154         bug #80580.
11155
11156 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
11157
11158         * sgen-gc.c: removed duplicated function.
11159
11160 2007-01-19  Miguel de Icaza  <miguel@novell.com>
11161
11162         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
11163         value that means that the value is not supported, but that we
11164         should not return a failure, but instead report this as a
11165         successful operation.
11166
11167 2007-01-19  Raja R Harinath  <rharinath@novell.com>
11168
11169         Fix tests/bug79956.2.il
11170         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
11171         (mono_generic_class_get_class): If the generic definition in an
11172         enum, copy over other fields related to it.
11173
11174 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11175
11176         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11177         genericinst enums (bug #79215).
11178
11179 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11180         * class.c: Fix bug 80307.
11181
11182 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11183
11184         * image.c: if the file table is not present, try to load
11185         all the modules, since we don't have info about them
11186         having or not metadata (bug #80517).
11187         * assembly.c: allow mono_assembly_load_references () to
11188         work for netmodules.
11189
11190 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11191
11192         * image.c, metadata-internals.h, object.c: execute module
11193         cctors when running on the 2 runtime if present (bug #80487).
11194
11195 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11196
11197         * icall.c: optimized InitializeArray() on bigendian.
11198
11199 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11200
11201         * icall.c: fix for the broken ARM FPA double format.
11202
11203 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11204
11205         * icall.c: handle endian issues for r4 and r8 types, too, in
11206         the InitializeArray() icall.
11207
11208 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11209
11210         * loader.c (mono_loader_error_prepare_exception): Clear the error
11211         once we have extracted the information from it, do this before we
11212         call into the JIT's class loading mechanisms.
11213
11214         * object.c (mono_class_create_runtime_vtable): Do not clear the
11215         loader error before calling mono_class_get_exception_for_failure
11216         as the loader error is needed inside
11217         mono_class_get_exception_for_failure to throw the error (thinko).
11218
11219         Fixes #80521
11220         
11221 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11222
11223         * reflection.c: align fields rva data so it's faster to load at
11224         runtime.
11225
11226 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11227
11228         Prepare to simplify GenericMethod handling.
11229         * class-internals.h (mono_method_get_context): New accessor function.
11230         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11231         rather than directly accessing '->context' field.
11232
11233         * class-internals.h (_MonoGenericParam.method): Move ...
11234         (_MonoGenericContainer): ... here.  Add into union with klass field.
11235         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11236         Update to changes.
11237
11238 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11239
11240         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11241         the wrapper type enum and reduce relocations.
11242
11243 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11244
11245         * reflection.c (inflate_mono_method): Reuse method instantiation
11246         from the generic method, if available.
11247
11248 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11249
11250         * marshal.c (emit_marshal_variant): Fix conv_arg
11251         type in last commit, based on whether parameter is byref.
11252         
11253 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11254
11255         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11256         marshalling.
11257         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11258         MONO_TYPE_OBJECT back for VARIANT support.
11259
11260 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11261
11262         * marshal.c, marshal.h, icall-def.h: Implement 
11263         Marshal.ReAllocCoTaskMem.
11264
11265 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11266
11267         * marshal.c: memory retention fixes: use the proper
11268         image cache for runtime_invoke method lookups.
11269
11270 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11271
11272         * mempool.c: added code to help debug mempool allocations.
11273
11274 2007-01-11  Dick Porter  <dick@ximian.com>
11275
11276         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11277         support (experimenting with faking it with IP_MTU_DISCOVER for
11278         systems that don't have IP_DONTFRAGMENT.)
11279         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11280         icall.
11281
11282         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11283
11284         * socket-io.h: Add new fields to MonoSocketAsyncResult
11285         corresponding to the new ones in Socket.cs.
11286
11287 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11288
11289         Fix IronPython regression mentioned in #80249
11290         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11291         'cached_context' field, since it may have been initialized as a
11292         side-effect of metadata parsing.
11293
11294         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11295         (_MonoGenericClass.cached_class): Move here and rename from lone
11296         remaining field of ...
11297         (_MonoInflatedGenericClass): ... this.  Remove.
11298         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11299         to changes.
11300
11301         Fix mcs/tests/test-128.cs regression.
11302         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11303         2007-01-10 change below.
11304         [MONO_TYPE_OBJECT]: Recurse into array case.
11305
11306 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11307
11308         * class-internals.h (mono_get_inflated_generic_class): Remove.
11309         * class.c (mono_get_inflated_generic_class): Remove.
11310         (mono_generic_class_get_class): Rename from
11311         mono_class_create_generic.
11312         (mono_class_from_mono_type) [GENERICINST]: Use it.
11313         * reflection.c, metadata.c: Update to changes.  Use
11314         'mono_class_from_mono_type'.
11315
11316 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11317
11318         * reflection.c: use passed type when encoding an array element
11319         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11320
11321 2007-01-09  Robert Jordan  <robertj@gmx.net>
11322
11323         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11324         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11325         Fixes bug #80392.
11326
11327 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11328
11329         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11330
11331         * object.c (set_value): Avoid aliasing between type->data.klass
11332         and type->data.generic_class.
11333
11334         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11335
11336 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11337
11338         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11339         between type->data.klass and type->data.generic_class.
11340
11341 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11342
11343         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11344         value in out parameters.
11345
11346 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11347
11348         Simplify invariant for MonoGenericClass::klass field.
11349         * class.c (mono_class_create_generic): Verify 'klass' is null.
11350         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11351         initialize 'klass' field.
11352
11353 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11354
11355         Ongoing work to avoid redundant data and simplify invariants.
11356         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11357         'generic_class', and change type to a GenericInst.
11358         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11359         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11360
11361 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11362
11363         * class.c : skip io-layer under PLATFORM_WIN32.
11364
11365 2007-01-03  Tor Lillqvist  <tml@novell.com>
11366
11367         Fix #80305: In a bundled executable, look in the bundled exe
11368         assembly to determine the runtime version. Add the possibility to
11369         bundle also the machine.config file.
11370         
11371         * assembly.c (mono_assembly_open_from_bundle): Make
11372         non-static. Allow being called even if we have no bundled
11373         assemblies, and return NULL right away in that case.
11374
11375         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11376         here.
11377
11378         * domain.c (app_config_parse): Take an assembly exe file name as
11379         parameter instead of a config file name. Check for a bundled
11380         config file for that assembly by calling
11381         mono_config_string_for_assembly_file() (see below) before looking
11382         for one in the file system.
11383         (get_runtimes_from_exe): Corrsponding change to call of
11384         app_config_parse().
11385         (get_runtimes_from_exe): Check for bundled assembly exe file first
11386         by calling mono_assembly_open_from_bundle(). If no bundled
11387         assembly exe file is found, call mono_image_open() as before to
11388         look it up in the file system.
11389
11390         * mono-config.c: Add variable bundled_machinec_onfig.
11391         (mono_config_string_for_assembly_file): New function.
11392         (mono_config_for_assembly): Move code snippet that looks for a
11393         bundled assembly .config file into the above new function. Call
11394         it.
11395         (mono_register_machine_config, mono_get_machine_config): New
11396         functions to set and retrieve
11397
11398         * assembly.h: Declare mono_register_machine_config().
11399
11400         * mono-config.h: Declare mono_get_machine_config() and
11401         mono_config_string_for_assembly_file().
11402
11403         * icall.c: No declaration of environ necessary on Win32. It is
11404         declared (as a macro expanding to a function call) in stdlib.h.
11405         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11406         New internal mono function. Returns the value of
11407         mono_get_machine_config() as a Mono string.
11408
11409         * icall-def.h: Add get_bundled_machine_config().
11410
11411 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11412
11413         Remove redundant field
11414         * class-internals.h (_MonoGenericContext.container): Remove field.
11415         * loader.c (mono_method_get_signature_full): Don't parse a
11416         "container" for a signature parse when the signature is inflated
11417         immediately.
11418         (method_from_methodspec): Likewise, for a generic_inst.
11419         * class.c, metadata.c, reflection.c: Update to changes.
11420
11421 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11422
11423         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11424         'cached_context', and change semantics -- it starts off NULL, and
11425         is initialized on demand.
11426         * class.c (mono_generic_class_get_context): New accessor to
11427         replace 'context' field accesses.
11428         (mono_class_get_context): New helper.
11429         (*): Update to changes.
11430         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11431
11432 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11433
11434         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11435         before the memcpy.   Fixes Marshal2 regression.
11436
11437 2007-01-02  Jb Evain  <jbevain@gmail.com>
11438
11439         * blob.h: add a MONO_TYPE_ENUM definition
11440         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11441         fix the encoding of arrays of enums in custom attributes.
11442
11443         Fixes #79666.
11444
11445 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11446
11447         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11448         string is null terminated, but only cut the string short if it
11449         overflows the buffer.   
11450         
11451         (mono_string_to_byvalstr): Also fix this routine.   The code here
11452         was not properly terminating a string (it was only terminated
11453         because of the previous catch-all memset). 
11454
11455         I left the memset, because I do not know if applications expect
11456         the runtime to clear this region. 
11457
11458         Fixes #79944.
11459
11460         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11461         Clear the error before returning to unmanaged code to prevent the
11462         runtime from being confused later on (fixes  80420).
11463         (ves_icall_type_from_name): Always call mono_loader_clear_error
11464         after parsing a type that could have failed.
11465         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11466
11467         * loader.c (mono_loader_clear_error): Fix indentation.
11468
11469 2006-12-28  Martin Baulig  <martin@ximian.com>
11470
11471         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11472
11473 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11474
11475         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11476         getting a token for an EnumBuilder.
11477
11478 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11479
11480         * reflection.c: be more careful in case resource generation
11481         fails to create the data array.
11482
11483 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11484
11485         * sgen-gc.c: write barrier for clone and fix unregister handles.
11486
11487 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11488
11489         * reflection.c: some fixes needed in the generics code for the moving GC.
11490
11491 2006-12-22  Robert Jordan  <robertj@gmx.net>
11492
11493         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
11494         account. Fixes bug #80299.
11495
11496 2006-12-21  Raja R Harinath  <rharinath@novell.com>
11497
11498         Fix WaitHandle usage in delegates.
11499         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
11500         * object.c (mono_wait_handle_new): Use the property set method to
11501         initialize the handle.
11502         (mono_wait_handle_get_handle): New.
11503         * threadpool.c (mono_async_invoke): Use it.
11504         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
11505         Likewise.
11506         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
11507
11508 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
11509
11510         * marshal.c (emit_marshal): Call emit_marshal_variant and
11511         emit_marshal_com_interface when applicable.
11512         (emit_marshal_variant, emit_marshal_com_interface): Add
11513         methods for this case and remove if's from emit_marshal_object.
11514         
11515 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
11516
11517         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
11518
11519 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
11520
11521         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
11522         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
11523         and GlobalFree on Windows. Remove FIXME.
11524
11525 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11526
11527         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
11528         implementation for managed objects.
11529
11530 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11531
11532         * object.c: implemented code to be used for checking
11533         that no reference field overlaps with non-references.
11534
11535 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11536
11537         * threadpool.c: fix queue code to be compatible with the
11538         moving GC.
11539
11540 2006-12-18  Miguel de Icaza  <miguel@novell.com>
11541
11542         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
11543         in structures by throwing ArgumentNullException.
11544
11545         (emit_marshal_safehandle): Also when they are null parameters.
11546
11547         (emit_marshal_safehandle): Add support for ref
11548         SafeHandles parameters
11549
11550 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11551
11552         * profiler.c: updated to use the mono-dl API instead of
11553         gmodule.
11554
11555 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11556
11557         * profiler.c: updated to use the mono-dl dynamic loading
11558         API instead of gmodule.
11559
11560 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11561
11562         * profiler.c: use readlink, older versions of glib don't have
11563         g_file_read_link ().
11564
11565 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11566
11567         * profiler.c: try to detect the path to mono if libc fails to provide
11568         a useful name (bug #80286).
11569
11570 2006-12-16  Raja R Harinath  <rharinath@novell.com>
11571
11572         Fix #80242
11573         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
11574         instance, use the generic type definition instead.
11575         (ves_icall_Type_GetNestedTypes): Likewise.
11576         * class.c (mono_class_create_generic): Always set the
11577         nested_classes of a generic instance to NULL, even if the generic
11578         type definition has nested types.
11579
11580 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
11581
11582         * marshal.c (mono_string_from_bstr): Revert previous Windows change
11583         and fix on Linux.
11584         
11585 2006-12-15  Miguel de Icaza  <miguel@novell.com>
11586
11587         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
11588         my arguments were in the wrong order.   I also fixed the Windows
11589         version which seems to have had the same issue.
11590
11591         (mono_free_bstr): On Unix, this is g_free.
11592         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
11593         conversions (for the tests in corlib to pass).
11594
11595 2006-12-14  Miguel de Icaza  <miguel@novell.com>
11596
11597         * marshal.c (emit_ptr_to_object_conv): For now, ignore
11598         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
11599         exception if a ref SafeHandle in a struct has changed).
11600         
11601         (emit_struct_conv): Do not perform layout checks for classes
11602         derived from SafeHandle, as those are specially handled. 
11603
11604         (emit_object_to_ptr_conv): Add support for
11605         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
11606
11607         (emit_marshal_safehandle): Implement conversion of return values
11608         of safehandles (MARSHAL_ACTION_CONV_RESULT).
11609         
11610         * threads.c: WaitHandle now is compiled with two different handles
11611         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
11612         for 2.0.
11613         
11614         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
11615         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
11616         these routines to cope with both kinds of fields.
11617
11618 2006-12-12  Miguel de Icaza  <miguel@novell.com>
11619
11620         * metadata.c (mono_type_to_unmanaged): Handle the case where
11621         type->data.klass is a SafeHandle, and in that case, return the
11622         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
11623         MONO_MARSHAL_CONV_SAFEHANDLE. 
11624
11625 2006-12-11  Miguel de Icaza  <miguel@novell.com>
11626
11627         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
11628         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
11629         calling emit_marshal_object.
11630
11631         (emit_marshal_safehandle): Implement marshalling of
11632         SafeHandle parameters (no ref support yet).
11633
11634         (MarshalAction): Document the defines as I implement
11635         them for SafeHandle.
11636
11637         (emit_marshal_object): indentation police.
11638
11639         * class-internals.h: Define MonoSafeHandle.
11640         Add safehandle_class to MonoDefaults type.
11641
11642         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
11643         list of classes to check for fields. 
11644
11645         * domain.c (mono_init_internal): Add SafeHandle to the list of
11646         mono_defaults loaded.
11647
11648 2006-12-15  Raja R Harinath  <rharinath@novell.com>
11649
11650         Fix #80253
11651         * reflection.c (mono_reflection_bind_generic_parameters): If the
11652         generic type definition is a type builder, ensure that it is fully
11653         initialized before instantiating it.  Kill some dead code.
11654
11655 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11656
11657         * object.c: clear the loader_error () before loading
11658         more metadata stuff (bug #80258).
11659
11660 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
11661
11662         * icall.c, icall-defs.h: type modifiers icalls for
11663         parameters and properties.
11664
11665 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11666
11667         * object.c, icall.c: fixed warnings.
11668
11669 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11670
11671         * marshal.c: fixed a couple of leaks and coding style in a few places.
11672
11673 2006-12-08  Dick Porter  <dick@ximian.com>
11674
11675         * process.c: Cope with NULL ProcessStartInfo arguments on windows
11676         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
11677         80173.
11678
11679 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11680
11681         * process.c: ProcessStartInfo may have only filename set and
11682         arguments can be NULL.
11683
11684 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11685
11686         * icall.c: fix leak found by Robert Jordan.
11687
11688 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11689
11690         * marshal.c, marshal.h: generate managed method to access an element
11691         of a multi-dimensional array.
11692
11693 2006-11-30  Paolo Molaro (lupus@ximian.com)
11694
11695         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
11696
11697 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11698
11699         * icall.c: back out GetFields () fix until the serialization code is
11700         fixed to not depend on the incorrect behaviour.
11701
11702 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11703
11704         * profiler.c: provide defaults if none are set.
11705
11706 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11707
11708         * Makefile.am, attrdefs.h: new public header file with
11709         constants for attributes for use by embedders.
11710
11711 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11712
11713         * icall.c: GetFields () fix for bug #80064.
11714
11715 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
11716
11717         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
11718         removed long unused icalls.
11719
11720 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
11721   
11722         * marshal.c: 
11723                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
11724                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
11725                 can be generated without a delegate class.
11726                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
11727         
11728         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11729
11730 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11731
11732         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
11733         #80069.
11734
11735 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11736
11737         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
11738         icall-def.h: added icalls needed by System.GC.
11739
11740 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
11741
11742         * loader.c: ensure the class in catch clauses is handled
11743         correctly for generics methods (fixes bug#79980).
11744
11745 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11746
11747         * monitor.h, monitor.c: added mono_locks_dump () function
11748         to help debug deadlocks involving managed locks.
11749
11750 2006-11-13  Dick Porter  <dick@ximian.com>
11751
11752         * file-io.c (get_file_attributes): If the file is a symlink try
11753         and get the stat data for the target, but also add the
11754         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
11755         the specs for the windows symlink support, but will probably have
11756         to be reworked when I have test data from a vista machine.  Fixes
11757         bug 79887.
11758
11759 2006-11-13  Dick Porter  <dick@ximian.com>
11760
11761         * gc.c (mono_domain_finalize): 
11762         * marshal.c (mono_delegate_begin_invoke): 
11763         * threadpool.c (socket_io_init, mono_thread_pool_init)
11764         (mono_thread_pool_finish): 
11765         * monitor.c (mono_monitor_try_enter_internal): 
11766         * threads.c (mono_thread_resume, mono_thread_init)
11767         (mono_thread_suspend_all_other_threads)
11768         (mono_thread_execute_interruption): 
11769         * appdomain.c (mono_domain_unload): Check for NULL error returns
11770         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
11771         75733.
11772
11773 2006-11-11  Miguel de Icaza  <miguel@novell.com>
11774
11775         * process.c
11776         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
11777         Only close the handle if the value of the handle is not
11778         INVALID_HANDLE_VALUE.  This just makes the process a bit more
11779         robust.
11780
11781         Improvement for #75733, so that we do not run into this problem. 
11782
11783         
11784         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
11785         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
11786         internal variables.  Fixes #79462 
11787         
11788
11789 2006-11-09  Dick Porter  <dick@ximian.com>
11790
11791         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11792         Use poll() not select().  Fixes bug 79397.
11793
11794 2006-11-09  Raja R Harinath  <rharinath@novell.com>
11795
11796         Fix #79872
11797         * assembly.c (mono_assembly_load_from_full): Check that the given
11798         image has an assembly manifest.
11799
11800 2006-11-09  Ankit Jain  <jankit@novell.com>
11801
11802         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
11803         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
11804         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
11805
11806 2006-11-07  Dick Porter  <dick@ximian.com>
11807
11808         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11809         Put the old resolver behaviour back for pre-2.0 profiles.
11810
11811 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
11812
11813         * threadpool.c: precise GC and locking fixes.
11814
11815 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
11816
11817         * class.c: don't load types that have an explicit unaligned
11818         managed reference. Provide better info in the TypeLoad exception.
11819         Part of the fix for bug #79744.
11820         * object.c: use the correct check for class type load issues.
11821
11822 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11823
11824         * class.c: enforce alignment of fields with managed references
11825         even when Pack=1 is forced by the user (bug #77788).
11826
11827 2006-11-03  Dick Porter  <dick@ximian.com>
11828
11829         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11830         If the address reverse lookup fails, return it as the hostname
11831         anyway.  Fixes bug 79721.
11832
11833 2006-11-03  Dick Porter  <dick@ximian.com>
11834
11835         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
11836         Fix build on Windows.
11837
11838 2006-11-02  Dick Porter  <dick@ximian.com>
11839
11840         * icall-def.h: 
11841         * object-internals.h: 
11842         * exception.c (mono_get_exception_thread_interrupted): 
11843         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
11844         Fixes bug 74525.
11845
11846         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
11847         Check for pending Thread.Interrupt.
11848
11849 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
11850         * loader.c: Fixed bug 79684.
11851
11852 2006-10-27  Dick Porter  <dick@ximian.com>
11853
11854         * file-io.c (get_file_attributes): Force symlinks to directories
11855         to be returned as a regular file.  Fixes bug 79733.
11856 2006-10-26  Dick Porter  <dick@ximian.com>
11857
11858         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
11859         CreateFile to open a directory then we need to set the
11860         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
11861
11862 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11863
11864         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
11865         friends.
11866
11867 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11868
11869         * sgengc.c: small cleanup of timer code.
11870
11871 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11872
11873         * sgen-gc.c: fix some warnings and start adding support for
11874         complete object removal on domain unload.
11875
11876 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
11877
11878         * assembly.c: build_assembly_name should not consider a version
11879         number without build or revision number invalid. Fixes bug #79715.
11880
11881 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
11882
11883         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
11884         call kernel32 function OutputDebugString directly.
11885         
11886         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11887         
11888 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
11889
11890         * reflection.c: small cleanup, using a function to insert a MonoString
11891         in the string heap.
11892
11893 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
11894
11895         * reflection.c: moving GC fixes.
11896
11897 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11898
11899         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
11900         all the objects with finalizers belonging to an unloading appdomain.
11901
11902 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11903
11904         * sgen-gc.c: added ability to allocate even when the nursery is fully
11905         pinned and fixed a couple of bugs.
11906
11907 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11908
11909         * threads.h: Revert the last change for now.
11910
11911         * threads.h (mono_thread_get_pending_exception): Rename this to
11912         mono_thread_get_undeniable_exception ().
11913
11914 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
11915
11916         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
11917         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
11918         when fname does not refer to valid assembly. This result in a more
11919         meaningful error message.
11920         * exception.c: added mono_get_exception_bad_image_format2 which 
11921         constructs a BadImageFormatException using the ctor taking a custom
11922         message and the file name. Passing in a NULL msg results in a default
11923         message.
11924         * exception.h: define mono_get_exception_bad_image_format2 function.
11925         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
11926         when file name pointed to an invalid IL image. Use 
11927         mono_get_exception_file_not_found2 to construct FileNotFoundException,
11928         as this results in a more meaningful error message.
11929
11930 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11931
11932         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
11933         #79465.
11934
11935 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11936
11937         * metadata.c (mono_type_size): Change the align parameter to guint32 for
11938         consistency with the other _size functions.
11939         (mono_type_stack_size): Ditto.
11940
11941         * class.c object.c icall.c: Fix warnings caused by the above change.
11942
11943         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
11944
11945         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
11946
11947         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
11948
11949 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
11950
11951         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
11952         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
11953         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
11954         threadpool.h, threads-types.h: mark more internal functions.
11955
11956 2006-10-11  Dick Porter  <dick@ximian.com>
11957
11958         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11959         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
11960         reproduce the bug even before applying the fix.)
11961
11962 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
11963
11964         * reflection.c: allow retrieving attributes for arguments in generic
11965         methods (bug #79241).
11966
11967 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
11968
11969         * debug-mono-symfile.c: properly check fopen () result (found by
11970         coverity).
11971
11972 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
11973
11974         * reflection.c: make error message clearer and fixed two
11975         issuelets found by Coverity.
11976
11977 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
11980
11981 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
11982
11983         * object-internals.h, gc-internal.h, profiler-private.h:
11984         mark internal functions.
11985
11986 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11987
11988         * reflection.c: put data in the text section.
11989         * icall.c: recognize more types in type_from_typename ().
11990         * process.c, marshal.c: added some GC FIXMEs.
11991
11992 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11993
11994         * loader.c: check for NULL before initializing.
11995
11996 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
11997
11998         * gc.c (finalizer_thread): Use a non-alertable wait here.
11999
12000         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
12001         until the correct solution is found.
12002
12003 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12004
12005         * reflection.c (mono_module_get_object): Avoid an assert when operating on
12006         modules with no metadata. Fixes #79596.
12007
12008         * image.c (load_metadata_ptrs): Put back the error message when
12009         the #- heap is encountered since the support is not complete yet.
12010
12011 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12012
12013         * gc.c: do not allow the user to SuppressFinalize () a
12014         delegate because it would leak the trampoline if present.
12015
12016 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12017
12018         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
12019         PropertyPtr table.
12020
12021 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12022
12023         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
12024
12025         * metadata.c (mono_metadata_get_param_attrs): Ditto.
12026
12027         * row-indexes.h: Add definitions for *Ptr tables.
12028
12029         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
12030
12031         * metadata.c (mono_metadata_translate_token_index): New helper function to
12032         translate table indexes used in uncompressed metadata.
12033         (mono_metadata_decode_table_row): Ditto.
12034         (mono_metadata_decode_table_row_col): Ditto.
12035
12036         * metadata.c: Add table schema for *Ptr tables.
12037
12038         * class.c loader.c: Use the new helper function to access the affected metadata
12039         tables.
12040         
12041         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
12042         #38532.
12043         
12044 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
12045
12046         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
12047         sequences which can be unbounded in size. Fixes #79583.
12048
12049 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12050
12051         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
12052         static initialization.
12053
12054         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
12055
12056         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
12057
12058         * domain.c (mono_domain_free): Free up type_init_exception_hash.
12059
12060         * object.c (mono_runtime_class_init): Implement correct semantics when a static
12061         ctor fails, i.e. throw the same exception on subsequent accesses.
12062         
12063 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
12064
12065         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
12066         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
12067         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
12068         Handle marshalling of interfaces and VARIANTs contained in structs.
12069         
12070         Code is contributed under MIT/X11 license.
12071         
12072 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12073
12074         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
12075         
12076         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
12077         mempool.
12078
12079 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12080
12081         * console-io.c: ignore previous SIGINT handler.
12082
12083 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
12086         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
12087         #79460, #79461, #79485.
12088
12089         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
12090
12091         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
12092         #79217.
12093
12094 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12095
12096         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
12097         could be generated from it.
12098
12099 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
12100
12101         * rand.c: fix read loop to correctly handle EINTR.
12102
12103 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12104
12105         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
12106         internal calls are defined to keep methods closer to the declaring
12107         type and allow a significant reduction in runtime relocations and
12108         memory usage.
12109
12110 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
12111
12112         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
12113         exception message to have FileNotFoundException use the default
12114         assembly load error message. Fixes bug #79426.
12115         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
12116
12117 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12118
12119         * threadpool.c: (start_thread_or_queue) use the root domain when
12120         creating the thread instead of the async object one.
12121
12122 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
12123
12124         * class.c, object.c, class-internals.h, reflection.c:
12125         for arrays, store element_size inside MonoClass (speedup
12126         for array object creation).
12127
12128 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
12129
12130         * icall.c: fixed CodeBase to use the file name and not the module
12131         name (bug #79365).
12132
12133 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12134
12135         * mono-debug.c, mono-debug.h: export find_method as
12136         mono_debug_find_method ().
12137
12138 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12139
12140         * debug-helpers.c, class-internals.h: added a few functions useful
12141         when debugging under gdb.
12142
12143 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12144
12145         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
12146         characters that need special handling.
12147
12148 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12149
12150         * mono-config.c: make the os/cpu specification more flexible,
12151         allowing lists and negation.
12152
12153 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
12154
12155         * marshal.c: COM Interop fixes. Handle case where method->klass.
12156         is interface. Handle BSTR/MonoString when null. Use CDECL as 
12157         calling convention on non-windows platforms. This is for
12158         compatibility with XPCOM and MainWin COM.
12159         
12160         Code is contributed under MIT/X11 license.
12161         
12162
12163 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
12164
12165         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
12166         correctly. Fixes #79217.
12167
12168         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
12169
12170 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
12171
12172         * mono-config.c: allow both an os and cpu attribute for dllmap
12173         and dllentry elemnets to enable a single config file to be used
12174         for multiple architectures.
12175
12176 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12177
12178         * loader.c: MonoLoaderError was cleared too soon on load failure.
12179         Fixes bug #79424.
12180
12181 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12182
12183         * icall.c: use the defining class vtable when accessing a
12184         static field, not a pobblibly derived class.
12185
12186 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12187
12188         * icall.c string-icalls.c: Remove references to unicode.h.
12189
12190         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12191
12192         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12193
12194         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12195         indicating the image where custom marshaller types should be looked up.
12196         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12197         custom marshallers, instead of corlib. Fixes #79425.
12198
12199 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12200
12201         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12202
12203 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12204
12205         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12206         Implement Environment.ProcessorCount.
12207         
12208         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12209         Implement Environment.ProcessorCount.
12210         
12211         * icall.c: 
12212         Add Environment.ProcessorCount icall.
12213         
12214         Patch by Jason McFall.
12215
12216 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12217
12218         * assembly.c: don't append .exe/.dll when the filename already contains
12219         one of those extensions.
12220
12221 2006-09-12  Martin Baulig  <martin@ximian.com>
12222
12223         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12224         to array interfaces.
12225
12226 2006-09-11  Martin Baulig  <martin@ximian.com>
12227
12228         * reflection.c (mono_image_build_metadata): Create the
12229         MethodImpl's after emitting all types and methods, so we don't
12230         need another fixup pass for them.
12231
12232 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12233
12234         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12235         change.
12236
12237 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12238
12239         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12240         unload.
12241
12242 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12243
12244         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12245         args is not set. Fixes #78926.
12246
12247 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12248
12249         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12250
12251         * image.c (load_class_names): Move this to class.c, and rename it to 
12252         'mono_image_init_name_cache'.
12253         (load_modules): Fix a warning.
12254
12255         * class.c icall.c image.c: Initialize image->name_cache lazily.
12256
12257         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12258         on its name using information in the AOT file.
12259
12260         * class.c (mono_class_from_name): Use the new hook function.
12261
12262 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12263
12264         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12265         correctly.
12266
12267         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12268         Fixes #79289.
12269         
12270 2006-09-06  Martin Baulig  <martin@ximian.com>
12271
12272         * icall.c (mono_lookup_internal_call): Small fix.
12273
12274 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12275
12276         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12277         double g_free.
12278
12279 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12280
12281         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12282         when --debug is specified.
12283
12284 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12285
12286         * class.c (setup_generic_array_ifaces): Fix a warning.
12287
12288 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12289
12290         * Temporarily remove the patch to assemly.c that checks the
12291         assembly versions as it breaks our gacutil.
12292
12293 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12294
12295         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12296
12297         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12298         a net 1.0 runtime.
12299
12300         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12301         created using the default ctor. Fixes #79152.
12302         (mono_string_builder_to_utf16): Ditto.
12303
12304 2006-09-01  Martin Baulig  <martin@ximian.com>
12305
12306         Fix handling of the generic array interfaces.
12307
12308         * class-internals.h
12309         (MonoDefaults): Removed `generic_array_class' and added
12310         `generic_ilist' class.
12311
12312         * class.c
12313         (mono_bounded_array_class_get): Add the new generic array interfaces.
12314         (setup_generic_array_ifaces): New static method; create vtable
12315         entries for each method in the generic array interfaces.
12316
12317         * metadata.c
12318         (select_container): Allow "parent-less" generic methods.
12319
12320         * marshal.c
12321         (mono_marshal_get_generic_array_helper): New public method.
12322
12323         * icall.c
12324         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12325         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12326         moved the interncall into System.Array.
12327
12328 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12329
12330         A few more cases of avoiding work on types with ->byref set.
12331         Has the real fix for #79238
12332         * icall.c (is_generic_parameter): New helper.
12333         (ves_icall_Type_GetGenericParameterPosition): Use it.
12334         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12335         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12336         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12337         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12338         reference types.
12339         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12340         reference types.
12341         (ves_icall_Type_get_IsGenericInstance): Likewise.
12342         (ves_icall_Type_get_IsGenericType): Likewise.
12343
12344 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12345
12346         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12347         class if possible.
12348
12349         * mempool.h (mono_mempool_get_allocated): New helper function.
12350
12351         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12352         change.
12353
12354         * mempool.c: Fix warnings and the calculation of stats.
12355
12356         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12357
12358         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12359
12360         * loader.c (mono_get_method_from_token): Update method_count stat.
12361
12362         * class-internals.h (MonoStats): Add some stats.
12363
12364 2006-08-31 Robert Jordan  <robertj@gmx.net>
12365
12366         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12367         with managed variants.
12368         All code is contributed under the MIT/X11 license.
12369         
12370 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12371
12372         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12373         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12374
12375         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12376
12377         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12378         with cycles in classes.
12379
12380         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12381
12382         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12383         missing a [MarshalAs] directive. Fixes #79203.
12384
12385         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12386         klass->marshal_info. Fixes #79217.
12387
12388 2006-08-30  Martin Baulig  <martin@ximian.com>
12389
12390         Committing a patch from Joachim Ante <joe@otee.dk>:
12391         Add support for binary data symbol stores.
12392
12393         * debug-mono-symfile.c
12394         (mono_debug_open_mono_symbol_file): Renamed into
12395         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12396         arguments.
12397
12398         * mono-debug.c
12399         (mono_debug_open_image): Added `raw_contents' and `size' args.
12400         (mono_debug_init_2_memory): New public function.
12401
12402 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12403
12404         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12405
12406 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12407
12408         * appdomain.c: implement support for ShadowCopyFiles.
12409
12410 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12411
12412         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12413         when value is NULL (and should remove CID #51).
12414
12415 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12416
12417         * image.c: moved 2 functions to ../utils.
12418
12419 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12420
12421         * gc.c: cope with the target object of a GC handle being NULL
12422         (bug #78877).
12423
12424 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12425
12426         * class.c: recursively check parent's explicit implementations
12427         of interface methods (fixes bug #79125).
12428
12429 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12430
12431         * filewatcher.c: Avoid warnings when building, do not redefine
12432         constants that are defined.
12433
12434         Remove warnings.
12435
12436 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12437
12438         * image.c: don't fail when the link points to an absolute path.
12439
12440 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12441
12442         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12443         Fix CID #3.
12444
12445 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12446
12447         * image.c (full_path): A new method used to obtain the actual path
12448         of an assembly even in the presence of symbolic links.  
12449
12450         This is necessary for the case where we are running a binary that
12451         has been GACed, but we are using the "published" path name
12452         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12453         file in the GAC.
12454
12455         This was the source of the failure for the `xsp' command with the
12456         recent AppDomain changes, as far as the runtime was concerned,
12457         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12458         $prefix/mono/gac/blah/version/blah.exe.
12459
12460         (do_mono_image_open): use full path
12461
12462 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12463
12464         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12465
12466 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12467
12468         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12469         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12470
12471 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12472
12473         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12474         small structures. Fixes #78990.
12475
12476 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12477
12478         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12479
12480         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12481
12482 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12483
12484         * appdomain.c:
12485         * marshal.c: don't load all the assemblies from a domain into newly
12486         created ones. The new domains might have different rules and load
12487         assemblies from different locations. Fixes bug #76757.
12488
12489         Patch by Lluis. Conflicts resolved by Brian Crowell.
12490
12491 2006-08-16  Alp Toker  <alp@atoker.com>
12492
12493         * socket-io.c: First half of the fix for #79084.
12494         Set sa_size to the length of the content, not that of the struct.
12495         Don't add NULL suffix to the content, this should be done in
12496         managed code if needed.
12497
12498 2006-08-14  Raja R Harinath  <rharinath@novell.com>
12499
12500         Fix part of #79012
12501         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
12502         mono_metadata_parse_type returns NULL.
12503
12504 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
12505
12506         * normalization-tables.h : new file for string normalization data.
12507         * locales.c, locales.h, icall.c :
12508           added load_normalization_resource() for string normalization,
12509           and icall as well.
12510         * Makefile.am : added normalization-tables.h to the sources.
12511
12512 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
12513
12514         * marshal.c: Add more helper functions to reduce code duplication and use them
12515         everywhere.
12516
12517 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
12518
12519         * marshal.c: Fix non-x86 stdcall warnings.
12520         
12521         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
12522         them everywhere.
12523
12524 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
12525
12526         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
12527         type check on multi-dimensional arrays. Fixes #79000.
12528
12529 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12530
12531         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
12532         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
12533         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
12534         * class-internals.h: add is_com_object to class structure.
12535         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
12536         null checks to COM object marshalling. Fix .ctor call on RCW.
12537         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
12538         
12539         All code is contributed under the MIT/X11 license.
12540
12541 2006-08-09  Dick Porter  <dick@ximian.com>
12542
12543         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
12544         racing mono_monitor_allocator_lock() somewhere, so don't delete
12545         the critical section for now.  Found by running and exiting
12546         monodevelop.
12547
12548 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
12549
12550         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
12551         (ves_icall_System_ComObject_FindInterface): Ditto.
12552         (ves_icall_System_ComObject_CacheInterface): Ditto.
12553
12554         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
12555         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
12556
12557 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12558
12559         * threadpool.c: treat pipes from process asynchronous reads as sockets
12560         when reading from them, so we get select/poll or epoll to wait for
12561         data.
12562
12563 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
12564
12565         * loader.c: Fix a typo (CID #233) in the null check.
12566
12567 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
12568
12569         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
12570         Hopefully fixes #78949.
12571         
12572         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
12573         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
12574         bytes. Fixes #78972.
12575
12576 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12577
12578         * filewatcher.c: we need to set errno here.
12579
12580 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12581
12582         * filewatcher.c: let Win32Exception get the error value.
12583
12584 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12585
12586         * filewatcher.c: translate errno into win32 errors for Win32Exception
12587         to know what happened.
12588
12589 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12590
12591         * threadpool.c: Fix more warnings.
12592
12593         * assembly.c (search_loaded): Fix warnings.
12594
12595         * threadpool.c (mono_thread_pool_finish): Fix warnings.
12596         (mono_async_invoke): Ditto.
12597
12598 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
12599
12600         * object.c (mono_remote_class_vtable): Need to create proxy vtable
12601         entries for __ComObject type in addition to ComImport types.
12602         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
12603         about hash table.
12604         
12605         All code is contributed under the MIT/X11 license.
12606
12607 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12608
12609         * image.c: avoid tentative loading of modulerefs that contain
12610         no metadata (P/Invoke library names).
12611
12612 2006-07-28  Dick Porter  <dick@ximian.com>
12613
12614         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
12615         mono_loader_lock() somewhere, so don't delete the critical section
12616         for now.  Found by running and exiting monodevelop.
12617
12618 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12619
12620         * filewatcher.c: define the inotify syscalls when we're building on
12621         linux and have sys/syscall.h. The build system might not have support
12622         for inotify but the target system might have it.
12623
12624 2006-07-26  Miguel de Icaza  <miguel@novell.com>
12625
12626         * domain.c: Documentation updates.
12627
12628         * loader.c (mono_free_method): Do not release the method
12629         information if we are being profiled, as profilers will use this
12630         information at shut down to present some data to the user.
12631
12632         This is needed so that the profiler does not crash, as the
12633         profiler tends to keep MonoMethods around, and they might become
12634         invalid if we free these.
12635
12636         (mono_get_method_constrained): Return the original CIL stream
12637         method as well, so verification can be performed against it.
12638
12639 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12640
12641         * filewatcher.[ch]: support for inotify file system watcher.
12642         * icall.c: add new internal calls for the inotify file system watcher.
12643
12644 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12645
12646         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
12647         #78888.
12648
12649 2006-07-20  Dick Porter  <dick@ximian.com>
12650
12651         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
12652         warning.
12653
12654 2006-07-20  Dick Porter  <dick@ximian.com>
12655
12656         * threads.c (start_wrapper): Do the thread cleanup while we still
12657         hold a reference to its object.  Fixes bug 78123.
12658
12659 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
12660
12661         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
12662         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
12663           "managed-to-managed".
12664         * icall.c: Redirect string constructors that take sbyte* to
12665           ves_icall_System_String_ctor_RedirectToCreateString.
12666         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
12667           to CreateString () methods with matching signature.
12668         * reflection.c: Use original security informations for
12669           MONO_WRAPPER_MANAGED_TO_MANAGED.
12670         * security-manager.c: Use original security informations for
12671           MONO_WRAPPER_MANAGED_TO_MANAGED.
12672         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
12673           that is a placeholder and only its address should be used.
12674         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
12675           that is a placeholder and only its address should be used.
12676
12677 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12678
12679         Begin implementing COM Interop.
12680         * appdomain.c: Increment corlib version.
12681         * class.c: Set ComImport classes' parent to __ComObject.
12682         * loader.c: Mark cominterop methods as such.
12683         * domain.c: Add __ComObject class to MonoDefaults structure.
12684         * image.c: Add 2 hashtables to the image for COM Interop related methods
12685         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
12686         using the mempool allocator
12687         
12688         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
12689         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
12690         declaration for mono_metadata_type_dup_mp.
12691         
12692         * debug-helpers.c: Added strings for two additional wrapper types
12693         * object.c: Create proxy objects for ComImport classes
12694         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
12695         and added __ComObject class to MonoDefaults structure.
12696         
12697         * object-internals.h: Finish MonoRealProxy definition, and add definition of
12698         MonoComInteropProxy and MonoComObject.
12699         
12700         * marshal.c: Added support for COM Interop
12701         (signature_cominterop): Converts managed signature to corresponding
12702         unmanaged COM signature.
12703         (cominterop_get_function_pointer): gets unmanaged function pointer via
12704         COM object vtable
12705         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
12706         (cominterop_get_method_interface): returns interface type that method is defined on
12707         (mono_mb_emit_cominterop_call): emits native call to function pointer
12708         gotten from vtable
12709         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
12710         that matches signature of unmanaged function.
12711         (cominterop_get_native_wrapper): wrapper around adjusted method call.
12712         (cominterop_get_invoke): forwards call from proxy to __ComObject
12713         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
12714         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
12715         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
12716         
12717         * marshal.h: Added Marshal icall declarations.
12718         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
12719         so we can access them in finalizer
12720         
12721 2006-07-14  Dick Porter  <dick@ximian.com>
12722
12723         * object.c (mono_type_initialization_cleanup): Fix a race
12724         condition by temporarily commenting out the critical section
12725         deletion.
12726
12727 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
12728
12729         * reflection.c (create_custom_attr): Fix some warnings.
12730         (create_custom_attr_data): Ditto.
12731         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
12732         types. Fixes #78855.
12733
12734 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
12735
12736         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
12737
12738         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
12739
12740 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12741
12742         * reflection.c (resolve_object): Add support for DynamicMethod.
12743
12744         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
12745         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
12746
12747 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
12748
12749         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
12750         don't leak GPtrArray's pdata has we have no use (nor free) for it.
12751
12752 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
12753
12754         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
12755         Fixes #77888.
12756
12757 2006-06-30  Raja R Harinath  <rharinath@novell.com>
12758
12759         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
12760         slightly: remove a shadow local variable.
12761
12762 2006-06-29  Raja R Harinath  <rharinath@novell.com>
12763
12764         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
12765         definition that introduces the virtual function slot.
12766         Also fix Coverity #105.
12767
12768 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
12769
12770         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
12771         for dynamic assemblies. Fixes #78724.
12772
12773 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
12774
12775         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
12776         Fixes #78722.
12777
12778 2006-06-21  Martin Baulig  <martin@ximian.com>
12779
12780         * reflection.c
12781         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
12782         fixes #76484.
12783
12784 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12785
12786         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
12787
12788 2006-06-20  Raja R Harinath  <rharinath@novell.com>
12789
12790         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
12791         nor TYPEREFs.
12792         * class.c (mono_class_create_from_typespec): Add 'context' argument.
12793         Inflate result if necessary.
12794         (mono_class_get_full): Remove old version.  Rename from
12795         'mono_class_get' and add 'context' argument.  Pass it to
12796         ..._create_from_typespec.
12797         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
12798         (mono_ldtoken): Revert change below.
12799
12800 2006-06-20  Martin Baulig  <martin@ximian.com>
12801
12802         * class.c (mono_ldtoken): Don't pass the generic context to
12803         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
12804
12805 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
12806
12807         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
12808         and later freeing it. Fixes #78638.
12809
12810 2006-06-15  Miguel de Icaza  <miguel@novell.com>
12811
12812         * icall.c (mono_class_get_throw): Revert over-zealous error
12813         throwing, the caller for mono_class_get_throw will cope with
12814         errors when classes are not properly initialized already.
12815
12816         The code still copes with loader exceptions though.
12817
12818         Fixes the regression in reftype1 and reftype3 from the CAS tests.
12819         
12820 2006-06-14  Miguel de Icaza  <miguel@novell.com>
12821
12822         Fixes the `make run1' version of RuntimeAbort (to be commited,
12823         source is in Bugzilla).
12824         
12825         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
12826         FALSE on class loading failure instead of returning true.
12827
12828         * class.c (mono_class_create_from_typedef): It is possible for
12829         mono_metadata_interfaces_from_typedef_full to fail if a class is
12830         not found, cope with this.
12831         
12832
12833 2006-06-14  Dick Porter  <dick@ximian.com>
12834
12835         * socket-io.c: 
12836         * process.c: Fix a bunch of signed/unsigned warnings from gcc
12837         4.1.1
12838
12839 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
12840
12841         * culture-info-table.h : oops, forgot to make it nsync with r61548.
12842
12843 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12844
12845         * icall.c: Another fix for building mono in Visual Studio.
12846
12847 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12848
12849         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
12850         
12851 2006-06-09  Martin Baulig  <martin@ximian.com>
12852
12853         * debug-mono-symfile.c: Put this back and really fix it this
12854         time. Sorry for all the trouble.
12855
12856 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * icall.c (mono_class_get_throw): Fix a warning.
12859         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
12860         ReflectionTypeLoadException if needed. Fixes #78606.
12861
12862         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
12863         (mono_class_init): Ditto.
12864
12865         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
12866         ref_only exceptions.
12867         (mono_loader_clear_error): Make this work even if there is no error.
12868
12869 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
12870
12871         * object-internals.h marshal.c marshal.h icall.c: Implement method 
12872         Marshal.GetComSlotForMethodInfo using internal call.
12873
12874 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
12875
12876         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
12877         a function for signalling it.
12878
12879         * class.c (mono_class_from_typeref): Use the new kind of loader error when
12880         a referenced assembly is not found.
12881
12882         * loader.c (mono_loader_error_prepare_exception): Add support for 
12883         LOADER_ERROR_ASSEMBLY. Fix formatting.
12884
12885 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
12886
12887         * domain.c appdomain.c class-internals.h marshal.c: Add support 
12888         for VARIANT marshalling on windows and increment corlib version
12889         since Variant struct was added.
12890
12891 2006-06-03  Miguel de Icaza  <miguel@novell.com>
12892
12893         * debug-mono-symfile.c: Revert Martin's previous patch which broke
12894         stack trace line information:
12895
12896         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
12897         (Martin) when looking up B which is between A and C, return A not C.
12898
12899         Bug is #78573.
12900
12901         Thanks to Alexander Olk for tracking this down.
12902
12903 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12904
12905         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
12906         
12907         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
12908         avoid clobbering its value.
12909         (mono_string_to_lpstr): Fix a warning on windows.
12910
12911 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12912
12913         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
12914
12915         * reflection.c loader.c: Removed references to 'dummy' flag.
12916
12917         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
12918
12919         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
12920         it gets GC tracking.
12921
12922         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
12923         GC tracking.
12924         
12925         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
12926
12927         * marshal.c threadpool.c: Update callers of mono_async_result_new.
12928
12929         * appdomain.c: Bump corlib version.
12930
12931 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
12932
12933         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
12934         CEE_STIND_REF when working with object references.
12935
12936 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12937
12938         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
12939         Fixes #78539.
12940
12941 2006-05-30  Miguel de Icaza  <miguel@novell.com>
12942
12943         * loader.c (method_from_memberref): Fix argument value for
12944         mono_loader_set_error_method_load (I was passing the MonoClass
12945         instead of the class name char *).
12946
12947 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
12948
12949         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
12950         CEE_STIND_REF when working with object references.
12951
12952 2006-05-30  Martin Baulig  <martin@ximian.com>
12953
12954         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
12955         mono_method_full_name() change and replace the ':' with a '.'
12956         here.
12957
12958 2006-05-30  Martin Baulig  <martin@ximian.com>
12959
12960         * debug-mono-symfile.c
12961         (mono_debug_symfile_lookup_location): Fix the algorithm:
12962         when looking up B which is between A and C, return A not C.
12963
12964 2006-05-29  Martin Baulig  <martin@ximian.com>
12965
12966         * mono-debug.h
12967         (MonoDebugMethodInfo): Make the typedef public.
12968         (MonoDebugSourceLocation): New public struct.
12969
12970         * mono-debug.c
12971         (mono_debug_source_location_from_address): Removed.
12972         (mono_debug_source_location_from_il_offset): Removed.
12973         (mono_debug_il_offset_from_address): Removed.
12974         (mono_debug_address_from_il_offset): Removed.
12975         (mono_debug_lookup_method): New public function.
12976         (mono_debug_lookup_source_location): New public function; replaces
12977         the old mono_debug_source_location_from_*() functions; see the
12978         inline documentation.
12979         (mono_debug_free_source_location): New public function.
12980         (mono_debug_print_stack_frame): New public function; see the
12981         inline documentation.
12982
12983         * debug-mono-symfile.c
12984         (mono_debug_find_source_location): Renamed into
12985         mono_debug_symfile_lookup_location(); only take a
12986         `MonoDebugMethodInfo *' and an `offset' argument; added inline
12987         documentation.
12988         (mono_debug_find_method): Renamed into
12989         mono_debug_symfile_lookup_method().
12990
12991 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12992
12993         * assembly.c (mono_assembly_open_full): Dont overwrite the status
12994         returned by mono_image_open_full ().
12995
12996         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
12997         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
12998         #78517.
12999
13000         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
13001         #78518.
13002
13003 2006-05-27  Miguel de Icaza  <miguel@novell.com>
13004
13005         * class.c (mono_class_from_typeref): handle missing images
13006         earlier, deals with bug #78418.   Refactor code; 
13007
13008         Fix a warning introduced in my previous commit (some stale code
13009         from before I revisited my patch).
13010
13011         * class.c (mono_class_create_from_typedef): On failure, remove the
13012         class from the MonoImage->class_cache as the class is not
13013         initialized;   Fixes the leak pointed out by Paolo.
13014
13015 2006-05-25  Dick Porter  <dick@ximian.com>
13016
13017         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
13018         DeleteCriticalSections until I figure out which one may still be
13019         sometimes locked when mono_thread_cleanup is called.
13020
13021 2006-05-24  Dick Porter  <dick@ximian.com>
13022
13023         * threads.c (mono_thread_cleanup): Move the threading cleanup out
13024         of mono_thread_manage and back into its own function, so it can be
13025         called after the finalizer thread has finished.
13026
13027         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
13028
13029 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
13030
13031         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
13032         Fixes #78495.
13033
13034         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
13035         with non-blittable elements.
13036         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
13037
13038 2006-05-24  Martin Baulig  <martin@ximian.com>
13039
13040         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13041         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
13042
13043         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
13044         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
13045         `mono_debugger_event_handler' to NULL.
13046
13047 2006-05-24  Martin Baulig  <martin@ximian.com>
13048
13049         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
13050
13051 2006-05-24  Martin Baulig  <martin@ximian.com>
13052
13053         * mono-debug-debugger.h
13054         (mono_debugger_create_notification_function): Added
13055         `MonoCodeManager *' argument.
13056
13057 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
13058
13059         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
13060
13061 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
13062
13063         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
13064         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
13065         implementation.
13066
13067 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
13068
13069         * icall.c: precise GC support: objects can't be stored in unmanaged
13070         memory anymore, even if they are kept alive by other references: since
13071         they can move the GC needs to be able to always find them.
13072
13073 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13074
13075         * object.c: precise GC support for static fields. Support
13076         for moving GCs: write barriers and pinned allocation for interned
13077         strings.
13078
13079 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
13080
13081         * domain.c, domain-internals.h: precise GC support for the MonoDomain
13082         structure.
13083
13084 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13085
13086         * class.c, gc.c: sgen and precise GC updates.
13087
13088 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13089
13090         * marshal.h, marshal.c: added write barrier wrapper and precise type
13091         fixes.
13092
13093 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
13094
13095         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
13096         support.
13097
13098 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13099
13100         * reflection.c: precise and sgen GC updates.
13101
13102 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13103
13104         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
13105
13106 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
13107
13108         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
13109
13110 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
13111
13112         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
13113         MONO_TYPE_OBJECT. Fixes #78462.
13114
13115 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13116
13117         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
13118         and blittable types.
13119
13120 2006-05-17  Miguel de Icaza  <miguel@novell.com>
13121
13122         * class.c (mono_class_get_exception_for_failure): Implement parts
13123         of a TODO: if the loader error is set (instead of the class
13124         error), we return a Loader exception that can be properly thrown
13125         elsewhere.
13126
13127         This was exposed by some Winforms 2.0 code that I tried to run
13128         (Atsushi pointed me to it).
13129
13130 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
13131
13132         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
13133         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
13134         
13135         * marshal.c (emit_marshal_vtype): Add limited support for 
13136         UnmanagedType.LPStruct. Fixes #78427.
13137
13138         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
13139         Applied a patch from kangaroo to fix #77523.
13140
13141 2006-05-17  Martin Baulig  <martin@ximian.com>
13142
13143         * threads.c
13144         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
13145         (debugger_thread_created): Removed.
13146         (debugger_thread_exited): Removed.
13147
13148 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
13149
13150         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13151
13152         * object-internals.h (MonoReflectionResource): Sync with managed version.
13153
13154 2006-05-12  Wade Berrier <wberrier@novell.com>
13155
13156         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
13157
13158 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
13159
13160         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
13161         functions try to allocate from the image mempool.
13162
13163 2006-05-12  Dick Porter  <dick@ximian.com>
13164
13165         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
13166
13167 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
13168
13169         * object.c: The FieldGetter and FieldSetter methods require the full
13170         name of the class, not only the name. Fixes bug #78277.
13171
13172 2006-05-11  Miguel de Icaza  <miguel@novell.com>
13173
13174         * loader.c (method_from_memberref): Do not pass the NULL klass to
13175         mono_loader_set_error_() methods.  Pass the non-NULL value
13176         (class). 
13177
13178 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13179
13180         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13181         (mono_assembly_close): Null out assembly->image->references after freeing it.
13182
13183         * image.c (mono_image_close): Free image->references.
13184         
13185         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13186
13187 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13188
13189         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13190         before checking if it's NULL (g_assert).
13191
13192 2006-05-10  Martin Baulig  <martin@ximian.com>
13193
13194         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13195         I thought I already killed that two months ago, but now it somehow reappeared.
13196
13197 2006-05-10  Martin Baulig  <martin@ximian.com>
13198
13199         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13200
13201 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13202
13203         * reflection.c: Allocate memory for dynamically created methods in the image
13204         mempools.
13205
13206 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13207
13208         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13209         don't use the ad pointer before checking if it's NULL (g_assert).
13210
13211 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13212
13213         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13214         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13215
13216         * marshal.c: Allocate all signatures from mempools.
13217
13218         * marshal.c: Allocate some more signatures from mempools.
13219
13220 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13221
13222         * object.c (mono_load_remote_field): The code used to provide a
13223         temporary variable for returning results if the user did not
13224         provide a result pointer.  But our temporary variable was allocted
13225         on the satck.
13226
13227         Fix calling code to always pass a result area.   Coverity ID 103.
13228
13229 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13230
13231         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13232         value, not the old. Fixes #78312.
13233         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13234
13235         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13236         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13237         per-image cache.
13238
13239         * assembly.c (mono_assembly_close): Free image->references.
13240
13241         * assembly.c (mono_assembly_names_equal): Fix a warning.
13242         (mono_assemblies_cleanup): Cleanup more global data.
13243
13244         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13245
13246         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13247         ptr_cache and image->modules.
13248
13249         * image.c (mono_image_init): Allocate array_cache lazily.
13250         
13251 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13252
13253         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13254         behavior was changed recently and has bad side effects.
13255
13256 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13257
13258         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13259         
13260         * assembly.c (mono_assembly_close): Remove a debug printf.
13261
13262         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13263
13264         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13265         to also allow for temporary references between mono_image_open ()/close ().
13266
13267         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13268
13269 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13270
13271         * marshal.c: Fix support for dynamic methods.
13272
13273         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13274
13275         * marshal.c (mono_marshal_cleanup): New cleanup function.
13276
13277         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13278         image mempools.
13279
13280         * class.c (mono_class_init): Fix leaking class->nested_classes.
13281
13282         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13283
13284         * image.c (mono_image_init): Initialize the new cashes.
13285
13286         * image.c (mono_image_close): Destroy the new cashes.
13287
13288         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13289
13290         * mempool.c (mono_mempool_strdup): New helper function.
13291
13292         * class-internals.h: Add prototype for mono_loader_unlock ().
13293
13294         * domain.c (mono_jit_info_table_find): Fix a warning.
13295         (mono_debugger_check_runtime_version): Ditto.
13296
13297         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13298         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13299         functions to these modules.
13300
13301         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13302         metadata modules.
13303         
13304         * marshal.c (mono_free_bstr): Fix a warning.
13305
13306         * assembly.c (mono_assembly_open_full): Fix another small leak.
13307
13308         * object.c: Fix some unload leaks in the remoting code.
13309
13310         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13311         function.
13312
13313         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13314
13315         * reflection.c: Fix some unload leaks in dynamic assemblies.
13316
13317 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13318
13319         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13320         * marshal.h: Add BSTR support on Win32
13321         * icall.c: Add BSTR icalls
13322         * metadata.h: Add BSTR enums
13323
13324 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13325
13326         Work to catch the crash from #76795 and turn it into an
13327         exception.   As I stubbed out pieces of the VisualBasic support,
13328         I found a number of places where the code was failing and I added
13329         checks to those places. 
13330         
13331         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13332         function return a status code.  If we fail to parse the signature
13333         from mono_metadata_parse_generic_inst, return FALSE.
13334
13335         * loader.c (mono_get_method_from_token): If we fail to load the
13336         method (mono_class_get) return NULL.   
13337
13338         * (method_from_memberref): Return NULL if we are unable to parse
13339         the method signature
13340
13341         (mono_loader_error_prepare_exception): Since we now use the
13342         loader_error flag internally to stop processing, and obtaining
13343         exceptions that might be thrown will walk this code path the
13344         proper way of going from a MonoLoaderError into a
13345         MonoException was convoluted.   This new routine encapsulates the
13346         process of turning the error into an exception and *clearing* the
13347         error afterwards.
13348         
13349 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13350
13351         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13352         with missing assemblies), and to cope with:
13353
13354                 * Missing fieldref from a non-existing assembly.
13355                 * Missing methodref from a non-existing assembly.
13356
13357         The first batch of work to address *some* of the issues from 76661.
13358         
13359         * object.c (mono_class_create_runtime_vtable): If we fail to
13360         initialize the class raise the exception here. 
13361
13362         * metadata.c (mono_class_get_overrides_full): If any methods fail
13363         to load return the failure to the caller.
13364
13365         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13366         flagging assemblies that failed to load.   
13367
13368         Do not crash if we are unable to load the assembly.
13369
13370         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13371         assemblies. 
13372
13373         * loader.c (mono_loader_set_error_type_load): Change the
13374         convention to always pass unallocated strings, so we make our own
13375         copies (I know our own code had duplicated strings before, but
13376         this keeps the normal conventions).
13377         (method_from_memberref): Call mono_loader_set_error_method_load
13378         for all possible failures of loading the class. 
13379         Remove assert, turn into a loader error.
13380
13381         (mono_loader_error_to_exception): Move this routine from mini
13382         (mini_loader_error_to_exception) there was no need to have that in
13383         mini. 
13384
13385         * class.c (mono_class_from_typeref): If we were not able to load
13386         the assembly with mono_assembly_load_reference, call the
13387         mono_loader_set_error_type_load to register the problem.
13388
13389         (mono_class_setup_fields): If we fail to load the type from
13390         mono_metadata_parse_type_full, call mono_class_set_failure and
13391         break from the loop.
13392
13393         If class->exception_type is set, we do not layout the fields as
13394         that might crash the runtime, and instead return (from breaking
13395         from the previous loop).
13396
13397         (mono_class_setup_vtable): This now returns a boolean indicating
13398         whether the table was properly setup.   The decision is driven by
13399         mono_class_get_overrides_full which might run into non-existing
13400         methods. 
13401         
13402         (mono_class_init): Returns TRUE on success or FALSE if there was a
13403         problem in loading the type (incorrect assemblies, missing
13404         assemblies, methods, etc).
13405
13406         When we call mono_class_setup_fields we also check for a potential
13407         error inside this call (either a class exception or a general
13408         loader exception).
13409
13410         (mono_class_create_from_typedef): If the parent fails to load
13411         (calling mono_class_get_full) return NULL.
13412         
13413         ** Important **
13414
13415         calls to mono_metadata_parse_type_full should be checked
13416         everywhere and set the mono_class_set_failure
13417         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13418
13419         The current patch checks the places where my manually constructed
13420         tests show the errors are showing up, but we should do it
13421         everywhere. 
13422
13423         ** Important2 **
13424
13425         mono_class_init return values should be tested everywhere, like
13426         the previous case this is something that we should audit
13427         everywhere and not only on the cases exposed by the tests I
13428         created. 
13429
13430 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13431
13432         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13433         boolean parameter and instead pass the information on `options'
13434         parameter (FileOptions).
13435
13436         * icall.c: Register the new signature for MonoIO.Open.
13437
13438         * debug-helpers.c (dis_one): Trying to understand how coverity
13439         works.  Fix Run 5, item 78.
13440
13441 2006-04-26  Dick Porter  <dick@ximian.com>
13442
13443         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13444         dereference.
13445
13446 2006-04-25  Martin Baulig  <martin@ximian.com>
13447
13448         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13449
13450         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13451         debugger_thread_created().
13452         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13453         special way.
13454         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13455         (mono_debugger_finalize_threads): New function; undo the effects
13456         of mono_debugger_init_threads().
13457         (mono_debugger_create_all_threads): Removed.
13458
13459 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13460
13461         * image.c (mono_image_close): Tidy up trace messages.
13462
13463         * assembly.c (mono_assembly_close): Ditto.
13464
13465         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13466         no longer references an already freed assembly. Fixes #78168.
13467
13468 2006-04-21  Dick Porter  <dick@ximian.com>
13469
13470         * threads.c (mono_thread_detach): Fix reference counting when
13471         detaching threads.
13472
13473 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13476         #78155.
13477
13478 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13481         (mono_type_to_stind): Ditto.
13482
13483         * marshal.c: Use the new helper functions to simplify code.
13484
13485         * image.c (mono_image_close): Add some code for help debug assembly unloading
13486         problems.
13487
13488         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13489         image mempool.
13490
13491         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
13492         assembly was already loaded in another appdomain. Fixes #78083.
13493
13494 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
13495
13496         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
13497         referenced assemblies.
13498         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
13499
13500         * domain.c (mono_domain_free): Add a trace message.
13501
13502         * appdomain.c (add_assemblies_to_domain): Ditto.        
13503
13504         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
13505         field.  
13506
13507 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13508
13509         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
13510
13511 2006-04-12  Martin Baulig  <martin@ximian.com>
13512
13513         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
13514         `USE_INCLUDED_LIBGC'.   
13515
13516 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13517
13518         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
13519         the patch contains ../ and a small directory name later. Hopefully fixes
13520         #78035.
13521
13522 2006-04-10  Martin Baulig  <martin@ximian.com>
13523
13524         Clean up the debugger's thread-handling code.
13525
13526         The debugger's thread-handling code has been moved from
13527         ../mini/debug-debugger.c to threads.c.  We now iterate directly
13528         over the `threads' hash, keep track of exiting threads and also
13529         use proper locking.
13530
13531         We can now debug XSP and XSP based applications with the debugger.
13532
13533         * object-internals.h (MonoThread): Added `gpointer end_stack'.
13534
13535         * threads.h
13536         (MonoThreadCallbacks): Removed; this was only used by the debugger.
13537         (mono_install_thread_callbacks): Likewise.      
13538
13539         * threads.c (mono_thread_callbacks): Removed.
13540         (debugger_thread_created, debugger_thread_exited): New static functions.
13541         (start_wrapper): Call debugger_thread_created().
13542         (thread_cleanup): Call debugger_thread_exited().
13543         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
13544         (mono_debugger_init_threads): New public function.
13545         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
13546         iterate directly over the `threads' hash and also use proper locking.
13547
13548         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
13549
13550         * mono-debug-debugger.h
13551         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
13552
13553 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13554
13555         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
13556         argument type=array. Fixes #78057.
13557
13558 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
13559
13560         * culture-info-table.h : regenerated. Fixed bug #69652.
13561
13562 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13563
13564         * loader.c metadata.c: Reapply a variant r59116.
13565         
13566         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
13567
13568         * class.c (mono_class_setup_interface_offsets): New internal function.
13569
13570         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
13571         interfaces too. Fixes #77398.
13572
13573         * reflection.c (encode_cattr_value): Add support for 
13574         parameter type=object, argument type=array.
13575         (load_cattr_value): Ditto. Fixes #77916.
13576
13577         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
13578         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
13579
13580         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
13581         a byval char array and CharSet is Ansi.
13582
13583         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
13584
13585 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
13586
13587         * metadata.c: Add some locking comments.
13588         
13589         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
13590         mempool.
13591         (mono_metadata_free_method_signature): Don't free the signature itself.
13592
13593         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
13594
13595         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
13596         reference the same MonoImage.
13597         (mono_assembly_load_from_full): Add an assert.
13598
13599 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13600
13601         * image.c (mono_image_close): Don't put the image we are about to free into the
13602         loaded_images_guid_hash.
13603
13604         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
13605         to reduce code duplication.
13606
13607         * marshal.c: Register the native functions called by this module as icalls, to
13608         somewhat centralize the creation of MonoMethodSignature's.
13609
13610         * loader.c (mono_method_signature): Add a cache for method signatures.
13611
13612         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
13613         the parameter attributes of a method.
13614         (mono_metadata_parse_method_signature_full): Refactored the computation of
13615         parameter attributes into a separate function. Also avoid one allocation in
13616         most cases.
13617
13618         * assembly.c (mono_assembly_close): Ditto.
13619
13620         * image.c (mono_image_close): Log trace messages with INFO level.
13621
13622         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
13623
13624         * image.c reflection.c: Correct reference counting of image modules.
13625         
13626         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
13627         of this function from the image mempool.
13628         
13629         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
13630         to allow more cached types to be used.
13631
13632         * mono-debug.c (mono_debug_add_method): Appled patch from
13633         David S. Miller  <davem@sunset.davemloft.net>: Access 
13634         minfo->lexical_blocks[] entry elements using read32().
13635
13636 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13637
13638         * loader.c (mono_free_method): No longer free the method header for non-dynamic
13639         methods as it is allocated from the mempool.
13640
13641         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
13642         image mempool.
13643
13644         * metadata-internals.h: Add comments describing the reference counting scheme
13645         used for MonoImage and MonoAssembly.
13646
13647         * image.c assembly.c reflection.c: Rework reference counting of images and 
13648         assemblies so they are freed when the runtime is shut down. Free some 
13649         additional memory structures when an image is unloaded.
13650         
13651 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13652
13653         * class.c loader.c reflection.c: Allocate more data structures in
13654         the image mempool.
13655
13656 2006-03-31  Miguel de Icaza  <miguel@novell.com>
13657
13658         * icall.c
13659         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
13660         build on pre glib 2.4 systems.
13661
13662 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13663
13664         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
13665
13666         * icall.c: Fix some warnings.
13667
13668 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
13669
13670         * culture-info-table.h : regenerated.
13671
13672 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
13673
13674         * threads.c, object-internals.h, verify.c: changed the culture caching
13675         code to use a normal MonoArray for storage so the GC can keep track of
13676         them easily. Fixed bits of the cache logic, too and simplified the
13677         code.
13678
13679 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
13680
13681         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
13682         thread for non-Boehm GCs.
13683
13684 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
13685
13686         * domain.c, object.c, domain-internals.h: reduce the amount of memory
13687         needed to keep track of the data for static fields.
13688
13689 2006-03-29  Raja R Harinath  <rharinath@novell.com>
13690
13691         Fix #75172
13692         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
13693         for interface classes.  Use 'num_methods' instead.
13694         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
13695         before using '->vtable_size' field.
13696
13697 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13698
13699         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
13700         doesn't contain managed pointers, so use a normal hashtable.
13701
13702 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13703
13704         * reflection.c, class-internals.h, domain.c: fixed handling of types
13705         used as values for objects in custom attributes (bug #77915):
13706
13707 2006-03-24  Martin Baulig  <martin@ximian.com>
13708
13709         * class.c (mono_class_setup_fields): Added support for generic
13710         instances; fixes #77580.
13711
13712 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13713
13714         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
13715
13716 2006-03-24  Dick Porter  <dick@ximian.com>
13717
13718         * file-io.c (get_file_attributes): More stat macro breakage.
13719         Fixes bug 77759.
13720
13721 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
13722
13723         * profiler.c: added the file=filename option in the default profiler
13724         to output the profile data to filename.
13725
13726 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13727
13728         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
13729         bug #77877.
13730
13731 2006-03-22  Martin Baulig  <martin@ximian.com>
13732
13733         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
13734         allocated `MonoClassField *' in `fb->handle'.
13735
13736 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13737
13738         * class.c, image.c, metadata-internals.h: implemented new mechanism to
13739         allocate interface ID to save memory and allow better ID reuse on
13740         appdomain unload. setup_generic_vtable () removal from Martin.
13741
13742 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13743
13744         * object.h, appdomain.c, domain.c, exception.c, icall.c,
13745         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
13746         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
13747         write barriers for reference stores with managed objects accessed with
13748         C structures in the runtime and in embedding programs.
13749
13750 2006-03-20  Raja R Harinath  <rharinath@novell.com>
13751
13752         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
13753         'interface_id' and 'max_interface_id' fields of MonoClasses
13754         representing open generic types.
13755
13756 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
13757
13758         * object.h, object.c, icall.c: added functions to deal with
13759         storing valuetypes that contain references in managed objects.
13760         * reflection.c, string-icalls.c, threads.c, marshal.c: small
13761         fixes and comments around uses of mono_array_addr ().
13762
13763 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
13764
13765         * object.h, icall.c, monitor.c: object.GetHashCode ()
13766         implementation that supports the moving garbage collector.
13767
13768 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13769
13770         * icall.c, threads-types.h, threads.c: implemented finalizer for
13771         LocalDataStoreSlot.
13772
13773 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13774
13775         * metadata.c (mono_type_size): Add a fixme.
13776         (mono_type_stack_size): Ditto.
13777
13778         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
13779         'type_forwarders' field.
13780
13781         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
13782         attribute from net 2.0.
13783
13784         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
13785         from class.c.
13786
13787         * class.c (mono_class_setup_fields): Fix a warning.
13788         
13789         * class.c (mono_class_from_name): Add support for assemblyref entries
13790         in the EXPORTEDTYPE table.
13791
13792         * reflection.c: Add support for handling type forwarders under net 2.0.
13793
13794         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
13795         
13796 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13797
13798         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
13799         overwriting entries in ModuleBuild->types, also clean up the code
13800         a little. Fixes #77774.
13801
13802 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13803
13804         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
13805         load friend assembly info when present.
13806
13807 2006-03-14  Raja R Harinath  <rharinath@novell.com>
13808
13809         Fix crasher on gtest-158.cs.
13810         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
13811         the return value if the MonoClass we want is yet in an
13812         inconsistent state.
13813         * class.c (mono_class_create_from_typedef): Add an comment
13814         explaining an order dependency between mono_class_setup_parent and
13815         mono_class_setup_mono_type.
13816
13817 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13818
13819         * class.c: documentation updates and events bug fix.
13820
13821 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
13822
13823         * class.c: some cleanup, locking fixes.
13824
13825 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13826
13827         * class.c: fix the generics code to setup nested
13828         type info to the instantiated type (bug #77770).
13829
13830 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13831
13832         * marshal.c: fixed a few type correctness issues.
13833
13834 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13835
13836         * loader.c: the Set/Get/Addrtess array methods should be public.
13837
13838 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13839
13840         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
13841         
13842         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
13843         info->wrapper.
13844
13845 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13846
13847         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
13848
13849         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
13850
13851         * mempool.c (mono_mempool_alloc): Speed this up a bit.
13852         (mono_mempool_alloc0): Ditto.
13853
13854 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13855
13856         * socket-io.c:
13857         (create_object_from_sockaddr): it was allocating 4 extra bytes
13858         for the AF_UNIX data. Fixes bug #77747.
13859
13860 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13861
13862         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
13863
13864 2006-03-09  Dick Porter  <dick@ximian.com>
13865
13866         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
13867         Fixes bug 76966 again.
13868
13869 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
13870
13871         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
13872         names from r57532
13873         * appdomain.c: Bumped corlib version to 48 (due to r57532)
13874
13875 2006-03-07  Martin Baulig  <martin@ximian.com>
13876
13877         * object.c
13878         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
13879
13880 2006-03-07  Martin Baulig  <martin@ximian.com>
13881
13882         * class.c
13883         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
13884         regression introduced in r56970; see gtest-252.cs.
13885
13886         * loader.c (mono_get_method_constrained): Correctly handle generic
13887         methods; see gtest-253.cs.
13888
13889 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13890
13891         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
13892
13893 2006-03-04  Martin Baulig  <martin@ximian.com>
13894
13895         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
13896         compute the parent type at runtime, just like we're already doing
13897         it for interfaces.
13898
13899         * reflection.c
13900         (mono_reflection_bind_generic_parameters): Don't compute the
13901         parent type anymore.
13902
13903         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
13904
13905 2006-03-04  Martin Baulig  <martin@ximian.com>
13906
13907         * mono-debug-debugger.h
13908         (mono_debugger_create_notification_function): Allocate memory at
13909         runtime and return a pointer to it.
13910
13911 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
13912
13913         * assembly.c: Fix windows build.
13914         
13915         * assembly.c: Fix build.
13916
13917         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
13918
13919         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
13920         
13921 2006-03-03  Dick Porter  <dick@ximian.com>
13922
13923         * process.c
13924         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
13925         Check parameters before dereferencing them.  Fixes Aaron's part of
13926         bug 77393.
13927
13928 2006-03-03  Raja R Harinath  <rharinath@novell.com>
13929
13930         Fix performance regression.
13931         * loader.c (find_method_in_class): Add 'from_class' argument.
13932         Rename 'klass' argument to 'in_class'.  The signature is compared
13933         against the method in 'in_class', and the corresponding method is
13934         returned from 'from_class'.
13935         (find_method): Walk both 'in_class' and 'from_class' in parallel.
13936         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
13937         type definition and generic instantiation in parallel.
13938         (mono_get_method_constrained): Update to changes.
13939
13940 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13941
13942         * threads.c: make sure the domain is correct, too when doing
13943         mono_thread_attach ().
13944
13945 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
13948         windows. Fixes #77683.
13949
13950 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13951
13952         * object.h, *: introduced specific way to set elements of an array
13953         of references to be used as write barrier. Still need to audit the
13954         uses of mono_array_addr.
13955
13956 2006-03-01  Miguel de Icaza  <miguel@novell.com>
13957
13958         * object-internals.h: New field to cache the assmebly name, patch
13959         from Tambet Ingo (tambet@ximian.com)
13960
13961 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13962
13963         * decimal.h, class-internals.h, metadata-internals.h,
13964         file-io.h: mark a few function declarations as internal, to
13965         reduce the number of PLT entries.
13966
13967 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13968
13969         * file-io.c: fix typo in warning message.
13970
13971 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
13972
13973         * loader.c: on unix, lookup the "*A" version of a function
13974         if charset is auto as a second option before failing.
13975
13976 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13977
13978         * class.h (mono_class_inflate_generic_method): Revert to two
13979         argument version.
13980         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
13981         (mono_class_inflate_generic_method_full): Add.
13982         * class.c (mono_class_inflate_generic_method_full): Rename from
13983         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
13984         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
13985         * loader.c, reflection.c: Update to changes.
13986
13987 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13988
13989         * icall.c: const fixes and small improvements.
13990
13991 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13992
13993         * threadpool.c: for asynchronous connect(), enable the same workaround
13994         for BSD 6 as for the Mac. Fixes bug #77637.
13995
13996 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13997
13998         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
13999         formatted classes. Fixes #77524.
14000
14001 2006-02-24  Raja R Harinath  <rharinath@novell.com>
14002
14003         * class.c (inflate_generic_type): Add a couple more
14004         micro-optimizations.
14005         (inflate_generic_context): Don't use the 'gmethod' from
14006         'inflate_with'.
14007         (mono_class_inflate_generic_method): If the method has generic
14008         parameters, but the passed-in context doesn't have a 'gmethod',
14009         create one.  Use the possibly simplified generic instantiation
14010         from the declaring class instead of the one passed in.
14011
14012 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14013
14014         Make generic method signature and method header handling lazy.
14015         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
14016         (inflate_generic_header): Likewise.
14017         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
14018         parameter to avoid inflating types.
14019         (mono_get_inflated_method): Empty out.
14020         * class.h (mono_class_inflate_generic_method): Update to changes.
14021         * loader.c (mono_get_method_from_token): Don't parse signature for
14022         generic methods, nor methods of generic classes.
14023         (mono_method_signature): Rename from 'mono_method_signature'.
14024         Inflate signature on demand.
14025         (mono_method_get_header): Inflate method header on demand.
14026         * reflection.c: Update to changes.
14027
14028 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14029
14030         * metadata.c (mono_metadata_inflate_generic_inst): If the
14031         instantiation is closed, don't bother expanding it in the new
14032         context.
14033         * class.c (inflate_generic_class): If the generic instantiation
14034         doesn't change after inflation, return the argument itself.
14035         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
14036         Add bounds checks.
14037         (inflate_generic_context): If neither the generic class nor the
14038         generic method instantiations change, return the original context.
14039         * reflection.c (mono_method_get_object): Do
14040         'mono_get_inflated_method' before accessing the ->klass field.
14041         (inflate_mono_method): Don't create a MonoGenericMethod unless
14042         necessary.
14043         (inflate_method): Don't pass a constructed type as the declaring
14044         type of a methodbuilder.
14045
14046 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
14047
14048         * object.c: fix memory overwrite.
14049
14050 2006-02-22  Dick Porter  <dick@ximian.com>
14051
14052         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
14053         it doesn't work any more.
14054         (mono_threads_request_thread_dump): Fix unused variable warnings.
14055
14056 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14057
14058         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
14059         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
14060         the public header file.
14061
14062 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
14063
14064         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
14065
14066 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14067
14068         * class-internals.h, object.c: reduce the size of MonoVTable
14069         and store the interface_offsets array at negative offsets.
14070
14071 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14072
14073         * metadata.c: tweak table descriptors data structures to reduce
14074         size and runtime relocations.
14075
14076 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14077
14078         * marshal.c: fix some types and opcodes to be type-safe
14079         in marshaling wrappers.
14080
14081 2006-02-21  Ankit Jain  <jankit@novell.com>
14082
14083         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
14084
14085 2006-02-21  Raja R Harinath  <rharinath@novell.com>
14086
14087         * metadata.c (get_constraints): Relax debugging checks for monodis.
14088
14089 2006-02-21  Ankit Jain  <jankit@novell.com>
14090
14091         * metadata.c (mono_metadata_load_generic_params): Move the code
14092         checking for ambiguous generic params from here to mono/dis/get.c
14093         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
14094
14095 2006-02-21  Raja R Harinath  <harinath@gmail.com>
14096
14097         Fix assertion triggered when compiling nemerle.
14098         * class.c (mono_get_shared_generic_inst): Rename from
14099         get_shared_inst and make non-static.
14100         * loader.c (mono_get_shared_generic_method): New.  Used to create
14101         the MonoGenericContext-equivalent of a MonoGenericContainer.
14102         (mono_get_method_from_token): Initialize the 'context' field of
14103         the created MonoGenericContainer.
14104         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
14105         * metadata.c (get_constraints): Add sanity check.
14106         * class-internals.h: Add new internal methods.
14107
14108         * reflection.c (verify_safe_for_managed_space): New sanity check.
14109         Currently checks that owner-less generic parameters aren't allowed
14110         in managed space.
14111         (mono_type_get_object): Use it.
14112         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
14113         that are now in mono_type_get_object.
14114         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
14115
14116 2006-02-19  Raja R Harinath  <harinath@gmail.com>
14117
14118         * metadata.c (mono_type_create_from_typespec): Rename from
14119         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
14120         argument and caching of types in the generic container.
14121         (unwrap_arrays, find_generic_param): Remove.
14122         * metadata-internals.h: Update.
14123         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
14124
14125 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
14126
14127         * class.c (mono_class_get_exception_for_failure): Fix a warning.
14128
14129         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
14130         return values. Fixes #77581.
14131
14132         * class.c (mono_fnptr_class_get): Switch name and name_space.
14133
14134         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
14135         classes and add support for [In, Out] attributes.
14136         (mono_marshal_free_asany): Ditto. Fixes #77524.
14137
14138 2006-02-18  Raja R Harinath  <harinath@gmail.com>
14139
14140         * class.c (mono_class_from_generic_parameter): Make more robust to
14141         incomplete MonoGenericContainers from monodis.
14142
14143 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14144
14145         * class-internals.h: added some more exception types.
14146         * class.c, metadata.c: added a few checks to handle missing
14147         types.
14148
14149 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14150
14151         Use owner-less generic-params some more.
14152         * class.c (my_mono_class_from_generic_parameter): Remove.
14153         (mono_class_from_generic_parameter): Handle null image,
14154         param->name and param->owner.
14155         (mono_class_from_mono_type): Update.
14156         (mono_class_create_from_typespec): Remove 'container' parameter.
14157         If that parameter is non-null, the result is always inflated by
14158         'mono_class_get_full' anyway.
14159         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
14160         parameter.
14161         (mono_class_get_full): Update.
14162
14163         * class.c (inflate_generic_type) [GENERICINST]: If the generic
14164         instance is not open, don't bother inflating.
14165         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
14166         parse metadata for inflated classes.
14167         (_mono_class_get): Change GenericContext* parameter to
14168         GenericContainer*.
14169         (mono_class_create_from_typespec): Likewise.  Simplify, and
14170         implement trivially.  All the cases are handled in
14171         mono_class_from_mono_type.  Don't inflate returned class.
14172         (mono_class_get_full): Delegate GENERICINST optimization to
14173         inflate_generic_type.
14174         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
14175
14176 2006-02-16  Dick Porter  <dick@ximian.com>
14177
14178         * socket-io.c (create_object_from_sockaddr): Fix typo.
14179         (create_sockaddr_from_object): Check array lengths before
14180         potentially accessing items off the end.
14181         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14182         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14183         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14184         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14185         length checks to avoid wraparound overflows.
14186         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14187         contents of the array of sockets
14188         (hostent_to_IPHostEntry2)
14189         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14190         Check return value of inet_ntop ().
14191         (addrinfo_to_IPHostEntry): Fix typo
14192
14193 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14194
14195         Type metadata parsing doesn't use generic-instantiation information.
14196         * metadata.c (mono_metadata_parse_array_full): Change
14197         MonoGenericContext* parameter to MonoGenericContainer*.
14198         (mono_metadata_parse_type_full): Likewise.
14199         (mono_type_create_from_typespec_full): Likewise.
14200         (mono_metadata_parse_mh_full): Likewise.
14201         (mono_metadata_parse_generic_inst): Likewise.
14202         (do_mono_metadata_parse_generic_class): Likewise.
14203         (do_mono_metadata_parse_type): Likewise.
14204         * metadata-internals.h: Update to changes.
14205         * class.c (mono_class_find_enum_basetype): Likewise.
14206         (mono_class_setup_fields): Likewise.
14207         (mono_class_create_from_typespec): Likewise.
14208         * loader.c (method_from_methodspec): Likewise.
14209         (mono_get_method_from_token): Likewise.
14210         (mono_method_get_header): Likewise.
14211
14212 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14213
14214         * marshal.c: handle additional GENERICINST case (patch from
14215         Thong Nguyen <tum@veridicus.com>).
14216         Fix a few cases where LDIND_I/STIND_I was used for references.
14217
14218 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14219
14220         * reflection.c (mono_reflection_get_token): Remove unused variable.
14221
14222 2006-02-16  Martin Baulig  <martin@ximian.com>
14223
14224         * reflection.c (mono_reflection_get_token): Add support for fields
14225         in instantiated generic types.
14226
14227         * icall.c
14228         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14229
14230 2006-02-15  Martin Baulig  <martin@ximian.com>
14231
14232         * icall.c
14233         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14234         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14235         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14236         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14237
14238 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14239
14240         * class.c, metadata.c, metadata.h, object.c, icall.c,
14241         marshal.c: changed mono_type_get_underlying_type () to do
14242         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14243         Fixed handling of instantiated generic valuetypes (bug #75479).
14244
14245 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14246
14247         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14248         Delegate to mono_metadata_decode_value, and work on the returned value.
14249
14250         * icall.c (ves_icall_MonoType_GetGenericArguments):
14251         Add consistency check here too.
14252         
14253 2006-02-15  Ankit Jain  <jankit@novell.com>
14254
14255         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14256         char/short etc.
14257
14258 2006-02-15  Ankit Jain  <jankit@novell.com>
14259
14260         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14261         signed values, used only for representing lower bounds of arrays.
14262         (mono_metadata_parse_array_full): Use new
14263         mono_metadata_decode_signed_value to decode lower bounds.
14264
14265 2006-02-14  Martin Baulig  <martin@ximian.com>
14266
14267         * reflection.c
14268         (mono_reflection_get_token): Support "MonoGenericMethod" and
14269         "MonoGenericCMethod" and allow generic instances / methods.
14270
14271 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14272
14273         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14274         to obtain the terminal size using an ioctl.
14275
14276         * object.c (mono_nullable_init): Revert this as nullable reference
14277         types are not valid.
14278         (mono_nullable_box): Ditto.
14279
14280 2006-02-09  Dick Porter  <dick@ximian.com>
14281
14282         * threads.c (mono_thread_detach): Drop a reference to the thread
14283         we're detaching.
14284
14285 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14286
14287         * object.c (mono_nullable_init): Handle nullable reference types.
14288         (mono_nullable_box): Ditto. Fixes #77446.
14289
14290 2006-02-07  Martin Baulig  <martin@ximian.com>
14291
14292         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14293
14294 2006-02-07  Ankit Jain  <jankit@novell.com>
14295
14296         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14297         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14298         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14299         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14300         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14301         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14302
14303 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14304
14305         * class.c (mono_class_create_generic): Set type_token as well.
14306
14307         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14308         compatible with MS.
14309
14310 2006-02-02  Martin Baulig  <martin@ximian.com>
14311
14312         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14313         has never been used so far.
14314
14315 2006-02-02  Martin Baulig  <martin@ximian.com>
14316
14317         * mono-debug-debugger.h: Changed comment at the top of this file;
14318         the header is not installed, but it's safe to #include it from
14319         within the JIT.
14320
14321         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14322         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14323
14324 2006-02-02  Martin Baulig  <martin@ximian.com>
14325
14326         * mono-debug.h
14327         (MonoSymbolTable): Removed the `metadata_info' field.
14328
14329         * mono-debug.c
14330         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14331
14332         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14333         (mono_debugger_add_builtin_types): Removed.
14334         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14335         (mono_debugger_create_notification_function): We now operate on a
14336         pre-allocated area; take a `gpointer' and return `void'.
14337
14338         * mono-debug-debugger.c
14339         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14340         (mono_debugger_add_builtin_types): Removed.
14341
14342 2006-02-02  Martin Baulig  <martin@ximian.com>
14343
14344         * threads.c (mono_debugger_create_all_threads): New public method.
14345
14346 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14347
14348         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14349         breaks on several platforms.
14350
14351 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14352
14353         * assembly.c: the VS.NET build doesn't supply default values for
14354         MONO_ASSEMBLIES and MONO_CFG_DIR.
14355
14356 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14357
14358         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14359         helper function.
14360
14361         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14362
14363         * loader.c (method_from_memberref): Fix a warning.
14364
14365         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14366
14367         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14368         with explicit layout. Fixes #77433.
14369
14370 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14371
14372         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14373         max_interface_id is initialized before using it. Fixes #77398.
14374         (ves_icall_Type_GetInterfaces): Ditto.
14375
14376 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14377
14378         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14379         allocate memory for parameter attributes when parsing memberref
14380         signatures.
14381         * loader.c (mono_loader_set_error_method_load): Don't warn.
14382         (method_from_memberref): Ensure MissingMethodException gets thrown
14383         if method is not found.  Make warning more informative.
14384
14385 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14386
14387         Fix #77397
14388         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14389         return true if is byref.
14390         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14391         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14392         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14393
14394 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14395
14396         Fix tests/find-method.2.il
14397         * loader.c (find_method, find_method_in_class): Remove is_inflated
14398         argument.  Revert 2006-01-18 change.
14399         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14400         is generic, search for method in its generic definition.
14401         * class.c (mono_class_setup_vtable_general): Print generic
14402         arguments of generic types in debugging printf.
14403
14404 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14405
14406         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14407
14408         * threads.c (mono_threads_request_thread_dump): New helper function.
14409
14410 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14411
14412         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14413
14414 2006-01-25  Ankit Jain  <jankit@novell.com>
14415
14416         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14417         move definition to ..
14418         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14419         
14420 2006-01-25  Ankit Jain  <jankit@novell.com>
14421             Raja R Harinath  <rharinath@novell.com>
14422
14423         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14424         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14425         as necessary.
14426
14427 2006-01-25  Martin Baulig  <martin@ximian.com>
14428
14429         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14430         `MonoDebuggerThread' into debug-debugger.c.
14431
14432 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14433
14434         * profiler.c: fix printing of data.
14435
14436 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14437
14438         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14439           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14440
14441 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14442
14443         * object.c: fix deadlock related to string interning.
14444
14445 2006-01-23  Martin Baulig  <martin@ximian.com>
14446
14447         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14448
14449         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14450
14451 2006-01-23  Martin Baulig  <martin@ximian.com>
14452
14453         * mono-debug.h: Moved the prototypes of some functions which are
14454         used by the JIT here from mono-debug-debugger.h.
14455
14456 2006-01-21  Martin Baulig  <martin@ximian.com>
14457
14458         * Makefile.am: Don't install mono-debug-debugger.h.
14459
14460 2006-01-21  Martin Baulig  <martin@ximian.com>
14461
14462         * mono-debug-debugger.h: Enforce the private status of this header
14463         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14464         Moved some stuff from mono-debugger-jit-wrapper.h here.
14465
14466 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14467
14468         * class.c (mono_class_from_typeref): Add a sanity test to help
14469         catch lack of assembly load/search hooks.
14470
14471 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14472
14473         * marshal.c (emit_struct_conv): Relax the fields with same offset
14474         check even more. Fixes #77230.
14475
14476 2006-01-18  Martin Baulig  <martin@ximian.com>
14477
14478         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14479         argument; if false, we compare the uninstantiated signatures.
14480         (method_from_memberref): Compare the uninstantiated signatures;
14481         fixes #76417.
14482
14483 2006-01-18  Robert Jordan  <robertj@gmx.net>
14484
14485         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14486         Clear the weak link. Fixes bug #77170.
14487
14488         * gc.c (mono_gchandle_free):
14489         Reflect *-gc.c changes (tiny optimization).
14490
14491 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
14492
14493         * metadata.c (mono_metadata_signature_dup): Applied patch from
14494         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
14495         Fixes #77288.
14496
14497 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14498
14499         * marshal.c (emit_struct_conv): Allow fields with the same offset when
14500         marshalling from native to managed code. Fixes #77230.
14501
14502 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14503
14504         * threadpool.c: fix problem (Mac only) when more than one asynchronous
14505         connect. Fixes bug #77020.
14506
14507 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14508
14509         * class.c: fixed id assignement for nested interfaces (bug #77275).
14510         Added also better info for --print-vtable debugging.
14511
14512 2006-01-12  Martin Baulig  <martin@ximian.com>
14513
14514         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
14515         interfaces on-the-fly; fixes #76625.
14516
14517         * class-internals.h
14518         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
14519         don't need that anymore.
14520
14521 2006-01-12  Miguel de Icaza  <miguel@novell.com>
14522
14523         * socket-io.c
14524         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14525         To avoid initing the nested_classes when not needed I turned the
14526         PeerCredData as a toplevel internal class, as it has to be shared
14527         anyways. 
14528
14529         Fixes the CASA issue.
14530
14531 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14532
14533         * domain.c: Accessors for MonoJitInfo
14534
14535         * profiler-private.h: Add jitinfo to the end jit hook
14536
14537         * profiler.[ch]: Define new hooks, called after jitting which give
14538         the MonoJitInfo that was compiled
14539
14540 2006-01-10  Martin Baulig  <martin@ximian.com>
14541
14542         * class.c (mono_class_setup_events): Add support for generic
14543         classes; fixes #76440.
14544
14545 2006-01-06  Raja R Harinath  <rharinath@novell.com>
14546
14547         Fix #77160.
14548         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
14549         on passed-in method.
14550
14551 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14552
14553         * object.c (mono_runtime_invoke_array): Add Nullable support.
14554
14555         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
14556
14557 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
14558
14559         * file-io.c: Don't consider sockets as directory and avoid an endless
14560         loop. Fix bug #76966.
14561
14562 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14563
14564         * object.c (mono_nullable_init): New helper function.
14565         (mono_nullable_box): Ditto.
14566
14567         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
14568
14569         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
14570
14571         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
14572         
14573 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
14574
14575         * class.c (mono_class_is_assignable_from): Make T assignable to 
14576         Nullable<T>.
14577
14578 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
14579
14580         * appdomain.c: Bump corlib version to 46.
14581         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
14582         serialization purpose) and changed ves_icall_System_Reflection_
14583         Assembly_get_code_base signature to accept a boolean (to escape, or 
14584         not, the assembly code base).
14585
14586 2005-12-23  Dick Porter  <dick@ximian.com>
14587
14588         * icall.c: 
14589         * threads-types.h: 
14590         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
14591         CreateEvent icall now returns "created" boolean parameter.
14592
14593 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14594
14595         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
14596         #76967.
14597
14598         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
14599         when attr_klass is an interface. Fixes #77045.
14600
14601 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
14602
14603         * marshal.c (emit_struct_conv): Fix previous patch.
14604         
14605         * marshal.c (emit_struct_conv): Add a check for fields with the same
14606         offset.
14607
14608 2005-12-20  Raja R Harinath  <rharinath@novell.com>
14609
14610         Fix regression in Mono.C5.
14611         * class.c (mono_class_create_generic): If 'klass' is an interface
14612         set up the interface offsets.
14613         (mono_class_is_assignable_from): Don't throw away generic arguments.
14614
14615 2005-12-19  Raja R Harinath  <rharinath@novell.com>
14616
14617         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
14618         type parameters.
14619
14620 2005-12-15  Raja R Harinath  <rharinath@novell.com>
14621
14622         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
14623         dead store.
14624         (do_mono_metadata_parse_generic_class): Don't pass the current
14625         generic context when parsing the type being instantiated: it
14626         cannot use it, anyway.
14627
14628         * loader.c (method_from_memberref): Don't inflate a signature if
14629         it doesn't contain any type parameters.
14630
14631 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14632
14633         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
14634
14635 2005-12-14  Martin Baulig  <martin@ximian.com>
14636
14637         * class.c
14638         (mono_type_get_name_recurse): Don't return null for type
14639         parameters and open generic classes.
14640         (mono_class_setup_methods): Don't exclude generic instances.
14641         (mono_get_unique_iid): Use different IDs for different
14642         instantiations of the same generic type.
14643         (mono_class_setup_vtable): Only use setup_generic_vtable() for
14644         open generic instances; create a normal vtable for closed generic
14645         instances.
14646         (mono_class_setup_vtable_general): We're now also called for
14647         closed generic instances.
14648
14649         * reflection.c
14650         (mono_reflection_bind_generic_parameters): Correctly use
14651         mono_metadata_lookup_generic_inst() everywhere.
14652
14653 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
14654
14655         * object.c (mono_class_create_runtime_vtable): Call 
14656         mono_class_setup_vtable ().
14657
14658         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
14659         function.
14660         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
14661         #76959.
14662
14663         * loader.c (mono_loader_set_error_type_load): Print the type load
14664         warnings to the console so they are more visible to the user.
14665         (mono_loader_set_error_method_load): Ditto.
14666
14667         * reflection.c (ensure_runtime_vtable): Revert the last change as it
14668         is still broken.
14669         
14670         * reflection.c (ensure_runtime_vtable): Fix build.
14671
14672         * reflection.c (ensure_runtime_vtable): Disable an optimization which
14673         doesn't work in all cases.
14674
14675 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
14676
14677         * object.c (mono_array_new_full): Treat a single dimensional array
14678         with 0 lower bounds as an szarray. Fixes #76973.
14679
14680         * reflection.c (custom_attr_visible): Really fix this.
14681
14682 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
14683
14684         * reflection.c (custom_attr_visible): Allow nested public attributes
14685         as well.
14686
14687         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
14688         interface check.
14689
14690 2005-12-12  Raja R Harinath  <harinath@gmail.com>
14691
14692         * class.c (set_generic_param_owner): Delete.
14693         (mono_class_create_from_typedef): Don't set ->owner field of
14694         generic parameters to "param containers" of enclosing classes.
14695         * reflection.c (mono_reflection_initialize_generic_parameter):
14696         Likewise.
14697
14698 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
14699
14700         * reflection.c (custom_attr_visible): Fix build.
14701
14702 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
14703
14704         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
14705         private attributes.
14706         
14707         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
14708         handling of null parameter defaults.
14709
14710 2005-12-09  Raja R Harinath  <rharinath@novell.com>
14711
14712         * class.c (mono_class_from_generic_parameter): Don't set
14713         klass->generic_container.
14714         (my_mono_class_from_generic_parameter): Likewise.
14715
14716 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14717
14718         * reflection.c (load_public_key): Fix a warning.
14719         (method_encode_code): Fix unaligned accesses.
14720
14721 2005-12-07  Martin Baulig  <martin@ximian.com>
14722
14723         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
14724
14725         * reflection.c
14726         (write_generic_param_entry): Encode our custom attrs.
14727
14728         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
14729
14730 2005-12-07  Martin Baulig  <martin@ximian.com>
14731
14732         * reflection.c (encode_new_constraint): Removed; we don't use the
14733         `NewConstraintAttribute' anymore.
14734
14735 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14736
14737         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
14738         not fire a TypeResolve event when Assembly.GetType () is called.
14739
14740 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14741
14742         Beginning of support for nullable types in the runtime. Parts of
14743         this patch are from Martin.
14744
14745         * appdomain.c (MONO_CORLIB_VERSION): Bump
14746
14747         * domain.c (mono_init_internal): get the nullable type
14748
14749         * class.c (mono_class_is_nullable): New method
14750         (mono_class_get_nullable_param): New mehod
14751         (mono_class_create_generic): In types T? set cast_class to T
14752
14753         * class-internals.h (MonoDefaults): new nullable default class
14754         (mono_class_get_nullable_param, mono_class_get_nullable_param):
14755         new methods.
14756
14757 2005-12-05  Raja R Harinath  <rharinath@novell.com>
14758
14759         * metadata.c (select_container): New.  Refactor code to select the
14760         appropriate GenericContainer given the type of generic parameter
14761         we are looking for.
14762         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
14763         not a MonoGenericContext.  Use select_container.  Update parameters.
14764         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
14765         and MONO_TYPE_MVAR.
14766         (unwrap_arrays): Remove duplicate tests.
14767         (find_generic_param): Rename from 'has_same_context'.  Now walks a
14768         generic instantiated class to find any arguments that are generic
14769         parameters.
14770         (mono_type_create_from_typespec_full): Use find_generic_param to
14771         avoid evicting some generic instantiations from the typespec
14772         cache.
14773
14774 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
14775
14776         * reflection.c: fixed writing of doubles on ARM FPA.
14777
14778 2005-12-02  Robert Jordan  <robertj@gmx.net>
14779
14780         * icall.c: Fixed EventInfo.ReflectedType (#76829).
14781
14782 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14783
14784         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
14785         least on SUSE 10 they are not the same (on debian, they are just the
14786         same thing).
14787
14788 2005-12-01  Raja R Harinath  <rharinath@novell.com>
14789
14790         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
14791         DeclaringType for VARs and MVARs.
14792         * class.c (set_generic_param_owner): Fix initialization of owner
14793         fields.
14794
14795 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
14796
14797         * icall.c: fixed Enum.ToObject() to correctly convert the values.
14798
14799 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14800
14801         * threadpool.c: workaround for a bug that shows up on the Mac:
14802         select()+connect() on a blocking socket is not like it should
14803         be, so we proceed to connect() in that case, wasting the I/O
14804         threadpool thread until connect succeedes. Fixes bug #75436.
14805
14806 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14807
14808         * threadpool.c: fix typo when setting file descriptor states.
14809
14810 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14811
14812         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
14813         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14814         create a temporary signature container.
14815         (mono_metadata_parse_generic_param): Update to changes.
14816         (mono_type_create_from_typespec_full): Update to changes.
14817         * loader.c (method_from_memberref): Don't use a
14818         MonoGenericContainer while parsing a memberref signature.
14819         (method_from_methodspec): Remove dead-store of the 'container'
14820         variable.  It's overwritten before use.
14821
14822         * metadata.c (mono_type_create_from_typespec_full): Make debugging
14823         checks tighter.
14824         (mono_metadata_parse_generic_param): Likewise.
14825         * loader.c (find_method_in_class): Does not need a
14826         MonoGenericContainer.  Use 'mono_method_signature' rather than
14827         'mono_method_signature_full'.
14828         (find_method, mono_get_method_constrained, method_from_memberref):
14829         Update to changes.
14830
14831         * metadata.c (mono_type_create_from_typespec_full): Ensure that
14832         owner-less generic-parameters are never evicted from the typespec
14833         cache.
14834
14835         * loader.c (method_from_memberref): Don't use the current context
14836         when parsing signatures.
14837         (method_from_methodspec, mono_get_method_from_token): Update to changes.
14838
14839         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
14840         side-effects in g_assert.
14841         * loader.c (mono_get_method_from_token): Resolve klass earlier so
14842         that we don't potentially lose information.
14843
14844 2005-11-26  Dick Porter  <dick@ximian.com>
14845
14846         * icall.c:
14847         * threads.c: icalls to implement basic (ie, not named)
14848         System.Threading.Semaphore.
14849
14850 2005-11-24  Dick Porter  <dick@ximian.com>
14851
14852         * process.c
14853         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14854         Use GetProcessId() if it's available.
14855
14856 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
14857
14858         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
14859
14860 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14861             Ankit Jain  <jankit@novell.com>
14862
14863         * loader.c (mono_get_method_from_token): Initialize 'method' field
14864         of all generic parameters before parsing the signature.  Remove
14865         code that "fixed"-up MVAR references.
14866
14867 2005-11-23  Ankit Jain  <jankit@novell.com>
14868
14869         * metadata.c (mono_metadata_has_generic_params):
14870         (mono_metadata_load_generic_param_constraints):
14871         (mono_metadata_load_generic_params): Move duplicate code ...
14872         (mono_metadata_get_generic_param_row): ... here. Returns the
14873         first row-id in GenericParam table for a given owner (token).
14874         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
14875         prototype.
14876
14877 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14878             Ankit Jain  <jankit@novell.com>
14879
14880         * metadata.c (mono_metadata_class_equal): Pass signature_only when
14881         comparing VARs too.
14882         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
14883         type->data.generic_param only if the type is an MVAR.
14884         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
14885         leak owner-less VARs and MVARs into managed space.
14886
14887 2005-11-21  Martin Baulig  <martin@ximian.com>
14888
14889         * class-internals.h
14890         (MonoMethod): Moved the `generic_container' here from
14891         `MonoMethodNormal' since we now also need it for
14892         `MonoMethodPInvoke';
14893         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
14894         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
14895         an union containing both `MonoMethodNormal' and
14896         `MonoMethodPInvoke'.
14897
14898         * loader.c
14899         (mono_get_method_from_token): Allow implementing generic methods
14900         as interncalls.
14901
14902         * threads.c
14903         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
14904         icall.
14905
14906 2005-11-17  Dick Porter  <dick@ximian.com>
14907
14908         * icall.c: 
14909         * process.h: 
14910         * process.c: Split the Process Start_internal icall into
14911         ShellExecuteEx_internal and CreateProcess_internal, which are
14912         called depending on whether UseShellExecute is true.  Fixes bug
14913         76670.
14914
14915         * appdomain.c (MONO_CORLIB_VERSION): Incremented
14916
14917 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14918
14919         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
14920         'msize' parameters, use the information in 'mspec' instead.
14921         (emit_object_to_ptr_conv): Ditto.
14922
14923         * marshal.c (emit_struct_conv): Handle explicit layout structs with
14924         fields out of order. Fixes #76733.
14925
14926 2005-11-17  Ankit Jain  <jankit@novell.com>
14927
14928         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
14929
14930 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
14931
14932         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
14933           bug #76575.
14934
14935 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
14936
14937         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
14938         for types with non-auto layout. Fixes #76717.
14939
14940 2005-11-16  Ankit Jain  <jankit@novell.com>
14941
14942         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
14943         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
14944         if generic_context is null.
14945           (mono_metadata_generic_param_equal): param->owner can be null.
14946           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
14947         null.
14948
14949 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
14950
14951         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
14952         the correct value.
14953
14954 2005-11-15  Martin Baulig  <martin@ximian.com>
14955
14956         * object.c (set_value): Use mono_class_from_mono_type() instead of
14957         the hack for generic instances; fixes #76136.
14958
14959 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
14960
14961         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
14962         fields.
14963
14964         * image.c (load_metadata_ptrs): Initialize the new fields.
14965
14966         * reflection.c (create_dynamic_mono_image): Ditto.
14967
14968         * reflection.c (build_compressed_metadata): Use the new fields.
14969
14970         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
14971         icall.
14972
14973         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
14974         icall.
14975         
14976 2005-11-15  Ankit Jain  <jankit@novell.com>
14977             Raja R Harinath  <harinath@gmail.com>
14978
14979         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
14980         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
14981         new per-generic_container cache if the cached MonoType's context matches
14982         the current context.
14983           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
14984         to the expected context.
14985           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
14986
14987 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14988
14989         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
14990         we changed the signature of an icall.
14991         * icall.c: Modify to mono_double_ParseImpl return true/false 
14992         depending on the success, instead of throwing the exception. This will
14993         help us in Double.TryParse methods.
14994         
14995 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
14996
14997         * marshal.c (emit_marshal_object): Throw an exception when
14998         marshalling 'object' instead of crashing. Fixes #76696.
14999
15000 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15001
15002         * class-internals.h: Add prototype for mono_type_get_full_name ().
15003
15004 2005-11-11  Dick Porter  <dick@ximian.com>
15005
15006         * threads.c (mono_thread_manage): Make sure the main thread has
15007         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
15008
15009 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15010
15011         * loader.c (mono_loader_set_error_type_load): Log a warning to the
15012         console about the missing type.
15013         (mono_loader_set_error_method_load): Ditto.
15014
15015 2005-11-09  Miguel de Icaza  <miguel@novell.com>
15016
15017         * mono-config.c (mono_get_config_dir): Set the system defaults if
15018         none is specified.
15019
15020         * assembly.c (mono_set_dirs): New API entry point to set the
15021         assembly and the config directory in one call
15022
15023 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
15024
15025         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
15026         the ftnptr was created from a delegate in a domain other than the
15027         current domain. Fixes #75377.
15028
15029         * exception.h exception.c: Add mono_get_exception_not_supported ().
15030
15031 2005-11-08  Martin Baulig  <martin@ximian.com>
15032
15033         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
15034
15035 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
15036
15037         * security-manager.h: Added definitions to deal with strongname key 
15038         pairs bigger (and smaller) than 1024 bits.
15039         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
15040         adjust wrt the public key length being used.
15041
15042 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
15043
15044         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
15045           Windows build (r51396-51397).
15046
15047 2005-11-03  Martin Baulig  <martin@ximian.com>
15048
15049         * class.c (mono_class_setup_vtable_general): Also add generic
15050         methods to the vtable; fixes #76581.
15051
15052 2005-11-01  Miguel de Icaza  <miguel@novell.com>
15053
15054         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
15055         sure that we lookup GetString method from the System.Text.Encoding
15056         class, not the derived class or we get an empty method.
15057
15058         Fixed class #76612.
15059
15060 2005-10-25  Miguel de Icaza  <miguel@novell.com>
15061
15062         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
15063         if it has been previously set (embedders). 
15064
15065         Make mono_set_rootdir available also on Unix.
15066
15067 005-10-24  Robert Jordan  <robertj@gmx.net>
15068
15069         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
15070
15071 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15072
15073         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
15074         only calls which are made to native code use this flag.
15075
15076         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
15077
15078 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15079
15080         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
15081         Add support for FieldBuilders.
15082
15083 2005-10-29  Martin Baulig  <martin@ximian.com>
15084
15085         * mono-debug.c
15086         (mono_debug_using_mono_debugger): New public method; returns
15087         whether we're running inside the debugger.
15088
15089 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
15090
15091         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
15092         for Method/Constructor/FieldBuilders.
15093
15094 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15095
15096         * reflection.c (module_add_cattrs): Save custom attributes for global methods
15097         and fields as well.
15098
15099 2005-10-26  Martin Baulig  <martin@ximian.com>
15100
15101         * mono-debug-debugger.c
15102         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
15103
15104 2005-10-24  Raja R Harinath  <harinath@gmail.com>
15105
15106         * icall.c (base64_to_byte_array): Don't pass an out-of-range
15107         integer to isspace.
15108
15109 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15110
15111         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
15112         when passing valuetypes byref. Fixes #76502.
15113
15114 2005-10-19  Jackson Harper  <jackson@ximian.com>
15115
15116         * profiler.c: Don't put a . in front of types that are not in a
15117         namespace.
15118
15119 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15120
15121         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
15122
15123 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
15124
15125         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
15126         #76436.
15127         (mono_marshal_get_ldflda_wrapper): Fix a warning.
15128
15129 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15130
15131         * assembly.c metadata-internals.h icall.c: Define an additional
15132         parameter for mono_assembly_name_parse_full, so we can avoid creating
15133         S.R.AssemblyName.Version when no version info wasn't passed.
15134         
15135 2005-10-09  Miguel de Icaza  <miguel@novell.com>
15136
15137         * class.c (mono_type_get_full_name): Reimplement method that was
15138         removed. 
15139
15140         * image.c: Some docs
15141
15142 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15143
15144         * profiler.c (output_newobj_profile): Fix printing of Total memory
15145         on x86.
15146
15147 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15148
15149         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
15150
15151 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
15152
15153         * threads.c: remove debug output.
15154
15155 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15156
15157         * threads.c (mono_thread_manage): Fix crashes if more than 64
15158         threads need to be aborted. Hopefully fixes #75899.
15159
15160         * assembly.c (mono_stringify_assembly_name): New helper function.
15161
15162         * class.c: Use mono_stringify_assembly_name instead of the similar
15163         static function.
15164
15165         * assembly.h assembly.c: Add support for calling a postload search 
15166         hook if an assembly cannot be loaded.
15167
15168         * appdomain.c: Register new search hooks which call the AssemblyResolve
15169         events in AppDomain. Fixes #75231
15170
15171 2005-10-07  Martin Baulig  <martin@ximian.com>
15172
15173         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
15174         methods without debug info.
15175
15176 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15177
15178         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15179         wrappers.
15180
15181 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15182
15183         * file-io.c: now that we return symlinks, use lstat and, when the file
15184         is a symbolic link, stat, to get the file attributes. Also avoid the
15185         conversion to/from utf16/external.
15186
15187 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15188
15189         * class.c (mono_class_layout_fields): Compute klass->has_references
15190         correctly if an embedded valuetype is not yet initialized. Fixes
15191         #76331.
15192
15193 2005-10-04  Martin Baulig  <martin@ximian.com>
15194
15195         * metadata.c
15196         (mono_metadata_load_generic_param_constraints): New public
15197         function; splitted the constraints loading out from
15198         mono_metadata_load_generic_params().
15199
15200         * class.c (mono_class_create_from_typedef): Call
15201         mono_metadata_load_generic_param_constraints() after setting up
15202         the type and creating our parent; fixes #75329.
15203
15204 2005-10-04  Martin Baulig  <martin@ximian.com>
15205
15206         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15207         non-dynamic parent classes.
15208
15209 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15210
15211         * file-io.c : win32 build fix (ETXTBSY seems not found).
15212
15213 2005-10-04  Martin Baulig  <martin@ximian.com>
15214
15215         * reflection.c
15216         (mono_image_get_methodspec_token): Make the cache actually work;
15217         fixes #75974.
15218
15219 2005-10-04  Martin Baulig  <martin@ximian.com>
15220
15221         * class.c (mono_class_name_from_token): Removed the unneccessary
15222         `MonoGenericContext *' argument.
15223
15224 2005-10-04  Martin Baulig  <martin@ximian.com>
15225
15226         * loader.c
15227         (method_from_methodspec): Make the caching work again; fixes the
15228         performance regression from #76262.
15229
15230 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15231
15232         * file-io.c:
15233         * file-io.h:
15234         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15235         GetFileSystemEntries that performs the same work but without going
15236         into io-layer, locking, etc.
15237
15238 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15239
15240         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15241         ThreadState_Stopped as well. Fixes #76047.
15242
15243 2005-09-29  Martin Baulig  <martin@ximian.com>
15244
15245         * class.c
15246         (inflate_generic_context): If the new context has a `gmethod', set
15247         its `container' that that gmethod's `container'.
15248
15249         * metadata.c
15250         (mono_metadata_parse_generic_param): Simplify things;
15251         `generic_container = generic_context->container;' is just fine.
15252
15253         * loader.c (method_from_methodspec): Code cleanups.
15254
15255 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15256
15257         * decimal.c: fix warning (and let gcc generate correct
15258         code on ARM with optimizations).
15259
15260 2005-09-28  Martin Baulig  <martin@ximian.com>
15261
15262         * loader.c
15263         (method_from_memberref): Added `MonoGenericContext *class_context'
15264         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15265         (method_from_methodspec): If we're a memberref, use the enclosing
15266         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15267
15268 2005-09-28  Martin Baulig  <martin@ximian.com>
15269
15270         * object.c (mono_runtime_invoke_array): Added support for
15271         MONO_TYPE_GENERICINST; fixes #75917.
15272
15273 2005-09-27  Martin Baulig  <martin@ximian.com>
15274
15275         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15276         `k->byval_arg.type' to determine the actual type.
15277
15278         * loader.c (method_from_methodspec): Removed some hacks.
15279
15280 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15281
15282         * class-internals.h (mono_field_is_deleted): Do the test for
15283         rtspecialname before we check the actual name of the field. This
15284         prevents us from dereferencing a pointer into the string table,
15285         saving us from accessing a few pages
15286
15287         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15288         macros. This will allow a deadlock debugger to easily be plugged
15289         in.
15290
15291 2005-09-27  Martin Baulig  <martin@ximian.com>
15292
15293         * loader.c (method_from_methodspec): Create a "signature"
15294         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15295
15296 2005-09-27  Martin Baulig  <martin@ximian.com>
15297
15298         * class.c
15299         (inflate_generic_class): Correctly set the new context's
15300         container.
15301
15302         * loader.c
15303         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15304         instead of a `MonoGenericContext *'.
15305         (mono_method_signature_full): Take a `MonoGenericContainer *'
15306         instead of a `MonoGenericContext *'.
15307
15308         * metadata.c
15309         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15310         instead of a `MonoGenericContext *'.
15311         (mono_metadata_parse_method_signature_full): Likewise.
15312
15313 2005-09-26  Martin Baulig  <martin@ximian.com>
15314
15315         * class.c
15316         (mono_class_from_generic_parameter): Set `klass->generic_container'
15317         (mono_class_from_generic_parameter): Likewise.
15318         (mono_bounded_array_class_get): We inherit the generic container
15319         from the element class.
15320
15321         * loader.c
15322         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15323         argument rather than computing it here.
15324         (method_from_memberref): Correctly set the generic context before
15325         parsing the signature.  Fixes #75681.
15326
15327 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15328
15329         * object.c (mono_class_has_special_static_fields): Fix warnings.
15330
15331 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15332
15333         * assembly.c: Add parse_public_key function, to
15334         par the public keys. Also added mono_assembly_name_parse_full,
15335         to define it the parsed key should be freed or not.
15336         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15337         to parse a long format assembly name.
15338         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15339         private, since calling it to preserve the key requires
15340         freeing it manually.
15341         
15342 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15343
15344         * locales.c : removed HAVE_ICU part.
15345
15346 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15347
15348         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15349         field_is_special_static if the klass has no special static fields.
15350
15351         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15352         (MonoCachedClassInfo): Likewise.
15353
15354         * object.c (mono_class_has_special_static_fields): New helper function.
15355
15356 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15357
15358         * class.c (mono_class_create_from_typedef): Don't call 
15359         interfaces_from_typedef_full for enums.
15360         (mono_class_create_from_typedef): Compute the base types of enums directly
15361         without calling mono_class_setup_fields ().
15362         (mono_class_find_enum_basetype): New helper function.
15363
15364         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15365         one place inside the string heap.
15366         
15367 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15368
15369         * class.c: locking fixes, code cleanups, some docs added.
15370         Allocate some data structures in the image mempool.
15371
15372 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15373
15374         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15375         the example code.
15376         
15377 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15378
15379         * class-internals.h, class.c, reflection.c: reduce memory taken by
15380         MonoClass.
15381
15382 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15383
15384         * metadata.c, metadata.h, loader.h: documentation updates, code and
15385         API cleanups.
15386
15387 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15388
15389         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15390         the example code.
15391
15392         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15393         page faults caused by the runtime while reading metadata.
15394
15395 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15396
15397         * socket-io.c: the field names were changed 3 months ago and no one
15398         realized until bug #76077 got filed!
15399
15400 2005-09-20  Martin Baulig  <martin@ximian.com>
15401
15402         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15403
15404 2005-09-20  Martin Baulig  <martin@ximian.com>
15405
15406         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15407         write the rank into the class entry.
15408
15409 2005-09-20  Martin Baulig  <martin@ximian.com>
15410
15411         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15412
15413 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15414
15415         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15416
15417         * icall.c (custom_attrs_defined_internal): New icall.
15418
15419         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15420         function.
15421         (mono_custom_attrs_construct_by_type): New helper function.
15422
15423 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15424
15425         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15426         terminate the resulting string. Fixes #76123.
15427
15428 2005-09-16  Martin Baulig  <martin@ximian.com>
15429
15430         * mono-debug.c
15431         (mono_debug_add_method): Ignore inflated methods for the moment.
15432
15433 2005-09-14  Martin Baulig  <martin@ximian.com>
15434
15435         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15436
15437 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15438
15439         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15440         return a success/failure indication.
15441         (mono_metadata_interfaces_from_typedef_full): Ditto.
15442         (get_constraints): Ditto.
15443
15444 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15445
15446         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15447         
15448         * marshal.c (emit_marshal_array): Add support for returning string
15449         arrays from delegates. Fixes #76063.
15450
15451         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15452
15453 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15454
15455         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15456         icall.
15457
15458 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15459
15460         * reflection.c icall.c: Fix after mono_get_exception_type_load
15461         signature change.
15462
15463         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15464         (mono_assembly_load_reference): Use the new helper.
15465
15466         * class-internals.h (MonoLoaderError): New structure containing 
15467         information about type loading errors.
15468
15469         * class-internals.h loader.c: Add APIs to store per-thread loader
15470         error information.
15471
15472         * loader.c class.c: Set the loader error if needed.
15473
15474         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15475
15476 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15477
15478         * decimal.c: fixed to handle the broken ARM fp format.
15479
15480 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15481
15482         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15483         broken.
15484
15485 2005-09-06  Martin Baulig  <martin@ximian.com>
15486
15487         * domain.c (supported_runtimes): Added v2.0.50727.
15488
15489 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15490
15491         * culture-info.h: reduce the size of some structures.
15492
15493 2005-09-05  Martin Baulig  <martin@ximian.com>
15494
15495         Reflect latest API changes in the August CTP.
15496
15497         * icall.c
15498         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
15499         ("MonoType.HasGenericArguments"): Removed.
15500         ("MonoMethod.BindGenericParameters"): Renamed to
15501         "MakeGenericMethod".
15502         ("MethodBuilder.BindGenericParameters"): Renamed to
15503         "MakeGenericMethod".    
15504
15505 2005-09-05  Martin Baulig  <martin@ximian.com>
15506
15507         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
15508
15509 2005-09-05  Martin Baulig  <martin@ximian.com>
15510
15511         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15512
15513         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
15514         generic_container is non-NULL.
15515
15516 2005-09-05  Martin Baulig  <martin@ximian.com>
15517
15518         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15519
15520         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
15521
15522 2005-08-29  Michal Moskal  <malekith@nemerle.org>
15523
15524         * reflection.c (encode_locals,
15525         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
15526         for large generic types.
15527
15528 2005-09-05  Martin Baulig  <martin@ximian.com>
15529
15530         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15531
15532         * class.c (mono_dup_array_type): New public method.
15533         (mono_metadata_signature_deep_dup): New public method.
15534         (dup_type): Correctly duplicate array and function types.
15535
15536 2005-09-05  Martin Baulig  <martin@ximian.com>
15537
15538         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15539
15540         * reflection.c (get_default_param_value_blobs): Handle generic types
15541         and generic methods.
15542
15543 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
15544
15545         * class.c: Fixed error reporting (method/class were inversed) for 
15546         inheritance demands.
15547         * security-manager.c|h: Added the AppDomain when calling the managed
15548         System.Security.SecurityManager.InheritanceDemand method.
15549
15550 2005-09-01  Raja R Harinath  <rharinath@novell.com>
15551
15552         * reflection.c (encode_marshal_blob): 'marshaltype' and
15553         'marshaltyperef' are alternate sources for the custom marshaler
15554         name.
15555
15556 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
15557
15558         * class.c: fix creation of array classes with rank == 1
15559         (patch by Ankit Jain <jankit@novell.com>).
15560
15561 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
15562
15563         * object.c: fix check for creating the bound data for arrays vs
15564         szarrays.
15565
15566 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15567
15568         * object.c: configuration file name is now based on the executable name,
15569         not the image name. Fixes bug #75931.
15570
15571 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15572
15573         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
15574         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
15575
15576 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15577
15578         * rand.c: Use wincrypt.h instead of WinCrypt.h.
15579
15580 2005-08-24  Ankit Jain  <jankit@novell.com>
15581             Raja R Harinath  <rharinath@novell.com>
15582
15583         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
15584           called by it recursively.
15585           (mono_class_init): Remove special case in pending_init handling, since it's
15586           superseded by the fix to mono_class_from_typeref.
15587
15588 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15589
15590         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
15591         BROKEN_THREAD_START stuff.
15592
15593 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15594
15595         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
15596         trampoline.
15597
15598         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
15599         
15600         * object.c (mono_delegate_ctor): Replace the original function address with
15601         a delegate trampoline.
15602
15603 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
15604
15605         * icall.c: add boolean argument to base64_to_byte_array and 
15606         InternalFromBase64String to control whether a whitespace-only string
15607         is allowed (or should casue a FormatException to be thrown). We need
15608         this as the behavior has changed between MS.NET 1.x and 2.0, and we
15609         to match the MS behaviour in both profiles.
15610         * appdomain.c: Bump corlib version.
15611
15612 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15613
15614         This patch implements a big portion of publisher policy
15615         support, used to bind assembly versions and redirect
15616         one assembly from version A to version B.
15617
15618         * assembly.c:
15619         New GSList loaded_assembly_bindings, for storing the cached
15620         assembly bindings.
15621         (assembly_binding_maps_name): New static function for checking if a 
15622         assembly binding information maps an assembly name.
15623         (mono_assembly_binding_info_free): New function for freeing
15624         assembly binding information resources.
15625         (get_publisher_policy_info): New static function for retrieving 
15626         assembly binding information from a MonoImage.
15627         (compare_versions): New static function for comparing an assembly
15628         binding information data and the version of an assembly name.
15629         (check_policy_versions): New static function for checking if an
15630         assembly binding info mapping an assembly name is valid for it.
15631         (mono_assembly_load_publisher_policy): New static function for
15632         loading the 'policy.major.minor.MyAssembly' image for an assembly
15633         with an assembly name 'aname'.
15634         (mono_assembly_bind_version): New static function for updating
15635         assembly redirection.
15636         (mono_assembly_apply_binding): New static function for applying
15637         assembly binding.
15638         (search_binding_loaded): New static function for searching 
15639         loaded assembly binding infos in the cache domain.
15640         (mono_assembly_load_full): Don't apply assembly binding for
15641         reflection only assemblies.
15642
15643         * metadata-internals.h: Add MonoAssemblyBindingInfo,
15644         which contains information about assembly binding. Also
15645         declare signature for mono_config_parse_publisher_policy ()
15646         function, used to retrieve pub policy info.
15647         
15648         * mono-config.c:
15649         (publisher_policy_start): New static function used to parse publisher 
15650         policy config files.
15651         (publisher_policy_parser): New static MonoParseHandler containing 
15652         the functions used when parsing config files.
15653         (mono_config_parse_publisher_policy): New function for parsing
15654         publisher policy files.
15655         
15656 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15657
15658         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
15659
15660         * marshal.c (mono_delegate_free_ftnptr): Ditto.
15661
15662         * object.c (mono_get_addr_from_ftnptr): New helper function.
15663
15664         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
15665
15666         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15667
15668 2005-08-19  Dick Porter  <dick@ximian.com>
15669
15670         * threads.c, threads.h, appdomain.c, appdomain.h,
15671         profiler-private.h, monitor.c, object.c, object-internals.h,
15672         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
15673         store the thread ID, so it can hold a 64 bit value if needed.
15674
15675 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15676
15677         * reflection.c (mono_reflection_create_dynamic_method): Store the
15678         handle class into the method references as well so ldtoken works in
15679         dynamic methods.
15680
15681         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
15682         types.
15683
15684 2005-08-19  Ankit Jain <jankit@novell.com>
15685
15686         Fix #75847.
15687         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
15688           here rather than using the method signature of a arbitrary function
15689           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
15690           two arguments.
15691           Hack done with Harinath.
15692
15693 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15694
15695         * threadpool.c: disable printing stack traces when we get a exception
15696         in a threadpool thread. I need to do more testing to figure out which
15697         cases actually print this. Fixes bug #75828.
15698
15699 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15700
15701         * icall.c: there might be ignored whitespace after the last '='. This
15702         fixes length computation and bug #75840.
15703
15704 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
15705
15706         * assembly.c (mono_assembly_load_full): Consider .exe extension as
15707         well. Fixes #75809.
15708
15709         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
15710         #75784.
15711         
15712         * reflection.c (create_custom_attr_data): Ditto.
15713
15714 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
15715
15716         * locales.c, culture-info.h : removed RegionLCIDMap.
15717         * culture-info-tables.h : regenerated.
15718
15719 2005-08-16  Martin Baulig  <martin@ximian.com>
15720
15721         * class.c (mono_type_get_name_recurse): Small fix.
15722
15723 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
15724
15725         * locales.c : indentation fixie.
15726
15727 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
15728
15729         * object-internals.h,
15730           locales.h,
15731           locales.c,
15732           culture-info.h,
15733           icall.c : added RegionInfo table support.
15734         * culture-info-table.h : regenerated for region support.
15735
15736 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
15737
15738         * reflection.c (resolve_object): handle all kinds of MonoMethod
15739         including generic ones
15740
15741 2005-08-12  Ankit Jain <jankit@novell.com>
15742
15743         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
15744           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
15745
15746 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
15747
15748         * process.c: Don't close a thread handle when it's NULL. This is a
15749         workaround for bug #75733.
15750
15751 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15752
15753         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
15754
15755 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
15756
15757         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
15758
15759 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15760
15761         * threadpool.c: if a work item in the thread pool has a callback that
15762         catches a exception, don't propagate it after invoking the callback.
15763         Fixes bug #75336.
15764
15765 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15766
15767         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
15768
15769         * class-internals.h (MonoCachedClassInfo): Add some new fields.
15770
15771         * class.c (mono_class_init): Load field info lazily in the AOT case.    
15772
15773         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
15774
15775 2005-08-03  Ankit Jain  <jankit@novell.com>
15776
15777         Fix #75683.
15778         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
15779           PInvoke calling convention is 0.
15780
15781 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
15782
15783         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
15784         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
15785
15786 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
15787
15788         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
15789         to handle threads not started by the GC (patch by Michael Meeks
15790         <michael.meeks@novell.com>).
15791
15792 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
15793
15794         * reflection.c: Make buffer used in emitting types larger for some
15795         big generic types (patch by Michal Moskal).
15796
15797 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15798
15799         * mono-debug.c: Fix some (not all) alignment problems.
15800
15801 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15802
15803         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
15804         Invoke mono_image_load_from_data_full passing the refonly
15805         parameter.
15806
15807         * assembly.c
15808         (mono_assembly_open_from_bundle): Add the refonly argument, 
15809         in order to pass it to other methods it calls to.
15810         (do_mono_assembly_open): Add the refonly argument, in order 
15811         to pass it to other methods it calls to.
15812         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
15813         the refonly parameter to it.
15814
15815         * image.c: Add loaded_images_refonly_hash and
15816         loaded_images_refonly_guid_hash to cache the reflection
15817         only loaded images.
15818         (mono_images_init): Initialize the hash tables used for
15819         caching the reflection only images.
15820         (load_modules): Invoke mono_image_open_full passing the refonly
15821         parameter to load the modules the correct way.
15822         (build_guid_table): Add the refonly argument, to re-build the 
15823         correct hash table.
15824         (do_mono_image_open): Added the refonly argument, in order to
15825         define it for the loaded image.
15826         (mono_image_loaded_full): New function, which receives an
15827         additional parameter to look for the image in the refonly or
15828         non-refonly section.
15829         (mono_image_loaded): Updated, using mono_image_loaded_full.
15830         (mono_image_loaded_by_guid_full): The same case that happens
15831         with mono_image_loaded_full.
15832         (mono_image_loaded_by_guid): Likewise.
15833         (register_image): Use the ref_only variable inside MonoImage
15834         to decide in which hash table store the current image.
15835         (mono_image_open_from_data_full): Rename
15836         mono_image_open_from_data to mono_image_open_from_data_full,
15837         adding the refonly argument, to define the ref_only variable 
15838         inside MonoImage.
15839         (mono_image_open_from_data): Return 
15840         mono_image_open_from_data_full.
15841         (mono_image_open_full): Rename mono_image_open to
15842         mono_image_open_full, receiving the new refonly argument,
15843         to pass it to inner methods.
15844         (mono_pe_file_open): Update this function, to open
15845         a MonoImage as a non-refonly image.
15846         (mono_image_close): Use the refonly variable inside
15847         MonoImage to remove the image from the correct caches.
15848
15849         * image.h: Add the signatures of mono_image_open_full,
15850         mono_image_open_from_data_full, mono_image_loaded_full,
15851         mono_image_loaded_by_guid_full.
15852
15853         * metadata-internals.h: Add the ref_only field to 
15854         MonoImage.
15855         
15856 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15857
15858         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
15859         Fix the last behavior, which used to load the assemblies and
15860         extract MonoReflectionAssemblyName information, instead of
15861         extract it from the metadata tables. Needed for Reflection
15862         Only assemblies.
15863         
15864 2005-07-29  Martin Baulig  <martin@ximian.com>
15865
15866         * mono-debug-debugger.c
15867         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
15868         not initialized.
15869
15870         * mono-debug.c
15871         (mono_debug_address_from_il_offset): Check whether we have
15872         debugging support before attempting to take the lock.
15873         (mono_debug_source_location_from_address): Likewise.
15874         (mono_debug_source_location_from_il_offset): Likewise.
15875         (mono_debug_il_offset_from_address): Likewise.
15876         (mono_debug_address_from_il_offset): Likewise.
15877
15878 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
15879
15880         * class.c (mono_class_from_name_case): Add support for dynamic images.
15881         Fixes #75650.
15882
15883         * object.c (mono_class_compute_gc_descriptor): Add a workaround
15884         for #75479.
15885
15886 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15887         
15888         * reflection.c (mono_method_get_object): Fix warning.
15889
15890 2005-07-28  Martin Baulig  <martin@ximian.com>
15891
15892         * mono-debug.c
15893         (mono_debug_add_wrapper): Also write the wrapper type.
15894
15895 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15896
15897         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
15898         
15899         * class.c (mono_class_init): Avoid reading nested classes if the AOT
15900         data indicates the class has none.
15901
15902 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
15903
15904         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
15905         loader lock with the debugger lock. Prevents deadlocks for beagle.
15906
15907         Beagle can now run on an smp box for a weekend without any
15908         issues. Woohoo!
15909
15910 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
15911
15912         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
15913         in a module. Fixes #75629.
15914
15915 2005-07-26  Martin Baulig  <martin@ximian.com>
15916
15917         * mono-debug.c (mono_debug_add_wrapper): New static method.
15918         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
15919         interncall or a wrapper.
15920
15921         * mono-debug.h (MonoDebugWrapperData): New public typedef.
15922         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
15923         (MONO_DEBUGGER_VERSION): Bump to 51.
15924
15925         * mono-debug-debugger.c
15926         (mono_debugger_add_type): Removed this empty function.
15927         (mono_debugger_add_method): Likewise.
15928
15929 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
15930
15931         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
15932         before accessing method->slot.
15933
15934 2005-07-21  Jb Evain  <jbevain@gmail.com>
15935
15936         * reflection.c (method_encode_clauses/class): Handle filters clauses.
15937         Fixes #75010.
15938
15939 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
15940
15941         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
15942         #75587.
15943
15944 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15945
15946         * image.h image.c: Add mono_image_get_guid () API function.
15947
15948 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
15949
15950         There were issues when multiple threads tried to load
15951         assemblies. A deadlock was created between assemblies_mutex and
15952         mono_domain_assemblies_lock. This fixes the issue by making the
15953         assembly ref counting be lock free. See bug 75586.
15954         
15955         * image.c (mono_image_close): The add ref function here was using
15956         Interlocked operations while the unref was using a mutex and a
15957         --. I don't think this was ever a bug that would be exposed in a
15958         non-pendantic way (ie, by an embedder doing a ref on one thread
15959         and an unref on another), but for the sake of correctness, this is
15960         now Interlocked.
15961
15962         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
15963         (mono_assembly_load_reference): Call mono_assembly_addref rather
15964         than touching the refcount ourselves.
15965         (mono_assembly_close): Use InterlockedDecrement to unref the
15966         assembly. Don't acquire the lock unless it is actually needed.
15967
15968 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
15969
15970         * class.c (mono_class_layout_fields): Fix calculation of has_references
15971         for generic types.
15972
15973 2005-07-12  Martin Baulig  <martin@ximian.com>
15974
15975         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15976
15977         * metadata.c
15978         (mono_type_hash): Provide better hashing for generic instances.
15979         (mono_generic_inst_hash): Improve hashing.
15980         (mono_generic_class_hash): Likewise.
15981
15982         * reflection.c (mymono_metadata_type_hash): Improve hashing for
15983         generic instances.
15984
15985 2005-07-12  Martin Baulig  <martin@ximian.com>
15986
15987         * reflection.c (mono_reflection_create_runtime_class): Remove the
15988         hack for generic type definitions and non-`Run' assemblies.
15989         (mono_reflection_bind_generic_parameters): Also use
15990         `klass->wastypebuilder' to check for TypeBuilders.
15991
15992 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
15993
15994         * class.c (mono_class_layout_fields): Fix calculation of has_references
15995         for generic types.
15996
15997         * class.c (inflate_generic_class): Fix a leak.
15998         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
15999         for generic types.
16000
16001 2005-07-11  Martin Baulig  <martin@ximian.com>
16002
16003         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
16004         on error.
16005
16006 2005-07-11  Martin Baulig  <martin@ximian.com>
16007
16008         * loader.c (find_method): Also lookup in
16009         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
16010
16011 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16012
16013         * appdomain.c (mono_domain_unload): Don't free the error message
16014         before passing it to mono_get_exception_...
16015
16016         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
16017         
16018 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
16019
16020         * threads.c: try to better guess an available RT signal (bug #75387).
16021
16022 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16023
16024         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
16025         and CACHE_OBJECT.
16026
16027 2005-07-07  Martin Baulig  <martin@ximian.com>
16028
16029         * class.c (mono_type_get_name_full): Return NULL for
16030         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
16031         fixes #75408.
16032
16033 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16034
16035         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
16036         exit the appdomain as well being aborted.
16037
16038         * threadpool.c: Create all threadpool threads inside the root appdomain, and
16039         change back to the root domain after calling managed code. This enables
16040         appdomains using threadpools to be unloaded.
16041
16042 2005-07-07  Martin Baulig  <martin@ximian.com>
16043
16044         * class-internals.h
16045         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
16046         into `MonoDynamicGenericClass' since we only need it for dynamic
16047         types.
16048
16049         * reflection.c (mono_class_bind_generic_parameters): We don't need
16050         to compute the `parent' here.
16051
16052 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
16053
16054         * culture-info-table.h : regenerated.
16055
16056 2005-07-06  Martin Baulig  <martin@ximian.com>
16057
16058         * icall.c
16059         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
16060
16061         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
16062
16063 2005-07-06  Martin Baulig  <martin@ximian.com>
16064
16065         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
16066         we're doing a signature-only comparision; fixes #74945.
16067
16068 2005-07-06  Martin Baulig  <martin@ximian.com>
16069
16070         * class-internals.h (MonoGenericClass): Moved some things out into
16071         a new `MonoInflatedGenericClass' type.  
16072         (MonoInflatedGenericClass): New type; the `klass' of a
16073         `MonoGenericClass' is now computed lazyly in
16074         mono_get_inflated_generic_class().      
16075
16076         * class.c (mono_get_inflated_generic_class): New public function.
16077         (mono_class_inflate_generic_method): Removed the unused
16078         `MonoClass *' argument.
16079         (setup_generic_vtable): Don't call mono_get_inflated_method() on
16080         all the methods.
16081         (mono_class_create_generic): Make this static and merge it with
16082         mono_class_create_generic_2(); we're now called automatically from
16083         mono_get_inflated_generic_class().
16084
16085         * loader.c (mono_method_signature): Call
16086         mono_get_inflated_method() here.
16087
16088 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
16089
16090         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
16091         type of fields with RVA.
16092
16093         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
16094         for this pseudo class.
16095         (my_mono_class_from_generic_parameter): Likewise.
16096         (mono_class_init): Allow interfaces to have cctors.
16097
16098 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16099
16100         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
16101         lazily for AOT methods.
16102
16103 2005-07-05  Martin Baulig  <martin@ximian.com>
16104
16105         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
16106         returns FALSE for a successful match, not TRUE.
16107
16108 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16109
16110         * loader.c (mono_method_get_index): Optimize this a bit.
16111
16112 2005-07-04  Martin Baulig  <martin@ximian.com>
16113
16114         * class.c
16115         (class_compute_field_layout): Move the check for generic type
16116         definitions into mono_class_layout_fields().  Fixes #74684.
16117         (mono_class_from_generic_parameter): Correctly compute
16118         `klass->parent'; fixes #75457.
16119
16120         * reflection.c (register_assembly, register_module): Make sure
16121         `domain->rejobject_hash' is already created.
16122
16123 2005-07-02  Martin Baulig  <martin@ximian.com>
16124
16125         * class-internals.h
16126         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
16127         `MonoDynamicGenericClass'.      
16128
16129 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
16130
16131         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
16132         returned by a field getter is null, since null is a valid value.
16133
16134 2005-07-01  Martin Baulig  <martin@ximian.com>
16135
16136         * reflection.c (mono_reflection_generic_class_initialize): Update
16137         the `dgclass->fields [i].parent' to the correct class.
16138         (mono_image_get_fieldref_token): Use the declaring type, not the
16139         reflected type.
16140
16141 2005-07-01  Martin Baulig  <martin@ximian.com>
16142
16143         * loader.c (find_method): Also look in the interfaces; fixes #75429.
16144
16145 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
16146
16147         * threads.c (thread_cleanup): assert that thread != NULL
16148         (wait_for_tids_or_state_change): We were using the wrong variable
16149         when accessing wait->threads. `i' was always out of the bounds of
16150         the array.
16151
16152 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16153
16154         * loader.c: map user32 and kernel32 to libMonoSupportW
16155
16156 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16157
16158         * appdomain.c (unload_thread_main): Mark this as WINAPI.
16159
16160 2005-06-28  Martin Baulig  <martin@ximian.com>
16161
16162         * loader.c (method_from_methodspec): Fix #75334.
16163
16164 2005-06-28  Martin Baulig  <martin@ximian.com>
16165
16166         Fix #74953 - Arrays now implement the generic IList<T> interface
16167         on the 2.0 platform.
16168
16169         * class-internals.h (MonoDefaults): Added `generic_array_class'.
16170
16171         * reflection.c (mono_class_bind_generic_parameters): New public
16172         function; similar to mono_reflection_bind_generic_parameters(),
16173         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
16174
16175         * domain.c (mono_init_internal): Try to initialize.
16176         `mono_defaults.generic_array_class' here; this'll only succeed if
16177         we're using the 2.0 corlib.
16178
16179         * icall.c
16180         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16181         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16182         (mono_lookup_internal_call): Added support for nested classes.
16183
16184         * loader.c
16185         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16186         we're an interncall and have generic arguments.
16187
16188         * class.c
16189         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16190         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16191         instance of System.Array.InternalArray<T> for arrays, so they
16192         implement the generic IList<T> interface.
16193
16194 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16195
16196         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16197         (chastamar@yahoo.com). Fixes #75374.    
16198
16199 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16200
16201         * culture-info-table.h: regenerated.
16202
16203 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16204
16205         * icall.c: handle spaces correctly for base64 strings.
16206
16207 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16208
16209         * *.c: Kill some warnings.
16210
16211 2005-06-23  Duncan Mak  <duncan@novell.com>
16212
16213         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16214         that this builds on Solaris 10 (x86).
16215
16216 2005-06-23  Martin Baulig  <martin@ximian.com>
16217
16218         * class.c
16219         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16220         generic type definitions.
16221
16222 2005-06-23  Martin Baulig  <martin@ximian.com>
16223
16224         Fix #75331.
16225
16226         * metadata.c (mono_class_get_overrides): Renamed to
16227         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16228         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16229         pass it to mono_get_method_full().
16230
16231 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16232
16233         * reflection.c (mono_reflection_create_runtime_class): take the
16234         mono_domain_lock in this method. Prevents deadlocks
16235
16236 2005-06-22  Martin Baulig  <martin@ximian.com>
16237
16238         * loader.c (method_from_methodspec): Fix #75330.
16239
16240 2005-06-22  Martin Baulig  <martin@ximian.com>
16241
16242         * reflection.c (type_get_qualified_name): Use
16243         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16244         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16245         argument; use it if we don't have an assembly name.
16246
16247 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16248
16249         * object.c: In mono_message_init, set "copy out" flag for in
16250         parameters with the [Out] flag.
16251
16252 2005-06-21  Martin Baulig  <martin@ximian.com>
16253
16254         * class.c
16255         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16256         and MONO_TYPE_PTR.
16257
16258 2005-06-21  Martin Baulig  <martin@ximian.com>
16259
16260         * class.c (mono_class_init): Don't initialize `class->fields' for
16261         generic instances since they're initialized again in
16262         compute_field_layout(). 
16263         (compute_field_layout): Set the field's `generic_info' here; fix
16264         #75320. 
16265
16266 2005-06-21  Martin Baulig  <martin@ximian.com>
16267
16268         * class-internals.h
16269         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16270
16271         * metadata.c (mono_metadata_generic_method_equal): Also
16272         distinguish the `generic_class'; fixes #75334.
16273
16274 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16275
16276         * domain.c:
16277         * appdomain.c:
16278         * domain-internals.h:
16279         * reflection.c: 'domain_assemblies' field is now protected by its own
16280         lock. Don't call into managed code to run the AssemblyLoad event if we
16281         now there are no registered delegates for it.
16282
16283 2005-06-20  Martin Baulig  <martin@ximian.com>
16284
16285         * class.c (mono_class_is_assignable_from): Use a custom version of
16286         mono_class_has_parent() to make things work for generic instances;
16287         fix #75300.
16288
16289 2005-06-20  Martin Baulig  <martin@ximian.com>
16290
16291         * loader.c (method_from_methodspec): Apply a patch from
16292         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16293
16294 2005-06-20  Martin Baulig  <martin@ximian.com>
16295
16296         * class.c (mono_class_init): Reverted Zoltan's last change; it
16297         breaks generics.
16298
16299 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16300
16301         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16302
16303 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16304
16305         * socket-io.c: fix the index in the socket array for writable/error
16306         sockets. Fixes bug #75306.
16307
16308 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16309
16310         * class.c (mono_class_init): Allow interfaces to have static ctors.
16311
16312 2005-06-17  Martin Baulig  <martin@ximian.com>
16313
16314         * loader.c (method_from_methodspec): Use `context->container' when
16315         parsing the `gmethod->inst'.
16316
16317 2005-06-17  Martin Baulig  <martin@ximian.com>
16318
16319         * class.c (mono_type_get_name_recurse): Don't add the assembly
16320         name for type arguments.
16321
16322 2005-06-15  Martin Baulig  <martin@ximian.com>
16323
16324         * reflection.c (mono_image_get_inflated_method_token): Encode
16325         correct klass; fixes #75260.
16326
16327 2005-06-13 Michal Moskal <malekith@nemerle.org>
16328
16329         * icall.c: Make GetCorrespondingMethod/Constructor take
16330         MonoReflectionMethod method not MonoMethod. Removed
16331         MonoType.GetCorrespondingField, and make
16332         MonoGenericType.GetCorrespondingField take name not
16333         MonoClassField.
16334
16335 2005-06-13  Michal Moskal <malekith@nemerle.org>
16336
16337         * reflection.c (field_encode_signature, encode_locals):
16338          Make sizes of buffers for types larger (for big generic types).
16339          (create_generic_typespec,
16340          mono_reflection_sighelper_get_signature_local,
16341          mono_reflection_sighelper_get_signature_field):
16342          Add asserts for too small buffers.
16343
16344 2005-06-15  Martin Baulig  <martin@ximian.com>
16345
16346         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16347         if our parent is not a dynamic type.
16348
16349 2005-06-15  Martin Baulig  <martin@ximian.com>
16350
16351         * class-internals.h (MonoTypeNameFormat): New enum.
16352
16353         * class.c
16354         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16355         (mono_type_get_full_name): Removed.
16356         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16357         argument instead of the boolean's.
16358
16359         * icall.c (ves_icall_System_MonoType_getFullName):
16360         Added `gboolean assembly_qualified'.    
16361
16362         * reflection.h
16363         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16364
16365         * reflection.c (mono_reflection_parse_type): Parse the new type
16366         name format.
16367
16368 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16369
16370         * icall.c: no need to convert from utf16 to utf8 and then back again
16371         after the call to GetLogicalDrives.
16372
16373 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16374
16375         * icall.c: frombase64. Fix problems exposed by new tests.
16376
16377 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16378
16379         * icall.c: added internal calls for converting char [] and strings in
16380         base64 into byte [].
16381
16382 2005-06-10  Martin Baulig  <martin@ximian.com>
16383
16384         * class.c (mono_class_create_generic_2): Read the nested classes
16385         from the metadata rather than from `gklass->nested_classes' since
16386         `gklass' might not be initialized yet.
16387
16388 2005-06-09  Duncan Mak  <duncan@novell.com>
16389
16390         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16391         all public headers. Fixes #74919.
16392
16393 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16394
16395         * domain.c: The key for proxy_vtable_hash is now a pointer
16396         array. Added new GHashFunc and GCompareFunc functions for this.
16397
16398         * class.h: The list of interfaces in MonoRemoteClass is known in
16399         advance and can't grow (we create a new MonoRemoteClass if needed),
16400         so now the interface array can be allocated together with
16401         MonoRemoteClass.
16402         
16403         * object.c: Added a new method create_remote_class_key.
16404         Fixed mono_remote_class so it does not depend on
16405         mono_upgrade_remote_class.
16406         Removed extend_interface_array.
16407         Added new method clone_remote_class(), which makes a copy of a remote
16408         class and adds a new interface or class to it.
16409         mono_upgrade_remote_class() now creates a new remote class (or gets
16410         it from the cache) if an vtable upgrade is needed. In this way
16411         we make sure that other objects sharing the same remote class
16412         don't get the new vtable with unwanted interfaces.
16413         
16414         * object-internals.h:
16415         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16416         
16417         * marshal.c: Track changes in mono_upgrade_remote_class().
16418
16419 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16420         * icall.c: Add runtime methods for obtaining members of inflated
16421         class, which were created from supplied non-inflated members. It
16422         is used in internal Get{Method,Constructor,Field} methods in
16423         System.Type
16424
16425 2005-06-09  Martin Baulig  <martin@ximian.com>
16426
16427         * reflection.c
16428         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16429
16430 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16431         * reflection.c (mono_image_basic_init): Define
16432         Version in MonoDynamicAssembly. 
16433         
16434 2005-06-08  Martin Baulig  <martin@ximian.com>
16435
16436         Fix #75136.
16437
16438         * loader.c
16439         (mono_method_signature_full): New public method; takes a
16440         `MonoGenericContext *'.
16441         (find_method): Use mono_method_signature_full() and pass the
16442         klass'es context to it.
16443
16444         * class.c (mono_class_is_inflated_method): Use
16445         mono_method_signature_full() and pass the context to it.
16446
16447 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16448
16449         * object.c: add proper locking in mono_remote_class_vtable(),
16450         fixes possible memory corruption.
16451
16452 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16453
16454         * marshal.c (mono_remoting_marshal_init): set
16455         initialized after initialization.
16456
16457 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16458
16459         * locales.c : hush.
16460
16461 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16462
16463         * object.c (extend_interface_array): fix really silly
16464         memory corrupting / comparison bug.
16465
16466 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16467
16468         * reflection.c: Functions added to support the creation
16469         of CustomAttributeData, which includes Attribute data
16470         used by ReflectionOnly methods.
16471
16472         * reflection.h:  mono_reflection_get_custom_attrs_data and
16473          mono_custom_attrs_data_construct added (functions exposed).
16474
16475          * icall.c: Added mono_reflection_get_custom_attrs_data
16476          as icall.
16477         
16478 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16479
16480         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16481         lupus's request.
16482
16483 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16484
16485         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16486
16487         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16488         dynamic DllImportAttribute.
16489
16490         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16491         dynamic DllImportAttribute.
16492
16493         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
16494         Fixes #75162.
16495
16496 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16497
16498         * threads.c: avoid segfault when an unstarted thread is aborted.
16499
16500 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
16501
16502         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
16503         Returns the name and version of the runtime for reporting.
16504
16505 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16506
16507         * appdomain.c: bump corlib version.
16508         * object-internals.h: new field in MonoReflectionAssembly.
16509
16510 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16511
16512         * object-internals.h: Carlos forgot to add this field.
16513
16514 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16515
16516         * icall.c: Added create_version to create instances
16517         of Version of MonoReflectionAssemblyName. This change helps
16518         the AssemblyName tests to keep running fine.
16519         
16520 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
16521   
16522         * object.c (mono_method_return_message_restore): A somehow less
16523         intrusive fix for #75138.
16524
16525 2005-06-03  Raja R Harinath  <rharinath@novell.com>
16526
16527         * object.c (mono_method_return_message_restore): Fix computation
16528         of expected number of out args.
16529
16530 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16531
16532         * reflection.c (mono_image_get_method_info): Fix the case when the
16533         charset is empty.
16534
16535 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
16536
16537         * object.c: Added missing null check in
16538           mono_method_return_message_restore.
16539
16540 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16541
16542         * reflection.c (mono_image_get_method_info): Handle the case when
16543         dllentry is empty.
16544
16545 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
16546
16547         * object.c: When creating the vtable for a proxy, take into account
16548         all inherited interfaces, not only the ones registered in
16549         iclass->interfaces. This fixs bug #74996.
16550         Also, in mono_method_return_message_restore, verify that the array
16551         of out args has the expected lengh.
16552
16553 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16554
16555         * socket-io.c: update the timeout in Poll when the call is interrupte.
16556
16557 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16558
16559         * socket-io.c: support abort/suspend in Select_internal after last
16560         change.
16561
16562 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16563
16564         * threadpool.c: remove warning.
16565
16566 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16567
16568         * icall.c:
16569         * socket-io.[ch]: Select_internal uses poll() now when available, thus
16570         removing the 1024 limit from select(). Runtime part of the fix for
16571         bug #71203.
16572
16573 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16574
16575         * socket-io.c: when resolving the addresses for the same
16576         host returned by gethostname(), get the local IPs from the interface
16577         list. Loopback addresses are discarded if the are interfaces up with
16578         non-loopback ones. Fixes bug #63265.
16579
16580 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
16581
16582         * appdomain.c, verify.c, object-internals.h, reflection.c:
16583         bumped corlib number to 36, and added new extra_flags field
16584         to ReflectionMethodBuilder and friends.  Fixes #75060.
16585
16586 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
16587
16588         * gc.c: register a new weak link only if the object is non-null
16589         (fixes bug#75047).
16590
16591 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16592
16593         * culture-info.h : short time pattern too.
16594
16595 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16596
16597         * culture-info.h : expand long time pattern string length.
16598
16599 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16600
16601         * culture-info-table.h : update (more French date format; #72788).
16602
16603 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
16604
16605         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
16606         the method is static. Fixes #75029.
16607
16608 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
16609
16610         * reflection.c: Update the table_idx field of method builders after
16611         saving the module, since it can change. This is a workaround for
16612         bug #74914. 
16613
16614 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16615
16616         * culture-info-table.h : update (additional French date format).
16617
16618 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16619
16620         * icall.c (ves_icall_type_Equals): Revert last change.
16621         
16622         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
16623
16624         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
16625
16626 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
16627
16628         * class-internals.h: Added executioncontext_class field to 
16629         MonoDefaults structure.
16630         * domain.c: Cache System.Threading.ExecutionContext class in 
16631         mono_defaults.
16632         * object.c: Capture the ExecutionContext for asynchroneous calls in
16633          mono_async_result_new.
16634         * object-internals.h: Added execution_context and original_context 
16635         fields to MonoAsyncResult. Added execution_context to MonoThread.
16636         * security-manager.c|.h: Added mono_get_context_capture_method to 
16637         return the capture method (if required by the security manager or by
16638         the framework version used).
16639         * threadpool.c: Apply capture (if present) ExecutionContext in 
16640         mono_async_invoke and revert to original context after it completes.
16641
16642 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
16643
16644         * culture-info-table.h : updated (real hacky solution for zh-CHT).
16645
16646 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
16647
16648         * culture-info-table.h : zh-CHT related workaround.
16649
16650 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16651
16652         * marshal.c (emit_marshal_custom): Add some error checking and call the
16653         methods in the ICustomMarshaler interface. Fixes #74875.
16654         
16655         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
16656         native->managed wrappers.
16657
16658 2005-05-12  Martin Baulig  <martin@ximian.com>
16659
16660         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
16661         here and use the loader lock.
16662
16663         * mono-debug.c: Properly lock when the debugger is not attached.
16664         (mono_debug_init): Release the initial lock if we're not running
16665         in the debugger.
16666
16667 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16668
16669         * marshal.c (emit_marshal_custom): Pass through NULL values without
16670         calling the custom marshalling routines.
16671
16672         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
16673         conversion in structures. Fixes #74882.
16674
16675 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
16676
16677         * culture-info-table.h : zh-* cultures were missing.
16678
16679 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
16680
16681         * threads.c: Added a new event background_change_event which is signaled
16682         when a thread changes its background mode.
16683         Moved here several checks previously done in managed code. The checks
16684         require the thread lock, and using the thread lock in managed code
16685         can result in deadlocks.
16686         Merged Start_internal and Thread_internal into a single method. Now 
16687         Thread_internal does all work of creating and starting a thread.
16688         Added icalls for setting and getting the state of the object. Moved from
16689         managed code to avoid locking there.
16690         Added wait_for_tids_or_state_change() which is called instad of
16691         wait_for_tids when waiting for non-backround threads to end. This method
16692         will return if one of the threads ends or the background_change_event
16693         is signaled.
16694         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
16695         the background mode. This method signals the background_change_event
16696         event.
16697         * icall.c:
16698         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
16699         removed Start_internal.
16700         
16701 2005-05-11  Martin Baulig  <martin@ximian.com>
16702
16703         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
16704         to order of some fields to get proper alignment on 64-bit machines.
16705
16706 2005-05-11  Martin Baulig  <martin@ximian.com>
16707
16708         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
16709         changes as they're broken and completely fuck up the debugger.
16710
16711         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
16712
16713 2005-05-10  Martin Baulig  <martin@ximian.com>
16714
16715         * reflection.c (mono_reflection_generic_class_initialize): Don't
16716         call mono_class_setup_parent() here.
16717
16718 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16719
16720         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
16721         send/receive timeout use an integer in milliseconds. We were using a
16722         struct timeval.
16723
16724 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16725
16726         * locales.c:
16727         (internal_get_cultures): reserve the first slot of the array for the
16728         InvariantCulture, which will be filled in managed code.
16729
16730 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
16731
16732         * reflection.c (mono_image_fill_module_table): Initialize the
16733         GENERATION field as well.
16734
16735 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16736
16737         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
16738         Monitor.Enter on the object.
16739
16740 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16741
16742         * threads.c: Enable the wait for running threads when exiting.
16743         * icall.c: Suspend all threads before exiting.
16744
16745 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16746
16747         * assembly.c (mono_assembly_load_reference): Fix warning.
16748
16749 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16750
16751         * threadpool.c: changed the default number of threads per cpu. From now
16752         on, the default will be 20 + (5 * number of cpus) instead of 50.
16753
16754 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * loader.c (mono_method_get_signature_full): Add locking here.
16757
16758 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
16759
16760         * appdomain.c: Moved methods for parsing and freeing assembly
16761         names to assembly.c.
16762         * assembly.c, domain-internals.h: Created public methods for parsing
16763         assembly names. Fixed mono_assembly_load_with_partial_name:
16764         it now finds the best match, taking into account the version,
16765         token and culture specified in the partial name. Also return
16766         the latest version if no version information is specified.
16767
16768 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
16769
16770         * threadpool.c: replace check for SocketAsyncCall class.
16771
16772 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16773
16774         * threadpool-internals.h:
16775         * Makefile.am: added threadpool-internals.h
16776
16777         * threadpool.c: call mono_unhandled_exception on exceptions not handled
16778         that happen in threadpool threads (tested on MS).
16779         (mono_thread_pool_remove_socket): new function that dispatch any pending
16780         AIO call on a socket that is closing. By now only epoll really needs it,
16781         as select/poll wake up when the socket closes.
16782
16783
16784         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
16785
16786 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
16787
16788         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
16789
16790 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
16791
16792         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
16793
16794 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
16795
16796         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
16797         has an abort request, convert it into a suspend request.
16798
16799 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
16800
16801         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
16802         warning for the usage of `UnmanagedFunctionPointerAttribute' which
16803         is not supported yet.
16804
16805 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16806
16807         * image.c: register assemblies loaded from data (bundles) in the loaded
16808         assemblies hash. Fixes bug #74772.
16809
16810 2005-04-29  Martin Baulig  <martin@ximian.com>
16811
16812         * class.c (mono_type_get_name_recurse): Update to the new naming
16813         schema from the latest .NET 2.x beta2.
16814         (mono_class_setup_vtable_general): If we're a generic instance,
16815         copy the vtable from our generic type definition and inflate all
16816         the methods in it.
16817
16818         * loader.c (find_method): Update to the new naming schema from the
16819         latest .NET 2.x beta2.
16820
16821 2005-04-29  Raja R Harinath  <harinath@gmail.com>
16822
16823         * class.c (mono_class_init): Add a mono_loader_unlock to the
16824         #74734 fix.
16825
16826 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16827
16828         * icall.c (ves_icall_System_Environment_Exit): Remove the 
16829         suspend_all_other_threads () call for the time being, since it can hang.
16830
16831         * threads.c (mono_thread_manage): Similarly, disable the waiting for
16832         the background threads to exit, since it can also hang.
16833
16834         * class.c (mono_class_init): Applied patch from Ankit Jain 
16835         (radical@gmail.com). Avoid pending init errors when a field refers
16836         to a nested class using a typeref. Fixes #74734.
16837
16838         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
16839         this for dynamic modules.
16840
16841 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16842
16843         * threads.c: don't wait for threads that are in the process of aborting
16844         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
16845         and waiting for background threads to finish. This makes xsp and
16846         mod-mono-server exit without random length delays and/or hangs.
16847
16848 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16849
16850         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
16851
16852 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
16853
16854         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
16855         dynamic types to prevent infinite loops. Fixes #74727.
16856
16857         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
16858         ..._is_assignable_to.
16859
16860 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
16861
16862         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
16863
16864 2005-04-25  Martin Baulig  <martin@ximian.com>
16865
16866         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
16867
16868         * domain.c
16869         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
16870
16871         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
16872
16873         * reflection.c (build_compressed_metadata): Set metadata header
16874         version to 2.0.
16875
16876 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16877
16878         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
16879         number into an integral and a decimal part. Fixes #70473.
16880
16881         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
16882
16883 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
16884
16885         * culture-info-table.h : reflected the latest locale-builder output.
16886
16887 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16888
16889         * threadpool.c: check for SuspendRequested too when deciding if
16890         mono_thread_interruption_checkpoint should be called.
16891
16892 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16893
16894         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
16895         * threads.c: remove interruption_mutex and use Interlocked instead. When
16896         suspending all the threads, wait for all the suspended events at once.
16897         If we're shutting down and get an APC that is going to be queued,
16898         call mono_thread_execute_interruption immediately, as the thread might
16899         be sleeping on a pthread condition or mutex.
16900
16901         * icall.c: call mono_runtime_set_shutting_down before suspending the
16902         threads.
16903
16904         Fixes bug #74693. And now xsp is happier when exiting.
16905
16906 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16907
16908         * loader.c (mono_stack_walk): Fix #74690.
16909
16910 2005-04-22  Martin Baulig  <martin@ximian.com>
16911
16912         * mono-debug.h (MonoDebugMethodJitInfo): Added
16913         `MonoDebugMethodJitInfo *jit'.
16914
16915         * mono-debug.c (mono_debug_read_method): Cache the
16916         MonoDebugMethodJitInfo in `address->jit'.
16917         (mono_debug_free_method_jit_info): New public method.
16918
16919 2005-04-22  Martin Baulig  <martin@ximian.com>
16920
16921         * class.c (mono_class_is_assignable_from): Disallow
16922         type parameter -> interface.
16923
16924 2005-04-21  Dick Porter  <dick@ximian.com>
16925
16926         * threads.c (mono_thread_create): Turn an assertion into an error.
16927
16928 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16929
16930         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
16931         
16932         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
16933         Fix some gcc 4.0 warnings.
16934
16935 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
16936
16937         * file-io.c: fix alt dir separator char on unix systems
16938         and cleanup (fixes bug #71214).
16939
16940 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
16941
16942         * marshal.c: Use CALLVIRT instead of CALL when dispatching
16943         a call to a remote domain, since the method may be an
16944         interface method in the client domain. This fixes bug #74192.
16945
16946 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16947
16948         * threadpool.c: recv/send are now performed before going back to managed
16949         code to save one transition.
16950
16951 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16952
16953         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
16954
16955         * metadata/threadpool.c: removed hack to workaround the bug above.
16956
16957         Fixes bug #74618.
16958
16959 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16960
16961         * reflection.c reflection.h: Fix handling of parameter defaults in
16962         dynamic methods. Also fixes handling of parameter attributes.
16963         Fixes #74609.
16964
16965         * mono-debug.c (mono_debug_close_image): Fix warning.
16966
16967 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16968
16969         * socket-io.h: replaced old unused field with new 'blocking'.
16970         * threadpool.c: restore socket blocking state on windows(tm).
16971
16972 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
16973
16974         * icall.c: don't return the codebase in the AssemblyName[] returned by
16975         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
16976         * object-internals.h: Removed FIXME (fields were presents) and fixed
16977         versioncompat declaration.
16978
16979 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16980
16981         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
16982         not closed, so don't cleanup when it happens.
16983
16984 2005-04-13  Chris Toshok  <toshok@ximian.com>
16985
16986         * mono-debug-debugger.h: change prototype for
16987         mono_debugger_lookup_type.
16988
16989         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
16990         this function, although it should probably be named
16991         mono_debugger_init_type.
16992
16993 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16994
16995         * threadpool.c: fix non-AIO case.
16996
16997 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16998
16999         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
17000         the built-in profiler to measure just JIT compilation times.
17001
17002 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17003
17004         * threadpool.c: the epollfd might be closed by another thread at
17005         any time, so ignore EBADF at treat it as a "we're closing" sign.
17006
17007 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17008
17009         * threadpool.c: release the semaphores with a count equals to the number
17010         of working threads in both IO and regular pools. Fixed typo that messed
17011         up the count of IO pool threads. Don't initialize the pipe handles if
17012         we're using epoll.
17013
17014 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17015
17016         * threadpool.c: some systems don't like a NULL when deleting the socket
17017         from epoll.
17018
17019 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17020
17021         * threadpool.c: fix semaphore allocation.
17022
17023 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17024
17025         * threadpool.c: added epoll() based implementation for asynchronous IO
17026         that is used instead of the default poll() when available.
17027         It can be disabled by setting MONO_DISABLE_AIO.
17028
17029 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17030
17031         * threadpool.c: windows needs 'closesocket' and instead of returning
17032         0 when the stream is closed while in select, it returns -1. Fixes bug
17033         #74573.
17034
17035 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
17036
17037         * class.c (class_compute_field_layout): Fix the regression caused by
17038         the previous try.
17039
17040 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17041
17042         * threadpool.c: separate pool for socket async. IO.
17043         * threadpool.h: mono_max_worker_threads is not a global any more.
17044
17045 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17046
17047         * class.c (class_compute_field_layout): Fix #74549.
17048
17049 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17050
17051         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
17052         use 2 connected sockets instead.
17053
17054 2005-04-08  Miguel de Icaza  <miguel@novell.com>
17055
17056         * mono-config.c: Add new entry point for mkbundle
17057         mono_config_parse_memory. 
17058
17059 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17060
17061         * threadpool.c: removed another unused function.
17062
17063 2005-04-08  Ankit Jain  <radical@corewars.org>
17064
17065         * reflection.c (get_default_param_value_blobs): Add 'types'
17066         parameter to get the types encoded in the constant table.
17067         (mono_param_get_objects): Use the type from the constant table,
17068         not the type of the parameter, when creating default values.
17069         Handle null default values correctly.
17070
17071 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17072
17073         * file-io.c:
17074         * file-io.h:
17075         * threadpool.c:
17076         * threadpool.h:
17077         * icall.c:
17078         * socket-io.c: removed dead code for async IO.
17079
17080 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17081
17082         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
17083
17084         * threadpool.c: intercept socket async. calls and pass them to a thread
17085         that is polling and dispatching the job items to the threadpool as
17086         socket become ready. Fixes bugs #71217, #71933.
17087
17088         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
17089         between char and short/ushort arrays.
17090
17091         * socket-io.c: remove dead code.
17092
17093 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17094
17095         * locales.c,
17096           icall.c : removed InternalToUpper_Comp() and
17097           InternalToLower_Comp().
17098
17099 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17100
17101         * char-conversions.h : The tables were incorrectly generated. Should
17102           be generated against invariant culture.
17103
17104 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17105
17106         * object.c (mono_runtime_invoke_array): Fix return value when 
17107         passing pre-created valuetype objects to ctors.
17108
17109         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
17110         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
17111         Fixes #74338.
17112
17113 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
17114
17115         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
17116         only used with --security and hides the wrong corlib version error.
17117
17118 2005-03-30  Joshua Tauberer  <tauberer@for.net>
17119
17120         * class.c: Changed mono_class_name_from_token so that types
17121         outside of a namespace don't have an initial period.  Improved
17122         the g_warning message used in _mono_class_get when loading
17123         fails.
17124         * assembly.c: In mono_assembly_load_reference, when an assembly
17125         can't be found, "No such file or directory" is misleading and
17126         unhelpful because a few paths were checked for the presence of
17127         the assembly.  When that happens (ENOENT), display a nicer
17128         message indicating the directories that were searched.  In all
17129         cases, the warning is made easier to read for non-hackers.
17130
17131 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17132
17133         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
17134         project/solution.
17135         * appdomain.h|domain.c: Removed inline from functions.
17136         * appdomain.c: Reduced warnings when compiling on windows.
17137         * icall.c: Fixed output_debug declaration to gunichar2*.
17138         * mono-config.c: Reduced warnings when compiling on windows.
17139         * rand.c: Added missing "windows.h". Added missing return value.
17140         * rawbuffer.c: Added missing winsock2.h for windows.
17141         * sysmath.h: Added mono-compiler.h header to allow/ease 
17142         compilation with non-GCC compilers.
17143         * threads.c: Fixed declarations to compile with VS.NET C compiler.
17144         Removed cast warnings.
17145
17146         Adapted from the work of J Lothian (for VC6).
17147
17148 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17149
17150         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
17151         from default_path.
17152
17153 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17154
17155         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
17156         the 2.0 profile.
17157
17158 2005-03-27  Raja R Harinath  <harinath@gmail.com>
17159
17160         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
17161         has to be in $(exec_prefix).  $(prefix) is for arch-independent
17162         stuff, and it would probably use $(prefix)/share rather than
17163         $(prefix)/lib.
17164
17165 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17166
17167         * console-io.c: added 2 includes that might be missing.
17168
17169 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17170
17171         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
17172         profile.
17173
17174         * reflection.c (create_custom_attr): Allocate the params array using
17175         alloca so it gets GC tracking.
17176
17177 2005-03-23  Chris Toshok  <toshok@ximian.com>
17178
17179         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17180         out some spew.
17181
17182 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17183
17184         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17185         changes to pick up any changes in prefix, etc.
17186
17187 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17188
17189         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17190         
17191         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17192         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17193
17194 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17195
17196         * class-internals.h object-internals.h class.c reflection.c: Extend the
17197         mono_lookup_dynamic_token () function to return the class of the
17198         token as well. 
17199
17200         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17201         well. Fixes #73848.
17202
17203 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17204
17205         * security-manager.c: Skip inheritance checks for intra-corlib
17206         class inheritance and method overrides. This skips a lot of checks
17207         and (anyway) permissions cannot work until corlib is loaded.
17208
17209 2005-03-23  Martin Baulig  <martin@ximian.com>
17210
17211         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17212         MONO_TYPE_GENERICINST.  
17213
17214 2005-03-23  Martin Baulig  <martin@ximian.com>
17215
17216         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17217
17218 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17219
17220         * class.c: added locking comments to some functions.
17221         Cache the interface offsets arrays (saves about 20 KB
17222         of runtime memory in a typical app).
17223         Reduce the time overhead in mono_class_setup_supertypes ().
17224
17225 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17226
17227         * icall.c: speedup and fix leaks in GetMethodsByName and
17228         GetPropertiesByName.
17229
17230 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17231
17232         * reflection.c: some locking fixes.
17233
17234 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17235
17236         * metadata.c: added missing break in case statement.
17237
17238 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17241         typedbyref return values. Fixes #73941.
17242
17243 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17244
17245         * security-manager.c|h: Added demandunmanaged method and 
17246         suppressunmanagedcodesecurity class to MonoSecurityManager.
17247         Renamed aptc class to allowpartiallytrustedcallers.
17248
17249 2005-03-17  Martin Baulig  <martin@ximian.com>
17250
17251         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17252
17253 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17254
17255         * file-io.c: disabled file async. IO using aio_*. It uses the
17256         threadpool now. Workaround for bug #73718.
17257
17258 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17259
17260         * assembly.h, mono-config.c: added code to deal with bundled configs
17261         for bundled assemblies.
17262
17263 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17264
17265         * *.c, private.h: cleanup, removing old private.h header file.
17266
17267 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17268
17269         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17270         and throw_on_unmappable_char attributes.
17271
17272 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17273
17274         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17275         _ProcessName_internal.
17276
17277 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17278
17279         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17280         #73631.
17281
17282         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17283         are no longer used.
17284
17285 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17286
17287         * object.c (compute_class_bitmap): Add support for generics. Fixes
17288         #73527.
17289
17290 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17291
17292         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17293
17294 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17295
17296         * filewatcher.c: commented out the code for windows watcher, as we don't
17297         use it (we use the managed implementation instead).
17298
17299 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17300
17301         * object-internals.h (MonoThread): Remove 'unused1' field.
17302
17303         * appdomain.c: Bump corlib version.
17304
17305         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17306
17307         * reflection.c (mono_reflection_create_runtime_class): Remove the
17308         AssemblyBuilder.Save optimization since it causes too many problems.
17309
17310 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17311
17312         * exception.c|h: Added mono_get_exception_reflection_type_load to
17313         create a ReflectionTypeLoadException object.
17314         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17315         to return NULL is a InheritanceDemand fails during reflection. Updated
17316         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17317         ReflectionTypeLoadException if an InheritanceDemand fails during 
17318         reflection. Added icall mapping for GetLinkDemandSecurity.
17319         * security-manager.c|h: Added ves_icall_System_Security_
17320         SecurityManager_GetLinkDemandSecurity internal call to return the
17321         class and methods permissions set for a LinkDemand. Removed unused
17322         fields in MonoSecurityManager.
17323
17324 2005-03-10  Martin Baulig  <martin@ximian.com>
17325
17326         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17327         it's a generic instance.
17328
17329 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17330
17331         * reflection.c (mono_get_object_from_blob): Applied patch from
17332         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17333
17334         * class.c (mono_class_is_assignable_from): Another try at fixing 
17335         #73469 without breaking anything.
17336
17337 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17338
17339         * class.c: (mono_class_is_assignable_from): Revert the last changes
17340         since they don't work with generics.
17341         
17342         * class.c (mono_class_is_assignable_from): Fix build bustage.
17343
17344         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17345         the managed IsAssignableFrom method. Fixes #73469.
17346
17347         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17348         function.
17349
17350 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17351
17352         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17353         memory when the remoting callback does not sets the out arguments.
17354         Fixes #73007.
17355
17356         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17357         by mistake.
17358
17359         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17360
17361         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17362
17363         * appdomain.c: Bump corlib version.
17364
17365 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17366
17367         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17368         function.
17369
17370         * threads.c (mono_thread_attach): Detect threads which are not started
17371         by the GC pthread wrappers.
17372
17373 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17374
17375         * icall.c: Added new icall for RNG.
17376         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17377         single handle on Linux to access /dev/urandom and fix #73183.
17378
17379 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17380
17381         * object.c: setting the new vtable in a transparent proxy object must
17382         not change the GC descriptor.
17383
17384 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17385
17386         * object.c: fixed compilation without GCJ support.
17387         * reflection.c: for runtime-created types ensure klass->has_references
17388         is correct (bug #73215).
17389
17390 2005-03-02  Martin Baulig  <martin@ximian.com>
17391
17392         * class.c (mono_class_is_assignable_from): Make this work if
17393         `oklass' is a generic instance; fixes #72831.
17394
17395 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17396
17397         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17398         with hasthis set.
17399         
17400         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17401
17402         * marshal.c: Reorganize native->managed marshalling code to also use
17403         the emit_marshal_... functions.
17404
17405 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17406
17407         * object.c: typed allocs have issues with bitmap sizes > 30,
17408         so check for max_set >= 30.
17409
17410 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17411
17412         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17413         managed code. Fixes #73012.
17414
17415         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17416
17417         * metadata.c reflection.c: Load/Emit elem_mult as well.
17418         
17419         * metadata.h (MonoMarshalSpec): Add comment.
17420
17421         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17422
17423         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17424         num_elem to -1 if not given.
17425
17426         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17427
17428         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17429         given values.
17430
17431 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17432
17433         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17434
17435 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17436
17437         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17438
17439         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17440
17441 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17442
17443         * object.c: generalized the reference bitmap creation
17444         and added hooks for the new GC.
17445         * class-internals.c: removed the gc_bitmap field from MonoClass.
17446
17447 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17448
17449         * domain.c: help the compiler to produce better code
17450         in mono_jit_info_table_find ().
17451
17452 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17453
17454         * object.c: make all allocations look typed.
17455
17456 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17457
17458         * socket-io.c: load Mono.Posix if it's not loaded already
17459         (fixes bug#73033).
17460
17461 2005-02-24  Martin Baulig  <martin@ximian.com>
17462
17463         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17464         * reflection.c (dup_type): Likewise.
17465
17466 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17467
17468         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17469         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17470
17471 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17472
17473         * domain.c, threads.c, object-internals.h: make the critical thread
17474         local vars use the fast access mode (even when we're compiled in
17475         a lib). Provide accessors to be used by the jit during codegen.
17476
17477 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17478
17479         * appdomain.c: Changed hook functios behavior to include
17480         support for the reflection only assemblies. Some icalls were changed
17481         to support the mentioned assemblies too. Signatures of static methods
17482         try_assembly_resolve and real_load now have an additional parameter:
17483         refonly.
17484
17485         * assembly.c: General changes to mono_assembly_ methods to support
17486         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17487         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17488         suffix, to support an additional gbool parameter to specify whether
17489         the assembli is reflection only or not. Created some new hook functions 
17490         to add support for reflection only assemblies. Signatures of static 
17491         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
17492         have now an additional parameter: refonly.
17493
17494         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
17495         indicating whether the assembly is reflection only or not.
17496
17497         * exception.c: Add mono_get_exception_invalid_operation.
17498
17499         * icall.c: Throw an InvalidOperationException when trying to invoke
17500         a property/method/event, or trying to set/get the value of a field.
17501         Also add an icall to retrieve the ref_only flag to the
17502         MonoReflectionAssembly.
17503
17504 2005-02-23  Chris Toshok  <toshok@ximian.com>
17505
17506         Part of fix for #72827.
17507         * mono-debug.c (mono_debug_add_method): add lexical block data to
17508         the info we write.  Kind of a hack at the moment - we copy the
17509         lexical block info from the MonoDebugMethodInfo to the
17510         MonoDebugMethodJitInfo here, before writing it.
17511         (mono_debug_read_method): read the lexical block info.
17512
17513         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
17514
17515         * debug-mono-symfile.h: add lexical block support.
17516
17517         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
17518         support.
17519
17520 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17521
17522         * loader.c (mono_lookup_pinvoke_call): Fix warning.
17523
17524         * object.c (mono_runtime_free_method): Call mono_free_method () and
17525         put the TODOs there.
17526
17527         * loader.c (mono_free_method): Free up most memory allocated for 
17528         dynamic methods.
17529
17530 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17531
17532         * reflection.c: properly flag a Type argument to a
17533         named custom attr value (bug #72248).
17534
17535 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17536
17537         * reflection.c: reduce code duplication in named custom
17538         attribute encoding.
17539
17540 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
17541
17542         * reflection.c: properly encode custom attrs of type object
17543         (bug #72649).
17544
17545 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17546
17547         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
17548
17549 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
17550
17551         * socket-io.c: load System.dll if it's not loaded already
17552         (bug #72850 and #70477).
17553
17554 2005-02-21  Martin Baulig  <martin@ximian.com>
17555
17556         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17557         generic instances.
17558
17559 2005-02-21  Martin Baulig  <martin@ximian.com>
17560
17561         * reflection.c (mono_image_build_metadata): We also need to
17562         "fixup" the MethodImpl table after we computed the final method
17563         indices.  Call fixup_methodimpl() to do that.
17564         (fixup_methodimpl): New private method.
17565
17566 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17567
17568         * assembly.c: special case mscorlib.dll (bug#72536),
17569         patch from Carlos Alberto Cortez.
17570
17571 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17572
17573         * threads-types.h threads.c: Fix build bustage.
17574
17575         * threads.c: Use a union for long<->double conversions.
17576
17577         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
17578         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
17579
17580         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
17581         containing the checkpoint call with NOT_TAKEN.
17582         
17583         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
17584         checkpoint before pushing the arguments, so they won't have to be
17585         spilled to stack.
17586
17587 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17588
17589         * domain.c, assembly.c, domain-internals.h: make some data
17590         const and relocation-free.
17591
17592 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17593
17594         * object.c, appdomain.c, class-internals.h: introduce the
17595         MonoClassRuntimeInfo structure to hold the info needed to
17596         use a class at runtime. Made mono_class_vtable() lock-free
17597         for all the appdomains.
17598
17599 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
17600
17601         * metadata-internals.h, image.c: introduce a per-image mempool to
17602         be used for memory that has the same lifetime as the image.
17603
17604 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
17605
17606         * domain.c: In mono_init_internal(), instead of selecting the first
17607         runtime version supported by an executable, get a list of all
17608         supported versions and select the one for which an mscorlib exists
17609         (since even if the runtime supports a given version, it doesn't mean
17610         that the framework for that version is installed).
17611         Modified get_runtimes_from_exe to support this behavior.
17612         In supported_runtimes, added information about additional system
17613         assembly versions.
17614         
17615         * assembly.c: Added support for more than one system assembly version
17616         per runtime version. Updated the assembly list.
17617         In mono_assembly_remap_version, removed the initial version check,
17618         since we don't know to which version we need to compare until we
17619         get the version set on which the assembly is based.
17620         Moved the code for loading corlib into the new method
17621         mono_assembly_load_corlib(), so it can be used by the initialization
17622         code.
17623         
17624         * domain-internals.h: Updated data structures and added declaration
17625         for mono_assembly_load_corlib.
17626
17627 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17628
17629         * reflection.c (resolve_object): Fix the creation of the signature in 
17630         the SignatureHelper case.
17631
17632         * assembly.c (mono_assembly_remap_version): Fix binary search.
17633         
17634 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
17635  
17636         * class.c: Added inheritance check when a method is overloaded (from a
17637         virtual method or when implementing an interface) and when a class is
17638         inherited. Added functions to set a failure for a class and to 
17639         retreive the exception from a failure.
17640         * class-internals.h: Added fields to MonoClass to keep the exception
17641         information status for inheritance (or other exceptions) to be thrown
17642         later (i.e. not at load time).
17643         * object.c: Throw the inheritance SecurityException when a type is to 
17644         be created with either class or method inheritance violations.
17645         * reflection.c|h: Fix when getting declsec from a class. Removed 
17646         unrequired code for class. Improved sanity in parameter naming.
17647         * security-manager.c|h: Added functions to check for class and method
17648         inheritance.
17649
17650 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17651
17652         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
17653         and has_finalize in dynamic types as well.
17654
17655 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
17656
17657         * culture-info-table.h : fixed currency format for en-GB (and so on).
17658
17659 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
17660
17661         * gc.c: ensure the GC handles never have 0 as a value.
17662
17663 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17664
17665         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
17666         a pointer to a struct to unmanaged code. Fixes #72625.
17667
17668 2005-02-16  Martin Baulig  <martin@ximian.com>
17669
17670         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
17671
17672 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17673
17674         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
17675
17676 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
17679
17680         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
17681         UnmanagedFunctionPointerAttribute, use it for determining calling convention
17682         etc. Fixes #71471.
17683
17684         * reflection.c (mono_custom_attrs_get_attr): New helper function.
17685
17686         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
17687
17688 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
17689
17690         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
17691         changes to make the current context a field in MonoThread.
17692
17693 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17694
17695         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
17696         the last change.
17697         
17698         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
17699         extracted from mono_marshal_get_native_wrapper.
17700
17701         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
17702         to create wrappers around native functions.
17703
17704         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
17705         delegates for arbitrary function pointers. Fixes #71472.
17706
17707 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17708
17709         * threads.c: cleaned up the code a little.
17710
17711 2005-02-15  Martin Baulig  <martin@ximian.com>
17712
17713         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
17714         the data table.
17715
17716         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
17717         allocate larger chunks if needed.
17718
17719 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17720
17721         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
17722         in by mistake.
17723
17724 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
17725
17726         * domain.c: keep the domains in an array and ensure the domain ids
17727         are kept small, so they can be used as indexes to domain-specific data
17728         with a small memory overhead.
17729
17730 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17731
17732         * icall.c: Handle byref types in Type icalls. Fixes #72544.
17733
17734 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
17735
17736         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
17737
17738 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17739
17740         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
17741
17742         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
17743         values.
17744
17745         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
17746         
17747 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17748
17749         * domain-internals.h: add the hashtable here.
17750
17751         * class-internals.h: Remove `info' from MonoMethod
17752
17753         * domain.c: Add a new hashtable, jit_trampoline_hash
17754
17755 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17756
17757         * object.c: don't set the value of static fields
17758         (fixes bug#72494).
17759
17760 2005-02-11  Martin Baulig  <martin@ximian.com>
17761
17762         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
17763         (mono_debug_add_method): Silently ignore the method if it's too big.
17764         (mono_debug_add_type): Likewise.
17765
17766 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
17767
17768         * threads.c, appdomain.c: remove #ifdefs from the code.
17769
17770 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17771
17772         * metadata-internals.h: Added flags to MonoAssembly to cache the most
17773         common security informations. This allows us to stay in unmanaged code
17774         when doing LinkDemand and it's special cases (except for the first 
17775         time for initialization). The flags a very much used with --security.
17776         * reflection.c|h: Added code to get declarative security attributes 
17777         for LinkDemand and InheritanceDemand. This required to refactor the
17778         existing code for Demand.
17779         * security-manager.c|h: Added new method fields for the special cases
17780         of LinkDemand.
17781
17782 2005-02-10  Martin Baulig  <martin@ximian.com>
17783
17784         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
17785         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
17786
17787 2005-02-10  Martin Baulig  <martin@ximian.com>
17788
17789         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
17790         debugging code; this is almost a complete rewrite.
17791
17792         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
17793
17794 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17795
17796         * domain.c, object.h: expose mono_string_equal () and 
17797         mono_string_hash ().
17798         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
17799         it's implemented in managed code.
17800
17801 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17802
17803         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
17804         lo leak objects between appdomains.
17805
17806 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17807
17808         * assembly.c: old compilers compilation fix from 
17809         robertj@gmx.net (Robert Jordan).
17810
17811 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
17812
17813         * class-internals.h: Little reminder for the future.
17814
17815         * debug-helpers.c: Fix up wrapper_type_names
17816
17817 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17818
17819         * image.c, metadata-internals.h: when loading an image from a file,
17820         mmap all of it and use the same codepaths as when using a
17821         in-memory image: the code is simpler and we use less memory
17822         (both writable and readonly).
17823
17824 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17825
17826         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
17827         API to alloc runtime data structures that need to be tracked by the
17828         GC and contain pointers.
17829         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
17830         make the code more readable and eventually use a different GC.
17831
17832 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
17833
17834         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
17835         for out arguments.
17836         
17837 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
17838
17839         * object.c: In release_type_locks(), don't release the cctor lock
17840         if it has already been released. This fixes a crash in the
17841         thread5 test.
17842
17843 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17844
17845         * gc.c, marshal.c, icall.c: register a delegate for finalization
17846         only when the native function pointer has been allocated for it.
17847
17848 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17849
17850         * object.c: cleaned up some code, allocate objects that are
17851         pointer free with the atomic malloc variant. Allocate memory
17852         for static data from the mempool if it's pointer-free.
17853         Allocate the bounds array at the end of the array data, when needed.
17854         * object-internals.h, object.h: move a private function in a private
17855         header.
17856         * class.c: handle missing case in tracking references in fields.
17857
17858 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17859
17860         * class.c, class-internals.h: keep track if a type has
17861         reference fields in either the instance or static fields.
17862
17863 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
17864
17865         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
17866         and renamed to MonoRuntimeInfo. Added fields to store the expected
17867         framework assembly version. Changed mono_get_framework_version and
17868         mono_get_runtime_version for a single mono_get_runtime_info method.
17869         
17870         * assembly.c: Added method to remap system assembly versions to the
17871         current executing runtime version. Removed old mapping code.
17872         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
17873         
17874         * icall.c, reflection.c: Track api changes.
17875
17876 2005-02-06  Miguel de Icaza  <miguel@novell.com>
17877
17878         * loader.c (method_from_memberref): Improve error reporting,
17879         produce the class name instead of the typeref/typedef index. 
17880
17881 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
17882
17883         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
17884
17885 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17886
17887         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
17888         stdcall and charset name mangling.  Reorganize the code and add
17889         some tracing stuff.
17890
17891 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17892
17893         * monodiet.c: More iters!
17894
17895         * marshal.c: Iter usage.
17896
17897         * icall.c: Iter usage.
17898
17899         * object.c: Use iters.
17900
17901         * debug-helpers.c: More iters
17902
17903 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17904
17905         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
17906         under win32.
17907
17908 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17909
17910         * mono-debug-debugger.c: use iters
17911
17912         * class.c, class-internals.h: mono_class_setup_events is static
17913         now
17914
17915         * All callers: use iters
17916
17917 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17918
17919         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
17920         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17921
17922 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17923
17924         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
17925
17926         * marshal.h: Add prototypes for ldfld/stfld_remote.
17927
17928         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
17929         this is called during startup.
17930         
17931 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17932
17933         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
17934         MonoThreadsSync struct private in monitor.c. Changed the way
17935         MonoThreadsSync is allocated so it's faster and there is no
17936         need to keep track of it with a finalizer and it uses less memory.
17937         This also finally allows us to allocate mono objects as ptrfree when
17938         there are no reference fields.
17939
17940 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
17941
17942         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
17943         disappearing link to the GC interface and use them to simplify
17944         the gchandles code.
17945
17946 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17947
17948         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
17949         stfld_remote which call mono_load/store_field_new. This allows methods
17950         calling ldfld/stfld wrappers to be AOTed.
17951
17952         * console-io.c: Include sys/filio.h under solaris.
17953         
17954         * console-io.c: Include curses.h if needed correctly.
17955
17956 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17957         
17958         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
17959         method->klass as well.
17960
17961         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
17962
17963         * class.c (mono_class_init): Switch on lazy initialization of 
17964         methods.
17965
17966         * class.c (mono_class_get_finalizer): Handle the case when the 
17967         finalizer is inherited.
17968
17969 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17970
17971         * console-io.c: <curses.h> is needed by term.h on solaris.
17972
17973 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
17974
17975         * icall.c, class-internals.h, monodiet.c, class.c: Remove
17976         mono_class_setup_properties where possible. Remove this ftn from
17977         the header file, and make it static.
17978
17979 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17980
17981         * loader.c: Add missing setup_... call.
17982
17983         * class.c: Add missing setup_... calls.
17984
17985         * class.c (mono_class_init): Switch on lazy initialization of 
17986         the generic vtable.
17987         
17988         * class.c (mono_class_init): Fix generics broken by the recent changes.
17989
17990         * monodiet.c (handle_type): Add missing setup_... calls.
17991
17992         * class.c: Back out garbage in previous patch.
17993         
17994         * class.c: Add missing setup_... calls.
17995
17996         * class.c (mono_class_get_method_from_name_flags): Avoid calling
17997         mono_class_setup_methods () if possible.
17998
17999         * class-internals.h (MonoClass): Add 'has_cctor' flag.
18000
18001         * class-internals.h (MonoCachedClassInfo): New structure.
18002
18003         * class.c: Initialize properties and events fields of MonoClass lazily.
18004
18005         * class.c: Add infrastructure for lazily initializing the methods and
18006         vtable fields of MonoClass. Not yet used.
18007
18008         * class.c (mono_class_get_finalizer): New helper function.
18009
18010         * class.c: Add infrastructure for loading some class related data from
18011         an AOT file.
18012
18013         * object.c: Add infrastructure for initializing the vtable from data
18014         in the AOT file.
18015
18016         * gc.c (run_finalize): Use mono_class_get_finalizer ().
18017
18018         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
18019         appropriate initialization function before accessing parts of the
18020         MonoClass structure.
18021
18022         * marshal.c: Fix warnings.
18023         
18024         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
18025
18026         * mono-debug-debugger.c (get_exception_message): Use 
18027         mono_class_get_method_from_name_flags ().
18028
18029 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
18030
18031         * reflection.c, appdomain.c: Replace a few manual searches that
18032         Zoltan missed. (Paolo approved this part of my initial patch).
18033
18034 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
18035
18036         * profiler.c: disable recording statistical events at report time.
18037
18038 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18039
18040         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
18041         to byteswap arrays of enum values, too (bug #72080).
18042
18043 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18044
18045         * appdomain.c (set_domain_search_path): Allow this to be called if
18046         domain->setup is not yet set.
18047
18048         * loader.c (mono_method_get_index): New helper function.
18049
18050         * loader.c reflection.c: Use mono_method_get_index ().
18051
18052         * class.c (mono_class_get_method_from_name_flags): New helper method.
18053
18054         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
18055         this.
18056
18057         * class.c (mono_class_get_cctor): New helper method.
18058
18059         * string-icalls.c object.c class.c marshal.c reflection.c: Use
18060         mono_class_get_method () to look up methods.
18061
18062 2005-02-01  Miguel de Icaza  <miguel@novell.com>
18063
18064         * console-io.c: Fix the build, this should work on Windows.
18065
18066 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
18067
18068         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
18069         be set to null to keep things valid
18070
18071 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18072
18073         * icall.c: added Console 2.0 icalls.
18074         * Makefile.am: added console-io.[ch]
18075         * console-io.[ch]: internal calls for Console 2.0 API.
18076
18077 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18078
18079         * class.c: make sure we consider all the interfaces
18080         when calculating max_interface_id (bug found by
18081         Jeroen Frijters running ikvm).
18082
18083 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18084
18085         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
18086         valuetype fields to null.
18087
18088         * object.c (set_value): Ditto. Fixes #71669.    
18089
18090 2005-01-31  Martin Baulig  <martin@ximian.com>
18091
18092         * metadata.c (mono_metadata_has_generic_params): New public
18093         function; checks whether something is a generic method.
18094
18095 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18096
18097         * appdomain.c: fix infinite recursion when adding assemblies.
18098
18099 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
18100
18101         * object.c: Fix small typo to return all items for Environment.
18102         GetCommandLineArgs.
18103
18104 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18105
18106         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
18107         reflection.c: more domain and assembly-unload related fixes
18108         and memory leaks plugs.
18109
18110 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18111
18112         * 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.
18113
18114 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18115
18116         * loader.c (mono_method_signature): Make this method lazy
18117         (mono_get_method_from_token): Don't computate the signature here.
18118
18119         Doing this saves quite a bit of memory. I got 90 kb on starting up
18120         monodoc. It should also save some disk reads on startup.
18121
18122         * *: MonoMethod->signature might be NULL now. You *MUST* use
18123         mono_method_signature.
18124
18125 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
18126
18127         * object.c (mono_runtime_get_main_args): Return an array from the
18128         current domain here. Fixes #71938.
18129
18130 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18131
18132         * monitor.c: formatting changes to comply with the
18133         mono coding style and remove #ifdefs from the code.
18134
18135 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18136
18137         * metadata.c, private.h: remove some unneeded data
18138         and use a more compact representation for table schemas.
18139
18140 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18141
18142         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
18143         to get a better distribution in hash tables.
18144         * *.c: use mono_aligned_addr_hash() where appropriate.
18145         * assembly.c: make var static.
18146
18147 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18148
18149         * domain-internals.h: Put MonoJitInfo on a diet.
18150
18151         * domain.c: Fix a warning.
18152
18153 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18154
18155         * gc.c: rework the gc handles code to reuse handles
18156         when freed.
18157
18158 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18159
18160         * domain.c: fixed long standing bug in mono_string_equal() which
18161         was brought to light with the ldstr changes.
18162
18163 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18164
18165         * reflection.c: Remove warning by adding missing include for marshal.h
18166
18167 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18168
18169         * domain.c, object.c: change the ldstr_table to hold
18170         MonoString* as keys: makes the runtime isinterned lookup
18171         faster and simplifies memory management.
18172
18173 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
18174  
18175         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
18176         possible to add imperative security checks before calling the icall.
18177         * reflection.c: Return security attributes on the original MonoMethod
18178         (and not the wrapped one). This fix permissions on icalls.
18179
18180 2005-01-25  Dick Porter  <dick@ximian.com>
18181
18182         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18183         the check for mktime() support actually test the mktime() return
18184         value.  "Fixes" bug 71682, though the output is still different to
18185         MS.
18186
18187 2005-01-25  Martin Baulig  <martin@ximian.com>
18188
18189         * class.c (mono_class_is_assignable_from): Make this work for
18190         generic instances.
18191
18192 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18193
18194         * marshal.c (mono_string_utf8_to_builder)
18195         (mono_string_builder_to_utf16): We might not have ownership of the
18196         string. In thise case, we need to create a new buffer.
18197
18198         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18199         be null, in which case, use the default capacity.
18200
18201 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18202
18203         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18204         GC events to the profiler.
18205
18206 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18207
18208         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18209         if you don't want the GC to run.
18210
18211 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18212
18213         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18214         start providing a GC API and keeping different implementations in
18215         their own file.
18216         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18217
18218 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18219
18220         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18221         mmap rather than allocating a huge buffer.
18222         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18223         above.
18224
18225 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18226
18227         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18228         and CheckExecutionRights.
18229         * reflection.c|h: Keep the index of the declarative security to be 
18230         used, instead of the pointer, when AOT compiler is used. Also add 
18231         class initialization when requesting demands.
18232         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18233         CheckExecutionRights. Both properties are now FALSE by default, and
18234         unmodifiable, unless the --security option is used.
18235
18236 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18237
18238         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18239         reflection.c: properly refcount images and assemblies, many leaks fixed.
18240
18241 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18242
18243         * threadpool.c: increase the timeout for threads in the thread pool to
18244         10s.  Fixes bug #67159.
18245
18246 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18247
18248         * class-internals.h: Sun's compiler insists on explicit
18249         signed on bit fields to handle then correctly.
18250
18251 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18252
18253         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18254         Make the size of the array fit only the number of invalid path
18255         chars that we have.
18256
18257         * class.c (_mono_class_get): Improve the error reporting when a
18258         class referenced is not found, to assist debugging. 
18259
18260 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18261
18262         * threads.c: fix off-by-one error.
18263         * domain.c: free data allocated in the domain.
18264
18265 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18266
18267         * reflection.c (mono_method_body_get_object): Fill out exception info
18268         as well.
18269
18270         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18271         structure.
18272         
18273 2005-01-19  Martin Baulig  <martin@ximian.com>
18274
18275         * loader.c (mono_get_method_constrained): Make this work again.
18276
18277 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18280         guint16 to match the managed side.
18281
18282         * reflection.c (mono_reflection_body_get_object): Fill out local
18283         variables array.
18284
18285         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18286         as well.
18287
18288         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18289         'local_var_sig_token'.
18290
18291 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18292
18293         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18294         System.Drawing.
18295
18296         * reflection.c (mono_method_body_get_object): Handle abstract and
18297         runtime methods.
18298
18299 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18300
18301         * marshal.c, loader.c, class-internals.h, reflection.c:
18302         store the emthod data for a wrapper in an array instead of a list.
18303
18304 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18305
18306         * marshal.c: change the code to allocate memory more
18307         conservatively for method wrappers.
18308
18309 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18310
18311         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18312         fields from MonoClass to the marshal info structure where they belong.
18313
18314 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18315
18316         * class.c, object.c, class-internals.h, marshal.c: rearrange
18317         some fields and tweak some types to lower memory usage.
18318
18319 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18320
18321         * threads.c (signal_thread_state_change): Handle the case when the
18322         target thread is the current thread.
18323
18324         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18325
18326         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18327         emit_ptr_to_object_conv. 
18328
18329         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18330         marshalling. Fixes #71352.
18331
18332 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18333
18334         * metadata.h, blob.h: move table enum to blob.h so it can be included
18335         in any header.
18336         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18337         cut the size of MonoImage/MonoDynamicImage.
18338
18339 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18340
18341         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18342
18343 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18344
18345         * reflection.c, reflection.h, icall.c: add a function to check
18346         if an attribute type is defined for a metadata object.
18347
18348 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18349
18350         * object-internals.h: Added some needed fields from StringBuilder class.
18351         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18352
18353 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18354
18355         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18356         threads before shutting down the runtime.
18357
18358         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18359
18360 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18361
18362         * object-internal.h, threads.c: implement stacksize and 
18363         parameterized thread start functionality (requires
18364         matching corlib). Marked broken code for later removal.
18365
18366 2005-01-12  Martin Baulig  <martin@ximian.com>
18367
18368         * class-internals.h (MonoGenericClass): Moved the `initialized'
18369         flag to MonoDynamicGenericClass, removed `init_pending'.
18370         (MonoGenericInst): Added `is_reference' flag.
18371
18372 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18373
18374         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18375         inside the MSDOS header. Fixes #71201.
18376
18377         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18378         gc thread.
18379         (mono_domain_finalize): Ditto.
18380
18381 2005-01-12  Martin Baulig  <martin@ximian.com>
18382
18383         * class.c (mono_get_shared_generic_class): Use the cache for
18384         non-dynamic generic classes.
18385
18386         * class-internals.h (mono_class_create_generic_2): Removed
18387         function prototype, this function is now static inside class.c.
18388
18389         * class.c (mono_class_create_generic_2): Made this static, only
18390         call it from mono_class_init() and mono_class_setup_parent().
18391         (collect_implemented_interfaces_aux): Call mono_class_init() on
18392         the interfaces we collect.
18393         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18394
18395 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18396
18397         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18398         it a real thread handle.
18399
18400         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18401         MonoJitExceptionInfo, since each catch clause needs its own variable.
18402         
18403 2005-01-11  Dick Porter  <dick@ximian.com>
18404
18405         * image.c (mono_pe_file_open): New variant on mono_image_open()
18406         that does not set up the CLI metadata; used for FileVersionInfo so
18407         it can get the data for windows binaries too.
18408         
18409         * process.c (process_read_string_block): Don't read off the end of
18410         the StringTable block.
18411
18412         These both fix bug 70766.
18413
18414 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18415
18416         * gc.c: set some fields to NULL at GC cleanup time.
18417         * threads.c: if we quit the main thread, call exit ().
18418
18419 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18420
18421         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18422
18423 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18424
18425         * threads.h, threads.c, object.c: added accessor and settor for
18426         main_thread. Handle it specially when exiting from it: wait
18427         for other foreground threads to exit.
18428
18429 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18430
18431         * process.c, verify.c: remove some bloat.
18432
18433 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18434
18435         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18436         the calling convention to cdecl under win32.
18437
18438 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18439
18440         * object.c (mono_object_get_size): New function to get the size of
18441         an object instance.
18442
18443         * profiler.c (simple_allocation): Use above.
18444
18445 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18446
18447         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18448         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18449         get an appdomain by it's id and we can't assume the root's id is 0).
18450         * domain-internals.h: Change the function prototype to match.
18451         * icall.c: Change the icall table for AppDomain.
18452
18453 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18454
18455         * locales.c (string_invariant_compare_char): Only compute
18456         GUnicodeTypes in the case where we need them.  Test for ordinality
18457         first and return if so.
18458
18459         From the commit:
18460
18461                 /*
18462                  * FIXME: here we must use the information from c1type and c2type
18463                  * to find out the proper collation, even on the InvariantCulture, the
18464                  * sorting is not done by computing the unicode values, but their
18465                  * actual sort order.
18466                  */
18467
18468 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18469
18470         * loader.c: for P/Invoke methods, allow the "Internal" shared
18471         library name to refer to the calling process symbol namespace.
18472
18473 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18474
18475         * Makefile.am: Add the security manager to the build.
18476         * security-manager.c|h: New. Initialization of the security manager.
18477
18478 2005-01-07  Dick Porter  <dick@ximian.com>
18479
18480         * threads.c: 
18481         * monitor.c: Update thread state during Monitor and WaitHandle
18482         waits.  Fixes bug 71031.
18483
18484 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18485
18486         * reflection.c (property_encode_signature): Correctly handle when the
18487         property has no methods.
18488
18489 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18490
18491         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
18492         
18493         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
18494         fields from mb, not rmb. Fixes #71017.
18495
18496         * marshal.c (emit_ptr_to_str_conv): Add support for 
18497         ByValTStr -> string conversion. Fixes #71015.
18498
18499         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
18500
18501         * mempool.c (mono_mempool_contains_addr): New helper function.
18502
18503 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18504
18505         * metadata.c (mono_metadata_compute_size): Fix size calculation of
18506         HasSematics encoded fields.
18507         
18508         * metadata.c (mono_type_to_unmanaged): Improve error message for 
18509         invalid string marshalling.
18510
18511         * metadata.c: Fix warnings.
18512         
18513 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18514
18515         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
18516         profiler support.
18517
18518 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18519
18520         * domain.c object.c domain-internals.h: Revert part of r38077 since the
18521         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
18522         tests.
18523
18524 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18525
18526         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
18527         so methods containing these can be AOTed.
18528
18529 2005-01-03  Martin Baulig  <martin@ximian.com>
18530
18531         * loader.c (find_method): Removed the hack for generic instances.
18532         (method_from_memberref): If our parent is a generic instance, pass
18533         its generic type definition to find_method() and then inflate the
18534         method.
18535         (mono_get_method_constrained): Pass the generic type definition to
18536         find_method() and inflate the method later.
18537
18538         * class-internals.h (MonoStats): Added `generic_class_count'.
18539
18540         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
18541         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
18542
18543         * reflection.c (mono_custom_attrs_from_params): Don't ignore
18544         generic type definitions.
18545
18546 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18547
18548         * loader.c icall.c: Fix warnings.
18549
18550 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
18551
18552         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
18553         blittable types. Fixes #70864.
18554
18555 2004-12-29  Martin Baulig  <martin@ximian.com>
18556
18557         * icall.c
18558         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
18559
18560         * reflection.c (mono_method_get_object): Create a
18561         "System.Reflection.MonoGenericMethod" for inflated methods; don't
18562         call mono_get_inflated_method().
18563
18564         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
18565
18566 2004-12-27  Martin Baulig  <martin@ximian.com>
18567
18568         * class-internals.h (MonoMethod): Added `is_inflated' flag.
18569         (MonoMethodInflated): Added `inflated' field.
18570
18571         * class.c (mono_class_inflate_generic_method): Don't really
18572         inflate the method here; just set the `is_inflated' flag in the
18573         MonoMethod.
18574         (mono_class_get_inflated_method): Actually inflate the method here
18575         if it's not already inflated; we use the MonoMethodInflated's new
18576         `inflated' field as a cache.
18577
18578 2004-12-26  Martin Baulig  <martin@ximian.com>
18579
18580         * class.c
18581         (inflate_generic_class): Moved some code out of inflate_generic_type().
18582         (mono_class_inflate_generic_method): If we're already inflated,
18583         inflate the context and use the declaring method; ie. make sure
18584         the declaring method of an inflated method is always the generic
18585         method definition.
18586         (mono_class_create_from_typedef): Create
18587         `class->generic_container->context->gclass'.
18588
18589 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18590
18591         * metadata-internals.h, marshal.c, reflection.c: More
18592         MonoGHashTable->GHashTable.
18593
18594         * domain-internals.h, class.c: Change MonoGHashTable's into
18595         GHashTables for some cases where no gc stuff is used
18596
18597         All users: update apis
18598
18599 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
18600
18601         * metadata.c (builtin_types): Make this `const'. Makes this get
18602         put into the shareable section.
18603         (mono_metadata_init): Casts to make gcc happy.
18604
18605 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
18606
18607         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
18608
18609 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
18610
18611         * icall.c: Added an internal call to retrieve the position and length
18612         of assembly-level declarative security attributes (RequestMinimum, 
18613         RequestOptional and RequestRefuse). This is used by the Assembly class
18614         to re-create the corresponding permission sets.
18615
18616 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18617
18618         * marshal.c: fix the stelemref wrapper to be type correct
18619         (and faster).
18620
18621 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18622
18623         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
18624         to do key & 0x7fffffff. Hashtable already does this. It just
18625         results in longer code.
18626
18627 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18628
18629         * appdomain.c: Bump corlib version.
18630         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
18631         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
18632         * reflection.c|h: Add functions to get declarative security infos
18633         (blob position and length) for assemblies, classes and methods.
18634
18635 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
18636
18637         * reflection.c: sort the constant table (bug #70693).
18638
18639 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
18640
18641         * object-internals.h, threads.c, domain.c: add accessors for
18642         the MonoThread and MonoDomain tls keys.
18643
18644 2004-12-18  Martin Baulig  <martin@ximian.com>
18645
18646         * class.c (inflate_generic_type): If we're inflating a generic
18647         instance, set `ngclass->context->container = context->container';
18648         ie. the container we inflated into.
18649
18650         * metadata.c (mono_metadata_parse_generic_param): Reflect above
18651         inflate_generic_type() changes.
18652
18653 2004-12-17  Martin Baulig  <martin@ximian.com>
18654
18655         * class-internals.h
18656         (MonoGenericClass): Replaced `MonoType *generic_type' with
18657         `MonoClass *generic_class'.  Removed `dynamic_info'; if
18658         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
18659         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
18660
18661 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18662
18663         * exception.c (mono_exception_from_token): New helper function.
18664
18665 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18666
18667         * assembly.c (mono_assembly_load_with_partial_name): Call 
18668         mono_assembly_loaded before invoking the preload hooks. Fixes
18669         #70564.
18670
18671         * object-internals.h (MonoThread): Change culture_info and 
18672         ui_culture_info into an array.
18673
18674         * threads.c: Cache culture info objects from more than one appdomain.
18675
18676         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
18677         current UI culture.
18678
18679 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18680
18681         * threads.h threads.c appdomain.c: Clear the culture_info field of
18682         all threads during unloading if they point to an object in the dying
18683         appdomain.
18684
18685 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
18686
18687         * culture-info.h (TextInfoEntry): New struct
18688         * object-internals.h: sync with managed
18689         * locales.c: fill the `text_info_data' field
18690         * culture-info-tables.h: update
18691
18692 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18693
18694         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
18695         collector.
18696
18697 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
18698
18699         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
18700         (ves_icall_ModuleBuilder_getMethodToken): Ditto
18701
18702 2004-12-12  Martin Baulig  <martin@ximian.com>
18703
18704         * mono-debug-debugger.c (write_type): If we're an enum and the
18705         builtin types have already been initialized, call mono_class_init().
18706
18707 2004-12-11  Martin Baulig  <martin@ximian.com>
18708
18709         * metadata.c (mono_metadata_load_generic_params): Added
18710         `MonoGenericContainer *parent_container' argument; automatically
18711         compute `container->is_method'; pass the correct owner to
18712         get_constraints().      
18713
18714         * reflection.c (compare_genericparam): Sort the GenericParam table
18715         according to increasing owners. 
18716
18717 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18718
18719         * profiler.c: allow disabling the default profiler.
18720
18721 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
18722
18723         * decimal.c, icall.c: allow disabling System.Decimal support.
18724
18725 2004-12-09  Marek Safar <marek.safar@seznam.cz>
18726
18727         * reflection.c: Add support for null attribute arguments.
18728
18729 2004-12-09  Martin Baulig  <martin@ximian.com>
18730
18731         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
18732         names to get rid of compiler warnings.
18733
18734 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18735
18736         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
18737         mono_marshal_load_type_info (). Fixes #69625.
18738         (mono_marshal_get_ptr_to_struct): Likewise.
18739
18740 2004-12-08  Martin Baulig  <martin@ximian.com>
18741
18742         * mono-debug.h: Bumped version number to 47.
18743
18744         * mono-debug-debugger.c
18745         (mono_debugger_event_handler, mono_debugger_event): Take two
18746         guint64 arguments insteed of a gpointer and a guint32.  
18747
18748 2004-12-08  Martin Baulig  <martin@ximian.com>
18749
18750         * debug-mono-symfile.h
18751         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
18752         `address' to `native_offset'.
18753
18754 2004-12-08  Martin Baulig  <martin@ximian.com>
18755
18756         * class.c (mono_class_create_from_typespec): Only inflate if we
18757         either have `context->gclass' or `context->gmethod'.
18758
18759 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18760
18761         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
18762
18763         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
18764
18765         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
18766
18767         * reflection.c (mono_assembly_get_object): Remove the workaround put
18768         in for the release.
18769         
18770         * appdomain.c: Use the corlib_internal field from MonoAssembly.
18771
18772         * appdomain.c: Bump corlib version.
18773
18774         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
18775         be visible in other appdomains.
18776
18777 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
18778
18779         * threads.c: Interlocked inc and dec for longs were messed up,
18780         use a KISS based impl for this. Fixes 70234
18781
18782 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18783
18784         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
18785
18786 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18787
18788         * icall.c: fix to follow policy not to allow struct
18789         arguments in icalls.
18790
18791 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18792
18793         * process.c: make the patch that handles spaces in file paths work
18794         on mono/windows too.
18795
18796 2004-12-06  Martin Baulig  <martin@ximian.com>
18797
18798         * class.c (mono_class_create_generic): Call
18799         mono_class_setup_supertypes() if we're dynamic.
18800         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
18801
18802 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18803
18804         * object-internals.h: Add new fields to MonoThread.
18805
18806         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18807
18808         * icall.c threads-types.h threads.c: Add new icalls.
18809
18810         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
18811
18812         * object-internals.h (MonoReflectionAssembly): Sync object layout with
18813         managed side.
18814
18815         * appdomain.c: Bump corlib version.
18816
18817         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
18818         internal assemblies. Fixes #69181.
18819
18820 2004-12-05  Martin Baulig  <martin@ximian.com>
18821
18822         * class.c (mono_class_inflate_generic_signature): Make this a
18823         no-op if `context' is NULL or we don't have any type parameters;
18824         also copy `sentinelpos'.        
18825
18826 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
18827
18828         * image.c: Add unbox_wrapper_cache.
18829
18830         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
18831
18832         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
18833         function generator.
18834         
18835         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
18836         Fixes #70173.
18837
18838         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
18839         
18840 2004-12-04  Martin Baulig  <martin@ximian.com>
18841
18842         * loader.c (mono_method_get_signature_full): New public function;
18843         like mono_method_get_signature(), but with an additional
18844         `MonoGenericContext *' argument.
18845
18846         * class.c (mono_class_inflate_generic_signature): Formerly known
18847         as inflate_generic_signature(); make this public.
18848
18849 2004-12-04  Martin Baulig  <martin@ximian.com>
18850
18851         * metadata.c
18852         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
18853         instead of a `MonoGenericContainer *'.  
18854         (mono_metadata_parse_array_full): Likewise.
18855         (mono_metadata_parse_signature_full): Likewise.
18856         (mono_metadata_parse_method_signature_full): Likewise.
18857         (mono_metadata_parse_generic_inst): Likewise.
18858         (mono_metadata_parse_generic_param): Likewise.
18859         (mono_metadata_parse_mh_full): Likewise.
18860         (mono_type_create_from_typespec_full): Likewise.
18861
18862 2004-12-03  Martin Baulig  <martin@ximian.com>
18863
18864         * class-internals.h (MonoGenericContainer): Replaced the
18865         `MonoGenericContext * pointer with a `MonoGenericContext'
18866         structure and made it the first element.
18867
18868 2004-12-03  Martin Baulig  <martin@ximian.com>
18869
18870         * class.c
18871         (inflate_generic_type): Set the `context->container' when creating
18872         a new MonoGenericContext.
18873         (mono_class_inflate_generic_method): Likewise.
18874         (mono_class_create_from_typespec): Just use `context->container'
18875         to get the container.
18876
18877         * loader.c (method_from_methodspec): Set `context->parent' from
18878         `context->container' - and if that's a method container, use its
18879         parent.  Also set the `context->container' when creating a new
18880         MonoGenericContext.
18881         (mono_get_method_from_token): Use just `context->container' to get
18882         the container.
18883
18884         * metadata.c (do_mono_metadata_parse_generic_class): Also set
18885         `gclass->context->container'.
18886
18887         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
18888         the `context->container' when creating a new MonoGenericContext.
18889
18890 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * reflection.c (compare_genericparam): Sort params with identical
18893         owner by their number. Fixes gen-111 on sparc.
18894
18895 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18896
18897         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
18898         around the domain changes.
18899
18900         * appdomain.c (mono_domain_unload): Handle the case when the thread
18901         calling Unload is itself being aborted during unloading. Fixes #70022.
18902
18903         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
18904
18905         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
18906         checkpoint_func as an icall so it gets a wrapper.
18907         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
18908         in the cross-appdomain wrappers too.
18909
18910         * threads.c (mono_thread_has_appdomain_ref): Make this public.
18911
18912         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
18913
18914         * reflection.c: Fix some memory leaks.
18915         
18916 2004-12-02  Martin Baulig  <martin@ximian.com>
18917
18918         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
18919
18920         * metadata.c (generic_class_cache): New static hashtable.
18921         (mono_metadata_lookup_generic_class): New public method.
18922
18923 2004-12-02  Martin Baulig  <martin@ximian.com>
18924
18925         * class.c (mono_class_create_from_typedef): Call
18926         mono_class_setup_parent() and mono_class_create_mono_type() before
18927         parsing the interfaces.
18928
18929 2004-12-02  Martin Baulig  <martin@ximian.com>
18930
18931         * metadata.c (generic_inst_cache): New static hashtable.
18932         (mono_metadata_lookup_generic_inst): New public function.
18933         (mono_metadata_inflate_generic_inst): New public function.
18934         (mono_metadata_parse_generic_inst): New public function.
18935         (do_mono_metadata_parse_generic_class): Use the new
18936         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
18937         since this'll also use the cache.
18938
18939         * reflection.c (mono_reflection_bind_generic_method_parameters):
18940         Use mono_metadata_lookup_generic_inst() to use the new cache.
18941
18942         * class.c (inflate_mono_type): Use
18943         mono_metadata_inflate_generic_inst() to inflate a generic
18944         instance; this'll also use the new cache.
18945
18946         * loader.c (method_from_methodspec): Use
18947         mono_metadata_parse_generic_inst() and
18948         mono_metadata_inflate_generic_inst() rather than parsing it
18949         manually, so we can use the new cache.
18950
18951 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18952
18953         * threads.c (wait_for_tids): Do not incorrectly free threads when 
18954         the wait times out.
18955
18956 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18957
18958         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
18959         iter->args based on whether parameters are passed in registers (i.e.
18960         MONO_ARCH_REGPARMS is defined)
18961
18962 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
18963
18964         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
18965         the exception message. Fixes #70070.
18966         (method_from_methodspec): Fix warnings.
18967
18968 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18969
18970         * process.c: (complete_path) return the path quoted
18971
18972 2004-12-01  Martin Baulig  <martin@ximian.com>
18973
18974         * class-internals.h (MonoGenericInst): New structure.
18975         (MonoGenericClass): Replaced `type_argc', `type_argv' and
18976         `is_open' with `MonoGenericInst *inst'.
18977         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
18978         `is_open' with `MonoGenericInst *inst'.
18979
18980 2004-11-30  Martin Baulig  <martin@ximian.com>
18981
18982         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
18983
18984         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
18985         to `generic_class_cache'.
18986
18987         * metadata.c
18988         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
18989         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
18990         (mono_generic_inst_is_valuetype): Renamed to
18991         mono_generic_class_is_valuetype().
18992
18993         * class-internals.h
18994         (MonoGenericInst): Renamed to MonoGenericClass.
18995         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
18996         (MonoClass): Renamed `generic_inst' to `generic_class'.
18997         (MonoGenericContext): Renamed `ginst' to `gclass'.
18998
18999         * object-internals.h
19000         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
19001
19002         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
19003         mono_reflection_generic_class_initialize().
19004
19005         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
19006         now known as "System.Reflection.MonoGenericClass".
19007         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
19008
19009 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
19010
19011         * class-internals.h: Added a flag field to MonoClass to cache the
19012         declarative security attributes actions associated with the class.
19013         * domain-internals.h: Added booleans to MonoJitInfo to cache the
19014         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
19015         applicable to the JITted method.
19016         * reflection.c|h: Added functions to extract (as flags) which security
19017         actions are available (declaratively) for a method, class or assembly.
19018         * metadata.c|h: Added functions to search the declarative security
19019         table in the metadata.
19020         
19021 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
19022
19023         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
19024         EXPORTEDTYPES are already in the class name cache, so there is no
19025         need to add extra code here to look at them. Just removes a bit of
19026         cruft.
19027
19028         (ves_icall_System_Environment_get_TickCount): No need for #if
19029         WINDOWS. We already have the code in io-layer.
19030
19031 2004-11-28  Martin Baulig  <martin@ximian.com>
19032
19033         * loader.c
19034         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
19035         Fixes gen-112.cs.
19036
19037 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
19038
19039         * assembly.c (do_mono_assembly_open): Instead of having a
19040         conditional WITH_BUNDLE, incorporate support for bundles here, by
19041         having a global `bundles' variable holding a pointer to the actual
19042         bundles. 
19043
19044         (mono_register_bundled_assemblies): New API call used by the
19045         bundle code. 
19046
19047         See mkbundle.1 for details.
19048         
19049 2004-11-27  Martin Baulig  <martin@ximian.com>
19050
19051         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
19052         the vtable for generic methods.
19053
19054 2004-11-26  Martin Baulig  <martin@ximian.com>
19055
19056         * metadata.c
19057         (mono_metadata_generic_method_hash): New public function.
19058         (mono_metadata_generic_method_equal): Likewise.
19059
19060         * class-internals.h
19061         (MonoGenericContainer): Added `GHashTable *method_hash'.
19062
19063         * reflection.c (ReflectionMethodBuilder): Added
19064         `MonoGenericContainer *generic_container'.
19065         (reflection_methodbuilder_to_mono_method): Don't create a new
19066         MonoGenericContainer each time we're called.
19067         (mono_reflection_bind_generic_method_parameters): Use
19068         `container->method_hash' to cache the results so we don't create a
19069         different method if we're called several times with the same
19070         arguments.
19071
19072         * loader.c (method_from_methodspec): Use the new
19073         `container->method_hash' here, too.
19074
19075 2004-11-26  Martin Baulig  <martin@ximian.com>
19076
19077         * class.c (inflate_generic_signature): Correctly compute
19078         `res->has_type_parameters'.
19079         (mono_class_vtable): Use the `has_type_parameters' flag to
19080         determine whether we're a generic method.
19081
19082         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
19083
19084 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19085
19086         * object.c (mono_runtime_run_main): Fix a small memory leak.
19087
19088 2004-11-25  Martin Baulig  <martin@ximian.com>
19089
19090         * class.c (set_generic_param_owner): Fixed the loop.
19091
19092 2004-11-25  Martin Baulig  <martin@ximian.com>
19093
19094         * object.c (mono_class_vtable): Don't create any JIT wrappers for
19095         generic methods.
19096
19097 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19098
19099         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
19100         names. Fixes #69787.
19101
19102 2004-11-24  Martin Baulig  <martin@ximian.com>
19103
19104         * class.c (mono_class_create_generic_2): If we don't have a
19105         `ginst->parent', inflate `gklass->parent' to get our parent.
19106
19107 2004-11-24  Martin Baulig  <martin@ximian.com>
19108
19109         * reflection.c (compare_genericparam): Correctly sort the
19110         GenericParam table; fixes #69779.
19111
19112 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
19113
19114         * reflection.c: When writing a PE file, don't create a huge
19115         buffer in memory. Just write the arrays we have to the file.
19116         This reduces memory usage.
19117
19118         * metadata-internals.h: MonoDynamicStream pefile is no longer used
19119         globally.
19120
19121 2004-11-17  Martin Baulig  <martin@ximian.com>
19122
19123         * class.c (mono_class_init): Don't setup `class->parent' for
19124         dynamic instances; moved this to mono_class_generic_2().
19125         (mono_class_create_generic): Also set `klass->inited' for dynamic
19126         generic instances.
19127         (mono_class_create_generic_2): Don't do anything for dynamic
19128         generic instances.  Set `klass->parent' here and also call
19129         mono_class_setup_parent() here. 
19130
19131         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
19132         `MonoType *parent' argument; set `ginst->parent' before calling
19133         mono_class_create_generic_2(), so we set the correct parent.
19134
19135 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
19136
19137         * reflection.c: allow getting attributes from ModuleBuilder
19138         (used by ikvm).
19139
19140 2004-11-17  Martin Baulig  <martin@ximian.com>
19141
19142         * class.c (mono_class_create_from_typedef): If a type parameter is
19143         inherited from an outer class, set its owner to that class.
19144
19145 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
19146
19147         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
19148           for (int*) written size. This fixes bug #69592.
19149
19150 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19151
19152         * icall.c: Added IsAuthenticodePresnet internal call.
19153         * image.c|h: New function that check a MonoImage for an Authenticode
19154         signature in the certificate PE data directory.
19155         * security.c|h: New internal call to ask the runtime if an 
19156         Authenticode signature seems referenced in the PE header.
19157
19158 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
19159
19160         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
19161
19162         * reflection.c (mono_image_create_pefile): Free the assembly streams
19163         after writing out the assembly file.
19164
19165         * object.c (mono_runtime_run_main): Fix small memory leak.
19166
19167         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
19168         property access modifiers. Fixes #69389.
19169
19170 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19171
19172         * domain.c, object.c, object-internals.h, domain-internals.h,
19173         object.h, marshal.c: keep dynamic code info per domain.
19174
19175 2004-11-15  Martin Baulig  <martin@ximian.com>
19176
19177         * class.c (mono_type_get_name_recurse): Put type arguments in
19178         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19179         see bug #68387.
19180
19181 2004-11-15  Martin Baulig  <martin@ximian.com>
19182
19183         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19184         (mono_class_setup_vtable): When computing `the_cname' for a
19185         generic instance, don't include the namespace since we'd otherwise
19186         add it twice.
19187
19188 2004-11-15  Martin Baulig  <martin@ximian.com>
19189
19190         * class.c (mono_class_create_generic): Changed return type to void.
19191         (mono_class_create_generic_2): New public function; setup
19192         `class->method', `class->field' and `class->interfaces' here
19193         instead of in mono_class_init().
19194
19195         * class.h (mono_class_create_generic): Moved to class-internals.h.
19196
19197 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19198
19199         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19200         rather than writing to memory, write to this file. Right now,
19201         we are just writting into a buffer, and copying that. However
19202         we can avoid the buffer later.
19203
19204         (mono_dynamic_stream_reset): new function
19205
19206         * icall.c, object-internals.h: update for the above.
19207
19208 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19209
19210         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19211         have been using gc'd memory. First it is slower, unlikely
19212         the comment in the source code said, secondly, it increases
19213         our footprint to do it in the gc.
19214
19215         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19216         the method so that it does not have to copy to managed code.
19217
19218 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19219
19220         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19221
19222 2004-11-12  Martin Baulig  <martin@localhost>
19223
19224         * reflection.c (mono_image_create_token): Allow generic method
19225         definitions here, since they may appear in an `.override'; see
19226         gen-98/gen-99 for an example.
19227
19228 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19231         #69365.
19232
19233         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19234         descriptive.
19235
19236 2004-11-11  Martin Baulig  <martin@ximian.com>
19237
19238         * class.c (mono_class_setup_vtable): In an explicit interface
19239         implementation, the method name now includes the arity.
19240
19241 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19242
19243         * object.c (mono_array_full_copy): Fix warning.
19244
19245 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19246
19247         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19248         mono_class_get_method_from_name() instead.
19249         
19250         * class-internals.h: Added two new types of wrappers. 
19251         Added MonoRemotingTarget enum. Added new trampoline function type, which
19252         takes an additional MonoRemotingTarget value as parameter, so it is
19253         possible to request a trampoline for a specific target.
19254         
19255         * class.c: Added new mono_class_get_method_from_name() method.
19256         
19257         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19258         general remoting sinks and one specific for cross domain calls.
19259         
19260         * debug-helpers.c: Added new wrapper names.
19261         
19262         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19263         of a remote class.
19264         
19265         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19266         
19267         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19268         with several other methods (mono_marshal_get_xappdomain_dispatch,
19269         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19270         and others) can generate a fast remoting wrapper for cross domain calls.
19271         More information can be found in docs/remoting.
19272         Other changes: Removed mono_find_method_by_name, and used
19273         mono_class_get_method_from_name instead.
19274         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19275         is stored in the remoting invoke hashtable.
19276         
19277         * marshal.h: published the new method for getting the xdomain wrapper,
19278         and also added a method for getting the adequate wrapper for a given
19279         method and target.
19280         
19281         * object-internals.h, object.c: Added a couple of methods for capying and
19282         cloning arrays.
19283         Modified mono_install_remoting_trampoline, which takes the new remoting
19284         trampoline that has a remoting target as parameter.
19285         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19286         will return the most suitable vtable for the target.
19287         Added mono_remote_class_vtable, which returns the vtable of a remote class
19288         (which can be the normal remoting vtable or the xdomain vtable).
19289         
19290         * threads.c: the xdomain invoke and dispatch wrappers must also be
19291         protected against interruptions.
19292
19293 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19294
19295         * icall.c: use memmove in BlockCopyInternal when the source and
19296         destination arrays are the same.
19297
19298 2004-11-09  Martin Baulig  <martin@ximian.com>
19299
19300         * class-internals.h (MonoGenericContainer): Removed `method' and
19301         `signature', replaced them with `is_method' and `is_signature'
19302         flags.  Added `context'.
19303
19304         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19305         instead of a `MonoGenericContainer *'.
19306
19307         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19308         for dynamic type parameters.
19309         (mono_metadata_load_generic_params): Setup `container->context'.
19310
19311         * reflection.c (mono_reflection_setup_generic_class): Setup
19312         `tb->generic_container->context'.
19313         (do_mono_reflection_bind_generic_parameters): Use
19314         mono_class_inflate_generic_type() to correctly inflate types,
19315         rather than using our own hack just for MONO_TYPE_VAR.
19316
19317 2004-11-09  Martin Baulig  <martin@ximian.com>
19318
19319         * class.c (mono_class_inflate_generic_method): Small fix; don't
19320         crash here.
19321
19322         * icall.c
19323         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19324         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19325         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19326         (ves_icall_Type_BindGenericParameters): Likewise.
19327         (ves_icall_Type_get_IsGenericInstance): Likewise.
19328         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19329         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19330         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19331         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19332
19333 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19334
19335         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19336         assembly versions and public key tokens. Fixes #69113.
19337
19338 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19339
19340         * metadata.c: fix bug introduced with the type cache changes
19341         on 2004-11-06.
19342
19343 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19344
19345         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19346         the MonoClass pointer instead of the token in exception clauses.
19347         * reflection.c: updates for the above and make the code not depend
19348         on the structure of MonoExceptionClause.
19349
19350 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19351
19352         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19353         Add support for dynamic assemblies. Fixes #69114.
19354
19355         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19356
19357 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19358
19359         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19360         since most only those methods use it. the code member of
19361         MonoMethodPInvoke was dead, so that can be removed too. Also,
19362         remove inline_count (again, not used), and move slot so that it
19363         can share bits with some other flags. This saves 8 bytes in the
19364         structure and gives us about 50 kb back for mcs helloworld.cs
19365
19366         * *.[ch]: Do naming changes for the above.
19367
19368         * loader.c (mono_method_get_header): Lazily init the header
19369         on first access.
19370         (mono_get_method_from_token): don't init the header here
19371         (mono_free_method): the header may never be allocated
19372
19373         Overall, this saves 150 kb of unmanaged allocations
19374         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19375         memory at runtime.
19376         
19377         * loader.c, loader.h (mono_method_get_header): new accessor.
19378
19379         * *.[ch]: use the above method. Prepares us to lazily load
19380         the header.
19381
19382         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19383         three warnings, which are actual bugs (see 69206).
19384
19385         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19386         unused. Saves a cool 4 bytes / method.
19387
19388 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19389
19390         * metadata.c (builtin_types): Add types for System.Object here.
19391         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19392         for a class or valuetype from klass->this_arg or klass->byval_arg.
19393
19394         On mcs for a hello world, this gets us down from 21836 MonoType's
19395         to 14560.
19396
19397         (mono_metadata_free_type): Account for the above change.
19398
19399 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19400
19401         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19402         exception instead of asserting if name is null.
19403         (ves_icall_System_AppDomain_GetData): Ditto.
19404
19405 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19406
19407         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19408         EnumBuilder.
19409
19410         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19411         Return NULL when the domain does not have entry_assembly set.
19412
19413         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19414         Add a 'resource_modules' argument.
19415         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19416
19417         * reflection.c (mono_reflection_create_runtime_class): Move setting
19418         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19419         for enums too.
19420
19421         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19422         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19423         Throw an ArgumentNullException if 'ptr' is null.
19424
19425         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19426         assemblies here. Fixes #69020.
19427
19428 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19429
19430         * reflection.c (build_compressed_metadata): Fix the previous patch for
19431         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19432         the stack.
19433
19434 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19435
19436         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19437         the cultures is false. Fixes #69090.
19438
19439         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19440         detected by valgrind.
19441         
19442         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19443         TypeResolve multiple times for the same type. Fixes #65577.
19444
19445 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19446
19447         * marshal.c: Avoid using ldftn to call managed functions. It is
19448         much slower than just a call.
19449
19450         * reflection.c (mono_module_get_object): free the basename we
19451         allocate here from glib.
19452         
19453         * reflection.c (ensure_runtime_vtable): make sure to free
19454         overrides.  Also, we were allocating an array of MonoMethod not an
19455         array of MonoMethod*.
19456
19457         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19458
19459         * image.c (mono_image_close): free image->guid here.
19460
19461 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19462
19463         * reflection.c: Fix some spec conformance issues with the PE file
19464         structures so mcs compiled apps run on the Net 2.0 beta.
19465
19466 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19467
19468         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19469         Implement this. Fixes #67264.
19470
19471         * debug-helpers.h debug-helpers.c marshal.c: Move 
19472         mono_find_method_by_name to debug-helpers.c.
19473
19474 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19475
19476         * object.c (mono_release_type_locks): type_initialization_hash is
19477         a GHashTable.
19478
19479         * reflection.c object.c object-internals.h: Fix warnings.
19480
19481         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19482         without accessors. Fixes #61561.
19483
19484         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19485         application base from the root domain if not set. Fixes #65641.
19486         (mono_runtime_init): Fix warning.
19487
19488 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19489
19490         * appdomain.c: call mono_thread_pool_init.
19491         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
19492         of worker threads based on the number of CPUs and the environment
19493         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
19494         for non-windows (windows) systems.
19495
19496 2004-10-27  Chris Toshok  <toshok@ximian.com>
19497
19498         * mono-debug-debugger.c (write_class): don't call mono_class_init
19499         here, as even with the check for (!klass->init_pending), we get
19500         into a situation where we're hitting cycles in class
19501         initialization.  Fixes #68816.
19502
19503 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19504
19505         * image.c: Avoid overwriting values in the loaded_images_hash when an
19506         assembly is loaded multiple times. Fixes #61152.
19507
19508         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
19509         so multiple satellite assemblies for the same name can be loaded.
19510         Fixes #68259.
19511
19512         * mono_domain_assembly_preload: Actually return the loaded assembly, 
19513         not NULL.
19514
19515         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
19516         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
19517
19518         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
19519         pending finalizers are not invoked after the appdomain has been 
19520         unloaded. Fixes #67862.
19521
19522 2004-10-22  Martin Baulig  <martin@ximian.com>
19523
19524         * mono-debug-debugger.c
19525         (mono_debugger_runtime_invoke): Don't box valuetypes.
19526
19527 2004-10-22  Chris Toshok  <toshok@ximian.com>
19528
19529         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
19530         don't hide private methods.
19531
19532 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
19533
19534         * icall.c: Allows the runtime to "share" (when known) the public key
19535         token of an assembly. This avoid the need to recalculate the token 
19536         (from the public key) in managed code.
19537
19538 2004-10-21  Chris Toshok  <toshok@ximian.com>
19539
19540         * debug-helpers.c (append_class_name): argh, revert last patch.
19541         
19542 2004-10-21  Chris Toshok  <toshok@ximian.com>
19543
19544         * debug-helpers.c (append_class_name): use '+' as the delimiter,
19545         not '/', so that it matches what the debugger uses to look up
19546         methods.
19547
19548 2004-10-21  Martin Baulig  <martin@ximian.com>
19549
19550         * mono-debug-debugger.c (mono_debugger_throw_exception): New
19551         public method; this is called each time an exception is thrown and
19552         allows the debugger to use exception catch points.
19553
19554 2004-10-21  Martin Baulig  <martin@ximian.com>
19555
19556         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
19557         the stack pointer and the exception object in some struct and pass
19558         that to the debugger.
19559
19560 2004-10-21  Chris Toshok  <toshok@ximian.com>
19561
19562         * mono-debug-debugger.c (do_write_class): add instance/static
19563         event support.  We don't expose "raise" or "other" yet.
19564         (event_is_static): new method.
19565
19566 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
19567
19568         * mono-debug-debugger.c
19569         (mono_debugger_handle_exception): Remove
19570         bogus return value for fussy compilers.
19571
19572 2004-10-20  Martin Baulig  <martin@ximian.com>
19573
19574         * mono-debug-debugger.c
19575         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
19576         (mono_debugger_handled_exception): Likewise.
19577
19578 2004-10-20  Martin Baulig  <martin@ximian.com>
19579
19580         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19581         MONO_DEBUGGER_EVENT_EXCEPTION.
19582
19583         * mono-debug-debugger.c (mono_debugger_handle_exception): New
19584         public function to send the debugger a notification for an
19585         exception and inform it about a catch/finally clause.
19586
19587 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
19590         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
19591         fix 2.95 build. 
19592
19593         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
19594
19595 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19596
19597         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
19598         marshalled as [In,Out]. Fixes #58325.
19599
19600 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
19601
19602         * reflection.c (mono_method_body_get_object): Implement some fields.
19603
19604 2004-10-12  Martin Baulig  <martin@ximian.com>
19605
19606         * reflection.c (mono_reflection_bind_generic_parameters): Small
19607         fix, correctly retrieve our parent from a generic instance.
19608
19609 2004-10-12  Martin Baulig  <martin@ximian.com>
19610
19611         * metadata.c (mono_metadata_generic_param_equal): We always have
19612         an owner.
19613
19614         * class.c
19615         (mono_class_from_generic_parameter): We need to have an owner.
19616         (my_mono_class_from_generic_parameter): Likewise.
19617
19618         * reflection.c (mono_reflection_setup_generic_class): Renamed to
19619         mono_reflection_create_generic_class() and added a new
19620         mono_reflection_setup_generic_class().  
19621         (mono_reflection_initialize_generic_param): If we're a nested
19622         generic type and inherited from the containing class, set our
19623         owner to the outer class.
19624
19625 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
19626
19627         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
19628
19629         * reflection.c (mono_method_body_get_object): New function to create
19630         a MethodBody object.
19631
19632         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
19633
19634 2004-10-11  Martin Baulig  <martin@ximian.com>
19635
19636         * metadata.c (_mono_metadata_type_equal): Renamed to
19637         do_mono_metadata_type_equal() and made static.
19638
19639 2004-10-11  Martin Baulig  <martin@ximian.com>
19640
19641         * appdomain.c: Bump corlib version number to 28.
19642
19643 2004-10-10  Martin Baulig  <martin@ximian.com>
19644
19645         * class-internals.h
19646         (MonoGenericInst): Added `MonoGenericContainer *container'.
19647         (MonoGenericMethod): Likewise.
19648         (MonoGenericContext): Likewise.
19649         (MonoGenericParam): Added `MonoGenericContainer *owner'.
19650
19651         * metadata.c
19652         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
19653         (do_mono_metadata_parse_generic_inst): Likewise.
19654         (mono_metadata_parse_type_full): New public method.  This is the actual
19655         mono_metadata_parse_type() implementation - with an additional
19656         `MonoGenericContainer *' argument.
19657         (mono_metadata_parse_array_full): Likewise.
19658         (mono_metadata_parse_signature_full): Likewise.
19659         (mono_metadata_parse_method_signature_full): Likewise.
19660         (mono_metadata_parse_mh_full): Likewise.
19661         (mono_type_create_from_typespec): Likewise.
19662         (mono_metadata_interfaces_from_typedef_full): New public method;
19663         this is similar to the other _full() methods, but we take a
19664         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
19665         (mono_metadata_parse_generic_param): Take an additional
19666         `MonoGenericContainer *' argument and lookup the MonoGenericParam
19667         from that container.
19668         (mono_metadata_generic_param_equal): New static method to compare
19669         two type parameters.
19670         (_mono_metadata_type_equal): New static method; takes an
19671         additional `gboolean signature_only' argument - if true, we don't
19672         compare the owners of generic parameters.
19673         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
19674         with a TRUE argument - do a signature-only comparision.
19675
19676         * loader.c: Use the new _full() methods and pass the
19677         MonoGenericContainer to them.
19678
19679         * object-internals.h (MonoReflectionTypeBuilder): Added
19680         `MonoGenericContainer *generic_container' field.
19681         (MonoReflectionMethodBuilder): Likewise.
19682
19683 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19684
19685         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
19686         case initial images of dynamic assemblies.
19687
19688         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
19689
19690         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
19691
19692         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
19693         length of event->other array.
19694         (typebuilder_setup_events): Ditto.
19695
19696         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
19697         'assembly_by_name' and add an 'assemblies' list.
19698
19699         * assembly.h assembly.c: Add a new search hook for determining whenever
19700         an assembly is already loaded. Use this instead of searching in the
19701         loaded_assemblies list.
19702
19703         * domain.c appdomain.c: Implement the new search hook so loaded 
19704         assemblies are now scoped by appdomain. Fixes #67727.
19705
19706 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
19707
19708         * threads.c (mono_thread_attach): Initialize synch_lock field so
19709         mono_thread_detach works again.
19710
19711         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
19712         'lib' too. Fixes #63130.
19713
19714 2004-10-06  Jackson Harper  <jackson@ximian.com>
19715
19716         * culture-info-tables.h: regenerated.
19717
19718 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
19719
19720         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
19721         implemented by other interfaces in the result. Fixes #65764.
19722         
19723         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19724         Handle unloadable modules without crashing.
19725
19726         * image.c (load_modules): Revert the previous patch since modules must
19727         have a fixed index inside the array.
19728         
19729         * image.c (load_modules): Don't include native modules in the modules
19730         array.
19731
19732 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19733
19734         * reflection.h: Add param_defaults field.
19735
19736         * reflection.c: Add support for parameter defaults in dynamic methods.
19737         Fixes #64595.
19738
19739         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
19740         an empty string when a type has no namespace. Fixes #64230.
19741
19742 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
19743
19744         * tabledefs.h: Added "internal" security actions to support non-CAS
19745         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
19746         Note: they do not seems to be used anymore in 2.0 (new metadata format)
19747
19748 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
19749
19750         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
19751         constructor of abstract class. Fixes #61689.
19752
19753 2004-10-04  Martin Baulig  <martin@ximian.com>
19754
19755         * class-internals.h (MonoGenericContainer): New type.
19756         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
19757         `MonoGenericContainer *generic_container'.
19758         (MonoClass): Replaced `gen_params' and `num_gen_params' with
19759         `MonoGenericContainer *generic_container'.
19760
19761         * metadata.c (mono_metadata_load_generic_params): Return a
19762         `MonoGenericContainer *' instead of a `MonoGenericParam *';
19763         removed the `num' argument.
19764
19765 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19766
19767         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
19768         for dynamic images.
19769
19770         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
19771         machine fields.
19772
19773         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
19774
19775         * reflection.c: Save pe_kind and machine values into the generated
19776         image file.
19777
19778         * appdomain.c: Bump corlib version number.
19779
19780         * object-internals.h: Reorganize layout of LocalBuilder.
19781
19782         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
19783         New helper function.
19784
19785         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
19786         created MonoType for dynamic types. Fixes #66180.
19787
19788 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
19789
19790         * threadpool.c: the ares hashtable needs a critical section around it.
19791         this prevents some nasty segfaults
19792
19793 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19794
19795         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
19796         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
19797         bug 67324).
19798         
19799 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
19802         
19803 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19804
19805         * image.c: Always canonicalize image file names, to avoid loading
19806         the same assembly twice when referenced using a relative path.
19807
19808 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19809
19810         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
19811
19812         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
19813
19814         * marshal.c: Fix warnings.
19815
19816 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
19817
19818         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
19819         attempting to marshal the delegate_trampoline as the method_addr.
19820         This patch has a static hashtable of marshalled delegates so that 
19821         we can map delegate_trampoline addresses back to delegates.  This
19822         allows a delegate passed to managed code to be passed back into native
19823         code.  Fixes #67039
19824
19825 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19826
19827         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
19828
19829         * reflection.c (method_encode_code): Align method headers properly.
19830         Fixes #66025.
19831
19832 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19833
19834         * marshal.c: In the runtime invoke wrapper, reset the abort
19835         exception if it is cached. This avoids the automatic rethrowal of 
19836         the exception after the catch of the wrapper. Also check for pending
19837         interruptions before calling the managed method. This is done using
19838         the new method emit_thread_force_interrupt_checkpoint, since the
19839         normal checkpoint method is ignored when running the invoke wrapper.
19840         * object.c: If the abort exception is rethrown, set the abort_exc
19841         field of the thread, so it will be rethrown aftere every catch.
19842         * threadpool.c: Only run an interruption checkpoint if what has been
19843         requested is a stop of the thread (aborts will be ignored).
19844         * threads.c: By default, a thread will now never be interrumped while
19845         running the runtime invoke wrapper (this ensures that runtime_invoke
19846         will always return to the caller if an exception pointer is provided).
19847         There is a new special method mono_thread_force_interruption_checkpoint()
19848         to force an interruption checkpoint even if running a protected
19849         wrapper, which is used by the same runtime invoke wrapper to do a check
19850         at a safe point.
19851
19852 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19853
19854         * object.c, object-internals.h: Implemented mono_release_type_locks,
19855         which releases the cctor locks held by a thread.
19856         * threads.c, threads.h: In thread_cleanup, release cctor locks held
19857         by a thread. Added mono_thread_exit() method to be used to safely stop
19858         a thread.
19859
19860 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19861
19862         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19863         Move null check before dereference.  Avoid indexing beyond the end
19864         of the 'modules' array.
19865
19866 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19867
19868         * metadata-internals.h (MonoImage): Add module_count field.
19869         * image.c (load_modules): Set image->module_count.
19870         (mono_image_load_file_for_image): Use image->module_count.
19871         * reflection.c (mono_image_load_module): Append to image->modules array 
19872         of dynamic assembly.
19873         (mono_module_get_object): Fix loop to actually increment index.
19874         Use image->module_count.
19875         * assembly.c (mono_assembly_load_references): Use image->module_count.
19876         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
19877         Likewise.
19878
19879 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19880
19881         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
19882         Avoid assert on generic types.
19883
19884 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
19887
19888         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
19889
19890         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
19891         function to convert a MarshalSpec structure to its managed counterpart.
19892
19893         * reflection.c: Fix warnings.
19894         
19895         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
19896         field.
19897
19898         * icall.c (mono_create_icall_signature): Fix build.
19899
19900 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19901
19902         * icall.c: Add MakePointType icall.
19903
19904         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
19905         warnings.
19906
19907 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19908
19909         * threadpool.c: reuse allocated slots in the queue.
19910
19911 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19912
19913         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
19914
19915         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
19916
19917         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
19918         previous change.
19919
19920         * tabledefs.h: Add constants for pinvoke attributes BestFit and
19921         ThrowOnUnmappableChar.
19922
19923         * icall.c (ves_icall_Type_GetPacking): New icall.
19924
19925 2004-09-24  Martin Baulig  <martin@ximian.com>
19926
19927         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
19928
19929 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19930
19931         * appdomain.c:
19932         (mono_domain_set): allow setting a domain that is being unloaded.
19933         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
19934         being unloaded.
19935
19936 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19937
19938         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
19939         the GetCustomAttributes icall.
19940
19941 2004-09-23  Martin Baulig  <martin@ximian.com>
19942
19943         * object-internals.h (MonoReflectionGenericParam): Replaced
19944         'has_ctor_constraint', `has_reference_type' and `has_value_type'
19945         with `guint32 attrs'.
19946
19947 2004-09-23  Martin Baulig  <martin@ximian.com>
19948
19949         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
19950
19951 2004-09-23  Martin Baulig  <martin@ximian.com>
19952
19953         * object-internals.h (GenericParameterAttributes): New enum.
19954
19955 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
19958         
19959         * class.c (init_events): Fill out event->other field.
19960
19961         * class.c: Fix warnings.
19962
19963         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
19964
19965 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
19966
19967         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
19968         walk which doesn't supply the IL offset.
19969
19970 2004-09-22  Martin Baulig  <martin@ximian.com>
19971
19972         * reflection.c (mono_reflection_setup_internal_class): If we're
19973         System.ValueType, System.Object or System.Enum, set
19974         `klass->instance_size' and create the vtable.
19975         (mono_reflection_create_internal_class): If we're an enum type,
19976         get the base class from our current corlib.
19977
19978 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
19979
19980         * reflection.h (MonoResolveTokenError): New type.
19981
19982         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
19983         icall.
19984
19985         * icall.c: Add an 'error' argument to the ResolveToken icalls.
19986
19987 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
19988
19989         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
19990         Support also calling constructors, but only for already allocated objects.
19991
19992 2004-09-17  Geoff Norton <gnorton@customerdna.com>
19993
19994         * reflection.c (type_get_qualified_name): If the klass is null
19995         return the typename to avoid a NullRefEx.
19996         (encode_cattr_value): Get the qualified name of the boxed type,
19997         not the underlying enumtype.  Fixes #62984.
19998
19999 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
20000
20001         * marshal.c: Fix problems with previous checkin.
20002
20003 2004-09-21    <vargaz@freemail.hu>
20004
20005         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
20006         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
20007
20008         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
20009
20010 2004-09-21  Geoff Norton <gnorton@customerdna.com>
20011
20012         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
20013         should only return a type for pointers, arrays, and passbyref types.
20014         Fixes bug #63841.
20015
20016 2004-09-21  Martin Baulig  <martin@ximian.com>
20017
20018         * domain.c (mono_debugger_check_runtime_version): New public
20019         function.
20020
20021         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
20022
20023 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
20024
20025         * reflection.c: Added missing sort to the declarative security 
20026         attributes table. MS implementation stops seeing the attributes if the
20027         token number regress in the table (as shown by ildasm and permview).
20028
20029 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
20030
20031         * object-internals.h (MonoReflectionModule): Add 'token' field.
20032         
20033         * reflection.c (mono_reflection_get_token): Add support for Module
20034         and Assembly.
20035         (mono_module_get_object): Set 'token' field.
20036         (mono_module_file_get_object): Set 'token' field.
20037
20038         * icall.c: Add new Assembly and Module icalls.
20039
20040         * appdomain.c: Bump corlib version.
20041
20042 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
20043
20044         * loader.h loader.c class.h class.c: Add helper functions for obtaining
20045         tokens of metadata objects.
20046
20047         * reflection.h reflection.c (mono_reflection_get_token): New function
20048         to obtain the token of a metadata object.
20049
20050         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
20051
20052 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20053
20054         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
20055         
20056         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
20057
20058 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
20059
20060         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
20061         * object-internals.h: Added 3 MonoArray* members to MonoReflection
20062         AssemblyBuilder to access the permissions set in the class lib.
20063         * reflection.c: Added security attributes encoding step in 
20064         mono_image_build_metadata.
20065         * tabledefs.h: Added new security actions defined in 2.0:
20066         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
20067
20068 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20069
20070         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
20071         macro parameter.
20072
20073 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20074  
20075         * locales.c: nullify the ICU_collator member of CompareInfo when it is
20076           finalized. There where random SIGSEVs at program termination, when
20077           an object being finalized was trying to do a string comparison and
20078           the current culture was already finalized.
20079  
20080 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20081
20082         * threads.c: call thread_cleanup before finishing the thread if we get
20083         there.
20084
20085 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
20086
20087         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
20088         assemblies from the parent. Fixes #65665.
20089
20090 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
20093         modifiers.
20094
20095 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
20096
20097         * reflection.h: add prototype for mono_get_dbnull_object
20098         * reflection.c: add prototypes for get_default_param_value_blobs 
20099         and mono_get_object_from_blob for fussier compilers
20100
20101 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
20102  
20103         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
20104         false deadlock checks in class initialization.
20105  
20106 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * image.c (mono_image_addref): Fix comment.
20109
20110         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
20111         possible.
20112
20113 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
20114
20115         * reflection.c (mono_param_get_objects): Modified to return
20116         ParameterInfo.DefaultValue object.
20117
20118         (get_default_param_value_blobs):
20119         (mono_get_object_from_blob):
20120         (mono_get_dbnull_object): New helper routines. 
20121
20122         * object.c (mono_get_constant_value_from_blob): New helper routine
20123         carved out from get_default_field_value ()
20124
20125         * object-internals.h (mono_get_constant_value_from_blob): Added
20126         function declaration.
20127
20128 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20129
20130         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
20131         referenced assemblies. Fixes #62135.
20132
20133         * exception.h exception.c (mono_get_exception_file_not_found2): New
20134         helper function.
20135
20136 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20137
20138         * class.h class.c: Add mono_type_get_underlying_type ().
20139
20140 2004-09-09  Geoff Norton <gnorton@customerndna.com>
20141
20142         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
20143         Fix GetTypes() to support dynamically created assemblies.
20144
20145 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
20148         
20149         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
20150         previous patch.
20151
20152         * reflection.h reflection.c loader.c: Allow dynamic construction of
20153         pinvoke methods. Fixes #65571.
20154         
20155         * reflection.c (mono_reflection_get_type): Revert previous change since
20156         it causes regressions.
20157
20158 2004-09-08  Martin Baulig  <martin@ximian.com>
20159
20160         * class.c (class_compute_field_layout): Don't call
20161         mono_class_layout_fields() for open generic instances.
20162
20163 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
20164         * threads.c appdomain.c: fix typo in GC macro
20165
20166 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20167
20168         * threads.c: don't call mono_thread_detach() in start_wrapper(),
20169         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
20170
20171 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * image.c (mono_image_close): Applied patch from 
20174         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
20175         assembly is loaded multiple times from data.
20176         
20177         * image.c (mono_image_open): Fix warning.
20178
20179 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20180
20181         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20182         once. Fixes #58334.
20183         
20184         * reflection.c (mono_reflection_create_runtime_class): Initialize
20185         klass->nested_classes. Fixes #61224.
20186
20187 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20188
20189         * threads.c: sched_yield() on exit, to allow threads to quit.
20190
20191 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20192
20193         * object.c (mono_unhandled_exception): Remove leftover debug code.
20194
20195 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20196
20197         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20198
20199 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20200
20201         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20202         
20203         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20204
20205 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20206
20207         * marshal.c (emit_marshal_array): Null terminate string arrays.
20208         
20209         * marshal.c (raise_auto_layout_exception): Fix warning.
20210
20211         * reflection.c (mono_param_get_objects): Initialize the default value
20212         with DBNull.Value, not null. Fixes #62123.
20213
20214 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20215
20216         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20217         throw an exception with a cute explanation.
20218
20219 2004-09-06  Dick Porter  <dick@ximian.com>
20220
20221         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20222         Close the new process's thread handle, as we don't use it.  The
20223         handle stays around forever otherwise.
20224
20225 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20226
20227         * object.c (arith_overflow): Fix warning.
20228
20229         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20230         calling conventions in method refs. Fixes #65352.
20231
20232         * reflection.c: Fix warnings.
20233
20234 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20235
20236         * icall.c: Add a new icall for Array.Clear
20237
20238 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20239
20240         * object.c: When allocating an array, we have to throw
20241         an overflow exception if any of the lengths are < 0.
20242
20243 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20244
20245         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20246         properly. Also move implementation of string array marshalling to 
20247         managed code. Fixes #42316.
20248
20249 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20250
20251         * assembly.c: provide more information when loading an assembly fails.
20252
20253 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20254
20255         * filewatcher.c: don't expect the development fam package to be
20256         installed.
20257
20258 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20259
20260         * marshal.c: Make a copy of the signature cookie since it will be
20261         freed by the caller.
20262         
20263         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20264
20265         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20266
20267         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20268         marshal specs.
20269
20270         * marshal.c: More refactoring.
20271         
20272         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20273         smaller functions.
20274
20275 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20276
20277         * object.c: In mono_message_invoke, fill the output parameter array after
20278           calling the managed method (it was done before the call). This fixes
20279           bug #59299.
20280
20281 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20282
20283         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20284         as well.
20285
20286 2004-09-02  Martin Baulig  <martin@ximian.com>
20287
20288         * class.c (mono_class_instance_size): Don't allow generic type
20289         definitions or open generic instances.
20290         (mono_class_array_element_size): If we're a value type, call
20291         mono_class_instance_size() on the original class.
20292
20293         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20294         handle generic instances.
20295
20296         * mono-debug-debugger.c (write_type): Handle generic instances
20297         like classes.
20298
20299 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20300
20301         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20302         the allocation request fails. Fixes #65089.
20303
20304         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20305         
20306         * object.c (mono_runtime_free_method): New function to free a dynamic
20307         method.
20308
20309         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20310         delegate trampoline.
20311
20312         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20313         with hasthis as dynamic,
20314
20315         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20316
20317         * domain.c (mono_jit_info_table_remove): New function to remove an
20318         entry from the jit info table.
20319
20320         * class-internals.h (MonoMethod): Add 'dynamic' field.
20321
20322         * loader.c: Fix warnings.
20323
20324 2004-09-01  Martin Baulig  <martin@ximian.com>
20325
20326         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20327         instead of mono_debugger_lock() because the latter one is a no-op
20328         unless running in the debugger.
20329
20330 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20331
20332         * class.c (class_compute_field_layout): Classes with auto-layout or
20333         reference fields are not blittable.
20334         
20335 2004-09-01  Dick Porter  <dick@ximian.com>
20336
20337         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20338         mono_image_get_filename() to get the assembly location.
20339
20340         * icall.c:
20341         * metadata.h: Fix compile warnings
20342
20343 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20344
20345         * class.c (class_compute_field_layout): System.Object is blittable.
20346
20347         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20348         as in/out. Fixes #59909.
20349
20350 2004-09-01  Martin Baulig  <martin@ximian.com>
20351
20352         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20353         mono_metadata_generic_inst_is_valuetype() if we're a generic
20354         instance to check whether our underlying type is a reference type.
20355
20356 2004-09-01  Martin Baulig  <martin@ximian.com>
20357
20358         * metadata.c (mono_type_size): If we're a generic instance, call
20359         mono_class_value_size() for value types.
20360
20361 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20362
20363         * marshal.c: Implement more custom marshalling functionality. Fixes
20364         #64915.
20365
20366 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20367
20368         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20369
20370 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20371
20372         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20373
20374         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20375
20376         * icall.c: Fix some warnings.
20377
20378         * threads.c (abort_appdomain_thread): Fix unref errors.
20379         (mono_thread_current): Fix THREAD_DEBUG define.
20380
20381 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20382
20383         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20384
20385         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20386
20387 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20388
20389         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20390         string arrays.
20391
20392 2004-08-28  Martin Baulig  <martin@ximian.com>
20393
20394         * metadata.c
20395         (mono_metadata_generic_inst_is_valuetype): New public function.
20396
20397         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20398         mono_metadata_generic_inst_is_valuetype() if we're a generic
20399         instance to check whether our underlying type is a valuetype.
20400
20401 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20402
20403         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20404         #63768.
20405
20406 2004-08-25  Martin Baulig  <martin@ximian.com>
20407
20408         * loader.c (mono_get_method_from_token): Abstract methods can also
20409         be generic and thus have type parameters.
20410
20411         * metadata-internals.h
20412         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20413
20414         * reflection.c (mono_image_get_generic_param_info): Don't create a
20415         metadata row, just add an entry to the `gen_params' array.
20416         (build_compressed_metadata): Sort the `gen_params' array and then
20417         actually create the metadata.
20418
20419 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20420
20421         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20422
20423 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20424
20425         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20426
20427 2004-08-24  Martin Baulig  <martin@ximian.com>
20428
20429         * class.cs (mono_class_is_subclass_of): Like an interface, a
20430         generic instance also derives from System.Object.
20431
20432 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20435         custom modifiers to be in any order. Fixes #61990.
20436
20437 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20438
20439         * object.c: Register mono_object_new_fast icall.
20440         
20441         * object.c (mono_class_get_allocation_ftn): Return to calling
20442         mono_object_new_fast, since it seems faster to compute the object 
20443         size in unmanaged code than passing it as a parameter.
20444
20445         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20446
20447         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20448         this function with Boehm as the oom handler, so we don't have to check
20449         the result of GC_malloc.
20450
20451         * object.c: Remove checks for oom.
20452
20453         * object.h object.c (mono_class_get_allocation_ftn): New function to
20454         return the icall which can be used to allocate an instance of a given
20455         class. 
20456
20457         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20458
20459         * class-internals.h: Add 'enabled' field.
20460
20461 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20464
20465 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20466         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20467         value 0x0010.
20468
20469 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20470
20471         * appdomain.c: use the Tls function for appdomain too,
20472         at Zoltan's request. Actually return in mono_context_get
20473
20474         * appdomain.c, profiler.c, threads.c: use __thread
20475
20476 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * appdomain.c threads.c: Call GC_CreateThread on windows.
20479
20480         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20481         multiple libraries since this don't work on windows.
20482
20483 2004-08-18  Martin Baulig  <martin@ximian.com>
20484
20485         * class-internals.h
20486         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20487         MonoMethodHeader.
20488
20489         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20490         MonoMethodNormal since we also need it for abstract and interface
20491         methods.
20492
20493         * reflection.c
20494         (build_compressed_metadata): Sort the GenericParam table.
20495         (mono_image_create_token): Added `gboolean create_methodspec'
20496         argument; this is false when generating a MethodImpl token.
20497         (reflection_methodbuilder_to_mono_method): Abstract and interface
20498         methods may also have generic parameters.
20499
20500 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20501
20502         * appdomain.c: thread local alloc
20503
20504 2004-08-17  Martin Baulig  <martin@ximian.com>
20505
20506         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
20507
20508         * icall.c
20509         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
20510         argument.
20511
20512         * class.c (mono_type_get_full_name): New public function.
20513         (mono_type_get_name): Don't include the type arguments.
20514
20515 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20516
20517         * Makefile.am: Build static versions of libmetadata and libmonoruntime
20518         for inclusion into the mono executable.
20519
20520 2004-08-16  Martin Baulig  <martin@ximian.com>
20521
20522         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
20523         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
20524
20525 2004-08-14  Martin Baulig  <martin@ximian.com>
20526
20527         * class.c (dup_type): Also copy the `byref' field.
20528
20529 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20530
20531         * reflection.c (create_dynamic_mono_image): Revert the last change 
20532         since it breaks bootstrap.
20533
20534 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20535
20536         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
20537
20538         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
20539         not free them with g_free.
20540
20541 2004-08-11  Martin Baulig  <martin@ximian.com>
20542
20543         * reflection.c (mono_reflection_setup_internal_class): Also call
20544         mono_class_setup_mono_type() if we already have a `tb->type.type'.
20545
20546 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
20547
20548         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
20549         called during default (first) AppDomain creation. Keep track of
20550         Evidence when loading assemblies.
20551
20552 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20553
20554         * opcodes.c, opcodes.h: reduce runtime relocations.
20555
20556 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20557
20558         * culture-info.h, locales.c: fixes and chages to sue the new
20559         optimized format of the locale data.
20560         * culture-info-tables.h: regenerated.
20561
20562 2004-08-06  Geoff Norton <gnorton@customerdna.com>
20563         
20564         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
20565
20566 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
20567
20568         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
20569         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
20570         * domain-internals.h: icall declaration.
20571         * icall.c: icall registration.
20572         * object-internals.h: New fields in MonoAssembly for CAS.
20573
20574 2004-08-05  Duncan Mak  <duncan@ximian.com>
20575
20576         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20577         CEE_LDELEM_ANY.
20578
20579 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20580
20581         * reflection.c: fix to deal with object[] arrays in custom ctors
20582         (bug #62550).
20583
20584 2004-08-05  Martin Baulig  <martin@ximian.com>
20585
20586         * class.c (mono_class_array_element_size): Added support for
20587         generic instances and correctly handle "recursive" types.
20588
20589 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20590
20591         * assembly.c: Fix warnings.
20592
20593 2004-08-04  Martin Baulig  <martin@ximian.com>
20594
20595         * class.c
20596         (mono_type_get_name_recurse): Added `gboolean include_arity'
20597         argument specifying whether or not we should include the generic
20598         arity in the type name.
20599         (_mono_type_get_name): New static function.
20600         (mono_class_setup_vtable): If we're a generic instance, don't
20601         include the generic arity in the names of explicit method
20602         implementations.        
20603
20604 2004-08-03  Martin Baulig  <martin@ximian.com>
20605
20606         * class.c (mono_type_get_name_recurse): Enclose the generic type
20607         arguments in `<', '>'.
20608
20609 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20610
20611         * gc.c: make GC warning messages use the trace API, they are just
20612         noise to most of the users.
20613
20614 2004-08-03  Martin Baulig  <martin@ximian.com>
20615
20616         * debug-mono-symfile.c (read_string): Correctly read the string.
20617
20618 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20619
20620         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
20621         
20622         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
20623         icalls.
20624         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
20625
20626 2004-07-30  Martin Baulig  <martin@ximian.com>
20627
20628         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
20629         Reflect latest symbol writer changes.   
20630
20631 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20632
20633         * object.c: always create an object if null is passed
20634         to Invoke() where a valuetype is expected.
20635
20636 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20637
20638         * marshal.c (mono_marshal_init): make managed
20639         signatures match native ones better for 64bits.
20640
20641 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20642
20643         * appdomain.c: hack to build correctly the private bin path on windows.
20644         Fixes bug #61991.
20645
20646 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20647
20648         * assembly.c: Load mscorlib from the correct framework directory
20649           (mono/<version>/mscorlib.dll).
20650         * appdomain.h: Added prototypes for new functions.
20651         * internals.h: Added some prototypes.
20652         * domain.c: When initializing the runtime, get from the executable and
20653           the configuration files the runtime version that the app supports.
20654           Added support methods for reading app.exe.config. Added list of versions
20655           supported by the JIT. Added two new methods: mono_init_from_assembly,
20656           which initializes the runtime and determines the required version from
20657           the provided exe file, and mono_init_version, which initializes
20658           the runtime using the provided version.
20659         * icall.c: Get machine.config from version-specific directory.
20660         * reflection.c: When generating an image, embed the version number
20661           of the current runtime.
20662
20663 2004-07-28  Dick Porter  <dick@ximian.com>
20664
20665         * socket-io.c
20666         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
20667         returned sockaddr size before creating the remote address object.
20668         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
20669         61608.
20670
20671 2004-07-28  Dick Porter  <dick@ximian.com>
20672
20673         * locales.c (string_invariant_compare_char): Fix invariant char
20674         compares between upper and lower cases.  Fixes bug 61458.
20675
20676 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
20677         
20678         * marshal.c: actually cache stelem.ref wrappers.
20679         
20680 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20681
20682         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
20683         sections and remove the mono_cli_rva_map () function.
20684
20685 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20686
20687         * debug-mono-symfile.c: fix one more endianess issue, from a patch
20688         by Geoff Norton (<gnorton@customerdna.com>).
20689
20690 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20691
20692         * class.c: fix class loads for pointer types (typeof(int) !=
20693         typeof(int*)).
20694
20695 2004-07-27  Martin Baulig  <martin@ximian.com>
20696
20697         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
20698         reading the debugging information from an external ".mdb" file.
20699
20700 2004-07-24  Martin Baulig  <martin@ximian.com>
20701
20702         * reflection.c (mono_image_get_type_info): Only write a class
20703         layout entry if we actually have a size or a packing size.
20704
20705 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20706
20707         * reflection.c (type_get_fully_qualified_name): 
20708         insert cast to get type checking of ?: with non-gcc compilers
20709
20710 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20711
20712         * rand.c: use g_getenv for both lookups of
20713         MONO_EGD_SOCKET
20714
20715 2004-07-17  Martin Baulig  <martin@ximian.com>
20716
20717         * reflection.c (mono_reflection_bind_generic_method_parameters):
20718         Set `gmethod->reflection_info'.
20719
20720 2004-07-17  Martin Baulig  <martin@ximian.com>
20721
20722         * class.c (mono_class_create_from_typedef): Insert the newly
20723         created class into the hash table before computing the interfaces
20724         since we could be called recursively.
20725
20726 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20727
20728         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
20729         function to implement stelem.ref in managed code
20730         * class-internals.h, debug-helpers.c: a new wrapper type
20731         for the above.
20732
20733 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20734
20735         * gc.c: allow GC handles to work even when no GC is compiled in.
20736         Fix part of bug #61134 (GetAddrOfPinnedObject).
20737
20738 2004-07-13  Peter Williams  <peter@newton.cx>
20739  
20740         * process.c (complete_path): Make sure we don't attempt to execute
20741         directories.
20742  
20743 2004-07-12  Geoff Norton <gnorton@customerdna.com>
20744
20745         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
20746           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
20747           and will add/subtract the hour if needed
20748
20749 2004-07-12  Martin Baulig  <martin@ximian.com>
20750
20751         * reflection.c (mono_field_get_object): If we have
20752         `field->generic_info', take the attributes from
20753         `field->generic_info->generic_type'.    
20754
20755 2004-07-12  Martin Baulig  <martin@ximian.com>
20756
20757         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
20758         This function must be called before initializing the runtime.
20759         (mono_debug_init_1): New function; call this after initializing
20760         the runtime, but before loading the assembly.  It tells the
20761         debugger to load corlib and the builtin types.
20762
20763         * mono-debug-debugger.c: Did some larger changes in the debugging
20764         code; support recursive class declarations, make sure we actually
20765         add all classes.
20766
20767 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20768
20769         * debug-helpers.c: undo my previous patch and fixed the real issue in
20770         ../mini/exceptions-x86.c
20771
20772 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20773
20774         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
20775         when no HOME env. variable was set and a NullRef was thrown in a .cctor
20776         called from other .cctors.
20777
20778 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
20779
20780         * loader.c: Removed the mono_loader_wine_init hack now that we are
20781         doing a managed version of Windows.Forms.
20782
20783 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20784
20785         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
20786         threadpool.c, threads.c: remove static data from rootset.
20787
20788 2004-07-09  Dick Porter  <dick@ximian.com>
20789
20790         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
20791         Don't do any more processing if the matched length was 0.  It was
20792         increasing the size of the string before.  Fixes bug 61167.
20793
20794 2004-07-09  Dick Porter  <dick@ximian.com>
20795
20796         * socket-io.h:
20797         * socket-io.c
20798         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20799         Add support for SO_PEERCRED if its available.
20800
20801 2004-07-09  Peter Bartok <pbartok@novell.com>
20802         * loader.c: winelib.exe.so error message is now only displayed if
20803         MONO_DEBUG is set. To help us avoid questions when people are trying
20804         out the new Managed.Windows.Forms.
20805
20806 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20807
20808         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
20809         for isinst and castclass wrappers.
20810
20811         * class-internals.h icall.c: Move registration and lookup of JIT icalls
20812         to libmetadata from the JIT, so they could be used by the marshalling
20813         code and the interpreter.
20814
20815         * marshal.c: Register marshalling related JIT icalls here instead of
20816         in mini.c. Use CEE_MONO_ICALL instead of the family of 
20817         CEE_MONO_PROC<x> opcodes to call marshalling functions.
20818
20819         * metadata.h: Remove unneeded marshalling conversions.
20820
20821         * opcodes.c: Update for new opcodes.
20822         
20823 2004-07-08  Martin Baulig  <martin@ximian.com>
20824
20825         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
20826         (mono_debug_get_domain_data): Make this function static.
20827
20828 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20829
20830         * gc.c, object.h: add nice GC handle API for embedders.
20831
20832 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20833
20834         * reflection.c: more changes for the new api
20835
20836         * object.c: When we reflect on a field w/ a constant value, it
20837         will not have a memory location, so we must access metadata. Also,
20838         allow easier reading of strings so that we can read them from
20839         the constant data.
20840
20841         * class.c (mono_class_layout_fields): no need for literal fields here.
20842
20843         * class-internals.h: api changes for const fields
20844
20845         * icall.c (ves_icall_get_enum_info): use new apis for const fields
20846
20847 2004-07-06  Martin Baulig  <martin@ximian.com>
20848
20849         * mono-debug.h: Increment version number to 44.
20850
20851         * mono-debug.c (mono_debug_add_wrapper): The second argument is
20852         now a gpointer, rewrote this whole method.
20853
20854         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
20855         function.  Add information about the wrapper in a new "misc table".
20856
20857         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
20858         for the new misc table.
20859
20860 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20861
20862         * metadata-internals.h image.c: Add a cache for helper signatures.
20863
20864         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
20865
20866 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20867
20868         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
20869         delegates from a delegate. Fixes #61033.
20870         
20871         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
20872         marshalling of stringbuilder arrays. Fixes #59900.
20873
20874 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20875
20876         * icall.c: Add EnumBuilder:setup_enum_type icall.
20877
20878 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20879
20880         * icall.c: Added a new icall for the property version of
20881         OffsetOfStringData.
20882
20883 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20884
20885         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
20886         it has a constant size across platforms.
20887
20888         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
20889         stack trace.
20890
20891 2004-06-29  Martin Baulig  <martin@ximian.com>
20892
20893         * mono-debug.c (mono_debug_add_method): Protect the whole function
20894         in mono_debugger_lock(), not just parts of it.
20895
20896 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20897
20898         * reflection.c: make sure padding bytes in heaps are zeroed.
20899
20900 2004-06-24  David Waite  <mass@akuma.org>
20901
20902         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
20903         image.c, loader.c, locales.c, marshal.c, metadata.c,
20904         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
20905         string-icalls.c, threads.c: change to C90-style comments from C99 /
20906         C++ -style
20907
20908 2004-06-24  Dick Porter  <dick@ximian.com>
20909
20910         * threads.c
20911         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
20912         return createdNew.  Fixes bug 60412.
20913
20914         * threads-types.h: 
20915         * icall.c: Add createdNew parameter to CreateMutex icall
20916
20917 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20918
20919         * reflection.c, object-internals.h: save default value in params.
20920
20921 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20922
20923         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
20924         no need to build a new path combining that with the application base.
20925         Fixes bug #60442.
20926
20927 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20928
20929         * reflection.c: fixed minor standard compliance issues.
20930
20931 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20932
20933         * reflection.c: fixed issue with encoding some custom attributes
20934         (arrays in properties and fields, bug #60411).
20935
20936 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20937
20938         * reflection.c: fix start address when copying the public key token.
20939
20940 2004-06-23  Martin Baulig  <martin@ximian.com>
20941
20942         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
20943         the `exc' object in a static object to put it into the GC's root set.
20944
20945 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20946
20947         * reflection.c: make mono_reflection_setup_internal_class ()
20948         callable a second time to setup a new parent class.
20949
20950 2004-06-23  Dick Porter  <dick@ximian.com>
20951
20952         * threads.c: Check for WAIT_IO_COMPLETION return values.
20953
20954 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
20955
20956         * appdomain.c: Removed the g_free on the public key token. Now copy 
20957         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
20958         * assembly.c: Added public key token string value when loading 
20959         assemblies. Fix bug #60439.
20960         * icall.c: Added missing informations (like public key) in 
20961         GetReferencedAssemblies. Fix #60519.
20962         * image.h: Changed definition for public key token from const char*
20963         public_tok_value to guchar public_key_token [17];
20964         * reflection.c: Updated for changes to public key token.
20965
20966 2004-06-22  Lluis Sanchez Gual
20967
20968         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
20969         for the field in base classes.
20970
20971 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
20972
20973         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
20974         mark headers as not supported, they are installed only for use by the
20975         debugger.
20976
20977 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
20978
20979         * *.c, *.h: avoid namespace pollution in public headers.
20980
20981 2004-06-21  Martin Baulig  <martin@ximian.com>
20982
20983         * exception.c (mono_get_exception_security): It's in
20984         "System.Security", not in "System".
20985
20986         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
20987         the exception classes.
20988
20989 2004-06-21  Martin Baulig  <martin@ximian.com>
20990
20991         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
20992         Protect the exception object from being finalized.
20993
20994 2004-06-21  Martin Baulig  <martin@ximian.com>
20995
20996         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
20997         public function.
20998
20999 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
21000
21001         * reflection.c: Load the assembly in mono_reflection_type_from_name,
21002         if it was not loaded before. Fix parts of #60439.
21003
21004 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
21005
21006         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
21007         code that was broken since Ben's change: wrappers are now
21008         dependent on the method signature only again.
21009
21010 2004-06-21  Martin Baulig  <martin@ximian.com>
21011
21012         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
21013         added interface support.
21014
21015 2004-06-21  Martin Baulig  <martin@ximian.com>
21016
21017         * class.c (mono_vtable_get_static_field_data): New public method.
21018
21019 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
21020
21021         * filewatcher.c : Windows build fix to be compliant with API changes.
21022
21023 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21024
21025         * class.h, class.c: more accessors.
21026         * metadata.h, metadata.c: prepare for hiding MonoType and
21027         MonoMethodSignature: people should use the accessors from now on
21028         outside of the tree.
21029
21030 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21031
21032         * *.c, *.h: more API cleanups.
21033
21034 2004-06-18  Jackson Harper  <jackson@ximian.com>
21035
21036         * assembly.c: Trace loading assemblies.
21037         * loader.c: Trace loading native libraries.
21038         * mono-config.c: Trace loading config files.
21039         
21040 2004-06-18  Dick Porter  <dick@ximian.com>
21041
21042         * locales.c: Tell ICU the lengths of strings, it can cope with
21043         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
21044
21045 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21046
21047         * image.c: swapped name/filename;
21048
21049 2004-06-18  Martin Baulig  <martin@ximian.com>
21050
21051         * mono-debug-debugger.c (write_class): Write the parent class at
21052         the end of the header.
21053
21054 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21055
21056         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
21057
21058 2004-06-17  Raja R Harinath  <rharinath@novell.com>
21059
21060         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
21061         (bundle_obj): New conditional define.
21062         (BUILT_SOURCES): Remove.
21063         ($(bundle_srcs)): Make parallel-make safe.
21064         (libmonoruntime_la_LIBADD): Make unconditional.
21065         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
21066         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
21067
21068 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
21069
21070         * culture-info-tables.h: It was inconsistent with the latest
21071           supp info files.
21072
21073 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
21076         be loaded.
21077
21078         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
21079         with gcc 2.95.
21080
21081 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21082
21083         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
21084         cleaned up public header threads.h.
21085
21086 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21087
21088         * Makefile.am, *.c, *.h: more API cleanups.
21089
21090 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21091
21092         * Makefile.am: removed monosn from compilation.
21093         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
21094         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
21095         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
21096         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
21097         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
21098         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
21099
21100 2004-06-15  Jackson Harper  <jackson@ximian.com>
21101
21102         * assembly.c: Make locales lower case when searching the GAC for
21103         assemblies. gacutil will always make locales lowercase when
21104         installing so this effectively makes them case insensitive.
21105         
21106 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
21107
21108         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
21109         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
21110           parameter which allows to choose whether the wait can be interrupted or 
21111           not. Also added the method mono_monitor_enter(), which locks the monitor
21112           using an infinite wait and without allowing interruption.
21113           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
21114           interrupted.
21115         * object.h: Added new fields in MonoThread. suspend_event holds the event
21116           used to susped/resume the thread. synch_lock is the lock object to use for
21117           modifying the thread state.
21118         * threads.c: Use the new synch_lock object for locking, instead of "this",
21119           which can generate deadlocks.
21120           Moved thread state change in Thread.Sleep and Thread.Join from managed
21121           to unmanaged code. This avoids a deadlock when the thread was suspended
21122           just after acquiring the thread lock.
21123           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
21124           Implemented Thread.Suspend using an event instead of ThreadSuspend,
21125           which is not fully implemented in the io-layer.
21126         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
21127
21128 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
21129
21130         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
21131         threads-types.h: more API cleanups.
21132
21133 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21134
21135         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
21136         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
21137         threadpool.c, threads.c: first pass at the exported API cleanup.
21138
21139 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21140
21141         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
21142
21143 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21144
21145         * icall.c: added internalGetHome.
21146
21147 2004-06-14  Dick Porter  <dick@ximian.com>
21148
21149         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
21150         possible to return successfully when '.' or '..' were the only
21151         entries in a directory, but were skipped.  The MonoIOStat was not
21152         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
21153         Fixes bug 59574.
21154
21155 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21156
21157         * reflection.c: make binaries run on .Net 1.1 by default.
21158
21159 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21160
21161         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
21162
21163 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
21164
21165         * marshal.c: keep track of struct size with explicit layout
21166         (bug #59979).
21167
21168 2004-06-12  Martin Baulig  <martin@ximian.com>
21169
21170         * mono-debug-debugger.c: Comment out a debugging g_message().
21171
21172 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21173
21174         * reflection.c, reflection.h: do not free custom attrs that are cached.
21175         * icall.c: use braces to make code clearer.
21176
21177 2004-06-11  Martin Baulig  <martin@ximian.com>
21178
21179         * class.h (MonoInflatedField): New type.
21180         (MonoClassField): Replaced `MonoType *generic_type' with
21181         `MonoInflatedField *generic_info'.
21182
21183         * icall.c
21184         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21185
21186 2004-06-11  Martin Baulig  <martin@ximian.com>
21187
21188         * reflection.c (mono_image_create_method_token): Correctly encode
21189         varargs methods.
21190
21191 2004-06-11  Martin Baulig  <martin@ximian.com>
21192
21193         * metadata.c (mono_metadata_parse_method_signature): When parsing
21194         a MethodDef which has VarArgs, also set sentinelpos if we don't
21195         have any parameters.
21196
21197 2004-06-11  Martin Baulig  <martin@ximian.com>
21198
21199         * verify.c (mono_method_verify): In CEE_CALL, use
21200         mono_method_get_signature() to get the method's signature, unless
21201         we're a PInvoke method.
21202
21203 2004-06-10  Jackson Harper  <jackson@ximian.com>
21204
21205         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21206         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21207         logical name as the supplied path is just a prefix to the gac not
21208         the direct path to it.
21209         
21210 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21211
21212         * reflection.c: make the token for a created method match
21213         the token of the MethodBuilder it was created from
21214         (IKVM requires this behaviour now).
21215
21216 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21217
21218         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21219         reflection.c, socket-io.c: leak fixes.
21220
21221 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21222
21223         * icall.c: handle sentinel pos in vararg methods in position different
21224         from 0.
21225
21226 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21227
21228         * culture-info-tables.h: freshly generated.
21229
21230 2004-06-09  Martin Baulig  <martin@ximian.com>
21231
21232         * loader.c (mono_get_method_constrained): Call `mono_class_init
21233         (constrained_class)'.   
21234
21235 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21236
21237         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21238         any methods. Fixes #59629.
21239
21240 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21241
21242         * culture-info-tables.h: reflecting locale-builder updates.
21243
21244 2004-06-08  Dick Porter  <dick@ximian.com>
21245
21246         * object.h:
21247         * locales.c: Fixed compile warnings, including a real bug in
21248         CompareInfo_internal_compare.
21249         
21250 2004-06-08  Dick Porter  <dick@ximian.com>
21251
21252         * locales.c
21253         (ves_icall_System_Globalization_CompareInfo_internal_index):
21254         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21255         Double-check the resuls of usearches, because ICU currently
21256         ignores most of the collator settings here.  Fixes bug 59720.
21257         
21258 2004-06-08  Dick Porter  <dick@ximian.com>
21259
21260         * locales.c
21261         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21262         Fix memory leak and segfault-causing typo.  No idea how this one
21263         lasted so long without being noticed.
21264
21265 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21266
21267         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21268         any methods. Fixes #59629.
21269
21270 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21271
21272         * assembly.c:
21273         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21274         own the critical section before). Removed dead code (that's done
21275         in the preload hook).
21276
21277         (mono_assembly_load_with_partial_name): call the preload hook.
21278
21279 2004-06-08  Martin Baulig  <martin@ximian.com>
21280
21281         * metadata.c (mono_metadata_signature_alloc): Default
21282         `sentinelpos' to -1.
21283
21284         * reflection.c (mono_image_get_array_token): Likewise.
21285
21286 2004-06-08  Martin Baulig  <martin@ximian.com>
21287
21288         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21289
21290         * metadata.c (mono_metadata_parse_method_signature): When parsing
21291         a MethodDef which has VarArgs, set sentinelpos.
21292
21293         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21294         `gint16' since we're using -1 for non-varargs methods.
21295
21296         * reflection.c
21297         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21298         (method_encode_signature): Added varargs support.
21299         (method_builder_encode_signature): Likewise.
21300         (mono_image_get_varargs_method_token): New static method.
21301         (mono_image_create_method_token): New public method; this is
21302         called via an icall instead of mono_image_create_token() when
21303         calling a varargs method.       
21304
21305 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21306
21307         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21308
21309 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21310
21311         * culture-info-tables.h : Reflecting the latest locale-builder that
21312           fixed empty array representation ({} to {0}).
21313
21314 2004-06-07  Jackson Harper  <jackson@ximian.com>
21315
21316         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21317         looking up extra gac paths. This allows MONO_GAC_PATH to act
21318         exactly like a prefix.
21319         
21320 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21321
21322         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21323         type name before modifying it. Fixes #59405.
21324
21325 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21326
21327         * culture-info.h: added fields for "all datetime patterns".
21328         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21329           _construct_datetime_format ()): fill xxx_patterns fields.
21330         * object.h: added fields for "all datetime patterns" to
21331           MonoDateTimeFormatInfo.
21332         * culture-info-tables.h: reflecting locale-builder updates.
21333
21334 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21335
21336         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21337         the event has no add and remove methods. Fixes #59629.
21338
21339 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21340
21341         * object.c: Fixed possible integer overflow when allocating large
21342         strings.
21343
21344 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21345
21346         * culture-info-tables.h: reflecting locale-builder updates.
21347
21348 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21349
21350         * culture-info-tables.h: reflecting locale-builder updates.
21351
21352 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21353
21354         * culture-info-tables.h: reflecting locale-builder updates.
21355
21356 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21357
21358         * threads.c: Made Thread.Sleep abortable.
21359
21360 2004-06-02  Martin Baulig  <martin@ximian.com>
21361
21362         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21363
21364         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21365
21366 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21367
21368         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21369
21370 2004-05-30  Jackson Harper  <jackson@ximian.com>
21371
21372         * reflection.c: Do not hardcode assembly versions or public key
21373         tokens anymore. All of this except the corlib section was dead
21374         code anyways.
21375         
21376 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21377
21378         * object.c (mono_runtime_invoke_array): Automatically create boxed
21379         objects for byref valuetypes if needed. Fixes #59300.
21380         
21381         * object.c (mono_method_return_message_restore): Handle 
21382         MONO_TYPE_OBJECT as well.
21383
21384 2004-05-28  Jackson Harper  <jackson@ximian.com>
21385
21386         * reflection.c: The modified type encoding was causing build
21387         problems. Reverted for now.
21388         
21389 2004-05-28  Jackson Harper  <jackson@ximian.com>
21390
21391         * reflection.c/h: Take an assembly ref so that we dont create
21392         fully qualified names when encoding types in the same assembly as
21393         the custom attribute being emitted.
21394         * appdomain.c: Increment version number.
21395         
21396 2004-05-26  Duncan Mak  <duncan@ximian.com>
21397
21398         * icall.c
21399         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21400         Set the full version number (major, minor, build, revision).
21401
21402 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21403
21404         * marshal.c (emit_struct_conv): increment src/dst after blit
21405         (mono_marshal_get_managed_wrapper,
21406         mono_marshal_get_native_wrapper): make sure we have marshalling
21407         info before marshalling params (info computation affects
21408         blittable)
21409
21410         * class.c (class_compute_field_layout): correctly deal with
21411         blittable
21412         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21413         value types (as per what windows dows by default)
21414         (mono_class_setup_mono_type): System.ValueType is blittable
21415         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21416         blittable
21417
21418         * marshal.c (mono_marshal_load_type_info): flag types  as
21419         non-blittable if the native layout doesn't match the managed
21420         layout
21421
21422 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21423
21424         * appdomain.c: don't add stuff in the private search path that is
21425         above the application base. If application base is not set, there's
21426         no private search path.
21427
21428 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21429
21430         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21431         byref struct arguments in native->managed marshalling.
21432
21433 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21434
21435         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21436         cache methods using signature (special case for methods
21437         that are value type or string class)
21438         
21439         * image.c (mono_image_close): clean up allocated GSList's
21440         in runtime_invoke_cache.
21441
21442 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21443
21444         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21445         there's no MONO_CFG_DIR environment variable defined.
21446
21447 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21448
21449         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21450
21451 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21452
21453         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21454           is interrumped.
21455         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21456           before waiting for it, and call CloseHandle after the wait to unref it.
21457           This will make sure that handles are not disposed too early.
21458
21459 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21460
21461         * appdomain.c:
21462         * appdomain.h:
21463         * icall.c: removed
21464         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21465         needed now.
21466
21467         * object.c: se the application_base only for the domain that runs
21468         Main. Fixes bug #59216,
21469
21470 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21471
21472         * appdomain.c:
21473         * object.c: only the domain in which Main is run have
21474         SetupInformation.ConfigurationFile set, so moved a few lines from
21475         appdomain.c to object.c.
21476
21477 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21478
21479         * appdomain.c: we tried to load [name].(dll|exe), but according
21480         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21481         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21482         There's a test case attached to bug #58922.
21483
21484 2004-05-27  Dick Porter  <dick@ximian.com>
21485
21486         * icall.c:
21487         * file-io.c: Implemented icalls for locking and unlocking regions
21488         in a file.
21489         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21490         FALSE on error (fixes both compiler warning and real bug.)
21491
21492 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
21493
21494         * culture-info-tables.h: reflecting locale-builder updates.
21495
21496           (Added missing ChangeLog entry for 05/26)
21497
21498 2004-05-27  Jackson Harper  <jackson@ximian.com>
21499
21500         * locales.c: Fix some cut and paste errors.
21501         
21502 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21503
21504         * mono-config.c: set the correct path for config. directory on windows.
21505
21506 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21507
21508         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
21509           on win32.
21510
21511 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21512
21513         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
21514         from pinvoke functions.
21515         
21516         * marshal.c (mono_ftnptr_to_delegate): Implement this.
21517
21518 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21519
21520         * culture-info-tables.h: reflecting locale-builder updates.
21521
21522 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21523
21524         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
21525         #59086.
21526
21527 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
21528
21529         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
21530         * icall.c: Modified icalls for RNG.
21531         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
21532         Windows (CryptoAPI).
21533
21534 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21535
21536         * locales.c: Fix build.
21537
21538 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
21539
21540         * culture-info-tables.h: reflecting locale-builder updates.
21541
21542 2004-05-25  Jackson Harper  <jackson@ximian.com>
21543
21544         * locales.c: When creating the current culture use the $LANGs
21545         specific culture. So DateTimeFormat and NumberFormat entries are created.
21546         
21547 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
21550         a char array as parameter.
21551
21552 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
21553
21554         * image.c: In mono_image_open(), always use an absolute path name to
21555           look for already loaded images.
21556
21557 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
21558
21559         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
21560         missing in the windows build (like older cygwin include files).
21561
21562 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
21563
21564         * icall.c: Fixed check for possible integer overflow in Buffer_
21565         BlockCopy icall. Replaced comments style // by /* */.
21566
21567 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21568
21569         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
21570         
21571         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
21572         check after MONO_VTADDR. Fixes pinvoke2.exe.
21573
21574         * marshal.h marshal.c metadata.h: Add beginnings of support for
21575         ftnptr -> delegate marshalling.
21576
21577 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21578
21579         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
21580         * threads.c: Fix warnings.
21581
21582 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21583
21584         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
21585         * icall.c: Registered icalls for Suspend and Resume.
21586         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
21587           Thread.Abort.
21588         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
21589         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
21590         * process.c: Use WaitForSingleObjectEx.
21591         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
21592           checkpoints.
21593         * threads.c, threads.h: Make use of new Ex wait methods. Improved
21594           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
21595           for Suspend and Resume. Added new mono_thread_stop, used for stoping
21596           background threads. Added basic support for Abort in Windows.
21597           Start new threads using a managed delegate invoke wrapper. This wrapper
21598           has an interruption checkpoint that is needed since an interruption
21599           can be requested before the thread leaves the unmanaged code that starts 
21600           the thread.
21601         * marshal.c: Added interruption checkpoint after every native call, and
21602           also before managed calls for wrappers called from unmanaged code to
21603           go into managed code.
21604         * object.h: Added new field in MonoThread to keep track of interruption
21605           requests.
21606
21607 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21608
21609         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
21610         calls.
21611
21612 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21613
21614         * appdomain.c:
21615         * assembly.c:
21616         * gc.c:
21617         * locales.c:
21618         * mono-config.c:
21619         * rand.c: getenv -> g_getenv (windows!)
21620
21621         * process.c: complete_path is also used on non-windows platforms.
21622
21623 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21624
21625         * icall.c: new signature for Process_Start.
21626
21627         * process.[ch]: new signature for Process_Start. If we're on windows
21628         and UseShellExecute is false, we have to search for the program by
21629         ourselves if we don't get a full path.
21630
21631 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21632
21633         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
21634         marshalling and call CleanUpNativeData if needed. Fixes #58646.
21635
21636 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21637
21638         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
21639         Fixes bug #58373.
21640
21641 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21642
21643         * process.c: use double quotes to quote program name and arguments on
21644         windows. Fixes bug #58575.
21645
21646 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21647
21648         * file-io.c: don't return "." and ".." when using windows Find*File.
21649
21650 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
21651
21652         * marshal.c: Don't pass wrappers to message init because method 
21653         addressed used to lookup metadata. part of remoting[2|3] fix.
21654
21655 2004-05-15  Jackson Harper  <jackson@ximian.com>
21656
21657         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
21658         path is essentially the same as MONO_PATH except that it points to
21659         GACs instead of lib directories.
21660         * loader.h: The user gac is gone so we dont need function to
21661         enable/disable it.
21662         * mono-config.c: user gac option is now gone.
21663         
21664 2004-05-15  Jackson Harper  <jackson@ximian.com>
21665
21666         * culture-info.h: Make defines more consistent, add calendar data
21667         to the culture info table.
21668         * culture-info-tables.h: Add basic calendar data. Basically
21669         everyone gets default gregorian until all the data is
21670         updated.
21671         * locales.c: Use the new consistent defines. Set calendar data for
21672         culture info objects.
21673         * object.h: add a field for calendar data to CultureInfo
21674         
21675 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21676
21677         * image.c: image->runtime_invoke_cache is keyed on signatures now.
21678         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
21679         a signature.
21680         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
21681         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
21682         an extra param that is the pointer of the method to invoke. The IL for
21683         the invoke method is no longer specific to the method, but to the
21684         signature of the method. Thus, we can share the same code for multiple
21685         methods. This reduces the number of methods that have to be compiled.
21686
21687 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21688
21689         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
21690
21691         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21692
21693         * icall.c: Optimize Buffer.BlockCopy.
21694
21695 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21696
21697         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
21698         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
21699         quote). Changed them to "MMMM yyyy".
21700
21701 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
21702
21703         * rand.c
21704         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
21705
21706 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
21707
21708         * reflection.h: Updated after changes to managed structures.
21709
21710         * appdomain.c: Bump corlib version.
21711
21712 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21713
21714         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
21715         windows.
21716
21717 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21718
21719         * Makefile.am: link to ../os/libmonoos.la on windows.
21720
21721         * assembly.c:
21722                 -If MONO_DEBUG, warn about non-existing directories in
21723                 MONO_PATH.
21724                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
21725                 compile time variable.
21726                 -Removed init_default_path and call mono_set_rootdir from
21727                 libmonoos.a instead (windows only).
21728
21729         * assembly.h: declare mono_assembly_getrootdir().
21730
21731         * domain.c:
21732         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
21733
21734         * loader.c: s/getenv/g_getenv/
21735
21736 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21737
21738         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
21739
21740         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
21741
21742         * metadata.h: Add new marshalling conversions.
21743
21744         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
21745         function.
21746
21747         * reflection.c (mono_reflection_get_type): Lookup the type in all
21748         modules of a multi-module assembly. Fixes #58291.
21749
21750 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21751
21752         * threads.c: Before aborting a background, set the StopRequested
21753         state.  This avoids throwing the Abort exception.
21754         In mono_thread_manage, don't continue with the shutdown until all
21755         aborted threads have actually stopped.
21756
21757 2004-05-10  Jackson Harper  <jackson@ximian.com>
21758
21759         * locales.c: Remove the modifier from culture names.
21760         
21761 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21762
21763         * Makefile.am: monosn is not installed any more. It has been deprecated
21764         in favor of sn.
21765
21766 2004-05-07  Jackson Harper  <jackson@ximian.com>
21767
21768         * locales.c
21769         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
21770         Fix array construction, add bailout if the length is 0.
21771
21772 2004-05-07  Dick Porter  <dick@ximian.com>
21773
21774         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
21775         machine doesn't have a DNS entry.  Patch by Urs Muff
21776         (umuff@quark.com), fixes bug 57928.
21777
21778 2004-05-06  Jackson Harper  <jackson@ximian.com>
21779
21780         * reflection.c: Handle null PublicTokens properly. alloc mem for
21781         assembly names culture so we dont crash when freeing it.
21782         
21783 2004-05-06  Jackson Harper  <jackson@ximian.com>
21784
21785         * assembly.c: Check the usergac when loading with partial names.
21786         
21787 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21788
21789         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
21790         does nothing for now (not required for Linux/Windows) but the class
21791         library can call it (and a newer or modified runtime could need it).
21792         * icall.c: Registred icall.
21793
21794 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21795
21796         * loader.c: prints a message on module loading error we set MONO_DEBUG
21797         environment variable.
21798
21799 2004-05-05  Jackson Harper  <jackson@ximian.com>
21800
21801         * appdomain.c: Handle PublicKeyToken=null properly.
21802         
21803 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21804
21805         * environment.c|h: Added icall ves_icall_System_Environment_
21806         GetOSVersionString to get the current OS version as a string.
21807         * icall.c: Registred icall.
21808
21809 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
21810
21811         * object.c: in mono_object_get_virtual_method(), take into account that
21812         non-virtual methods don't have a slot in the vtable. Check needed when
21813         the object is a proxy.
21814
21815 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21816
21817         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
21818         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
21819
21820         * object.c (mono_class_compute_gc_descriptor): Fix warning.
21821
21822         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
21823         passed when a valuetype is expected.
21824
21825         * object.c (mono_unhandled_exception): Only set the exit code if the
21826         exception happens in the main thread. Fixes thread5.exe.
21827
21828         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
21829         invalid names. Fixes #58047.
21830
21831 2004-05-03  Jackson Harper  <jackson@ximian.com>
21832
21833         * assembly.c: This line was committed accidently and is unneeded.
21834         
21835 2004-05-03  Jackson Harper  <jackson@ximian.com>
21836
21837         * icall.c: Add new icall for Assembly::LoadWithPartialName
21838         * assembly.c/.h: new function that probes the GAC to load partial
21839         assembly names by Paolo Molaro.
21840         
21841 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21842
21843         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
21844         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
21845         (type_get_fully_qualified_name): Added PublicKeyToken when building a
21846         full type name.
21847
21848 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21849
21850         * appdomain.c: fixed check for 'neutral' culture and removed warning.
21851         * reflection.c: fix bug when parsing a full type name and Version is not
21852         the last thing in the string.
21853
21854 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
21855
21856         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
21857         crashes when it is freed.
21858
21859 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21860
21861         * assembly.c: print the compat warning to stderr.
21862
21863 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
21864
21865         * assembly.c (mono_assembly_load_references): Add a compatibility
21866         hack to run old applications that might be still referencing the
21867         3300-based assemblies, only do this for System.xxx.
21868
21869 2004-05-01  Jackson Harper  <jackson@ximian.com>
21870
21871         * appdomain.c: If the culture is neutral we set it to "".
21872         
21873 2004-04-29  Jackson Harper  <jackson@ximian.com>
21874
21875         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
21876
21877 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
21878  
21879         * string-icalls.c: added low overhead function for copying chars
21880         * icall.c: added needed icall for the above function
21881  
21882 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21883
21884         * icall.c: fix return value of get_global_assembly_cache.  Implemented
21885         Environment.GetLogicalDrives.
21886
21887 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
21888
21889         * rand.c: try and talk to egd or prngd
21890         for random bytes if opening devices fail.
21891
21892 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21893
21894         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
21895         alignment for the type using the native alignment of its members 
21896         instead of using klass->min_align.
21897
21898         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
21899
21900 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21901
21902         * file-io.c:
21903         * socket-io.c: added check for sys/aio.h.
21904
21905 2004-04-28  Dick Porter  <dick@ximian.com>
21906
21907         * threads.c: Don't abort a thread thats already aborting, when
21908         terminating everything.
21909
21910 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21911
21912         * icall.c: added 2 new async calls for Socket.
21913
21914         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
21915         IO on *nix systems.
21916
21917         * threadpool.c: removed unused variable.
21918
21919 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
21920
21921         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
21922
21923 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21924
21925         * locales.c: put back string_invariant_tolower () and
21926         string_invariant_toupper ().
21927
21928 2004-04-26 David Waite <mass@akuma.org>
21929
21930         * file-io.h:
21931         * socket-io.h:
21932         * threads.h:
21933         * unicode.h: remove comma from end of enumeration declarations
21934
21935 2004-04-26 David Waite <mass@akuma.org>
21936
21937         * debug-mono-symfile.h:
21938         * decimal.c:
21939         * mono_debug.h:
21940         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
21941
21942
21943 2004-04-26  Jackson Harper  <jackson@ximian.com>
21944
21945         * appdomain.c: Increment version number.
21946         
21947 2004-04-26  Jackson Harper  <jackson@ximian.com>
21948
21949         * appdomain.c: Set assembly references public token value when
21950         PublicKeyToken is specified, not the hash_value. Free public token
21951         values when free assembly name data. Previously the public key
21952         token was hex decoded, however we are using hex encoded public key
21953         tokens, so this is not neccasary.
21954         * assembly.c: Lookup assemblies in the gac if their public token
21955         value is set. Add function to allow enabling user gac
21956         lookups. Specify whether or not the assembly was loaded from the
21957         GAC. Compare full assembly names when checking the cache for
21958         assemblies (Temporarily disabled see comment in code). Remove
21959         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
21960         specifies trace-loader they get extra info to stdout on the
21961         loading of assemblies.
21962         * image.h: Add a field for an assembly references public token
21963         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
21964         whether an assembly has been loaded from the GAC.
21965         * image.c: Remove a corlib -> mscorlib name mapping.
21966         * loader.h: Add function to enable/disable the user gac.
21967         * mono-config.c: Check if the usergac is enabled in the config
21968         file.
21969         * icall.c: New icall to determine whether or not an assembly has
21970         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
21971         * tabldefs.h: Add constant for assemblyref flag that specifies a
21972         full public key is used instead of a public token.
21973         * reflection.c: Remove mscorlib -> corlib mappings. Set
21974         PublicTokenValue instead of hash value. This value is a hex
21975         string so it does not need to be expanded.
21976
21977 2004-04-26  Martin Baulig  <martin@ximian.com>
21978
21979         * mono-debug-debugger.c (mono_debugger_initialize): Set
21980         `mono_debugger_initialized' before calling mono_debug_lock().
21981
21982 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
21983
21984         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
21985           InternalToUpper/InternalToLower.
21986         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
21987           removed invariant culture shortcut.  This is now done in managed code.
21988         * locales.c: (string_invariant_toupper/tolower) removed.
21989
21990 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21991
21992         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
21993         Added Poll internal call.
21994
21995         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
21996         call for Poll. Select was too heavy for polling a single socket.
21997
21998         * threadpool.[ch]: added mono_threadpool_cleanup.
21999         * threads.c: use it. Don't use Thread_Abort on windows.
22000
22001 2004-04-23  Martin Baulig  <martin@ximian.com>
22002
22003         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
22004
22005 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
22006
22007         * icall.c: Registred new icalls for key pair protection and added an
22008         icall for Environment.GetFolderPath on Windows.
22009         * security.c|h: Added new icalls for key pair protection.
22010
22011 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22012
22013         * socket-io.c: don't display the non-supported family warning for known
22014         families. Now this is not displayed on windows when checking support
22015         for IPv4/IPv6.
22016
22017 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22018
22019         * class.c: don't display the layout warning for static fields.
22020
22021 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
22022
22023         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
22024         * locales.c, locales.h: Added new icalls for culture-specific
22025         Char.ToLower and Char.ToUpper.
22026
22027 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22028
22029         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
22030         by David Waite.
22031
22032 2004-04-20  Martin Baulig  <martin@ximian.com>
22033
22034         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
22035         of the type name before passing it to mono_reflection_type_from_name().
22036
22037 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22038
22039         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
22040         encodings here. Fixes #56965.
22041
22042 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
22043
22044         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22045         fix test on strstr result not that I can see anything that
22046         relies on the result.
22047
22048 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
22051         Fixes #57081.
22052
22053         * marshal.c (mono_marshal_get_string_encoding): New helper function.
22054
22055         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
22056         function to determine which marshalling to use for strings. Fixes
22057         #56965.
22058
22059         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
22060
22061         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
22062
22063 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
22064
22065         * icall.c: #include mono-config.h
22066
22067 2004-04-15  Jackson Harper  <jackson@ximian.com>
22068
22069         * culture-info-tables.h: Fix date formats for en-US culture.
22070         
22071 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
22072
22073         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
22074         ThreadPool.SetMinThreads.
22075         * threadpool.c: Implemented ThreadPool.GetMinThreads and
22076         ThreadPool.SetMinThreads.
22077
22078 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22079
22080         * mono-config.c: also load the .config file in the directory
22081         where the assembly was found.
22082
22083 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22084
22085         * assembly.c: load per-assembly config files.
22086         * icall.c: decrapified code to get the config dir and moved to
22087         mono-config.c.
22088         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
22089         per-assembly config files. When doing a dll map lookup give precedence
22090         to the per-assembly data.
22091
22092 2004-04-14  Martin Baulig  <martin@ximian.com>
22093
22094         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
22095         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
22096         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
22097
22098         * mono-debugger-debugger.c: While the debugger is locked, remember
22099         whether the symbol tables have changes and send one single
22100         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
22101
22102 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22103
22104         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
22105
22106         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
22107         function.
22108
22109         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
22110         account when marshalling string arrays. Fixes #56965.
22111
22112 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
22113
22114         * icall.c: Add new icalls mapping for security.
22115         * security.c|h: Add internal calls for WindowsIdentity,
22116         WindowsImpersonationContext and WindowsPrincipal.
22117
22118 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
22119
22120         * class.c: Added comment to ensure the System.MonoDummy class
22121         is removed when no longer necessary
22122
22123 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22124
22125         * appdomain.c: Pass arguments to the bootstraping exceptions to
22126         minimize JITed methods at boot
22127
22128         * metadata.c (mono_exception_from_name_two_strings): Allow for the
22129         second string to be null.
22130
22131         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22132         Change the protocol to minimize the JIT methods at startup.  Now
22133         it Returns the internal codepage, if the value of "int_code_page"
22134         is 1 at entry, and we can not compute a suitable code page
22135         number, returns the code page as a string.
22136
22137 2004-04-13  Jackson Harper  <jackson@ximian.com>
22138
22139         * culture-info-tables.h: Fix number of decimal digits for all
22140         english locales.
22141
22142 2004-04-13  Jackson Harper  <jackson@ximian.com>
22143
22144         * icall.c: Clairfy out of sync error message. It is not always
22145         your corlib that is out of sync.
22146
22147 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
22148
22149         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
22150         properties when only the set accessor is overriden. Fixes #55874.
22151
22152 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
22153
22154         * assembly.c (mono_assembly_load_references): Make this thread safe.
22155         Fixes #56327.
22156
22157 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22158
22159         * monosn.c: Add missing initialization calls.
22160
22161 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
22162
22163         * locales.c:
22164         ves_icall_System_Globalization_CultureInfo_construct_number_format
22165         Fix g_assert so it compiles on fussier compilers re int/ptr
22166         mismatch
22167
22168 2004-04-08  Dick Porter  <dick@ximian.com>
22169
22170         * socket-io.h:
22171         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
22172         53992.  Also rearrange the code so that the internal calls return
22173         an error value and exceptions are thrown from managed code.
22174
22175         * icall.c: Add type info to the socket icalls.
22176
22177 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22178
22179         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22180         owes me a beer.
22181
22182 2004-04-07  Martin Baulig  <martin@ximian.com>
22183
22184         * class.c (mono_class_from_generic_parameter): Don't default
22185         `klass->parent' to `mono_defaults.object_type'.
22186
22187 2004-04-07  Martin Baulig  <martin@ximian.com>
22188
22189         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22190         `param->pklass->reflection_info'.       
22191
22192 2004-04-07  Jackson Harper  <jackson@ximian.com>
22193
22194         * culture-info-tables.h: Fix date separator symbol.
22195         
22196 2004-04-07  Martin Baulig  <martin@ximian.com>
22197
22198         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22199         from System.Type to System.MonoType.
22200
22201 2004-04-07  Martin Baulig  <martin@ximian.com>
22202
22203         * reflection.h
22204         (MonoReflectionGenericParam): Added `has_reference_type' and
22205         `has_value_type' fields.
22206
22207         * reflection.c (mono_image_get_generic_param_info): Encode the
22208         correct flags if we have the `class' or `struct' constraint.
22209
22210 2004-04-07  Martin Baulig  <martin@ximian.com>
22211
22212         * reflection.h
22213         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22214
22215 2004-04-07  Jackson Harper  <jackson@ximian.com>
22216
22217         * appdomain.c: Revert extra patches, just wanted to bump the
22218         version number.
22219         
22220 2004-04-07  Jackson Harper  <jackson@ximian.com>
22221
22222         * Makefile.am: Add culture-info private headers.
22223         * icall.c: Add new icalls for contructing locales.
22224         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22225         * locales.h: Declare new culture info construction methods.
22226         * object.h: Add new fields used to avoid the CultureMap to
22227         MonoCultureInfo.
22228         * culture-info.h: Definition of structs used in the culture info
22229         tables.
22230         * culture-info-tables.h: Autogenerated tables that contain culture
22231         info data. This file was generated with the locale-builder tool.
22232         * appdomain.c: Incement corlib version number.
22233         
22234 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22235
22236         * appdomain.c: (mono_runtime_init) move mono_thread_init
22237         to before mono_object_new calls so critical sections
22238         are initialized before use.
22239
22240 2004-04-07  Martin Baulig  <martin@ximian.com>
22241
22242         * icall.c
22243         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22244         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22245         (ves_icall_MonoGenericParam_initialize): Removed.
22246         (monogenericparam_icalls): Removed.
22247         (generictypeparambuilder_icalls): Added new table for
22248         System.Reflection.Emit.GenericTypeParameterBuilder.
22249
22250         * reflection.c
22251         (mono_reflection_define_generic_parameter): Removed.
22252         (mono_reflection_initialize_generic_parameter): This is now called
22253         from GenericTypeParameterBuilder's .ctor.
22254
22255 2004-04-06  Martin Baulig  <martin@ximian.com>
22256
22257         * class.c (mono_class_init): Don't inflate nested classes in a
22258         generic instance.
22259         (mono_type_get_name_recurse): Include the generic arguments for
22260         generic instances and generic type declarations.
22261         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22262         (_mono_class_get_instantiation_name): Removed.
22263         (mono_class_create_generic): Always use `gklass->name' as our name.
22264
22265         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22266
22267         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22268         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22269         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22270         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22271         closed generic methods here.
22272
22273         * reflection.c
22274         (mono_reflection_generic_inst_get_nested_types): Removed.
22275         (inflate_mono_method): Copy the generic parameters from the
22276         MonoMethodHeader into out MonoGenericMethod.
22277
22278 2004-04-06  Martin Baulig  <martin@ximian.com>
22279
22280         * row-indexes.h
22281         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22282
22283         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22284
22285         * reflection.c (build_compressed_metadata): If we have any entries
22286         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22287         set the header version to 1.1.
22288
22289 2004-04-06  Martin Baulig  <martin@ximian.com>
22290
22291         * class.c (mono_class_init): If we're a generic instance,
22292         initialize our nested classes, too.
22293         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22294         suffix. 
22295
22296 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22297
22298         * process.c: quote the argument passed to the shell on windows.
22299
22300 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22301
22302         * threads.c (mono_alloc_special_static_data): Allow this to be
22303         called during startup.
22304
22305 2004-04-02  Martin Baulig  <martin@ximian.com>
22306
22307         * icall.c
22308         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22309
22310 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22311
22312         * icall.c: Fix build.
22313
22314 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22315
22316         * Makefile.am: Added security.c|h.
22317         * icall.c: Added icall for get_UserName;
22318         * security.c: New file for security related icalls. Added function
22319         get_UserName for System.Environment (fix #56144).
22320         * security.h: New. Header file for security.c
22321
22322 2004-04-02  Dick Porter  <dick@ximian.com>
22323
22324         * icall.c: Deleted the icalls that were obsoleted some time ago
22325         by the ICU string code, and which were mixed into the icall
22326         rearranging.  Fixes bug 55969.
22327
22328         * string-icalls.h: 
22329         * string-icalls.c: Deleted the code that those icalls reference.
22330
22331 2004-04-01  Martin Baulig  <martin@ximian.com>
22332
22333         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22334
22335         * class.c (mono_class_from_generic_parameter): Don't set 
22336         TYPE_ATTRIBUTE_INTERFACE.
22337         (my_mono_class_from_generic_parameter): Likewise.
22338
22339 2004-04-01  Martin Baulig  <martin@ximian.com>
22340
22341         * loader.c (find_method): Added an optional `MonoClass *ic'
22342         argument to search in a specific interface.
22343         (mono_get_method_constrained): New public function.
22344
22345 2004-04-01  Martin Baulig  <martin@ximian.com>
22346
22347         * reflection.c (mono_image_get_generic_field_token): Use the
22348         `handleref' cache here.
22349
22350 2004-04-01  Martin Baulig  <martin@ximian.com>
22351
22352         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22353
22354         * reflection.c (create_generic_typespec): Use the `typespec' hash
22355         here, not the `typeref' one.    
22356
22357 2004-04-01  Martin Baulig  <martin@ximian.com>
22358
22359         * class.c (mono_class_inflate_generic_type): Moved the
22360         functionality into a new static inflate_generic_type() which
22361         returns NULL if it didn't do anything.  Only increment the
22362         `mono_stats.inflated_type_count' if we actually inflated
22363         something.
22364         (mono_class_get_full): Check the classes type to see whether we
22365         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22366
22367 2004-04-01  Jackson Harper  <jackson@ximian.com>
22368
22369         * reflection.c: Set culture for assembly references.
22370         
22371 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22372
22373         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22374
22375 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22376
22377         * assembly.c:
22378         (do_mono_assembly_open): the critical section also covers
22379         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22380
22381 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22382
22383         * threads.c:
22384         (mono_manage_threads): abort the background threads when finishing.
22385         Fixes bug #47232.
22386
22387 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22388
22389         * gc.c: only close the done_event handle if there was no timeout.
22390         C-ified comments.
22391
22392 2004-03-30  Martin Baulig  <martin@ximian.com>
22393
22394         * icall.c (icall_entries): It's called "System.Activator", not
22395         "System.Activation".    
22396
22397 2004-03-30  Martin Baulig  <martin@ximian.com>
22398
22399         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22400         (mono_class_create_from_typespec): Likewise.
22401
22402 2004-03-30  Martin Baulig  <martin@ximian.com>
22403
22404         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22405         `has_ctor_constraint' and `initialized'.
22406
22407 2004-03-30  Martin Baulig  <martin@ximian.com>
22408
22409         * reflection.c (encode_new_constraint): New static function to add
22410         the constructor constraint attribute to a type parameter.
22411         (encode_constraints): Call encode_new_constraint() if necessary.
22412
22413         * reflection.h
22414         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22415
22416         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22417         
22418 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22419
22420         * reflection.c, icall.c: add support for pinning variables. 
22421
22422 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22423
22424         * marshal.c (mono_marshal_get_managed_wrapper):
22425         init bool local with zero rather than null.
22426
22427 2004-03-29  Martin Baulig  <martin@ximian.com>
22428
22429         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22430         the "official" behavior here.
22431         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22432
22433 2004-03-29  Martin Baulig  <martin@ximian.com>
22434
22435         * icall.c: Reflect latest API changes.
22436
22437 2004-03-29  Martin Baulig  <martin@ximian.com>
22438
22439         * loader.c (mono_get_method_from_token): Also call
22440         mono_metadata_load_generic_params () for abstract and interface
22441         methods; replace the type arguments in the method signature with
22442         the ones which are loaded from the metadata.
22443
22444 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22445
22446         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22447         of the lock is not the current thread. MS.NET don't do it, in spite of
22448         what the documentation says. See bug #56157.
22449
22450 2004-03-28  Martin Baulig  <martin@ximian.com>
22451
22452         * class.c (mono_class_init): Don't call init_properties() and
22453         init_events() for generic instances; set `prop->parent' when
22454         inflating properties.
22455
22456         * reflection.c (mono_generic_inst_get_object): Call
22457         `mono_class_init (ginst->klass)'.
22458         (mono_type_get_object): Only create a MonoGenericInst if your
22459         generic type is a TypeBuilder.
22460         (do_mono_reflection_bind_generic_parameters): Only set
22461         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22462
22463 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22464
22465         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22466         Fixes #56091.
22467
22468 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22469
22470         * icall.c: added Kill_internal icall.
22471         * process.[ch]: added Kill_internal icall.
22472
22473 2004-03-25  Martin Baulig  <martin@ximian.com>
22474
22475         * class.h (MonoStats): Added `generic_instance_count',
22476         `inflated_method_count', `inflated_type_count' and
22477         `generics_metadata_size'.       
22478
22479 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22480
22481         * reflection.c: no warnings now.
22482
22483 2004-03-25  Martin Baulig  <martin@ximian.com>
22484
22485         * class.c (mono_class_get_full): New public function; does a
22486         mono_class_get(), but also takes a `MonoGenericContext *'.
22487
22488         * loader.c (mono_field_from_memberref): Renamed to
22489         `field_from_memberref', made static and added `MonoGenericContext *'
22490         argument.
22491         (mono_field_from_token): Added `MonoGenericInst *' argument.
22492         (method_from_memberef): Likewise.
22493         (mono_get_method_from_token): Likewise.
22494         (mono_get_method_full): New public function; does a
22495         mono_get_method(), but also takes a `MonoGenericContext *'.
22496
22497         * verify.c (mono_method_verify): Get the method's generic context
22498         and pass it to mono_field_from_token(), mono_get_method_full() and
22499         mono_class_get_full().
22500
22501 2004-03-25  Martin Baulig  <martin@ximian.com>
22502
22503         * class.c (mono_class_inflate_generic_type): Take a
22504         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
22505         `MonoGenericMethod *'.
22506
22507 2004-03-25  Martin Baulig  <martin@ximian.com>
22508
22509         * loader.h (MonoMethodInflated): Store the MonoGenericContext
22510         instead of the MonoGenericMethod here.
22511
22512 2004-03-25  Martin Baulig  <martin@ximian.com>
22513
22514         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
22515         each time we create a new MonoGenericInst, we also create a new
22516         context which points back to us.
22517
22518         * class.c (inflate_method): Use `ginst->context' instead of
22519         creating a new context.
22520
22521         * loader.c (method_from_memberref): Use
22522         `klass->generic_inst->context' instead of creating a new context.
22523
22524 2004-03-25  Martin Baulig  <martin@ximian.com>
22525
22526         * class.h (MonoGenericContext): New struct.
22527         (MonoGenericMethod): Removed `generic_inst'.
22528
22529         * class.c (mono_class_inflate_generic_method): Take a
22530         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
22531
22532 2004-03-25  Martin Baulig  <martin@ximian.com>
22533
22534         * loader.h (MonoMethodInflated): New typedef.
22535
22536         * metadata.h (MonoMethodSignature): Removed `gen_method', make
22537         `generic_param_count' consume just 30 bits, added `is_inflated'
22538         and `has_type_parameters' flags (one bit each).
22539
22540         * class.c (mono_class_inflate_generic_method): Create a
22541         MonoMethodInflated instead of a MonoMethodNormal and set
22542         `is_inflated' in the method signature.
22543
22544         * class.h (MonoGenericMethod): Removed `generic_method'.
22545
22546 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
22547
22548         * image.c: Make sure the name of a MonoImage is always an absolute path.
22549           This fixes bug #54415.
22550
22551 2004-03-24  Martin Baulig  <martin@ximian.com>
22552
22553         * class.c (mono_class_setup_vtable): If we're a generic instance,
22554         use our generic type's vtable size.
22555
22556 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22557
22558         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
22559         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
22560         problems.
22561
22562 2004-03-23  Martin Baulig  <martin@ximian.com>
22563
22564         * class.h (MonoDynamicGenericInst): Added `int count_events' and
22565         `MonoEvent *events'.
22566
22567         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
22568         (typebuilder_icalls): Added "get_event_info"; calls
22569         mono_reflection_event_builder_get_event_info(). 
22570
22571         * reflection.c (mono_reflection_generic_inst_initialize): Added
22572         `MonoArray *events'.
22573         (mono_reflection_event_builder_get_event_info): New function.
22574
22575 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
22576
22577         * object.h: add mono_type_initialization_init
22578
22579         * object.c (mono_runtime_class_init): 
22580         implement class constructor synchronization rules
22581         to cope with threading issues.  
22582         add mono_type_initialization_init
22583
22584         * appdomain.c (mono_runtime_init): call 
22585         mono_type_initialization_init
22586
22587         * class.h: removing initializing field from MonoVTable
22588
22589 2004-03-23  Martin Baulig  <martin@ximian.com>
22590
22591         * class.c (my_mono_class_from_generic_parameter): Use
22592         `param->name' if it's not NULL. 
22593
22594 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
22595
22596         * class.c: do not insert non-virtual methods in the vtable.
22597         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
22598         that means the method is non-virtual. This never would have
22599         happened before.
22600
22601 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22602
22603         * profiler.c: Added lock for accessing coverage_hash.
22604
22605 2004-03-22  Martin Baulig  <martin@ximian.com>
22606
22607         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
22608         `method->method->signature->generic_param_count != 0' to make it
22609         work for interface methods.
22610
22611 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22612
22613         * process.c: quote the string passed to the shell using g_shell_quote.
22614
22615 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22616
22617         * threads.c:
22618         (mono_threads_manage): don't remove the finalizer thread and self
22619         from the threads hash table so that mono_thread_manage can be called
22620         more than once.
22621
22622 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22623
22624         * process.c: quote the arguments when UseShellExecute is true. Fixes
22625         bug #55790.
22626
22627 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22628
22629         * threads.c: set mono_thread_detach as a cleanup routine for every
22630         thread. This way it's always executed upon thread termination, either
22631         aborted or finished normally. No more xsp hangs!
22632
22633 2004-03-17  Martin Baulig  <martin@ximian.com>
22634
22635         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
22636         `int count_nested' and a `MonoType **nested'.
22637
22638         * reflection.c (mono_reflection_bind_generic_parameters): Moved
22639         most of the functionality into a new static
22640         do_mono_reflection_bind_generic_parameters() and don't take a
22641         `MonoType *nested_in' argument any more.  Don't compute nested
22642         types here.
22643         (mono_reflection_generic_inst_get_nested_types): New public method
22644         to get nested types.
22645
22646         * class.c (mono_class_create_generic): Set `klass->nested_in' if
22647         we're a nested class.
22648
22649         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
22650         mono_reflection_generic_inst_get_nested_types() to compute the
22651         nested types.
22652
22653 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22654
22655         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
22656         descriptive error message under windows.
22657         
22658 2004-03-17  Martin Baulig  <martin@ximian.com>
22659
22660         * class.c (dup_type): Added `const MonoType *original' argument;
22661         copy the attrs from the original type.
22662
22663 2004-03-17  Martin Baulig  <martin@ximian.com>
22664
22665         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
22666         `m->generic_inst_cache' here.
22667
22668 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22669
22670         * exception.h exception.c: Add stack_overflow_exception.
22671
22672 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22673
22674         * threadpool.c:
22675         (overlapped_callback): call SetEvent *after* invoking the callback.
22676         No need to call CloseHandle.
22677
22678 2004-03-16  Martin Baulig  <martin@ximian.com>
22679
22680         * reflection.c (mono_image_get_fieldref_token): Take a
22681         `MonoReflectionField *' instead of a `MonoClassField *' and a
22682         `MonoClass *'; store the `MonoReflectionField *' in the hash.
22683
22684 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22685
22686         * appdomain.c: don't add the culture to the filename we're looking for
22687         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
22688
22689 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22690
22691         * locales.c: don't ignore symbols when doing case insensitive compares.
22692         Thanks Dick! Fixes bug #54046.
22693
22694         * threads.c: surround 'threads' usage with enter/leave in
22695         mono_thread_manage.
22696
22697 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22698
22699         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
22700         implicitly marshalled as [Out]. Fixes #55450.
22701
22702         (mono_marshal_get_runtime_invoke): Zero out the result if there is
22703         an exception.
22704
22705 2004-03-16  Martin Baulig  <martin@ximian.com>
22706
22707         * class.c (mono_class_from_generic_parameter): Use the actual
22708         parameter name. 
22709
22710 2004-03-16  Martin Baulig  <martin@ximian.com>
22711
22712         * reflection.c (type_get_signature_size): New static function.
22713         Compues the size of the type in a method signature.
22714         (method_get_signature_size): New static function; calls
22715         type_get_signature_size() to compute the actual size of the
22716         method's signature.
22717         (method_encode_signature): Use method_get_signature_size() to get
22718         the signature's size rather than using `nparams * 10'.
22719
22720 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22721
22722         * file-io.h: define here WapiOverlapped on windows. I don't want the
22723         regular OVERLAPPED one.
22724
22725         * file-io.c:
22726         * threadpool.c: somehow, BindIoCompletionCallback is not found.
22727         Disabling AIO on windows.
22728
22729 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22730
22731         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
22732         bug #55385.
22733
22734 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22735
22736         * appdomain.c: upgraded corlib version.
22737
22738         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
22739         and BeginWrite. Allow opening files for asynchrnous operations.
22740
22741         * file-io.h: new struct that maps FileStreamAsyncResult.
22742         * icall.c: added new icalls.
22743         * process.[ch]: support setting child process environment variables
22744         and use the SHELL or COMSPEC when UseShellExecute is true.
22745
22746         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
22747         callback for async. IO is here and also BindHandle.
22748
22749         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
22750         from here.
22751
22752 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22753
22754         * reflection.c (create_custom_attr): Allow len == 0.
22755
22756         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
22757         computation on big-endian machines.
22758
22759 2004-03-13  Martin Baulig  <martin@ximian.com>
22760
22761         * class.h (MonoGenericInst): Added `int count_ifaces'.
22762
22763         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
22764         `ginst->count_ifaces' instead `klass->interface_count' since we
22765         may get called before the vtable is created.
22766
22767         * loader.c (mono_method_get_param_names): If we're a generic
22768         instance, return and don't initialize the class.
22769
22770         * reflection.c (mono_reflection_setup_generic_class): Don't call
22771         ensure_runtime_vtable().
22772         (mono_reflection_bind_generic_parameters): Set
22773         `ginst->count_ifaces'.
22774
22775 2004-03-11  Jackson Harper <jackson@ximian.com>
22776
22777         * icall.c:
22778         * unicode.c:
22779         * unicode.h: Remove unused System.Char icalls.
22780         
22781 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
22782
22783         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
22784         code when we P/Invoke the first library in Windows.Forms, instead
22785         of when we first open the assembly.
22786
22787         * assembly.c: Drop the lookup from here.
22788
22789 2004-03-10  Martin Baulig  <martin@ximian.com>
22790
22791         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
22792         class for properties, fields and events.  Finally fixes #54945.
22793
22794 2004-03-10  Martin Baulig  <martin@ximian.com>
22795
22796         * metadata.c (mono_metadata_class_equal): New static function;
22797         checks whether two generic instances or two generic parameters are
22798         equal.
22799         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
22800         compare classes.        
22801
22802 2004-03-10  Martin Baulig  <martin@ximian.com>
22803
22804         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
22805
22806         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
22807         argument and write it into the `reflection_info' field.
22808
22809         * icall.c
22810         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
22811         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
22812
22813 2004-03-09  Jackson Harper  <jackson@ximian.com>
22814
22815         * char-conversions.h: use 8 bits for numeric data its all we need
22816         * icall.c: numeric data is only 8 bits now.
22817
22818 2004-03-09  Martin Baulig  <martin@ximian.com>
22819
22820         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
22821
22822         * class.c (init_properties, init_events): Initialize the new
22823         `parent' field.
22824
22825         * reflection.c (typebuilder_setup_properties): Likewise.
22826         (typebuilder_setup_events): Likewise.
22827
22828         * reflection.h (MonoEventInfo): Replaced `parent with
22829         `declaring_type' and `reflected_type'.
22830
22831         * icall.c (ves_icall_get_property_info): Distinguish between
22832         declaring and reflected type.
22833         (ves_icall_get_event_info): Likewise.
22834
22835 2004-03-09  Martin Baulig  <martin@ximian.com>
22836
22837         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
22838         (ves_icall_Type_GetField): Correctly set field->klass.
22839
22840 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22841
22842         * loader.h: Fix warning.
22843
22844 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
22845
22846         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
22847         library routine if present.  Notice that it will still continue
22848         executing even if its missing, for those working on the Gtk#
22849         edition of Windows.Forms.
22850
22851         * assembly.c (do_mono_assembly_open): If loading the
22852         System.Windows.Forms call mono_loader_wini_init.
22853
22854 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22855
22856         * class.h: Added MonoRemoteClass struct.
22857         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
22858         function for MonoStrings.
22859         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
22860         Added internal call for getting the proxy type.
22861         * marshal.c: Get the type of transparent proxies from its remote_class.
22862         Added methods that generate the IL for type checks and casts:
22863         mono_marshal_get_isinst, mono_marshal_get_castclass, 
22864         mono_marshal_get_proxy_cancast.
22865         * marshal.h: Declaration of the previous new methods.
22866         * object.c: Added new moethods for creating and updating MonoRemoteClass
22867         instances: mono_remote_class, mono_upgrade_remote_class, 
22868         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
22869         * verify.c: FIx transparent_proxy_fields layout.
22870         * appdomain.c: Bump corlib version.
22871
22872 2004-03-04  Jackson Harper  <jackson@ximian.com>
22873
22874         * icall.c: Add icall to access char conversion tables.
22875         * char-conversions.h: Character conversion tables.
22876         * Makefile.am: Add char-conversions.h private header file.
22877         
22878 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
22879
22880         * appdomain.c (unload_thread_main): Increase unloading timeout to
22881         10 sec as a temporary workaround for Nant problems.
22882
22883 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
22884
22885         * gc.c: Add checks for GC_enable and GC_disable.
22886
22887         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
22888         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
22889         (bug #54988).
22890         
22891 2004-02-27  Martin Baulig  <martin@ximian.com>
22892
22893         * reflection.c (mono_reflection_bind_generic_parameters): Take a
22894         `MonoReflectionType *' instead of a `MonoType *'.
22895
22896 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22897
22898         * gc.c (run_finalize): Avoid finalizing the object representing the
22899         finalizer thread.
22900         (finalizer_thread): Fix warning.
22901
22902 2004-02-25  Martin Baulig  <martin@ximian.com>
22903
22904         * class.c (_mono_class_get_instantiation_name): Added `int offset'
22905         argument for nested types.
22906         (mono_class_create_generic): Added support for nested generictypes.
22907
22908         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
22909         `GList *nested'.
22910
22911         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
22912
22913         * reflection.c (method_encode_signature): Increase the minimum
22914         value of `size' from 10 to 11.
22915         (mono_reflection_bind_generic_parameters): Take `int type_argc'
22916         and `MonoType **types' arguments instead of the `MonoArray
22917         *types'; added `MonoType *nested_in'.  Recursively instantiate
22918         nested classes. 
22919
22920 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22921
22922         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
22923         stack_overflow_ex members which are used by exception handling.
22924
22925         * appdomain.c (mono_runtime_init): Initialize the new members.
22926
22927         * gc.c (mono_gc_enable): New helper function.
22928         * gc.c (mono_gc_disable): New helper function.
22929
22930 2004-02-23  Martin Baulig  <martin@ximian.com>
22931
22932         * icall.c: I must have been really stupid - make it actually work
22933         this time ;-)
22934
22935 2004-02-23  Martin Baulig  <martin@ximian.com>
22936
22937         * loader.c (method_from_memberref): Only inflate the method if
22938         it's in another klass.
22939
22940 2004-02-23  Martin Baulig  <martin@ximian.com>
22941
22942         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
22943         (mono_class_init): If we're a generic instance and an interface,
22944         compute `class->interface_id'; also create `class->interfaces'
22945         here and inflate them.
22946
22947         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
22948         `ginst->is_open'.
22949         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
22950
22951         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
22952
22953 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
22954
22955         * reflection.c (method_encode_code): Improved the error message
22956         generated by the exception.
22957
22958 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22959
22960         * icall.c: Martin did not do what he said in the ChangeLog for
22961         2004-02-18, but put back the changes for properties and events.
22962         Commenting those changes out again and adding comment to bug #54518.
22963         
22964         * process.c: removed warning.
22965
22966 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
22967
22968         * marshal.c (emit_struct_conv): Print an error message instead of
22969         asserting when a type does not have the StructLayout attribute.
22970
22971 2004-02-20  Martin Baulig  <martin@ximian.com>
22972
22973         * reflection.c (mono_type_get_object): Also use the cache for
22974         generic instances.
22975         (mono_reflection_bind_generic_parameters): Always compute
22976         `ginst->ifaces'.        
22977
22978 2004-02-20  Martin Baulig  <martin@ximian.com>
22979
22980         * class.h (MonoGenericMethod): Removed `klass'.
22981
22982         * class.c (mono_class_inflate_generic_method): Added `MonoClass
22983         *klass' argument.
22984
22985 2004-02-20  Martin Baulig  <martin@ximian.com>
22986
22987         * reflection.c (method_encode_methodspec): Actually use the
22988         uninflated signature for the memberref.
22989
22990 2004-02-20  Martin Baulig  <martin@ximian.com>
22991
22992         * class.h (MonoGenericMethod): Removed `declaring'.
22993
22994         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
22995         is NULL, compute it here.
22996
22997 2004-02-20  Martin Baulig  <martin@ximian.com>
22998
22999         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
23000
23001         * metadata.c (mono_metadata_generic_inst_hash): New method.
23002         (mono_metadata_generic_inst_equal): New method.
23003
23004         * reflection.c (mono_reflection_bind_generic_parameters): Use the
23005         `klass->image->generic_inst_cache' cache to avoid creating
23006         duplicate MonoGenericInst's.
23007
23008         * class.c (mono_class_inflate_generic_type): Use the cache.
23009
23010 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
23011
23012         * object.c: fixed gc descriptor calculation for embedded valuetypes.
23013
23014 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23015
23016         * icall.c: added Socket.WSAIoctl icall.
23017
23018         * socket-io.[ch]: implemented
23019         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
23020
23021 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
23022
23023         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
23024
23025 2004-02-18  Urs C Muff  <umuff@quark.com>
23026
23027         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
23028         this work on PPC and other big-endian architectures.
23029
23030         * debug-mono-symfile.h: Prepended the names of all the `guint32'
23031         fields with an underscore to make sure they're only accessed by
23032         the read32() macro.
23033
23034 2004-02-18  Martin Baulig  <martin@ximian.com>
23035
23036         * icall.c: Put the klass->refclass changes back for methods and
23037         fields, but not for properties and events.  We're currently not
23038         distinguishing between DeclaringType and ReflectedType for
23039         properties and events, that's what caused the regressions.
23040
23041 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23042
23043         * object.c:
23044         (mono_async_result_new): the handle can be NULL.
23045
23046         * threadpool.c: Use an event instead of a semaphore, don't initialize
23047         it until needed. This saves quite a few semaphores from being created
23048         when using the threadpool.
23049
23050 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
23051
23052         * object.c (mono_string_is_interned_lookup): Fix interning of long
23053         strings. Fixes #54473.
23054
23055         * domain.c (ldstr_equal): Optimize if the two strings are equal.
23056
23057         * icall.c: Revert the klass->refclass changes since they introduce
23058         regressions (bug #54518).
23059
23060 2004-02-18  Martin Baulig  <martin@ximian.com>
23061
23062         * class.c (mono_class_init): If we're a generic instance and don't
23063         come from a TypeBuilder, inflate our members here.
23064         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
23065         (mono_class_create_generic): New public method.
23066         (mono_class_initialize_generic): Removed.
23067         (get_instantiation_name): Renamed to
23068         _mono_class_get_instantiation_name() and made it public.
23069
23070 2004-02-18  Martin Baulig  <martin@ximian.com>
23071
23072         * class.c (mono_class_inflate_generic_type): Clear the new
23073         instance's `nginst->klass' when inflating a generic instance.
23074         (mono_class_is_subclass_of): Added (basic) support for generic
23075         instances.
23076
23077 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
23078
23079         * appdomain.h, domain.c: use a MonoCodeManager instead of a
23080         MonoMempool to hold compiled native code.
23081
23082 2004-02-17  Martin Baulig  <martin@ximian.com>
23083
23084         * class.h (MonoDynamicGenericInst): Added `count_properties' and
23085         `properties'.
23086
23087         * reflection.c (mono_reflection_generic_inst_initialize): Added
23088         `MonoArray *properties' argument.
23089
23090         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
23091
23092 2004-02-17  Martin Baulig  <martin@ximian.com>
23093
23094         * icall.c (ves_icall_Type_GetFields): Renamed to
23095         ves_icall_Type_GetFields_internal() and added a
23096         `MonoReflectionType *rtype' argument; pass it to
23097         mono_field_get_object() to set the field's "reflected" type.
23098         (ves_icall_Type_GetConstructors): Likewise.
23099         (ves_icall_Type_GetEvents): Likewise.
23100         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
23101         argument; pass it to mono_method_get_object() to set the method's
23102         "reflected" type.       
23103
23104 2004-02-17  Martin Baulig  <martin@ximian.com>
23105
23106         * class.h (MonoDynamicGenericInst): New type.
23107         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
23108
23109         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
23110         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
23111         (ves_icall_MonoGenericInst_GetFields): New interncall.
23112
23113         * class.c (mono_class_from_generic): Don't call
23114         mono_class_initialize_generic() if this is a dynamic instance;
23115         ie. it's being created from a TypeBuilder.
23116         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
23117         `class->byval_arg.type'.
23118
23119         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
23120         to `inflate_method' and made static.
23121         (mono_reflection_inflate_field): Removed.
23122         (mono_reflection_generic_inst_initialize): New public method.
23123
23124         * reflection.h (MonoReflectionGenericInst): Removed `methods',
23125         `ctors' and `fields'; added `initialized'.
23126
23127 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23128
23129         * debug-helpers.c (mono_method_full_name): Fix output for empty
23130         namespaces.
23131
23132 2004-02-12  Martin Baulig  <martin@ximian.com>
23133
23134         * class.h (MonoClassField): Added `MonoType *generic_type'.
23135
23136         * reflection.c (mono_image_get_fieldref_token): Added support for
23137         instantiated generic types.
23138         (field_encode_inflated_field): Removed.
23139         (mono_image_get_inflated_field_token): Removed.
23140         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
23141
23142         * reflection.h (MonoReflectionInflatedField): Removed.
23143
23144 2004-02-12  Martin Baulig  <martin@ximian.com>
23145
23146         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
23147         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
23148
23149         * reflection.c (mono_image_get_methodspec_token): Take a
23150         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
23151         (mono_image_create_token): Check whether we have a
23152         `method->signature->gen_method' and call
23153         mono_image_get_methodspec_token() if appropriate.
23154         (inflated_method_get_object): Removed.
23155         (mono_reflection_bind_generic_method_parameters): Return a
23156         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
23157         (mono_reflection_inflate_method_or_ctor): Likewise.
23158
23159         * reflection.h (MonoReflectionInflatedMethod): Removed.
23160
23161 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
23162
23163         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
23164         for custom valuetype marshalling.
23165
23166         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
23167
23168 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23169
23170         * icall.c: fixed WSAGetLastError_internal name.
23171
23172 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23173
23174         * threads.c (mono_thread_attach): Allow this to be called multiple
23175         times for a thread.
23176         
23177         * threads.c (build_wait_tids): Do not wait for ourselves.
23178
23179         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23180         appdomain list is empty.
23181
23182         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23183         memory returned by mono_string_builder_to_utf16, since it points into
23184         managed memory. Thanks to Bernie Solomon for noticing this.
23185
23186         * icall.c: Add AppDomainSetup icalls.
23187
23188         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23189
23190         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23191         types.
23192
23193         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23194         custom attributes to the method_aux struct. Also fix array indexes etc.
23195
23196         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23197         
23198 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23199
23200         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23201         (both static and runtime) and reduce startup time.
23202
23203 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23204
23205         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23206         AsAny marshalling conversion instead of crashing.
23207
23208         * marshal.c: Fix warnings.
23209
23210 2004-02-09  Martin Baulig  <martin@ximian.com>
23211
23212         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23213
23214         * reflection.h (MonoReflectionInflatedMethod): Removed the
23215         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23216
23217         * reflection.c (method_encode_methodspec): Removed the `method'
23218         argument; we get it from `gmethod->declaring'.
23219         (inflated_method_get_object): Removed the `declaring' argument.
23220
23221 2004-02-09  Martin Baulig  <martin@ximian.com>
23222
23223         * class.h (MonoGenericMethod): New type.
23224         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23225         `generic_method'.
23226
23227         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23228         a `MonoGenericMethod *gen_method' one.
23229
23230         * class.c (mono_class_inflate_generic_type): Take an additional
23231         `MonoGenericMethod * argument.  This is only non-NULL if we're
23232         inflating types for a generic method.   
23233         (mono_class_inflate_generic_signature): Renamed to
23234         inflate_generic_signature() and made static; take a
23235         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23236         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23237         instead of a `MonoGenericInst *' one.
23238         (mono_class_inflate_generic_method): Likewise.
23239
23240         * reflection.c (encode_generic_method_sig): Take a
23241         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23242         (method_encode_methodspec): Likewise.
23243         (inflated_method_get_object): Likewise. 
23244
23245         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23246         field with a `MonoGenericMethod *gmethod' one.  
23247
23248 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23249
23250         * class.h (mono_class_has_parent): add parens to expansion
23251         so you can ! this.
23252
23253 2004-02-08  Martin Baulig  <martin@ximian.com>
23254
23255         * image.h (MonoImage): Removed `generics_cache'.
23256
23257         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23258         instead of a `MonoType *' argument; removed the `inflate_methods'
23259         argument.  Don't inflate methods here.
23260
23261         * loader.c (find_method): If it's a generic instance, call
23262         mono_class_init() on the `sclass->generic_inst->generic_type'.
23263
23264         * metadata.c (mono_type_size): Make this work on uninitialized
23265         generic instances; call it on the `ginst->generic_type's class.
23266
23267         * reflection.c (mono_reflection_bind_generic_parameters): Call
23268         mono_class_from_generic() to create the `ginst->klass'.
23269
23270 2004-02-08  Martin Baulig  <martin@ximian.com>
23271
23272         * class.h (MonoClass): Changed type of `generic_inst' from
23273         `MonoType *' to `MonoGenericInst *'.
23274
23275 2004-02-08  Martin Baulig  <martin@ximian.com>
23276
23277         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23278         mono_type_get_object(), this is now creating a `MonoGenericInst'
23279         for MONO_TYPE_GENERICINST.
23280         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23281         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23282
23283         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23284         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23285         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23286         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23287         and reflected type.
23288
23289         * reflection.h (MonoReflectionInflatedMethod): Removed
23290         `declaring_type' and `reflected_type'.
23291
23292 2004-02-08  Martin Baulig  <martin@ximian.com>
23293
23294         * class.h (MonoGenericInst): Added `MonoType *parent' and
23295         `MonoType **ifaces'.
23296
23297         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23298         `parent' and `interfaces'.
23299
23300         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23301         `MonoType *' argument and return a `MonoType *'.
23302
23303         * icall.c
23304         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23305         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23306
23307 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23308
23309         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23310         valuetype marshalling.
23311
23312 2004-02-06  Martin Baulig  <martin@ximian.com>
23313
23314         * class.c
23315         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23316         (my_mono_class_from_generic_parameter): Likewise.
23317
23318 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23319
23320         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23321         contents of the symbol files lazily.
23322
23323         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23324
23325         * threads.h threads.c icall.c: New icalls for getting and setting the
23326         threads name.
23327
23328 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23329
23330         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23331         Raise an exception when the domain is not found.
23332
23333 2004-02-03  Martin Baulig  <martin@ximian.com>
23334
23335         * reflection.c (mono_image_get_methodspec_token): Use the
23336         uninflated signature; fixes gen-33.
23337
23338 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23339
23340         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23341         the finalizer code can use thread functionality.
23342
23343         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23344         the finalizer thread.
23345
23346         * threads.c: Make some functions more robust.
23347
23348         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23349
23350         * metadata.h: Add new marshalling conventions.
23351
23352         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23353         stringbuilder marshalling. Fixes #53700.
23354
23355         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23356
23357         * reflection.c (mono_image_get_type_info): Save declarative security
23358         info.
23359
23360         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23361         unmanaged fields as well.
23362
23363         * appdomain.c: Bump corlib version.
23364
23365 2004-02-01  Martin Baulig  <martin@ximian.com>
23366
23367         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23368         method type arguments.  
23369
23370 2004-01-30  Duncan Mak  <duncan@ximian.com>
23371
23372         * marshal.h: Add prototype for
23373         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23374         and
23375         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23376         fix the build.
23377
23378 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23379
23380         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23381         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23382
23383 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23384
23385         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23386         custom marshalling of valuetypes.
23387
23388         * marshal.c: Fix some warnings.
23389
23390 2004-01-29  Martin Baulig  <martin@ximian.com>
23391
23392         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23393         for generic method parameters.
23394
23395         * reflection.c (method_encode_methodspec): Write the uninflated
23396         signature into the methodspec table.
23397         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23398         is always the uninflated method.
23399         (reflection_methodbuilder_to_mono_method): Copy the generic
23400         parameters from the MethodBuilder into `header->gen_params'.
23401
23402 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23403
23404         * class.c (mono_class_from_generic_parameter): Fix warning.
23405
23406 2004-01-27  Martin Baulig  <martin@ximian.com>
23407
23408         * class.c (mono_class_from_generic_parameter): Don't create
23409         `klass->methods' here.  
23410
23411 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23412
23413         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23414         extension since it does not work with libraries named lib<FOO>.dll.so.
23415
23416 2004-01-25  Martin Baulig  <martin@ximian.com>
23417
23418         * class.c (mono_class_inflate_generic_type): Added support for
23419         MONO_TYPE_GENERICINST.
23420
23421         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23422         inflate methods on open constructed types.      
23423
23424 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23425
23426         * object.c: fire ProcessExit event in the root AppDomain after running
23427         Main. Fixes bug #53299.
23428
23429 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23430
23431         * socket-io.c: include the new socket-wrappers.h header.
23432         Use the wrappers instead of the unix socket functions to make the code
23433         more clear.
23434
23435 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23436
23437         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23438
23439         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23440         Fixes #22532.
23441
23442 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23443
23444         * reflection.c (mono_image_create_pefile): Handle the case when the
23445         entry point is not a MethodBuilder.
23446
23447         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23448         field to ReflectionMethod since it is not allways a builder.
23449
23450         * reflection.c (type_get_fully_qualified_name): New helper function to
23451         return the fully qualified name of a type.
23452
23453         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23454         type name for custom marshallers.
23455
23456         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23457
23458         * class.c (mono_class_setup_vtable): If a parent class already 
23459         implements an interface, use the implementing methods from that class.
23460         Fixes #53148.
23461
23462 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23463
23464         * threadpool.c: just return instead of ExitThread to allow for thread
23465         clean up earlier.
23466
23467 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23468
23469         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23470         when closing resource modules.
23471
23472         * reflection.c (mono_image_create_pefile): Handle the case when the
23473         entry point is not a MethodBuilder.
23474
23475         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23476         field to ReflectionMethod since it is not allways a builder.
23477
23478 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23479
23480         * marshal.c (mono_marshal_get_managed_wrapper): 
23481         mono_marshal_alloc takes native int so CONV_I
23482         the arg for 64bits.
23483
23484 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23485
23486         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23487         tokens in the cattr table. Fixes #53108.
23488
23489 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23490
23491         * loader.c: don't trim ".dll" before looking up in the config file.
23492         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
23493
23494 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23495
23496         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
23497         Return the module which contains the resource as well.
23498         (ves_icall_System_Reflection_Module_Close): New icall.
23499
23500         * appdomain.c: Bump corlib version number.
23501
23502         * image.c (mono_image_addref): New public function.
23503
23504         * assembly.c: Call mono_image_addref.
23505
23506         * reflection.c (mono_module_get_object): Increase reference count of 
23507         the image.
23508
23509         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23510         Fixes #22532.
23511
23512         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
23513         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
23514         proper exceptions on DllImport problems.
23515
23516 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
23517
23518         * class.c, metadata.c: eliminate CSIZE macro.
23519
23520 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
23521
23522         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
23523         * object.h: Added async_callback field in MonoAsyncResult.
23524         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
23525         * verify.c: Added async_callback in MonoAsyncResult layout.
23526
23527 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
23528
23529         * reflection.c (mono_reflection_get_custom_attrs): Add support
23530         for Modules.
23531
23532 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23533
23534         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
23535         marshalling.
23536         (mono_marshal_method_from_wrapper): Add null pointer check.
23537
23538 2004-01-16  Martin Baulig  <martin@ximian.com>
23539
23540         * debug-mono-symfile.h: Set version number to 36 and reflect
23541         latest symbol writer changes.
23542
23543 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23544
23545         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
23546         multi-dimensional arrays.
23547         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
23548         (mono_class_from_mono_type): Use bounded_array_class_get.
23549         
23550         * class.c (mono_bounded_array_class_get): New function which takes
23551         a 'bounded' bool argument to distinguish vectors from one dimensional
23552         arrays.
23553
23554         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
23555         bounded_array_class_get if the array has bounds.
23556
23557         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23558         Search modules loaded using AssemblyBuilder:AddModule as well.
23559
23560 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23561
23562         * appdomain.c: increased corlib version.
23563         * filewatcher.c: removed g_print.
23564         * icall.c:
23565         (get_property_info): only allocate what is actually requested.
23566         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
23567
23568 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23569
23570         * Makefile.am: added filewatcher.[ch]
23571         * filewatcher.[ch]: FileSystemWatcher runtime support.
23572         * icall.c: added new FSW icalls.
23573
23574 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
23575
23576         * string-icalls.c: fix stringbuilder regression as suggested by
23577         Iain McCoy <iain@mccoy.id.au>.
23578
23579 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23580
23581         * process.c (process_read_stringtable_block): Recognize '007f' as
23582         a language neutral stringtable block.
23583
23584 2004-01-12  Patrik Torstensson
23585
23586         * object.h (MonoStringBuilder) : Changed layout to support our
23587         new stringbuilder class.
23588         * marshal.c: Change marshalling to support the new layout of 
23589         string builder.
23590         * appdomain.c: increased version number because new layout of
23591         string builder.
23592
23593 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
23594
23595         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
23596         assembly name as an string instead of an AssemblyName, since it is
23597         easier to extract info from it.
23598
23599         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
23600         the culture subdirectories too. Fixes #52231.
23601
23602 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23603
23604         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
23605         It takes 2 new parameters with an optional name for the method to look
23606         for and case ignoring info.
23607
23608         * threadpool.c: removed unused variable.
23609
23610 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23611
23612         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
23613         It takes 2 new parameters with an optional name for the property to look
23614         for and case ignoring info.
23615         Fixes bug #52753.
23616
23617 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23618
23619         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
23620         Fix #52451.
23621
23622 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23623
23624         * appdomain.c:
23625         * assembly.c: escape the uri before passing it to g_filename_from_uri.
23626         Fixes bug #52630.
23627
23628 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
23629
23630         * reflection.c: Add support for more than one unmanaged resource.
23631
23632         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
23633         in field->def_value, as done in all other cases.
23634
23635         * reflection.c (mono_reflection_get_custom_attrs): Add support for
23636         TypeBuilders.
23637
23638         * reflection.c (mono_reflection_create_runtime_class): Remove 
23639         errorneous assignment to klass->element_class, since it is already
23640         done in mono_reflection_setup_internal_class.
23641
23642 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23643
23644         * gc.c: added missing LeaveCriticalSection.
23645         * icall.c: indented a couple of lines.
23646         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
23647         if we call EndInvoke inside a callback. Fixes bug #52601.
23648
23649 2004-01-07  Martin Baulig  <martin@ximian.com>
23650
23651         * mono-debug-debugger.h
23652         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
23653
23654 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
23655
23656         * appdomain.c: Use messages in NotImplementedException.
23657
23658         * exception.c (mono_get_exception_not_implemented): Now this takes
23659         a message argument.
23660
23661         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
23662         exception instead of g_asserting an aborting when something is not
23663         implemented.
23664
23665         Add some inline docs.
23666
23667 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
23668
23669         * reflection.h: Update after changes to object layout.
23670
23671         * reflection.c: Implement saving of unmanaged aka win32 resources.
23672
23673         * appdomain.c: Bump version number.
23674
23675         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
23676         Handle missing domains gracefully.
23677
23678 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
23679
23680         * file-io.c : On Windows, there are much more invalid_path_chars.
23681
23682 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23683
23684         * class.h, object.c: prepare for GetType () speedup.
23685
23686 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
23687
23688         * profiler.c: workaround for --profile null reference exception on
23689           cygwin. Patch by Patrik Torstensson.
23690
23691 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
23692
23693         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
23694         make work for unaligned access.
23695
23696 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
23697
23698         * class.c: small cleanup (class->fields [i] -> field).
23699         * image.c: check address of metadata is valid.
23700
23701 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
23702
23703         * assembly.h assembly.c (mono_assembly_loaded): New public function to
23704         search the list of loaded assemblies.
23705
23706         * reflection.c (mono_reflection_type_from_name): Use 
23707         mono_assembly_loaded instead of mono_image_loaded.
23708
23709         * reflection.c: Fix warnings.
23710
23711 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
23712
23713         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
23714         is dynamic. This is needed since an assembly can contain both dynamic and
23715         non-dynamic images.
23716
23717         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
23718         assembly->dynamic.
23719
23720         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
23721
23722         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
23723         to store modules loaded using AddModule.
23724
23725         * reflection.c (mono_image_fill_file_table): Generalize this so it works
23726         on Modules.
23727
23728         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
23729
23730         * reflection.c (mono_image_fill_export_table_from_module): New function to
23731         fill out the EXPORTEDTYPES table from a module.
23732
23733         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
23734         into a separate function. Also handle loaded non-dynamic modules.
23735
23736         * reflection.c (mono_image_basic_init): Fix memory allocation.
23737
23738         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23739
23740         * assembly.c (mono_assembly_load_references): Make this public.
23741
23742 2003-12-19  Martin Baulig  <martin@ximian.com>
23743
23744         * class.c (mono_class_initialize_generic): Made this static, take
23745         a `MonoGenericInst *' instead of a `MonoClass *'.
23746         (mono_class_from_generic): Call mono_class_initialize_generic()
23747         unless we're already initialized or being called from
23748         do_mono_metadata_parse_generic_inst().
23749
23750         * class.h (MonoGenericInst): Added `initialized' and
23751         `init_pending' flags.
23752
23753         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
23754         `mono_class_init (gklass)' or mono_class_initialize_generic()
23755         here; set `generic_inst->init_pending' while parsing the
23756         `type_argv'.
23757
23758 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
23759
23760         * locales.c: include string.h for memxxx prototypes
23761
23762 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23763
23764         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
23765         constructor when accessing literal fields.
23766
23767 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
23768
23769         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23770
23771         * reflection.c (assembly_add_resource_manifest): New function to fill
23772         the MANIFESTRESOURCE table.
23773
23774         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
23775
23776         * reflection.h: Update to changes in class layout.
23777
23778         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
23779         Reenable call to mono_runtime_is_shutting_down ().
23780
23781         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
23782         determine if the runtime is shutting down.
23783
23784 2003-12-16  Jackson Harper <jackson@ximian.com>
23785
23786         * icall.c: comment out call to mono_runtime_is_shutting_down to
23787         fix build.
23788         
23789 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
23790
23791         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
23792         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
23793
23794 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
23795
23796         * reflection.c: move definition of swap_with_size
23797         to before its first call
23798
23799 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
23800
23801         * appdomain.c (mono_runtime_is_shutting_down): New public function.
23802
23803         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
23804         icall.
23805
23806         * object.c: Fix warnings.
23807
23808         * icall.c (ves_icall_Type_Get...): Only consider inherited static
23809         members if FlattenHierarchy is set.
23810
23811         * reflection.c (mono_image_add_decl_security): New function to emit
23812         declarative security.
23813
23814         * reflection.h reflection.c: Add support for declarative security.
23815
23816         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23817         
23818 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23819
23820         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23821         
23822         * appdomain.c verify.c: Moved corlib version checking into its own
23823         function in appdomain.c since it needs to create vtables etc.
23824
23825 2003-12-13  Patrik Torstensson <p@rxc.se>
23826
23827         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
23828         instead of unwrapped server.
23829
23830 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
23831
23832         * verify.c (check_corlib): Fix field index.
23833
23834 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
23835
23836         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
23837         GetGacPath icall.
23838
23839 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
23840
23841         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
23842         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
23843         cope with sizeof(size_t) != sizeof(guint32).
23844
23845 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23846
23847         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
23848         in case of failure.
23849
23850 2003-12-10  Mark Crichton <crichton@gimp.org>
23851
23852         * icall.c: removed the GetNonZeroBytes.  We now handle this case
23853         in managed code.
23854
23855         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
23856
23857 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
23858
23859         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
23860         marked as deleted.
23861
23862 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23863
23864         * verify.c (check_corlib): Handle the case when the version field is 
23865         initialized by a static constructor.
23866
23867 2003-12-08  Patrik Torstensson  <p@rxc.se>
23868
23869     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
23870
23871 2003-12-08  Martin Baulig  <martin@ximian.com>
23872
23873         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
23874         a MonoReflectionGenericParameter, also take the parameter index
23875         and name as arguments.
23876         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
23877         (ves_icall_MonoGenericParam_initialize): New interncall.
23878         (ves_icall_Type_make_byref_type): New interncall.
23879
23880         * reflection.h (MonoReflectionGenericParam): Derive from
23881         MonoReflectionType, not just from MonoObject.  Added `refobj' and
23882         `index' fields.
23883
23884         * reflection.c (mono_reflection_define_generic_parameter): Create
23885         and return a new MonoReflectionGenericParam; don't initialize the
23886         constraints here.
23887         (mono_reflection_initialize_generic_parameter): New public method;
23888         initializes the constraints and creates the `param->pklass'.
23889
23890 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23891
23892         * reflection.h reflection.c: Use the new fields 'num_types', 
23893         'num_fields' and 'num_methods' to track the number of types etc.
23894
23895         * verify.c (check_corlib): Check corlib version number.
23896
23897 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
23898
23899         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
23900         function works on all methods.
23901
23902 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23903
23904         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
23905         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
23906         the custom_type_info flag of the transparent proxy.
23907         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
23908         objects that supports IRemotingTypeInfo.
23909         * object.h: Added custom_type_info field in transparent proxy.
23910
23911 2003-12-06  Martin Baulig  <martin@ximian.com>
23912
23913         * class.c (mono_class_create_from_generic): Removed.
23914         (mono_class_from_generic): Check `ginst->klass' before doing
23915         anything else.  This is important to fully support "recursive"
23916         generic types.
23917
23918         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
23919         empty `generic_inst->klass' before doing anything else.
23920
23921 2003-12-06  Dick Porter  <dick@ximian.com>
23922
23923         * verify.c: 
23924         * object.h:
23925         * icall.c:
23926         * locales.c: Use C structs to access class fields.  Don't do a
23927         conversion between MonoString and UChar because both are
23928         platform-endian UTF-16.  Compare now takes startindex and count
23929         parameters.  Add a char overload for IndexOf.  Speed up the
23930         invariant string IndexOf.
23931
23932 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
23933
23934         * Makefile.am (monosn_LDADD): Fix parallel build.
23935
23936 2003-12-04  Martin Baulig  <martin@ximian.com>
23937
23938         * icall.c
23939         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
23940         (ves_icall_Type_make_array_type): New interncall.       
23941
23942 2003-12-04  Martin Baulig  <martin@ximian.com>
23943
23944         * locales.c: also change it in the !HAVE_ICU case.
23945
23946 2003-12-04  Dick Porter  <dick@ximian.com>
23947
23948         * icall.c:
23949         * locales.c: construct_compareinfo is now in CompareInfo, not
23950         CultureInfo.
23951
23952 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23953
23954         * image.c (mono_image_load_file_for_image): Cache loaded images in the
23955         image->files array.
23956
23957         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
23958         table as well.
23959
23960         * assembly.c (mono_assembly_load_references): Only load references
23961         once.
23962
23963         * class.c (mono_class_from_name): Avoid linear search of the 
23964         EXPORTEDTYPE table.
23965
23966         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
23967
23968 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23969
23970         * image.h (MonoImage): Add 'field_cache' field.
23971
23972         * loader.c (mono_field_from_token): Cache field lookups.
23973         
23974         * reflection.c (mono_module_get_object): Fix name property.
23975
23976         * icall.c (ves_icall_get_enum_info): Update after changes to 
23977         mono_metadata_get_constant_index ().
23978
23979         * icall.c: Get rid of get_type_info icall, use a separate icall for
23980         each type property to avoid needless memory allocations. Fixes #51514.
23981
23982         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
23983         to avoid needless binary searches.
23984
23985         * class.c (class_compute_field_layout): Move the initialization of
23986         field->def_value to mono_class_vtable ().
23987
23988         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
23989         non-corlib types.
23990
23991         * object.c (mono_object_allocate): Make it inline.
23992
23993         * object.c (mono_object_allocate_spec): Make it inline.
23994         
23995 2003-12-02  Dick Porter  <dick@ximian.com>
23996
23997         * locales.c (create_NumberFormat): NumberFormatInfo construction.
23998         Patch by Mohammad DAMT (mdamt@cdl2000.com).
23999
24000 2003-12-01  Dick Porter  <dick@ximian.com>
24001
24002         * threads.c: Fix signature and call in CreateMutex and
24003         CreateEvent.
24004
24005 2003-12-01  Dick Porter  <dick@ximian.com>
24006
24007         * icall.c: 
24008         * locales.c: Implement string compares and searching
24009
24010         * object.h: Add extra Thread field
24011
24012 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
24013
24014         * reflection.c (fixup_method): Add support for MonoCMethod.
24015
24016 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
24017
24018         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
24019
24020         * reflection.c (assembly_name_to_aname): Allow extra characters in
24021         assembly names. Fixes #51468.
24022
24023 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24024
24025         * exception.c (mono_exception_from_name_domain): New helper function.
24026
24027         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
24028         exception object in the correct domain.
24029
24030         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
24031         formatting + make a copy a the input data.
24032
24033         * loader.c (mono_get_method_from_token): Methods which contain
24034         native code do not have entries in the ImplMap.
24035
24036         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
24037         Thanks to Gonzalo for spotting this.
24038         
24039         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
24040         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
24041
24042         * assembly.h (mono_assembly_load_from): Split the second part of 
24043         assembly loading into a new public function.
24044
24045         * exception.h (mono_get_exception_bad_image_format): New function.
24046
24047 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
24048
24049         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24050         Enumerate all modules inside a dynamic assembly. Fixes #51293.
24051         
24052         * icall.c: Add new icall for creating dynamic methods.
24053
24054         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
24055
24056         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
24057
24058         * reflection.c (mono_reflection_create_dynamic_method): New icall to
24059         create a dynamic method.
24060
24061         * reflection.c (resolve_object): New helper function.
24062
24063         * reflection.c: Generalize ReflectionMethodBuilder and the functions
24064         which manipulate it so they can also work on dynamic methods.
24065
24066         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
24067         creating the MonoReflectionMethodAux structure if it is not needed.
24068         
24069         * reflection.h verify.c: Update after changes to object layout.
24070
24071         * reflection.c (method_builder_encode_signature): Fix compilation on
24072         gcc 2.95.x.
24073
24074 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
24075
24076         * appdomain.h: Added support for context static fields. Added static_data
24077           field to MonoAppContext and renamed thread_static_fields to a more
24078           generic special_static_fields in MonoAppDomain, since it can now contain
24079           context static fields.
24080         * domain.c: Updated hashtable name.
24081         * object.c: Replaced field_is_thread_static() for a more generic
24082           field_is_special_static() which also checks for context static attribute.
24083           In mono_class_vtable(), added support for static context fields.
24084         * threads.c: Changed methods that manage thread static fields to more
24085           generic methods so they can be reused both for thread and context static
24086           data.
24087         * threads.h: Declared some new methods.
24088
24089 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
24090
24091         * reflection.h: Update after changes to the managed types.
24092
24093         * reflection.c (encode_custom_modifiers): New helper function.
24094
24095         * reflection.c (method_encode_signature): Emit custom modifiers.
24096
24097         * reflection.c (field_encode_signature): Emit custom modifiers.
24098
24099 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24100
24101         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
24102
24103         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
24104         implementation.
24105
24106         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
24107         icall.
24108
24109         * object.c (mono_field_get_value_object): New function.
24110
24111         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
24112         specific.
24113
24114 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24115
24116         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
24117         return a preallocated out-of-memory exception instance.
24118
24119         * object.c (out_of_memory): Use the new function.
24120
24121         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
24122         flag is before the custom modifiers. Fixes #49802.
24123
24124 2003-11-16  Martin Baulig  <martin@ximian.com>
24125
24126         * class.c (mono_class_is_open_constructed_type): Implemented the
24127         MONO_TYPE_GENERICINST case.
24128
24129 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24130
24131         * assembly.c (mono_assembly_fill_assembly_name): New function to
24132         fill out the MonoAssemblyName structure.
24133         (mono_assembly_open): Use the new function.
24134
24135         * icall.c (fill_reflection_assembly_name): New helper function.
24136
24137         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
24138         new function.
24139
24140         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
24141
24142 2003-11-15  Martin Baulig  <martin@ximian.com>
24143
24144         * class.c (mono_class_is_open_constructed_type): New public
24145         function; checks whether a type is an open constructed type,
24146         ie. whether it still contains type parameters.
24147         (mono_class_inflate_generic_type): If we're a type parameter and
24148         the inflated type is also a MONO_TYPE_(M)VAR, return the original
24149         type.
24150
24151         * class.h (MonoGenericInst): Added `guint32 is_open'.
24152
24153         * loader.c (method_from_methodspec): Check whether we're an open
24154         or closed constructed type and set `ginst->is_open'.
24155
24156         * reflection.c (mono_reflection_bind_generic_parameters): Check
24157         whether we're an open or closed constructed type and set
24158         `ginst->is_open'.
24159         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
24160         from open constructed types.
24161
24162 2003-11-15  Martin Baulig  <martin@ximian.com>
24163
24164         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24165         a generic instance (instead of a generic type declaration) with
24166         unbound generic parameters, bind them to our actual types.
24167
24168 2003-11-14  Martin Baulig  <martin@ximian.com>
24169
24170         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
24171
24172         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24173         an interface type, populate `res->interfaces' with instantiated
24174         versions of all the interfaces we inherit.
24175
24176 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24177
24178         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24179         when MONO_PATH is set but doesn't contain the install dir.
24180
24181 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24182
24183         * icall.c:
24184         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24185         it's also implemented in base classes. Fixes bug #50927.
24186
24187 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24188
24189         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24190         if this method is called from a finalizer. Fixes #50913.
24191
24192 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24193
24194         * threads.c: Implement VolatileRead/VolatileWrite
24195
24196         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24197
24198 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24199
24200         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24201         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24202         2.95.3.
24203
24204         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24205         from Peter Ross (pro@missioncriticalit.com).
24206         
24207 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24208
24209         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24210
24211 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24212
24213         * assembly.c (mono_assembly_load_references): Disable check because it
24214         triggers on older corlibs which lots of people have.
24215
24216 2003-11-12  Jackson Harper  <jackson@ximian.com>
24217
24218         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24219         load corlib.dll if mscorlib.dll is not found.
24220         * assembly.h: Remove corlib name define.
24221         * class.c:
24222         * domain.c:
24223         * image.c: Change corlib name to mscorlib.
24224         
24225 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24226
24227         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24228
24229 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24230
24231         * appdomain.h: Added loader_optimization here to sync with the C#
24232         code, and add disallow_binding_redirects field.
24233
24234 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24235
24236         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24237
24238         * reflection.c (mono_image_build_metadata): Fix crash on modules
24239         with no types.
24240
24241         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24242
24243         * icall.c (ves_icall_get_method_info): Return callingConvention as
24244         well.
24245
24246         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24247         namespaces from the EXPORTEDTYPE table as well.
24248
24249         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24250         from all modules inside the assembly.
24251         
24252 2003-11-11  Martin Baulig  <martin@ximian.com>
24253
24254         * reflection.c (mono_reflection_bind_generic_parameters): Make
24255         this work for interfaces.
24256
24257 2003-11-11  Martin Baulig  <martin@ximian.com>
24258
24259         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24260
24261 2003-11-11  Martin Baulig  <martin@ximian.com>
24262
24263         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24264         "MonoInflatedMethod" and "MonoInflatedCtor".
24265
24266 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24267
24268         * reflection.c (resolution_scope_from_image): Use the assembly table
24269         from the manifest module, since other modules don't have it.
24270
24271         * debug-helpers.c (mono_type_full_name): New helper function.
24272
24273         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24274
24275         * image.c (mono_image_load_file_for_image): New public function which
24276         is a replacement for the load_file_for_image in class.c.
24277
24278         * assembly.c (mono_assembly_load_module): A wrapper for the function
24279         above which does assembly association and reference loading too.
24280
24281         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24282
24283 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24284
24285         * appdomain.c: not all of the attributes for the full assembly name
24286         are required and the order doesn't matter. Fixes bug #50787.
24287
24288 2003-11-10  Dick Porter  <dick@ximian.com>
24289
24290         * locales.c: Use platform-endian UTF16
24291
24292 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24293
24294         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24295         
24296 2003-11-10  Martin Baulig  <martin@ximian.com>
24297
24298         * metadata.c
24299         (mono_metadata_load_generic_params): Make this actually work.
24300
24301         * reflection.c (mono_reflection_bind_generic_parameters): If our
24302         parent is a generic instance, pass all the `types' to it, no
24303         matter whether it has the same number of type parameters or not.
24304
24305 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24306
24307         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24308
24309         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24310         assignment code to this function so it gets called recursively for all
24311         modules.
24312
24313         * image.c (load_modules): Remove the assembly assignment since it is
24314         now done by mono_assembly_load_references.
24315         
24316         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24317         Add 'module' argument.
24318         (mono_module_get_types): New helper function.
24319         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24320
24321 2003-11-08  Martin Baulig  <martin@ximian.com>
24322
24323         * class.c (mono_class_inflate_generic_method): Interface method
24324         don't have a header.
24325
24326         * reflection.c (mono_image_get_methodspec_token): Take an
24327         additional `MonoGenericInst *' argument instead of reading it from
24328         the header; this is necessary to support interfaces.
24329         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24330         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24331         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24332         argument.
24333
24334         * reflection.h (MonoReflectionInflatedMethod): Added
24335         `MonoGenericInst *ginst'.
24336
24337 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24338
24339         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24340
24341 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24342
24343         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24344
24345 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24346
24347         * reflection.c 
24348         (reflection_methodbuilder_from_method_builder):
24349         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24350         initialize a ReflectionMethodBuilder structure.
24351         (mono_image_get_methodbuilder_token):
24352         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24353         tokens which point to types in another module inside the same assembly.
24354
24355         * reflection.c: Use the new helper functions.
24356         
24357         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24358
24359         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24360         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24361
24362         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24363         neccesary.
24364
24365         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24366         current module. Emit the manifest only for the main module.
24367
24368         * reflection.c (mono_image_create_token): Add assertion when a 
24369         memberref needs to be created.
24370
24371         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24372
24373         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24374         larger buffer for the custom attribute blob. Fixes #50637.
24375         
24376 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24377
24378         * threadpool.c: notify listener on async processing handles after
24379         invoking the async callback. Thanks to Zoltan.
24380
24381 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24382
24383         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24384         avoid code duplication.
24385
24386         * reflection.h (MonoDynamicImage): New type which is currently unused,
24387         but will be used through the ref.emit code in place of 
24388         MonoDynamicAssembly.
24389
24390         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24391         object layout.
24392
24393         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24394         a MonoDynamicImage instead of just a MonoImage.
24395         
24396         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24397         icalls to ModuleBuilder but keep their semantics, so they will work
24398         with moduleb->assemblyb. This will change later.
24399         
24400 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24401
24402         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24403         object layout.
24404
24405         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24406         main module, since it is now done by the managed code.
24407
24408 2003-11-03  Martin Baulig  <martin@ximian.com>
24409
24410         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24411         `ginst->klass' here.
24412         (method_encode_methodspec): Don't use the `ginst->generic_method's
24413         klass if it's a generic instance, use `ginst->klass' in this case.
24414
24415 2003-11-03  Martin Baulig  <martin@ximian.com>
24416
24417         * reflection.c (mono_image_get_generic_method_param_info):
24418         Removed, use mono_image_get_generic_param_info() instead.
24419         (mono_image_get_type_info): Write the GenericParam table before
24420         the Method table.  This is neccessary because in the GenericParam
24421         table, type parameters of the class (ie. '!0' etc.) must come
24422         before the ones from its generic methods (ie. '!!0' etc).
24423
24424 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24425
24426         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24427
24428 2003-11-02  Martin Baulig  <martin@ximian.com>
24429
24430         * reflection.c (create_generic_typespec): Take a
24431         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24432         the generic parameters from it.
24433
24434 2003-11-02  Martin Baulig  <martin@ximian.com>
24435
24436         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24437         instead of a `MonoClassField *' since we just need the type.
24438         (create_generic_typespec): New static function.  Creates a
24439         TypeSpec token for a generic type declaration.
24440         (mono_image_get_generic_field_token): New static function.
24441         (mono_image_create_token): If we're a FieldBuilder in a generic
24442         type declaration, call mono_image_get_generic_field_token() to get
24443         the token.
24444
24445 2003-11-02  Martin Baulig  <martin@ximian.com>
24446
24447         * reflection.h
24448         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24449         `MonoReflectionGenericInst *declaring_type' and
24450         `MonoReflectionGenericInst *reflected_type' fields.
24451
24452         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24453         `MonoReflectionGenericInst *declaring_type' and a
24454         `MonoReflectionGenericInst *reflected_type' argument instead of a
24455         single `MonoReflectionGenericInst *type' one.  Set
24456         `res->declaring_type' and `res->reflected_type' from them.
24457         (mono_reflection_inflate_field): Likewise.      
24458
24459 2003-11-02  Martin Baulig  <martin@ximian.com>
24460
24461         * class.c (mono_class_setup_vtable): Don't store generic methods
24462         in the vtable.  
24463
24464 2003-11-02  Martin Baulig  <martin@ximian.com>
24465
24466         * reflection.h (MonoReflectionGenericInst): Added
24467         `MonoReflectionType *declaring_type'.
24468
24469         * reflection.c (mono_reflection_bind_generic_parameters): Use
24470         `if (tb->parent)' instead of `klass->parent'.
24471
24472 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24473
24474         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24475         with an empty ASSEMBLY table.
24476
24477         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24478         variable in the inner and outer loops.
24479
24480 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24481
24482         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24483         argument.
24484
24485         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24486         
24487         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24488         icalls. Instead, do everything in managed code. This is needed since
24489         it is hard to restore the original domain etc. in unmanaged code in the
24490         presence of undeniable exceptions.
24491
24492         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
24493         New icalls to push and pop appdomain refs.
24494
24495 2003-10-31  Martin Baulig  <martin@ximian.com>
24496
24497         * class.c (inflate_generic_type): Renamed to
24498         mono_class_inflate_generic_type() and made it public.
24499
24500         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
24501         New interncall.
24502
24503         * loader.c (mono_field_from_memberref): Also set the retklass for
24504         typespecs.
24505
24506         * fielder.c (mono_image_get_inflated_field_token): New static
24507         method; creates a metadata token for an inflated field.
24508         (mono_image_create_token, fixup_method): Added support for
24509         "MonoInflatedField".
24510         (fieldbuilder_to_mono_class_field): New static function.
24511         (mono_reflection_inflate_field): New public function.
24512
24513         * reflection.h
24514         (MonoReflectionGenericInst): Added `MonoArray *fields'.
24515         (MonoReflectionInflatedField): New typedef.     
24516
24517 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
24518
24519         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
24520         for Solaris and other platforms without s6_addr16
24521
24522 2003-10-30  Martin Baulig  <martin@ximian.com>
24523
24524         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
24525         argument instead of two.
24526         (mono_class_inflate_generic_signature): Likewise.
24527         (inflate_generic_header): Likewise.
24528         (mono_class_inflate_generic_method): Likewise.  In addition, if
24529         `ginst->klass' is set, it becomes the new `method->klass'.
24530
24531         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
24532         field.
24533
24534         * reflection.c (encode_generic_method_sig): Write a 0xa as the
24535         first byte. [FIXME]
24536         (method_encode_methodspec): If we have generic parameters, create
24537         a MethodSpec instead of a MethodRef.
24538         (fixup_method): Added support for "MonoInflatedMethod" and
24539         "MonoInflatedCtor".
24540         (mono_image_create_token): Added support for "MonoInflatedMethod"
24541         and "MonoInflatedCtor".
24542         (inflated_method_get_object): New static function; returns a
24543         managed "System.Reflection.MonoInflatedMethod" object.
24544         (mono_reflection_bind_generic_method_parameters): Return a
24545         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
24546         (mono_reflection_inflate_method_or_ctor): Likewise.
24547         (mono_image_get_generic_method_param_info): Initialize unused
24548         fields to zero.
24549         (mono_image_get_generic_param_info): Likewise.
24550
24551         * reflection.h (MonoReflectionInflatedMethod): New public
24552         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
24553         "S.R.MonoInflatedCtor" classes.
24554
24555         * loader.c (method_from_memberref): If we're a TypeSpec and it
24556         resolves to a generic instance, inflate the method.
24557
24558 2003-10-28  Dick Porter  <dick@ximian.com>
24559
24560         * object.c (mono_runtime_run_main): Convert command-line arguments
24561         into utf8, falling back to the user's locale encoding to do so.
24562
24563 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24564
24565         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
24566         at this time.
24567
24568         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
24569
24570         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
24571         up icalls at method definition time. Partially fixes #33569.
24572
24573 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
24574
24575         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
24576         marshalling of arrays. Fixes #50116.
24577
24578         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
24579
24580         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
24581         points to a vtable in the dying appdomain.
24582
24583         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
24584         listeners into unmanaged code inside the lock.
24585
24586         * object.c (mono_class_vtable): Turn off typed allocation in non-root
24587         domains and add some comments.
24588
24589 2003-10-25  Martin Baulig  <martin@ximian.com>
24590
24591         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
24592
24593         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
24594
24595         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
24596         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
24597         currently parsing.  Create the generic class and store it in
24598         `generic_inst->klass' before parsing the type arguments.  This is
24599         required to support "recursive" definitions; see mcs/tests/gen-23.cs
24600         for an example.
24601         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
24602         to support recursive typespec entries.
24603
24604         * class.c (mono_class_setup_parent): If our parent is a generic
24605         instance, we may get called before it has its name set.
24606         (mono_class_from_generic): Splitted into
24607         mono_class_create_from_generic() and mono_class_initialize_generic().
24608
24609 2003-10-25  Martin Baulig  <martin@ximian.com>
24610
24611         * icall.c (ves_icall_Type_BindGenericParameters): Return a
24612         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
24613         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
24614         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
24615
24616         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
24617         (create_typespec): Likewise.
24618         (mono_reflection_bind_generic_parameters): Return a
24619         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
24620         (mono_reflection_inflate_method_or_ctor): New public function.
24621
24622         * reflection.h (MonoReflectionGenericInst): New typedef.        
24623
24624 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24625
24626         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
24627         inside the domain lock. Fixes #49993.
24628         
24629         * object.c (mono_class_vtable): When typed allocation is used, 
24630         allocate vtables in the GC heap instead of in the mempool, since the
24631         vtables contain GC descriptors which are used by the collector even
24632         after the domain owning the mempool is unloaded.
24633
24634         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
24635
24636         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
24637         reflect what it does. Also invalidate mempools instead of freeing
24638         them if a define is set.
24639
24640         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
24641         of the appdomain.
24642         
24643         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
24644         hold the finalizable objects in this domain.
24645
24646         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
24647         appdomain.
24648
24649         * appdomain.c (mono_domain_set): New function to set the current
24650         appdomain, but only if it is not being unloaded.
24651
24652         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
24653         appdomain which is being unloaded.
24654         
24655         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
24656         unloading of the root appdomain.
24657
24658         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
24659         icall to execute a method in another appdomain. Intended as a 
24660         replacement for InternalSetDomain, which can confuse the code 
24661         generation in the JIT.
24662
24663         * appdomain.c (mono_domain_is_unloading): New function to determine
24664         whenever an appdomain is unloading.
24665
24666         * appdomain.c (mono_domain_unload): New function to correctly unload
24667         an appdomain.
24668
24669         * assembly.c (mono_assembly_load_references): Check that an assembly
24670         does not references itself.
24671
24672         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
24673         domain manually, it asks the finalizer thread to do it, then waits for
24674         the result. Also added a timeout.
24675
24676         * icall.c: Register the new icalls.
24677
24678         * threads.h threads.c: Export the mono_gc_stop_world and 
24679         mono_gc_start_world functions.
24680         
24681         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
24682         function to fill out the mempool with 0x2a.
24683
24684 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
24685
24686         * reflection.h (MonoReflectionMethodAux): New structure to store
24687         information which is rarely used, thus is not in the MonoMethod
24688         structure.
24689
24690         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
24691         store the aux info.
24692
24693         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
24694         and marshalling info into the aux structure.
24695
24696         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
24697         from the aux structure.
24698
24699         * loader.c (mono_method_get_param_names): Retrieve the param names from
24700         the aux structure.
24701         
24702 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
24703
24704         * exception.h exception.c: Add AppDomainUnloadedException && fix 
24705         warning.
24706
24707 2003-10-21  Dick Porter  <dick@ximian.com>
24708
24709         * socket-io.c
24710         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
24711         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
24712
24713 2003-10-21  Martin Baulig  <martin@ximian.com>
24714
24715         * reflection.c (mono_reflection_bind_generic_parameters):
24716         `klass->parent' is NULL for interfaces.
24717
24718 2003-10-21  Martin Baulig  <martin@ximian.com>
24719
24720         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24721
24722 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
24723
24724         * exception.c (mono_exception_from_name_msg): New helper function for
24725         creating exceptions and initializing their message field.
24726
24727         * exception.c: Simplify functions using the new helper.
24728
24729         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
24730         New function.
24731
24732         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
24733         mono_raise_exception, since otherwise gcc doesn't generate the function
24734         epilog for raise_exception, confusing the stack unwinding in the JIT.
24735         Fixes #45043.
24736
24737         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
24738         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
24739         Fixes #49499.
24740
24741 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24742
24743         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
24744         utf8.
24745
24746 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
24747
24748         * icall.c: Removed GetUninitializedObject method because
24749           AllocateUninitializedClassInstance does the same.
24750
24751 2003-10-18  Martin Baulig  <martin@ximian.com>
24752
24753         * class.c (inflate_generic_signature): Renamed to
24754         mono_class_inflate_generic_signature() and made it public.
24755         (my_mono_class_from_generic_parameter): New static function; if we
24756         don't already have the generic parameter's MonoClass, create a
24757         very simple one which is just used internally in the runtime and
24758         not passed back to managed code.
24759
24760         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
24761
24762         * metadata.h (MonoMethodSignature): Moved the
24763         `MonoGenericParam *gen_params' to the MonoMethodHeader.
24764         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
24765
24766         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
24767         ves_icall_MonoMethod_GetGenericArguments(); this is now an
24768         interncall on the MonoMethod class, not on MethodInfo.
24769         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
24770         calling mono_reflection_bind_generic_method_parameters() directly.
24771
24772         * loader.c (mono_method_get_signature): If this is a MethodSpec;
24773         return the already computed `method->signature'.
24774         (method_from_methodspec): New static function to load a method
24775         from a MethodSpec entry.
24776         (mono_get_method_from_token): Call the new method_from_methodspec()
24777         for MethodSpec tokens.  
24778         (mono_get_method_from_token): If we're a generic method, load the
24779         type parameters.
24780
24781         * reflection.c (mono_image_get_memberref_token): Allow
24782         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
24783         table.
24784         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
24785         (mono_image_create_token): First check whether it's a generic
24786         method (so we'd need to create a MethodSpec), then do the other
24787         two alternatives.
24788         (mono_reflection_bind_generic_method_parameters): Return a
24789         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
24790         called directly from the interncall.
24791
24792 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
24793
24794         * reflection.c (load_public_key): Move loading of the public key
24795         into managed code.
24796
24797         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
24798
24799         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
24800         fields.
24801
24802         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
24803         culture, hash_alg and public_key. Fixes #49555.
24804
24805 2003-10-17  Martin Baulig  <martin@ximian.com>
24806
24807         * class.h (MonoGenericInst): Moved this declaration here and added
24808         `MonoMethod *generic_method'.
24809
24810         * icall.c
24811         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
24812         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
24813
24814         * metadata.c (mono_metadata_type_equal): Two types of
24815         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
24816         index; ie. don't compare the address of the `MonoGenericParam'
24817         structure.
24818         (mono_metadata_load_generic_params): Removed the `MonoMethod
24819         *method' argument.
24820
24821         * metadata.h (MonoGenericInst): Moved declaration to class.h.
24822         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
24823
24824         * reflection.c (method_encode_signature): Encode the number of
24825         generic parameters.
24826         (encode_generic_method_sig): New static function.
24827         (method_encode_methodspec): New static function; creates an entry
24828         in the MethodSpec table for a generic method.
24829         (mono_image_get_methodspec_token): New static function.
24830         (mono_image_create_token): Call mono_image_get_methodspec_token()
24831         for generic methods.
24832         (mono_reflection_bind_generic_method_parameters): New public
24833         function.  Instantiates a generic method.
24834
24835 2003-10-16  Martin Baulig  <martin@ximian.com>
24836
24837         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
24838         *gen_params' here from MonoMethodHeader.
24839
24840         * metadata.c (mono_metadata_parse_method_signature): If we have
24841         generic parameters, initialize `method->gen_params' and then set
24842         the correct `type->data.generic_param' in all the parameters.
24843
24844 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24845
24846         * threads.c (mono_threads_get_default_stacksize): New function to 
24847         return the default stacksize.
24848
24849         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
24850         termination of the finalizer thread, since the previous method had
24851         race conditions. Fixes #49628.
24852
24853         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
24854         as for the other managed threads.
24855
24856 2003-10-16  Martin Baulig  <martin@ximian.com>
24857
24858         * class.c (inflate_generic_signature): Copy `generic_param_count'
24859         and `gen_params'.
24860
24861         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
24862         New interncall.
24863
24864         * metadata.c (mono_metadata_parse_method_signature): Actually set
24865         the `method->generic_param_count' here.
24866         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
24867
24868 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24869
24870         * object.h: Add a new field to TypedRef to simplify the implementation
24871         of the REFANY opcodes in the JIT.
24872
24873         * icall.c: Make use of the new field.
24874
24875         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
24876         dynamically.
24877
24878 2003-10-15  Martin Baulig  <martin@ximian.com>
24879
24880         * class.c (mono_class_from_gen_param): Renamed to
24881         mono_class_from_generic_parameter() and moved most of the
24882         functionality from mono_reflection_define_generic_parameter()
24883         here; ie. we create a "real" class here.
24884         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
24885         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
24886         previously been called.
24887
24888         * class.h (MonoGenericParam): Moved the declaration of this struct
24889         here from metadata.h and added `MonoMethod *method'.
24890
24891         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
24892         interncall.
24893
24894         * loader.c (mono_get_method_from_token): If we have any generic
24895         parameters, call mono_metadata_load_generic_params() to read them
24896         from the MONO_TABLE_GENERICPAR.
24897
24898         * metadata.c (mono_metadata_load_generic_params): Added
24899         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
24900
24901         * metadata.h (MonoMethodSignature): Replaced
24902         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
24903         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
24904
24905         * reflection.c (mono_reflection_define_generic_parameter): Moved
24906         most of the functionality into the new
24907         mono_class_from_generic_parameter(); set the `method' field if
24908         we're a method parameter.       
24909
24910 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
24911
24912         * marshal.c (emit_struct_conv): if native size is 0
24913         emit no code.
24914
24915 2003-10-14  Martin Baulig  <martin@ximian.com>
24916
24917         * icall.c: The generics API has changed in the spec since it was
24918         added to System.Type; these modifications make it match the spec
24919         again.
24920         (ves_icall_Type_GetGenericParameters): Renamed to
24921         `ves_icall_Type_GetGenericArguments'.
24922         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
24923         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
24924         `ves_icall_MonoType_get_HasGenericArguments'.
24925         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
24926         `ves_icall_MonoType_get_IsGenericParameter'.
24927         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
24928         this is no interncall anymore.
24929         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
24930         `ves_icall_TypeBuilder_get_IsGenericParameter'.
24931
24932 2003-10-14  Martin Baulig  <martin@ximian.com>
24933
24934         * reflection.c (mono_reflection_bind_generic_parameters): Also
24935         inflate generic methods if we're reading the class from IL.
24936
24937 2003-10-13  Martin Baulig  <martin@ximian.com>
24938
24939         * reflection.c (mono_reflection_define_generic_parameter): This
24940         method isn't called directly from the icall anymore; take a
24941         `MonoReflectionAssemblyBuilder *' so we can use this for type and
24942         method generic parameters.
24943         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
24944         (method_builder_encode_signature): Encode generic parameters.
24945         (mono_image_get_method_info): Write generic params to the
24946         MONO_TABLE_GENERICPARAM table.
24947
24948         * reflection.h (MonoReflectionMethodBuilder): Added
24949         `MonoArray *generic_params'.
24950
24951         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
24952
24953         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
24954         wrapper for mono_reflection_define_generic_parameter().
24955         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
24956
24957 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
24958
24959         * marshal.h: Add missing function to fix build.
24960
24961         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
24962         the SetLastError pinvoke attribute.
24963
24964         * marshal.c (mono_marshal_set_last_error): New helper function called
24965         by the generated code.
24966         
24967         * marshal.c (mono_mb_emit_branch): New helper function.
24968
24969         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
24970
24971         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
24972         classes as parameters and return values of delegates. Fixes #29256. 
24973
24974 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
24975
24976         * locales.c: use gint32 in non HAVE_ICU case
24977
24978 2003-10-11  Martin Baulig  <martin@ximian.com>
24979
24980         * mono-debug.c (mono_debug_add_method): Added a workaround for
24981         bug #48591.
24982
24983 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24984
24985         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
24986         delegates passed to native code must use the STDCALL calling 
24987         convention. Fixes #35987.
24988
24989 2003-10-10  Martin Baulig  <martin@ximian.com>
24990
24991         * class.c (inflate_generic_type): If we're inflating for a generic
24992         type instance (and not for a generic method), return
24993         MONO_TYPE_MVAR unchanged.
24994
24995 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24996
24997         * string-icalls.c: Join ignores null strings in the source array.
24998         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
24999         * threads.c: GetAvailableTheads is slightly more accurate.
25000
25001 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
25002
25003         * threads.h threads.c : add mono_threads_set_default_stacksize
25004         and pass default to CreateThread calls.
25005
25006 2003-10-09  Dick Porter  <dick@ximian.com>
25007
25008         * icall.c:
25009         * locales.h:
25010         * locales.c: Internal calls for constructing CultureInfo and
25011         related objects from libicu (if its available.)
25012
25013 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
25014
25015         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
25016
25017 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25018
25019         * threadpool.c: added an argument to async_invoke_thread that is the
25020         item to process, pass the MonoAsyncResult to the thread start function
25021         when creating a new thread. This way we don't need to acquire any lock
25022         when we're creating a new thread. Readded a semaphore for faster
25023         response times (instead of that Sleep i added).
25024
25025 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
25026
25027         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25028         get daylight change dates better on Windows, fix handling
25029         of platforms without tm_gmtoff.
25030
25031 2003-10-06  Martin Baulig  <martin@ximian.com>
25032
25033         * class.c (inflate_generic_method): Renamed to
25034         mono_class_inflate_generic_method() and made public.
25035         (mono_class_init): Don't inflate the generic methods here.
25036         (mono_class_from_generic): Added `gboolean inflate_methods'
25037         argument.  Inflate the methods here.
25038
25039         * loader.c (mono_method_get_param_names): Ignore instances of
25040         generic types for the moment.
25041
25042         * reflection.c (fixup_method): Added support for inflated methods.
25043         (mono_image_create_token): Use mono_image_get_methodref_token()
25044         for inflated methods.
25045         (mono_custom_attrs_from_param): Ignore instances of generic types
25046         for the moment.
25047         (mono_reflection_bind_generic_parameters): New public function.
25048         Moved all the functionality from
25049         ves_icall_Type_BindGenericParameters() here and added support for
25050         dynamic types.
25051         (mono_reflection_define_generic_parameter): Initialize
25052         `klass->methods' here.
25053
25054         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
25055         functionality into mono_reflection_define_generic_parameter().
25056         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
25057         TypeBuilder, return that TypeBuilder.
25058
25059 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25060
25061         * appdomain.c: removed mono_delegate_semaphore.
25062
25063         * threadpool.c:
25064         (mono_thread_pool_add): moved hash table creation inside and the thread 
25065         creation outside of the critical region.
25066         (mono_thread_pool_finish): removed obsolete code.
25067         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
25068         continue or exit the thread depending on the queue.
25069
25070 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
25071
25072         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
25073         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
25074         handle more bool marshalling options
25075
25076 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
25077
25078         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
25079         arrays of structs. Also add a more descriptive error message when
25080         a structure member is marshalled as LPArray.
25081
25082 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
25083
25084         * marshal.c (mono_marshal_get_native_wrapper): Add support for
25085         marshalling arrays of complex types. Fixes #29098. Also remove an
25086         usused and incomplete function.
25087
25088 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25089
25090         * gc.c: report heap_size - free_bytes as total memory allocated
25091         (bug#49362).
25092
25093 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
25094
25095         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
25096         fix timezone handling problems on Windows.
25097         
25098         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
25099         asserts when the year is outside the range handled by ms the functions.
25100
25101         * class.c (setup_interface_offsets): If the class is an interface,
25102         fill out its interface_offsets slot.
25103
25104 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25105
25106         * threadpool.c: mark threadpool threads as background.
25107
25108 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
25109
25110         * decimal.c - define DECINLINE to nothing if not using GCC
25111
25112 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
25113
25114         * assembly.c: More refcount fixes.
25115
25116 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25117
25118         * string-icalls.c: if we're not trimming, return the same string.
25119         When not splitting, don't create a new string.
25120
25121 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25122
25123         * image.c:
25124         (mono_image_open): increment the ref_count inside the critical section.
25125
25126 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
25127
25128         * image.c (mono_image_open): Fix reference counting bug.
25129
25130 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
25131
25132         * marshal.c (mono_marshal_type_size) struct alignment changed for 
25133         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
25134         64bits. Avoid leak in mono_marshal_get_native_wrapper when
25135         mono_lookup_pinvoke_call throws.        
25136
25137 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
25138
25139         * reflection.c (mono_reflection_parse_type): Fix #49114.
25140
25141         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
25142         temporary workaround for cygwin header problem.
25143
25144         * object.c (mono_object_isinst): Synchronize this with the code
25145         generated by the JIT for casts.
25146
25147 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
25148
25149         * reflection.c (encode_type): Fix #38332.
25150
25151 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
25152
25153         * marshal.c (mono_marshal_method_from_wrapper): New function to return
25154         the original method from the wrapper method.
25155
25156 2003-09-25  Martin Baulig  <martin@ximian.com>
25157
25158         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
25159         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
25160         (ves_icall_Type_get_IsGenericInstance): New interncall.
25161
25162 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
25163
25164         * object.c: fix cast warning in big endian code.
25165
25166 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
25167
25168         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
25169         
25170 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25171
25172         * assembly.c: don't call check_env from mono_assembly_load. It's
25173         already done once in mono_assemblies_init and may cause headaches when
25174         multiple threads are loading assemblies.
25175
25176 2003-09-19  Martin Baulig  <martin@ximian.com>
25177
25178         * reflection.c (mono_reflection_define_generic_parameter): Don't
25179         allocate `klass->methods', set `klass->flags' to
25180         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25181
25182 2003-09-18  Martin Baulig  <martin@ximian.com>
25183
25184         * class.c (mono_class_init): Don't create `class->methods' if it's
25185         already initialized.
25186
25187         * metadata.c (mono_metadata_load_generic_params): Make this
25188         actually work.
25189
25190         * reflection.c (mono_reflection_define_generic_parameter): Set
25191         parent class and interfaces from the constraints.
25192
25193         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25194         to keep this struct in sync with the declaration in TypeBuilder.cs.
25195
25196 2003-09-17  Martin Baulig  <martin@ximian.com>
25197
25198         * metadata.h (MonoType): Replaced the data's `int type_param'
25199         field with `MonoGenericParam *generic_param'.
25200         (MonoGenericParam): Added `MonoClass *klass'.
25201
25202         * class.c (mono_class_from_gen_param): Removed the
25203         `MonoImage *image' and `int type_num' arguments.
25204
25205         * metadata.c (mono_metadata_parse_generic_param): New static
25206         method; creates a MonoGenericParam which just contains the index.
25207         (do_mono_metadata_parse_type): Call
25208         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25209         MONO_TYPE_MVAR.
25210
25211         * reflection.c (mono_image_typedef_or_ref): Generic type
25212         parameters may be in the same assembly, but never use a typedef
25213         for them.
25214         (mono_reflection_define_generic_parameter): We're now creating a
25215         "real" class for the type parameter; it's now safe to call
25216         mono_class_from_mono_type() on the class'es type, it'll do the
25217         right thing.
25218
25219 2003-09-16  Martin Baulig  <martin@ximian.com>
25220
25221         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25222         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25223         the `symfile' data structure must be fully initialized before it
25224         gets added to the table.
25225
25226 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25227
25228         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25229
25230         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25231         class init trampolines.
25232
25233 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25234
25235         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25236         to the built-in profiler to turn off time and allocation profiling
25237         respectively.
25238
25239 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25240
25241         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25242         g_direct_equal.
25243
25244         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25245         in human readable form.
25246
25247 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25248
25249         * reflection.c icall.c: Fixed warnings.
25250
25251         * image.c (load_class_names): Use a temporary hash table to hold the
25252         namespaces in order to avoid doing many string comparisons.
25253
25254         * image.h: Fix typo.
25255
25256         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25257         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25258         since the NULL case is short-circuited inside g_hash_table_lookup, 
25259         leading to better performance.  
25260
25261         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25262         obtain the first custom attribute for a given index. Depends on the
25263         CustomAttribute table being sorted by the parent field.
25264
25265         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25266         for better performance.
25267
25268 2003-09-07  Martin Baulig  <martin@ximian.com>
25269
25270         * class.c (mono_class_init): If we're a generic instance, inflate
25271         all our methods instead of loading them from the image.
25272         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25273
25274 2003-09-07  Martin Baulig  <martin@ximian.com>
25275
25276         * mono-debug-debugger.c: Added support for constructors.
25277
25278 2003-09-06  Martin Baulig  <martin@ximian.com>
25279
25280         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25281         New interncall.
25282
25283         * reflection.c (mono_reflection_setup_generic_class): Call
25284         ensure_runtime_vtable() to create the vtable.
25285
25286 2003-09-05  Martin Baulig  <martin@ximian.com>
25287
25288         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25289         MONO_TYPE_MVAR.
25290
25291 2003-09-04  Martin Baulig  <martin@ximian.com>
25292
25293         * reflection.c (mono_reflection_define_generic_parameter): Generic
25294         parameters start with zero.
25295
25296 2003-09-04  Martin Baulig  <martin@ximian.com>
25297
25298         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25299
25300         * reflection.h (MonoReflectionGenericParam): New typedef.
25301         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25302         the generic parameters from the managed TypeBuilder.
25303
25304         * reflection.c (mono_reflection_define_generic_parameter): New function.
25305         (mono_reflection_create_runtime_class): Encode generic parameters.
25306         (mono_reflection_setup_generic_class): New function; this is
25307         called after adding adding all generic params to the TypeBuilder.
25308         (encode_type): Added MONO_TYPE_VAR.
25309
25310 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25311
25312         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25313         here from the JIT.
25314
25315         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25316         load hook.
25317
25318 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25319
25320         * reflection.h reflection.c class.h class.c: Delete duplicate 
25321         definition of mono_type_get_name () from reflection.c and export the
25322         one in class.c.
25323
25324         * class.c: Class loading fixes from Bernie Solomon 
25325         (bernard@ugsolutions.com).
25326
25327         * reflection.c: Endianness fixes from Bernie Solomon 
25328         (bernard@ugsolutions.com).
25329         
25330 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25331
25332         * assembly.h assembly.c: Define a file format version for AOT
25333         libraries.
25334         
25335         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25336
25337         * appdomain.h (MonoJitInfo): New field to determine whenever the
25338         code is domain neutral.
25339         
25340 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25341
25342         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25343
25344 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25345
25346         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25347         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25348         Avoid caching the result since strings must be domain specific. Fixes
25349         #48050.
25350
25351 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25352
25353         * marshal.c (mono_marshal_init): Make this callable multiple times
25354         since it is hard to find a correct place to call it.
25355
25356         * object.c (mono_runtime_class_init): Execute static constructors in
25357         the correct appdomain.
25358
25359         * image.c (build_guid_table): Handle the case when multiple images have
25360         the same GUID.
25361
25362 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25363
25364         * icall.c: added a couple of icalls for System.Web.
25365
25366 2003-08-28  Martin Baulig  <martin@ximian.com>
25367
25368         * icall.c (ves_icall_Type_BindGenericParameters): Use
25369         `klass->generic_inst' instead of `&klass->byval_arg' in the
25370         mono_type_get_object() call.  The returned type must be
25371         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25372
25373 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25374
25375         * NOTES: New file.
25376
25377         * object.c (mono_class_proxy_vtable): Make it thread safe.
25378
25379         * pedump.c: Fix warning.
25380
25381         * object.c appdomain.h: Get rid of metadata_section. 
25382         It is no longer needed and it was causing deadlocks with domain->lock.
25383
25384         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25385
25386 2003-08-26  Martin Baulig  <martin@ximian.com>
25387
25388         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25389
25390 2003-08-26  Martin Baulig  <martin@ximian.com>
25391
25392         * pedump.c (main): Call mono_metadata_init(),
25393         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25394         and mono_loader_init().
25395
25396 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25397
25398         * loader.h: Add missing include to fix build.
25399
25400         * image.h: mono_image_load_references is no more.
25401
25402         * assembly.c: Reworked assembly loading to make it really thread safe.
25403         After these changes, the assembly returned by mono_assembly_open is
25404         fully initialized, i.e. all its references assemblies are loaded.
25405
25406         * assembly.c (mono_image_load_references): Renamed to 
25407         mono_assembly_load_references, and made private, since clients no
25408         longer need to call it.
25409
25410         * class.c: Removed calls to mono_assembly_load_references, since it was
25411         a source of deadlocks.
25412
25413         * loader.h loader.c class.h class.c: Protect data structures using a 
25414         new lock, the loader lock.
25415
25416         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25417         GPtrArrays only when needed.
25418
25419         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25420         into empty structures by mcs. Fixes pinvoke7.cs.
25421         
25422         * domain.c (mono_init): Call a new initialization function.
25423
25424         * appdomain.c (mono_runtime_init): Call the new initializer function
25425         of the marshal module.
25426
25427         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25428         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25429
25430         * marshal.h marshal.c: Added locks around the wrapper caches to make
25431         this module thread safe.
25432
25433         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25434         this argument. Fixes pinvoke1.exe.
25435
25436 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25437
25438         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25439         enumeration of values. Removed fields to store remote call output values in
25440         MonoAsyncResult. Not needed any more.
25441         * object.c: Initialize call_type and async_result fields in mono_message_init.
25442         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25443         dispatching the message.
25444         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25445         async call to finish. To do it use a message with EndInvoke call type.
25446
25447 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25448
25449         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25450         determines whenever a method has marshalling info.
25451
25452 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25453
25454         * assembly.c: fix the build on windows.
25455
25456 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25457
25458         * object.cs: Fixed bug #47785.
25459
25460 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25461
25462         * string-icalls.c (StringReplace): If their are no occurances of
25463         the old string found return a reference to the supplied
25464         string. This saves some memory and matches MS behavoir.
25465         
25466 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25467
25468         * socket-io.c: fixed compilation for systems that define AF_INET6
25469         and don't define SOL_IP/SOL_IPV6.
25470
25471 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25472
25473         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25474         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25475
25476         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25477
25478         * domain.c: Make this module thread safe.
25479
25480         * domain.c (mono_init): Call new initialization function.
25481
25482         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25483         reference types too. Fixes #38812.
25484
25485         * image.c (mono_image_init): Fixed warnings.
25486
25487         * class.c (mono_class_from_typeref): Handle assembly load failure
25488         correctly.
25489
25490         * appdomain.c (add_assemblies_to_domain): Handle the case when
25491         the references of an assembly are not yet loaded.
25492
25493         * metadata.c image.c assembly.c: Moved initialization of global
25494         variables to a separate function called at startup since lazy 
25495         initialization of these variables is not thread safe.
25496         
25497         * image.c assembly.c: Made this module thread safe by adding locks in 
25498         the appropriate places.
25499
25500         * domain.c (mono_init): Call the new initialization functions of the
25501         three modules.
25502
25503 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
25504
25505         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
25506           make a direct call. It is proxy's work to make the call asynchronous.
25507           mono_delegate_end_invoke(): If the targe is a proxy, just collect
25508           the return values.
25509         * object.cs: mono_method_call_message_new(): read AsyncResult and
25510           state object from parameters list, if this info is requested.
25511         * object.h: Added fields to store remote call output values in
25512           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
25513
25514 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25515
25516         * object.h: add needed fields to MonoThread.
25517         * threads.c, threads.h: allow registering a function to cleanup data
25518         allocated per thread by the JIT.
25519
25520 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25521
25522         * loader.h: portability fix by Bernie Solomon
25523         * <bernard@ugsolutions.com>.
25524
25525 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
25526
25527         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
25528         return a MonoArray. This simplifies the code and also ensures that
25529         the cache allways contains an object reference as a value.
25530
25531         * icall.c (ves_icall_get_parameter_info): Simplified using the new
25532         function.
25533
25534 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25535
25536         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
25537         fixes a problem with byte ordering when getting the address family for
25538         a socket.
25539
25540 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
25541
25542         * .cvsignore: Added monosn.
25543
25544         * reflection.h reflection.c loader.c: Added support for parameter
25545         marshalling to dynamically created types. Fixes #47295.
25546
25547 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25548
25549         * rand.c: remove useless warnings.
25550
25551 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25552
25553         * class.c: implemented ldtoken for methods and fieldrefs.
25554
25555 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25556
25557         * threadpool.c: when mono_async_invoke was called, no one took care of
25558         monitoring the queue. So if the method invoked took some time and we
25559         got new async invoke requests after 500 ms (the thread created waited
25560         that long in WaitForSingleObject), the new async invoke was not called
25561         until the previous one finished.
25562
25563         This is fixed now. Thanks to Totte for helping with it.
25564
25565 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25566
25567         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
25568
25569 2003-08-11  Martin Baulig  <martin@ximian.com>
25570
25571         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
25572
25573 2003-08-06  Martin Baulig  <martin@ximian.com>
25574
25575         * mono-debug-debugger.c: Added support for static fields,
25576         properties and methods.
25577
25578 2003-08-06  Martin Baulig  <martin@ximian.com>
25579
25580         * mono-debug-debugger.c: Don't store the MonoString's vtable to
25581         make this work for applications with multiple application domains.
25582
25583 2003-08-04  Martin Baulig  <martin@ximian.com>
25584
25585         * mono-debug-debugger.c: Completely reworked the type support; the
25586         most important thing is that we're now just using one single
25587         `MonoType' instance per type.
25588
25589 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
25590
25591         * mono-endian.h, mono-endian.c, icall.c: Added icall
25592         ves_icall_System_Double_AssertEndianity to assert double word endianity
25593         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
25594
25595 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25596
25597         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
25598         support, icalls and fixes.
25599
25600 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
25601
25602         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
25603         classes that are a punctuation character in .NET is not the same a
25604         g_unichar_ispunct.
25605
25606 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25607
25608         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
25609
25610 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
25611
25612         * icall.c: Add new MemCopy internalcall.
25613         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
25614         Simplified code; It is not necessary to handle all the cases here,
25615         as the C# code takes care of it.  Only handle the case of the name
25616         resource embedded into the assembly.
25617
25618         Changed signature to return the data pointer and the size of the
25619         data. 
25620
25621 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
25622
25623         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
25624         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
25625
25626 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25627
25628         * socket-io.c: ignore EINTR error in select.
25629
25630 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
25631
25632         * class.h, class.c: removed unused subclasses field in MonoClass.
25633
25634 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25635
25636         * icall.c: improve fix of get_base_definition(). If the parent class
25637           doesn't have the mehod, look at the parent of the parent.
25638         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
25639           to check if a parameter is an in or out parameter
25640           (PARAM_ATTRIBUTE_IN is not set by default).
25641           mono_method_return_message_restore(): Use mono_class_value_size to
25642           get the size of a value type. mono_type_stack_size (parameterType)
25643           does not return the correct value if parameterType is byRef.
25644           mono_load_remote_field(), mono_load_remote_field_new(),
25645           mono_store_remote_field(), mono_store_remote_field_new():
25646           raise exception if the remote call returns an exception.
25647
25648 2003-07-28  Martin Baulig  <martin@ximian.com>
25649
25650         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
25651         method.  This is a wrapper around mono_runtime_invoke() which
25652         boxes the instance object if neccessary.
25653
25654 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25655
25656         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
25657         metadata.h, row-indexes.h, verify.c: first cut of generics support.
25658
25659 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25660
25661         * icall.c: disable mcs bug workaround.
25662
25663 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25664
25665         * object.c (mono_runtime_class_init): Take the metadata_section
25666         mutex before obtaining the domain mutex.
25667
25668         * appdomain.h: Added definition of metadata_section mutex here. 
25669
25670         * object.c: define metadata_mutex here.
25671
25672 2003-07-24  Ravi Pratap  <ravi@ximian.com>
25673
25674         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
25675         fixed.
25676
25677 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
25678
25679         * reflection.c: Fix bug #46669
25680
25681 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25682
25683         * exception.c:
25684         * exception.h:
25685         * icall.c:
25686         * object.h: fill in the type name for TypeLoadException.
25687
25688 2003-07-23  Ravi Pratap  <ravi@ximian.com>
25689
25690         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
25691         relationship between TypeBuilders while compiling corlib) and bug
25692         45993 (Array types returned from the runtime while compiling
25693         corlib were from the loaded corlib).
25694
25695 2003-07-22  Martin Baulig  <martin@ximian.com>
25696
25697         * mono-debug-debugger.c: Reworked the type support a bit more;
25698         distinguish between types and classes.
25699
25700 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
25701
25702         * icall.c: add IsArrayImpl icall.
25703
25704 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
25705
25706         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
25707         initializing real_size only once. Also fix bug #46602.
25708
25709 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
25710
25711         * object.c: Renamed mono_metadata_section to metadata_section.
25712
25713 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
25714
25715         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
25716           empty array if the type is an array. Fixed.
25717           ves_icall_MonoMethod_get_base_definition: if the base method
25718           is abstract, get the MethodInfo from the list of methods of
25719           the class.
25720         * reflection.c: ParameterInfo.PositionImpl should be zero-based
25721           and it was 1-based. Fixed in mono_param_get_objects.
25722
25723 2003-07-20  Martin Baulig  <martin@ximian.com>
25724
25725         * mono-debug.h: Set version number to 31.
25726         (mono_debug_init): Added `MonoDomain *' argument.
25727
25728         * mono-debug-debugger.c: Reworked the type support; explicitly
25729         tell the debugger about builtin types; pass the `klass' address to
25730         the debugger.
25731
25732 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
25733
25734         * image.c: Allow new metadata tables to be loaded without a
25735         warning. Also update the warning message to give the new constant value.
25736                 
25737 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25738
25739         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
25740         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
25741         array type representation changes.
25742
25743 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25744
25745         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
25746         on Environment.Exit () call.
25747
25748 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25749
25750         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
25751         requires a matching corlib.
25752
25753 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25754
25755         * Changelog: My editor decided to add a CR to each line. Sorry about that.
25756           Committed again without the CRs.
25757         
25758 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25759
25760         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
25761           getting it from the "this" socket instance. Did not work
25762           if the socket is a subclass of Socket.
25763           Also fixed bug #35371.
25764
25765 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25766
25767         * metadata.c: fixed size for TypedByRef.
25768         * loader.c: when searching for a method, consider the vararg amrker.
25769         * unicode.c, decimal.c: constify some arrays.
25770
25771 2003-07-15  Dick Porter  <dick@ximian.com>
25772
25773         * socket-io.c: Fixed compilation for gcc < 3.2.
25774
25775         Fixed compilation for machines that don't have AF_INET6 (thanks to
25776         Bernie Solomon <bernard@ugsolutions.com> for that part.)
25777
25778         Fixed compile warnings.
25779         
25780         Fixed formatting and line endings.
25781
25782 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
25783
25784         * socket-io.h:
25785         * socket-io.c: Added IPv6 support.
25786
25787 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
25788
25789         * class.c (mono_class_is_assignable_from): New function to implement
25790         the is_assignable_from logic. Used by mono_object_isinst, 
25791         Type::IsAssignableFrom () and the interpreter.
25792
25793         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
25794         Object, even interfaces.
25795         
25796         * object.c (mono_object_isinst): Implement in terms of 
25797         is_assignable_from.
25798
25799         * icall.c (ves_icall_type_is_assignable_from): New icall.
25800
25801 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
25802
25803         * domain.c (foreach_domain): fix compiler warning.
25804
25805 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
25806
25807         * image.c (load_metadata_ptrs): use g_strndup because strndup is
25808         not available on all plattforms
25809
25810 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
25811
25812         * image.h image.c: Store the metadata version string in MonoImage.
25813         * icall.c: New icall to retrieve the image version.
25814         * reflection.c (create_dynamic_image): Fill in the image version field
25815         * reflection.c (build_compressed_metadata): Use the image version
25816         from the image structure.
25817
25818 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25819
25820         * appdomain.c: modified comment.
25821         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
25822         That will be its last iteration when mono_gc_cleanup is called from
25823         mono_runtime_cleanup and before the domain is unloaded.
25824
25825         Fixes bug #45962.
25826
25827 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
25828
25829         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
25830         attributes.
25831
25832 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25833
25834         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
25835         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
25836         Bernie Solomon <bernard@ugsolutions.com>.
25837
25838 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25839
25840         * object.c, object.h: provide mono_object_new_fast() for faster
25841         allocation in some special cases.
25842
25843 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25844
25845         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
25846         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
25847
25848 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25849
25850         * threadpool.c: fix leaks.
25851
25852 2003-07-01  Dick Porter  <dick@ximian.com>
25853
25854         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
25855         using MonoGHashTables.  Fixes threadpool bug posted to list.
25856
25857 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25858
25859         * image.h, image.c: added support to load an assembly from a byte array.
25860         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
25861         assembly bundle support.
25862
25863 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
25864
25865         * threadpool.c (mono_thread_pool_add): keep a reference to the
25866         AsyncResult to prevent GC
25867
25868 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25869
25870         * class.c: leak fix.
25871
25872 2003-06-25  Dick Porter  <dick@ximian.com>
25873
25874         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
25875         for the async object, the WaitHandle object will close the handle.
25876         Fixes bug 45321.
25877
25878 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25879
25880         * class.c: in mono_array_class_get (), lookup from the hash with the
25881         same type we insert: this works around a bug in
25882         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
25883         lluis. The real fix will have to wait for after the release.
25884
25885 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25886
25887         * icall.c: fix memory leak when getting type members.
25888
25889 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25890
25891         * reflection.c: added more pubtoken special cases.
25892
25893 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25894
25895         * class.c: handle field offset correctly when class size
25896         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
25897
25898 2003-06-20  Martin Baulig  <martin@ximian.com>
25899
25900         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
25901         *image' field.
25902
25903 2003-06-20  Martin Baulig  <martin@ximian.com>
25904
25905         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
25906
25907 2003-06-20  Martin Baulig  <martin@ximian.com>
25908
25909         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
25910         just distinguish between variables in registers and variables at
25911         an offset relative to a register.
25912
25913 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25914
25915         * icall.c: #ifdef out latest changes until mcs is fixed.
25916
25917 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25918
25919         * icall.c: return members in metadata order.
25920
25921 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25922
25923         * icall.c: avoid infinite loop in GetTimeZoneData.
25924
25925 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25926
25927         * icall.c: added Marshal.Prelink/All icalls.
25928
25929 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25930
25931         * object.c, object.h: fix warnings and do some overflow checking
25932         when creating arrays.
25933
25934 2003-06-17  Dick Porter  <dick@ximian.com>
25935
25936         * file-io.h:
25937         * file-io.c: File attributes need to be tweaked slightly when
25938         passed from the managed to the w32 world.
25939
25940 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25941         * profiler.h profiler-private.h profiler.c: Rework last patch
25942         based on suggestion by Paolo.
25943         
25944 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25945
25946         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
25947         instruction level coverage data collection.
25948         * profiler.h profiler.c (: Added new callback function which can be
25949         used by the profiler to limit which functions should have coverage
25950         instrumentation.
25951         * profiler.c (mono_profiler_load): Call g_module_build_path to
25952         generate the file name of the profiler library.
25953
25954 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25955
25956         * profiler.c, profiler.h, profiler-private.h: added basic block 
25957         coverage profiling API.
25958
25959 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
25960
25961         * reflection.c (mono_reflection_create_runtime_class): Add support
25962         for events in dynamically generated code.
25963
25964         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
25965         not allocated.
25966
25967 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25968
25969         * icall.c: when getting timezone info, return reasonable values if we
25970         can't get the actual data.
25971
25972 2003-06-14  Dick Porter  <dick@ximian.com>
25973
25974         * threads.c (start_wrapper): Remove the reference to the thread
25975         object in the TLS data, so the thread object can be finalized.
25976         This won't be reached if the thread threw an uncaught exception,
25977         so those thread handles will stay referenced :-( (This is due to
25978         missing support for scanning thread-specific data in the Boehm GC
25979         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
25980
25981 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
25982
25983         * reflection.c: ensure streams and tables are first allocated with
25984         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
25985
25986 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25987
25988         * icall.c: fixed GetElementType for byrefs (bug# 44792).
25989
25990 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
25991
25992         * reflection.c (mono_reflection_create_runtime_class): Add support for
25993         properties to dynamically created classes.
25994         * reflection.c: Fix a few places where non-MonoObjects were inserted
25995         into the tokens hashtable.
25996
25997 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25998
25999         * object.c: some support to handle out of memory exceptions.
26000
26001 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
26002
26003         * marshal.c (mono_marshal_get_native_wrapper): support reference
26004         return types
26005
26006 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26007
26008         * object.h, object.c: more portability stuff from Bernie Solomon.
26009         Unexport mono_object_allocate(). Added mono_object_unbox ().
26010         Set exitcode when an unhandled exception is thrown.
26011
26012 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
26013
26014         * marshal.c (mono_marshal_get_native_wrapper): use custom
26015         marshaler for return types.
26016
26017 2003-06-10  Dick Porter  <dick@ximian.com>
26018
26019         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
26020         ip_mreq is available
26021
26022 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
26023
26024         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
26025         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
26026         by Bernie Solomon <bernard@ugsolutions.com>.
26027
26028 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
26029
26030         * gc.c (mono_gc_init): Avoid error message on shutdown when
26031         GC_DONT_GC=1 is used.
26032
26033         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
26034         New icall to return the GUID of a module.
26035
26036 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26037
26038         * class.c: ensure instance size always includes the parent's size
26039         even whem class size is set explicitly (fixes bug#44294).
26040
26041 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26042
26043         * profiler.h, profiler.c: made the simple profiler thread-safe,
26044         get more accurate timing info. Allow the loading of an
26045         externally-developed profiler module.
26046
26047 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
26048
26049         * marshal.c (mono_marshal_get_native_wrapper): improved
26050         class/byref arguments.
26051         (mono_marshal_get_native_wrapper): better string marshaling support.
26052
26053 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
26054
26055         * class.c: ensure .pack and .size are handled correctly and
26056         simplified layout of static fields.
26057
26058 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
26059
26060         * appdomain.c
26061         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
26062
26063         * loader.c (mono_lookup_pinvoke_call): look for modules in the
26064         current directory (fix bug 44008)
26065
26066 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
26067
26068         * marshal.c (mono_marshal_get_native_wrapper): started support for
26069         custom marshalers.
26070         (mono_delegate_to_ftnptr): consider marshalling specifications
26071
26072 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
26073
26074         * reflection.c, reflection.h: emit custom marshal info.
26075
26076 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26077
26078         * object.c: free the GError.
26079         * icall.c: added CloseEvent_internal.
26080         * threads.[ch]:
26081         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
26082         call.
26083
26084 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
26085
26086         * loader.c (mono_method_get_signature): Add support for dynamic
26087         assemblies.
26088
26089 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
26090
26091         * reflection.c: fixed bug #43905.
26092
26093 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26094
26095         * class.c, domain.c, icall.c, metadata.h, object.h: support for
26096         handling TypedReference and ArgIterator.
26097         * loader.c, loader.h: added function to get signature at call site.
26098
26099 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26100
26101         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
26102         data readonly. Buglets and warning fixes. Some MethodSpec support.
26103
26104 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26105
26106         * class.h, class.c, object.c: remove relative numbering support.
26107
26108 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
26109
26110         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
26111         free the string, until we get a chance to fix Gtk#
26112
26113 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26114
26115         * marshal.c: revert last patch.
26116
26117 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
26118
26119         * icall.c: updates for new mono_class_vtable() not calling
26120         the type constructor anymore.
26121
26122 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26123
26124         * object.h, object.c: separate vtable creation from type
26125         initialization. Make running the .cctor thread safe.
26126
26127 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
26128
26129         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
26130
26131 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
26132
26133         * loader.c (mono_get_method): consider calling convention
26134
26135 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
26136
26137         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
26138         to return the invisible global type for a module.
26139
26140         * reflection.c (mono_image_build_metadata): Emit global fields too.
26141
26142 2003-05-20  Peter Williams  <peterw@ximian.com>
26143
26144         * loader.c (mono_lookup_internal_call): Add a few newlines.
26145
26146 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
26147
26148         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
26149         literal strings.
26150
26151         * appdomain.c (set_domain_search_path): Recalculate search path when
26152         AppDomainSetup.PrivateBinPath changes.
26153
26154         * object.c (mono_class_compute_gc_descriptor): It turns out some
26155         parts of the class libs (like System.Thread) holds pointers to
26156         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
26157         to treat native int a pointer type here.
26158         
26159 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
26160
26161         * appdomain.h, domain.c: add hashtable for jump target resolution.
26162
26163 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
26164
26165         * reflection.h reflection.c icall.c: Added new icalls 
26166         GetManifestResourceInfoInternal, GetModulesInternal and support
26167         infrastructure.
26168
26169 2003-05-16  Dick Porter  <dick@ximian.com>
26170
26171         * icall.c:
26172         * file-io.h:
26173         * file-io.c: Implement System.IO.MonoIO::GetTempPath
26174
26175 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
26176
26177         * object.c: mono_store_remote_field: little fix to previous patch.
26178
26179 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26180
26181         * class.c: add constructors to array classes.
26182         * icall.c: special case array construction for InternalInvoke (),
26183
26184 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26185
26186         * class.h class.c reflection.c object.c: Added support for field
26187         defaults in dynamically generated classes.
26188
26189 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26190
26191         * reflection.c: properly encode charset for ddlimport.
26192
26193 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26194
26195         * threads.c: allow compiling without GC.
26196
26197 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26198
26199         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26200         handling of thread static data.
26201
26202 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26203
26204         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26205
26206 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26207
26208         * class.c (mono_array_class_get): always set the serializable flags
26209         (mono_array_class_get): always set the SEALED attribute for array types
26210
26211 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26212
26213         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26214         attributes (fix for bug 42021).
26215
26216 2003-05-12  Dick Porter  <dick@ximian.com>
26217
26218         * gc.c: Don't run finalizers when the finalizer thread is
26219         finishing up, because the default domain has already been
26220         destroyed.
26221
26222 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26223
26224         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26225         value is null, we should throw an exception.   This is slightly
26226         different than the other conventions used for the constructor.
26227
26228 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26229
26230         * socket-io.c: fixed windows build.
26231
26232 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26233
26234         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26235
26236 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26237
26238         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26239         compilers.
26240
26241 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26242
26243         * class.c (mono_class_layout_fields): Add experimental GC aware
26244         auto layout facility. Requires class library changes to work correctly.
26245
26246         (mono_class_setup_vtable): Avoid overriding explicit interface
26247         method implementations. Fixes iface3.exe test.
26248
26249         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26250         object reference.
26251         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26252         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26253
26254         * metadata.h: Add new type classification macro which determines
26255         whenever the type holds an object reference.
26256
26257 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26258
26259         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26260
26261 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26262
26263         * gc.c (finalizer_thread): Work around a GC bug.
26264
26265 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26266
26267         * marshal.c (emit_struct_conv): allow unions
26268
26269         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26270
26271 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26272
26273         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26274
26275 2003-05-06  Martin Baulig  <martin@ximian.com>
26276
26277         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26278
26279 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26280
26281         * socket-io.c:
26282         (Select_internal): allow NULLs, don't create arrays if not needed.
26283         Coupled with Socket.cs changes.
26284
26285         * threadpool.c:
26286         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26287         register a finalizer for it that will close the semaphore handle. This
26288         fixes the leak and make Lupus' test run with > 4080 loops.
26289
26290 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26291
26292         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26293         Jerome Laban (bug #42287)
26294
26295 2003-05-02  Martin Baulig  <martin@ximian.com>
26296
26297         * debug-mono-symfile.h
26298         (MonoSymbolFile): Moved declaration into mono-debug.h.
26299         (MonoDebugMethodJitInfo): Likewise.
26300         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26301         argument.
26302         (_mono_debug_address_from_il_offset): Take a
26303         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26304
26305         * mono-debug.h
26306         (MonoDebugDomainData): New struct.
26307         (mono_debug_get_domain_data): New function.
26308         (mono_debug_add_method): Take an additional `MonoDomain *'
26309         argument.
26310         (mono_debug_source_location_from_address): Likewise.
26311         (mono_debug_il_offset_from_address): Likewise.
26312         (mono_debug_address_from_il_offset): Likewise.
26313
26314 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26315
26316         * reflection.c: one more check for null type in custom attrs.
26317
26318 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26319
26320         * reflection.c: avoid warning (comparison is always false due to limited
26321         range of data type).
26322
26323 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26324
26325         * icall.c: throw an exception in Type.GetField if the argument 'name'
26326         is NULL.
26327
26328 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26329
26330         * reflection.c: fixed handling of enums in named arguments to custom
26331         attributes (bug #42123).
26332
26333 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26334
26335         * reflection.c: use the right array element type and handle
26336         a null for a Type argument, too.
26337
26338 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26339
26340         * reflection.c: handle arrays as arguments to custom attributes.
26341
26342 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26343
26344         * reflection.c: handle a string value in a custom attr
26345         ctor that takes an object.
26346
26347 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26348
26349         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26350         (fix bug #42063)
26351
26352 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26353
26354         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26355
26356 2003-04-27  Martin Baulig  <martin@ximian.com>
26357
26358         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26359         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26360         MONO_DEBUGGER_EVENT_BREAKPOINT.
26361         (mono_breakpoint_trampoline_code): Removed.
26362         (mono_debugger_event_handler): The last argument is now a
26363         `guint32'.
26364         (mono_debugger_insert_breakpoint_full): Removed the
26365         `use_trampoline' argument.
26366         (mono_debugger_method_has_breakpoint): Likewise.
26367         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26368         mono_debugger_breakpoint_callback(); take the method and
26369         breakpoint number as arguments.
26370
26371 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26372
26373         * metadata.c: fix off by one when loading parameters attributes.
26374
26375 2003-04-24  Martin Baulig  <martin@ximian.com>
26376
26377         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26378
26379 2003-04-24  Martin Baulig  <martin@ximian.com>
26380
26381         * mono-debug-debugger.c: Moved all code which interacts with the
26382         Mono Debugger here.
26383
26384         * debug-mono-symfile.c: This code now just deals with the symbol
26385         file itself, the debugger code is now in mono-debug-debugger.c.
26386
26387 2003-04-23  Martin Baulig  <martin@ximian.com>
26388
26389         * mono-debug.c (mono_debug_source_location_from_il_offset):
26390         New method; like mono_debug_source_location_from_address(), but
26391         takes an IL offset instead of a machine address.
26392
26393 2003-04-23  Martin Baulig  <martin@ximian.com>
26394
26395         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26396         `line' field; this is now computed by the debugger.
26397
26398 2003-04-23  Martin Baulig  <martin@ximian.com>
26399
26400         * mono-debug.[ch]: New files.  This is the new debugging interface.
26401
26402         * mono-debug-debugger.[ch]: New files.  Moved all code which
26403         interacts with the Mono Debugger here.
26404
26405 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26406
26407         * domain.c (mono_init): initialize mono_defaults.monitor_class
26408
26409 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26410
26411         * reflection.c (method_encode_code): Add a spicy exception to help
26412         future compiler authors.
26413
26414 2003-04-21  Martin Baulig  <martin@ximian.com>
26415
26416         * icall.c
26417         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26418         Make this work with relative pathnames; g_filename_to_uri() needs
26419         an absolute filename.
26420
26421 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26422
26423         * icall.c: Track name changes in Object and ValueType.
26424
26425 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26426
26427         * metadata.c (mono_type_stack_size): size should be a multiple of
26428         sizeof (gpointer)
26429
26430 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26431
26432         * gc.c:
26433         (internal_domain_finalize): moved into mono_domain_finalize. No need
26434         to create another thread because the finalizers will be run in the
26435         finalizer thread.
26436         
26437         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26438         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26439         to be run (MS does this too).
26440
26441 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26442
26443         * object.c (mono_class_compute_gc_descriptor): Update comment.
26444
26445         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26446
26447         * image.h: Add synchronized wrapper cache.
26448
26449         * image.c (do_mono_image_open): Initialize cache.
26450
26451         * reflection.c (create_dynamic_mono_image): Initialize cache.
26452
26453 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26454
26455         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26456         ves_icall_System_Buffer_ByteLengthInternal.
26457
26458 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26459
26460         * reflection.c: setup klass->nested_in earlier. Allow
26461         a dash in the assembly name.
26462
26463 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26464
26465         * metadata.c (mono_type_to_unmanaged): dont access
26466         type->data.klass for MONO_TYPE_OBJECT
26467         (mono_type_to_unmanaged): consider System.Delegate class
26468
26469 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26470
26471         * class.c: just setup supertypes in the proper place instead of
26472         initializing the full element class for arrays.
26473
26474 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26475
26476         * class.c: ensure the element class of arrays is initialized.
26477         Setup the supertype info for array classes, too.
26478
26479 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26480
26481         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26482
26483 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26484
26485         * Makefile.am: re-added -m option when running cygpath. This way,
26486         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26487         separator.
26488         * mono-config.c: same codepath for locating mono config file for WIN32
26489         and the rest.
26490         * assembly.c: if mono_assembly_setrootdir is called, don't override
26491         the value set.
26492
26493 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26494
26495         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
26496         MONO_ASSEMBLIES variable.
26497
26498 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
26499
26500         * icall.c: added Assembly::GetNamespaces() icall.
26501
26502 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26503
26504         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
26505
26506 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
26507
26508         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
26509         * object.c: fixed bug in the construction of vtable for proxies
26510
26511 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
26512
26513         * object.c (mono_array_new): Mark mono_array_new as an icall.
26514
26515 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26516
26517         * class.c: fixed test for public method when overriding interfaces.
26518         Closes bug #40970.
26519
26520 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26521
26522         * appdomain.h, domain.c: added mono_domain_foreach() to
26523         be able to access the currently loaded appdomains.
26524         * object.c: make string interning work across sppdomains.
26525         Mark some functions for use as icalls.
26526
26527 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26528
26529         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
26530
26531         * reflection.h reflection.c: Allocate long living data using 
26532         GC_MALLOC_ATOMIC so the collector does not need to scan it.
26533
26534         * reflection.c: Double the allocation size in streams instead of
26535         increasing it, to prevent unneccesary copying on large assemblies.
26536         
26537         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
26538         creation if the assembly does not have the Run flag set.
26539
26540 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
26541
26542         * class.h: avoid the C++ keywords in header files (Jerome Laban
26543         spotted and fixed this).
26544
26545 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26546
26547         * object.c:
26548         (mono_unhandled_exception): fill in the arguments for the
26549         UnhandledException event. Only trigger that event for the default
26550         domain (as MS does).
26551
26552 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
26553
26554         * object.c: Improve typed allocation stuff based on suggestions from
26555         Paolo. Also turn it on if the GC library supports it.
26556
26557 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26558
26559         * object.c object.h class.h: Added experimental typed allocation
26560         facility using the interfaces in gc_gcj.h.
26561
26562         * os/gc_wrapper.h: Added new include files.
26563         
26564 2003-04-03  Martin Baulig  <martin@ximian.com>
26565
26566         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
26567         which is not yet enabled by default.
26568
26569         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
26570         functions.
26571         (mono_gc_lock, mono_gc_unlock): New static functions.
26572
26573         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
26574         functions; stop/start the world for the garbage collector.  This
26575         is using the windows API; we need to complete the SuspendThread()/
26576         ResumeThread() implementation in the io-layer to make this work on Unix.
26577         (mono_gc_push_all_stacks): New public function; tells the garbage
26578         collector about the stack pointers from all managed threads.
26579
26580 2003-04-03  Martin Baulig  <martin@ximian.com>
26581
26582         * object.h (MonoThread): Added `gpointer stack_ptr'.
26583
26584         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
26585
26586 2003-04-03  Martin Baulig  <martin@ximian.com>
26587
26588         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
26589
26590 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26591
26592         * reflection.c (typebuilder_setup_fields): Initialize field.first and
26593         field.last.
26594
26595 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
26596
26597         * loader.c (mono_lookup_internal_call): Report the corlib that is
26598         out of sync.
26599
26600 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
26601
26602         * icall.c (ves_icall_type_GetTypeCode): fixed check for
26603         System.DBNull (it's class not valuetype).
26604
26605 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26606
26607         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
26608         if the array method was already assigned a token (fixes bug#40646).
26609
26610 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
26611
26612         * reflection.c (mono_reflection_get_type): Attempt type resolve even
26613         if no assembly is given.
26614
26615 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
26616
26617         * metadata.h: Added the new tables.
26618
26619         * row-indexes.h: Added definitions for new tables.
26620
26621         * metadata.c: Add schemas for new tables, and add support for
26622         computing the sizes of them.
26623
26624         * class.c: Update for handling the new type cases.
26625
26626 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
26627
26628         * metadata.h (MONO_TYPE_IS_VOID): new macro
26629
26630 2003-03-31  Martin Baulig  <martin@ximian.com>
26631
26632         * threads.h (MonoThreadCallbacks): Added `thread_created'.
26633
26634         * threads.c (mono_thread_new_init): Call `thread_created' in the
26635         mono_thread_callbacks.
26636
26637 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
26638
26639         * loader.h: added marshalbyrefobject_class to mono_defaults
26640         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
26641         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
26642           generation of output parameters.
26643           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
26644         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
26645           contextbound and the target object belongs to the context of the caller.
26646         * object.h: added context and unwrapped_server variables in MonoRealProxy.
26647         * object.c: Implemented support for interfaces and abstract classes
26648           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
26649           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
26650
26651 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
26652
26653         * class.h class.c (mono_class_is_subclass_of): New function.
26654         
26655         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
26656         routines for most common case (calls from ArrayList::ToArray).
26657
26658         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
26659         routine so programs which call Environment::Exit() can be profiled.
26660
26661         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
26662         Added MONO_ARCH_SAVE_REGS.
26663
26664         * icall.c (ves_icall_type_is_subtype_of): Use new function.
26665
26666 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
26667
26668         * blob.h: Add a couple of new MonoType types definitions.
26669
26670         * tabledefs.h: Add a couple of new call convs.
26671
26672 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
26673
26674         * reflection.h (MonoReflectionDynamicAssembly): track changes in
26675         the layout of the class.
26676
26677         * reflection.c (alloc_table): double the size on overflow to avoid
26678         unnecessary copying.
26679
26680         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
26681         avoid filling out metadata tables and blobs. Also set mb->ilgen to
26682         null so it can be garbage collected.
26683         
26684 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
26685
26686         * reflection.c (mono_reflection_get_type): Return the resolved type
26687         only if it is in the assembly we searched.
26688
26689         * reflection.c (ensure_runtime_vtable): Initialize method slots.
26690
26691         * class.c (mono_class_setup_vtable): Set the slot of the overriding
26692         method.
26693
26694 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26695
26696         * appdomain.c:
26697         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
26698         the right one is 'file:///blah', but MS allows it.
26699         * assembly.c:
26700         (mono_assembly_open): allow 'file://blah'
26701
26702         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
26703
26704 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
26705
26706         * socket-io.c: fixes bug #40310.
26707
26708 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
26709
26710         * reflection.c (mono_reflection_parse_type): handle deeply nested
26711         types correctly.
26712
26713         * reflection.c (mono_image_create_token): Use unique token values
26714         since they will be put into a hash table.
26715
26716         * class.c (mono_class_setup_vtable): If a method occurs in more than
26717         one place in the vtable, and it gets overriden, then change the
26718         other occurances too.
26719
26720         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
26721         object as return type.
26722
26723 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26724
26725         * icall.c: Deleted "ToString" implementation for double and float
26726         because they are full implemented in managed code.
26727
26728 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26729
26730         * reflection.c, reflection.h: implemented and exported functions
26731         to retrieve info about custom attributes.
26732
26733 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26734
26735         * appdomain.c: moved Uri handling to assembly.c
26736         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
26737         work when using a file Uri in *nix and windows.
26738
26739         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
26740         GetReferencedAssemblies.
26741
26742 2003-03-18  Dick Porter  <dick@ximian.com>
26743
26744         * icall.c: Rename a couple of internal calls
26745
26746         * threads.c: Set the thread state to Stopped when a thread exits.
26747         Fixes bug 39377.
26748
26749 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
26750
26751         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
26752         New icall.
26753
26754         * object.c (mono_class_vtable): fix warning.
26755
26756 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
26757
26758         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
26759
26760         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
26761         memory.
26762         (method_encode_clauses): Create exception info structures in the right
26763         order.
26764         (mono_reflection_setup_internal_class): Initialize supertypes field.
26765
26766         * class.c object.c: Handle interfaces which implement other interfaces 
26767         correctly.
26768
26769         * class.h class.c: Move the supertypes array initialization code into 
26770         a separate function so it can be used for dynamic types too. Also call
26771         it earlier, in mono_class_init(), since it can be used before the
26772         type is initialized.
26773
26774 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26775
26776         * Makefile.am:
26777         * assembly.c:
26778         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
26779
26780         * appdomain.c:
26781         * appdomain.h:
26782         * marshal.c:
26783         * object.c: remove warnings.
26784
26785 2003-03-13  Martin Baulig  <martin@ximian.com>
26786
26787         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
26788         (MonoDebugLexicalBlockEntry): New types.
26789
26790         * debug-mono-symfile.c
26791         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
26792
26793 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26794
26795         * process.c: ret can be any non-zero value accroding to MS doc.
26796
26797 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
26798
26799         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
26800         fixing a warning for a miss-used prototype, would have cause
26801         random memory corruption.
26802
26803 2003-03-07  Martin Baulig  <martin@ximian.com>
26804
26805         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
26806         getting really annoying ....
26807
26808 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
26809
26810         * reflection.c (fixup_method): added support for array methods.
26811
26812 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
26813
26814         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
26815         (pointed out by Michael Adams).
26816
26817 2003-03-04  Dick Porter  <dick@ximian.com>
26818
26819         * icall.c: Temporarily reverted the Double and Single ToString()
26820         change, because it broke nunit.
26821
26822 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
26823
26824         * object.h, threads.h: make include files compatible with C++
26825         (patch by Jerome Laban <jlaban@wanadoo.fr>).
26826
26827 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26828
26829         * icall.c: Erased ToString helper functions for Double and Single.
26830         Now, that implementations ar all in managed code (Double and Single
26831         Formatters).
26832
26833 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
26834
26835         * appdomain.c: Added method for initializing the default context of
26836         a domain. Added internal call for getting the default context.
26837         * appdomain.h: Added context variable in MonoDomain struct.
26838         * domain.c: mono_domain_set also sets the default context of the domain
26839         * icall.c: Mapped internal method InternalGetDefaultContext.
26840         * object.c: mono_object_get_virtual_method returns always a remoting
26841         wrapper if the object is a transparent proxy.
26842         mono_runtime_invoke_array: when creating an object by calling the
26843         constructor, if the created object is a proxy, then the constructor should
26844         be called using the a remoting wrapper.
26845
26846 2003-03-03  Dick Porter  <dick@ximian.com>
26847
26848         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
26849         variable so it compiles on solaris.  Problem spotted by
26850         Christopher Taylor <ct@cs.clemson.edu>
26851
26852 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26853
26854         * appdomain.c:
26855         (get_info_from_assembly_name): don't leak value.
26856
26857         * icall.c:
26858         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
26859         result.
26860
26861 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
26862
26863         * assembly.c: export mono_image_load_references ().
26864         * class.c: handle function pointers. mono_class_from_name() now
26865         supports nested type names directly.
26866
26867 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
26868
26869         * reflection.h reflection.c: Encode already created dynamic methods 
26870         and fields correctly as a DEF instead of a REF.
26871
26872         * reflection.c: Get rid of the force_ref argument to 
26873         mono_image_typedef_or_ref since it was wrong in the first place.
26874
26875         * string-icalls.c: add error checking to string constructors according
26876         to the MSDN docs.
26877
26878         * reflection.c: Emit types in the order their TypeBuilders were 
26879         created. Previously, a new table index was assigned to each type before
26880         the tables were emitted. This was wrong because the signature blob
26881         might already refer to a type by its original table index.
26882
26883 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
26884
26885         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
26886         change.
26887         
26888 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26889
26890         * Makefile.am: make assemblies dir have \ instead of / on windows.
26891
26892 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
26893
26894         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
26895         iterate over the NESTEDCLASS table using a linear search since the
26896         table is not guaranteed to be sorted by the secondary key.
26897
26898         * class.c (mono_class_create_from_typedef): fixed up call to
26899         mono_metadata_nesting_typedef.
26900         
26901 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
26902
26903         * marshal.c (mono_string_to_byvalstr): clear the memory as
26904         suggested by Jerome Laban <jlaban@wanadoo.fr>
26905
26906 2003-02-26  Dick Porter  <dick@ximian.com>
26907
26908         * process.c: Cope with padding in .rsrc blocks
26909
26910 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26911
26912         * metadata.h: reverted the filter_len change, it breaks reflection
26913         
26914 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26915
26916         * metadata.h: added a new field to store the filter_len
26917         
26918
26919 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
26920
26921         * reflection.c: handle custom attributes for types and members
26922         created with Reflection.Emit (bug#38422).
26923
26924 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
26925
26926         * reflection.c: define RTSpecialName automatically for constructors for
26927         compatibility with MS.NET.
26928
26929         * reflection.c (mono_reflection_create_runtime_class): initialize
26930         nested_in field of dynamically created classes.
26931
26932 2003-02-22  Martin Baulig  <martin@ximian.com>
26933
26934         * debug-mono-symfile.h: Incremented version number.
26935
26936 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
26937
26938         * object.h icall.c process.c: fix warnings.
26939
26940 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
26941
26942         * appdomain.h appdomain.c:
26943         (mono_domain_try_type_resolve): split the 
26944         name_or_tb argument into a name and a tb argument.
26945         (mono_domain_has_type_resolve): new function to check whenever the
26946         application has registered a TypeResolve event handler.
26947         
26948         * icall.c reflection.h reflection.c: move the type resolve logic into
26949         mono_reflection_get_type () so it will be invoked when 
26950         Assembly::GetType () is called.
26951
26952         * reflection.c:
26953         (mono_reflection_get_type): renamed to get_type_internal.
26954         (mono_reflection_get_type): fixed type name generation so it works 
26955         for nested types too.
26956         (mono_reflection_get_type): call has_type_resolve () to avoid the 
26957         costly type name generation if there is no resolve event handler.
26958
26959 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26960
26961         * class.c, image.c: load exported types from file references.
26962
26963 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
26964
26965         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
26966           used to cache the managed methods used to create proxies and make 
26967           remote invocation of methods.
26968         * class.h: Added in MonoVTable a flag to indicate that a class needs 
26969           to be remotely created.
26970         * object.c: Modified the method mono_class_vtable(). It now initializes 
26971           the remote flag of the vtable. Modified mono_object_new_specific(), 
26972           so now it checks the remote flag.
26973         * icall.c: Added a couple of internal methods, one for enabling instance 
26974           creation interception for a type, and one for creating objects bypassing
26975           the remote check.
26976
26977 2003-02-18  Martin Baulig  <martin@ximian.com>
26978
26979         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
26980         New interncall to get a method's metadata token.
26981
26982         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
26983         New interncall for the debugger.
26984
26985 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
26986
26987         * class.c (mono_class_setup_vtable): allocate supertype array
26988
26989 2003-02-18  Martin Baulig  <martin@ximian.com>
26990
26991         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
26992
26993 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26994
26995         * reflection.c:
26996         (assembly_name_to_aname): jump over unknown properties (i've found
26997         something like: 'type, assembly, version=xxx, custom=null, public...',
26998         so now will ignore custom=null and still get the rest of the values).
26999
27000 2003-02-17  Dick Porter  <dick@ximian.com>
27001
27002         * threads.c: Have Thread.Start() wait for a semaphore to signal
27003         that the thread has set up all its local data.  This fixes bug
27004         34323, where Abort() raced the new thread's TLS data.
27005
27006         Also removes the handle_store() call from start_wrapper, because
27007         threads are now always created suspended and there is no longer a
27008         race between the parent and child threads to store the info.
27009
27010 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
27011
27012         * image.c: explain the #- heap issue in a message, hopefully
27013         avoiding FAQs on mono-list.
27014
27015 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27016
27017         * icall.c:
27018         (GetEntryAssembly): if the domain has not invoked
27019         AppDomain.ExecuteAssembly yet, return the assembly of the default
27020         AppDomain.
27021
27022 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
27023
27024         * class.c (mono_ldtoken): make it work in dynamic assemblies.
27025
27026 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
27027
27028         * metadata.c, reflection.c: simple speedup to type hash
27029         and equals code.
27030
27031 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
27032
27033         * image.c, image.h, class.c, assembly.c: move module loading
27034         to MonoImage. When loading metadata, consider alignemnet from
27035         the start of metadata, not from the metadata address in memory.
27036
27037 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
27038
27039         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
27040         AssemblyBuilder objects. Factored out custom attribute creation into
27041         a separate function.
27042         (create_custom_attr): new function to create custom attributes.
27043
27044 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
27045
27046         * Makefile.am: Got tired of typing the full pathname to pedump.
27047         Until there is another option, am installing this.
27048
27049 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
27050
27051         * class.c (class_compute_field_layout): always set field->parent 
27052         (mono_ldtoken): use mono_defaults.fieldhandle_class;
27053
27054 2003-02-11  Dick Porter  <dick@ximian.com>
27055
27056         * threads-types.h:
27057         * monitor.c: Rewrote Monitor, making lock much faster and
27058         Pulse/Wait work as specified.  Also uses much fewer handles, and only
27059         creates them as needed.
27060
27061         * exception.c: Added SynchronizationLockException
27062
27063         * threads.c: Deleted old Monitor implementation.  The new one is
27064         in a new file.
27065
27066 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
27067
27068         * class.c: handled TypedReference type code. Set the correct size for
27069         class data. Setup interface_offsets for interface classes, too.
27070
27071 2003-02-09  Martin Baulig  <martin@ximian.com>
27072
27073         * debug-mono-symfile.h: Reflect latest symbol writer changes.
27074
27075 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
27076
27077         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
27078         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
27079         * object.c: fixed mono_object_get_virtual_method () for interfaces.
27080         * verify.c: check for code that runs after the end of the method.
27081
27082 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27083
27084         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
27085         "System.Math::Round2".
27086         * sysmath.h: Added Floor, Round and Round2 definitions.
27087         * sysmath.c: Modified certain functions that were not 100% compliant
27088         with MS.NET (math precision) and added the implementation of Floor,
27089         Round and Round2.
27090
27091 2003-02-07  Martin Baulig  <martin@ximian.com>
27092
27093         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
27094
27095 2003-02-07  Martin Baulig  <martin@ximian.com>
27096
27097         * debug-mono-symfile.c: Reflected latest symwriter changes.
27098         (mono_debug_create_mono_symbol_file): Removed.
27099         (mono_debug_open_mono_symbol_file): Take an argument which
27100         specifies whether to create a dynamic symbol file.
27101
27102 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
27103
27104         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
27105
27106 2003-02-05  Martin Baulig  <martin@ximian.com>
27107
27108         * reflection.c (mono_image_build_metadata): Make this public,
27109         protect it against being called multiple times, don't create
27110         resources and don't build the compressed metadata here.
27111         (mono_image_create_pefile): Do this here.
27112
27113         * icall.c
27114         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
27115
27116 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27117
27118         * socket-io.c: fixed bug #36322.
27119
27120 2003-02-06  Piers Haken <piersh@friskit.com>
27121
27122         * appdomain.[ch]:
27123         * class.h:
27124         * debug-mono-symfile.c:
27125         * icall.c:
27126         * loader.c:
27127         * mono-config.c:
27128         * monosn.c:
27129         * reflection.c:
27130         * socket-io.c: warning cleanups
27131
27132 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
27133
27134         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
27135         function. works like remoting invoke, but does a check for the Proxy first.
27136
27137 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
27138
27139         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
27140
27141 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
27142
27143         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
27144         array of pointers.
27145         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
27146         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
27147
27148         * object.c (mono_store_remote_field_new): used by the new jit
27149         instead of mono_store_remote_field
27150         (mono_load_remote_field_new): used by the new jit
27151         instead of mono_load_remote_field
27152
27153 2003-02-05  Patrik Torstensson
27154
27155         * appdomain.c: changed unload to take the domain id instead
27156         of domain
27157         
27158         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
27159
27160
27161 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27162
27163         * appdomain.c: don't look for assemblies in ApplicationBase if
27164         PrivateBinPathProbe is set.
27165
27166 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27167
27168         * object.c: make the first argument in main_args contain the absolute
27169         path to the assembly. Fixes bug #37511.
27170
27171 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27172
27173         * icall.c: get correct UTC offset for countries not using daylight
27174         time saving. Fixes bug #30030.
27175
27176 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27177
27178         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27179         and 1 are the family).
27180
27181 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27182
27183         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27184
27185         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27186
27187 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27188
27189         * reflection.c: added support for SignatureHelper tokens, which is
27190         needed by the Calli opcode.
27191
27192         * reflection.h: track changes to SignatureHelper class.
27193
27194         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27195
27196 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27197
27198         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27199
27200 2003-02-03  Patrik Torstensson
27201         * appdomain.[c|h], domain.c : 
27202          - Added support for getting a domain via domain id
27203          - Support for setting and getting domain from System.AppDomain 
27204            (used in cross appdomain channel)
27205          - Added support for get/set for a MonoAppContext on a thread 
27206            (Context class in System.Runtime.Remoting.Contexts),
27207          - Removed hack in Get/SetData and ExecuteAssembly.
27208         
27209         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27210         the managed world to get control when a proxy is created.
27211
27212         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27213         
27214 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27215
27216         * icall.c
27217         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27218         Populate the codebase field as well.
27219
27220 2003-02-02  Martin Baulig  <martin@ximian.com>
27221
27222         * debug-mono-symfile.c
27223         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27224         (mono_debug_symfile_add_method): Allow interncalls.
27225
27226 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27227
27228         * icall.c: throw parse exception if strtod fails or the string is empty.
27229
27230 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27231
27232         * marshal.c: handle object type separately from defined
27233         class types.
27234
27235 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27236
27237         * marshal.c: handle NATIVE_LPSTR for strings when it's
27238         explicitly specified.
27239
27240 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27241
27242         * reflection.c, reflection.h, icall.c: setup the reflection
27243         handle cache for ModuleBuilders and AssemblyBuilders.
27244
27245 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27246
27247         * reflection.c (reflection_methodbuilder_to_mono_method): set
27248         pinvoke flag
27249
27250 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27251
27252         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27253
27254 2003-01-29  Dick Porter  <dick@ximian.com>
27255
27256         * threads.c: No need for the fake_thread kludge now that Thread
27257         doesn't run a class constructor
27258         
27259 2003-01-29  Dick Porter  <dick@ximian.com>
27260
27261         * threads.c: Use g_direct_hash instead of the rather bogus
27262         g_int_hash
27263
27264 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27265
27266         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27267         (fix pinvoke12.exe)
27268         (mono_marshal_get_struct_to_ptr): generate valid IL code
27269         (mono_marshal_get_ptr_to_struct): generate valid IL code
27270         (*): correctly set sig->pinvoke, we need to memdup the signature
27271         to do that
27272
27273 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27274
27275         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27276         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27277
27278 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27279
27280         * profiler.c: provide more callers information.
27281
27282 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27283
27284         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27285
27286         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27287
27288         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27289
27290 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27291
27292         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27293         exception instead of going into an infinite loop on dates which it 
27294         can't yet handle.
27295
27296         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27297         out-of-range exception if needed.
27298
27299         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27300         an implementation for an interface method and to override an inherited
27301         method at the same time. 
27302         Imagine a scenario when a virtual method is used to override a
27303         virtual abstract method in a parent class, and this same method 
27304         provides an implementation for an method inherited from an interface. 
27305         In this case, the interface resolution code will set im->slot, which 
27306         means that the virtual method override pass will skip this method 
27307         which means a pointer to the abstract method inherited from the parent
27308         will remain in the vtable of this non-abstract class.
27309
27310         * class.c: (mono_class_setup_vtable): continue search for a real 
27311         method if only an abstract method is found.     
27312
27313 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27314
27315         * reflection.c: add size to encoding for ByValStr and ByValArray
27316         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27317
27318 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27319
27320         * class.c (mono_class_setup_vtable): pass the override info as an
27321         argument.
27322
27323         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27324         correctly.
27325         
27326         * reflection.c (ensure_runtime_vtable); add support for method 
27327         overrides.
27328         
27329 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27330
27331         * reflection.c (resolution_scope_from_image): Hack to work to work with
27332         dynamic assemblies.
27333
27334         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27335         added a 'force_ref' argument to force this function to allways return 
27336         a TypeRef. This is needed by mono_image_get_memberref_token ().
27337         
27338 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27339
27340         * reflection.c (mono_image_get_type_info): interfaces really don't have
27341         a parent.
27342
27343         * reflection.c (mono_image_basic_init): fill out missing fields of
27344         image structure.
27345
27346         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27347         dynamic assemblies. This is required so dynamic assemblies show up in
27348         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27349         Type::GetType() etc. This is consistent with MS behaviour.
27350
27351         * image.c image.h reflection.c: add newly created classes to the name 
27352         cache so mono_class_get () will find them.      
27353
27354 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27355
27356         First part of changes to get IKVM.NET running under mono.
27357         
27358         * appdomain.h, appdomain.c: added new function 
27359         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27360         This function will call AppDomain::DoTypeResolve to do the actual work.
27361
27362         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27363         moved existing code dealing with dynamic tokens to a new function 
27364         called mono_reflection_lookup_dynamic_token (). This function will 
27365         raise TypeResolve events when appropriate. Since reflection.c is not 
27366         part of libmetadata, a new hook function called 
27367         mono_lookup_dynamic_token() is added to class.c which will call this.
27368
27369         * assembly.h assembly.c: make the invoke_load_hook function public,
27370         so it can be called for dynamic assemblies.
27371
27372         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27373
27374         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27375         type isn't found.
27376
27377         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27378         MonoGHashTable, since it contains pointers to objects which the GC 
27379         needs to track.
27380
27381         * assembly.c (search_loaded): remove unused variable.
27382         
27383 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27384
27385         * object.c: fixed issue exposed by gcc-generated IL programs
27386         that use RVA data for pointers.
27387
27388 2003-01-25  Martin Baulig  <martin@ximian.com>
27389
27390         * threads.c (start_wrapper): Moved the initialization of
27391         `start_func' above the mono_new_thread_init() call to which we
27392         pass it as argument.
27393
27394 2003-01-24  Martin Baulig  <martin@ximian.com>
27395
27396         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27397         the MonoThread pointer.
27398
27399 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27400
27401         * icall.c: Rename `PowImpl' to Pow.
27402
27403 2003-01-23  Dick Porter  <dick@ximian.com>
27404
27405         * threads.c (start_wrapper): Create a Thread object if needed, so
27406         the Main() thread can do the class initialisation in a subthread
27407         that has been set up to allow managed code execution.
27408
27409         Pass the thread ID instead of the MonoThread pointer to the thread
27410         start and attach callbacks.  This change is required, because the
27411         jit thread start callback must be called _before_ the Thread
27412         object can be created.
27413         
27414         (mono_thread_init): Removed much object creation code that is no
27415         longer needed.  No managed code is called from here now.
27416
27417         * object.c (mono_runtime_exec_managed_code): Create a subthread
27418         for Main, and call back to the runtime to use it.
27419         Set the exit code when Main exits.
27420
27421         * gc.c: Make sure domain finalisation happens in a subthread.
27422         Re-enable threaded GC, fixing bug 31333 (again).
27423
27424         * environment.c: System.Environment internall calls (so far just
27425         ExitCode is here, the others are still in icall.c)
27426
27427         * appdomain.c (mono_runtime_cleanup): All threads running managed
27428         code should have finished before mono_runtime_cleanup() is
27429         reached, so no need to clean up threads.
27430
27431 2003-01-22  Martin Baulig  <martin@ximian.com>
27432
27433         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27434         `gpointer func' arguments.      
27435         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27436         but added `MonoThread *thread' argument.
27437         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27438
27439         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27440         and pass it to the mono_thread_start_cb callback.
27441         (mono_install_thread_callbacks): New public function to install a
27442         set of callbacks which are set by the debugger.
27443         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27444
27445 2003-01-22  Martin Baulig  <martin@ximian.com>
27446
27447         * Makefile.am: Install debug-mono-symfile.h.
27448
27449 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27450
27451         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27452
27453 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27454
27455         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27456         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27457         (mono_array_class_get): correctly set access levels of arrays
27458
27459 2003-01-20      Patrik Torstensson
27460         * image.h (MonoAssemblyName): changed major, minor, build, revision
27461         from signed to unsigned.
27462
27463 2003-01-20  sean kasun <skasun@azstarnet.com>
27464
27465         * reflection.c (load_cattr_value): Now this handles
27466         MONO_TYPE_SZARRAY.  Fixes bug #35629
27467
27468 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27469
27470         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27471         integer value
27472
27473 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27474
27475         * decimal.c: fixed bug #26056.
27476
27477 2003-01-17  Martin Baulig  <martin@ximian.com>
27478
27479         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27480
27481 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27482
27483         * exception.[ch]:
27484         (mono_get_exception_type_initialization): new function.
27485
27486         * object.c: throw a TypeInitializationException when an exception is
27487         thrown invoking the class constructor.
27488
27489 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27490
27491         * reflection.c: fixed attribute reading.
27492
27493 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27494
27495         * icall.c:
27496         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
27497         provided, look for the type in the calling assembly and then in
27498         mscorlib; if the assembly name is provided, only try that one.
27499
27500 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
27501
27502         * object.c: register the vtable before there is a chance it's
27503         queried again recursively.
27504
27505 2003-01-13  Duncan Mak  <duncan@ximian.com>
27506
27507         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
27508         gc-internal.h. 
27509         
27510 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
27511
27512         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
27513
27514 2003-01-11  Martin Baulig  <martin@ximian.com>
27515
27516         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
27517         this to 20 for the release.
27518
27519 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
27520
27521         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
27522
27523         * loader.c (mono_method_get_marshal_info): bug fix
27524
27525         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
27526         structures with explicit layout
27527
27528 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27529
27530         * profiler.c: made the output more readable (and sorted). 
27531         Added caller information for the allocation profiler.
27532
27533 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
27534
27535         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
27536
27537 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27538
27539         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
27540         to get value types.
27541         
27542 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
27543
27544         * object.c, profiler.h, profiler.c, profiler-private.h:
27545         Added object allocation profiler.
27546
27547 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
27548
27549         * reflection.h, reflection.c: handle global methods.
27550         Compress blob entries.
27551
27552 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
27553
27554         * marshal.c: fix compilation.
27555
27556 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
27557
27558         * loader.c (mono_method_get_marshal_info): impl.
27559
27560         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
27561
27562 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27563
27564         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
27565         for reference types.
27566
27567 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
27568
27569         * loader.c: fixed off by one error in loaded parameter names.
27570
27571 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
27572
27573         * marshal.c (mono_marshal_get_icall_wrapper): like
27574         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
27575         instead of a MonoMethod.
27576
27577 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27578
27579         * decimal.c: fixed bug #36537.
27580
27581 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
27582
27583         * marshal.c: throw a missing method exception if a
27584         P/Invoke method is not found.
27585
27586 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27587
27588         * icall.c: allow a null this for constructors.
27589
27590 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
27591
27592         * icall.c: raise the proper exceptions if the arguments to the
27593         internal Invoke are incorrect.
27594
27595 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
27596
27597         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
27598
27599 2003-01-03  Martin Baulig  <martin@ximian.com>
27600
27601         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27602
27603 2002-12-31  Martin Baulig  <martin@ximian.com>
27604
27605         * debug-mono-symfile.c: Completely rewrote the type section.
27606         Instead of using individual malloc()ed fields, we use one big
27607         continuous memory area and offsets into this area.
27608         See the comments in the source code for details.
27609
27610 2002-12-30  Martin Baulig  <martin@ximian.com>
27611
27612         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
27613
27614 2002-12-30  Martin Baulig  <martin@ximian.com>
27615
27616         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
27617         line number table in this data blob instead of using an external
27618         pointer.
27619
27620 2002-12-28  Martin Baulig  <martin@ximian.com>
27621
27622         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27623
27624 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
27625
27626         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
27627         as a boxed return type.
27628
27629 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
27630
27631         * appdomain.c
27632         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
27633         g_build_filename to properly get separators on the filename created.
27634
27635         * object.h: Small change, introduce MonoMarshalByRefObject to
27636         track the layout of that structure in the C# universe as we make
27637         changes there.
27638
27639 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
27640
27641         * object.c: removed assert to allow static fields on interfaces.
27642         * loader.c: a TypeSpec may be used for any type, not just arrays.
27643
27644 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27645
27646         * class.c, class.h: added mono_class_array_element_size ().
27647         Ignore static methods in interfaces.
27648
27649 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27650
27651         * threads.c: fixed the build under cygwin.
27652
27653 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27654
27655         * reflection.c: handle nullref constants. Allocate keys for
27656         reflection handles with the GC.
27657
27658 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27659
27660         * threads.c, threads.h: added mono_thread_get_abort_signal()
27661         to get a suitable signal for thread abort.
27662
27663 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27664
27665         * metadata.c: fix handling of ExportedType table.
27666
27667 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27668
27669         * icall.c: added WriteWindowsDebugString internal call.
27670
27671 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27672
27673         * reflection.h: added fields to match C# implementation.
27674
27675 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27676
27677         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
27678
27679 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
27680
27681         * gc.h, gc-internal.h: Rename header for GC internal calls to
27682         gc-internal.h from gc.h as to not clash with Boehm GC having its
27683         header installed as <gc.h> in outside include paths.
27684         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
27685         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
27686
27687 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27688
27689         * icall.c: assign minor, build and revision in FillName.
27690
27691 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
27692
27693         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
27694         Added support for running code generated by Reflection.Emit.
27695
27696 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27697
27698         * appdomain.c: check for NULL argument in LoadFrom.
27699
27700 2002-12-10  Dick Porter  <dick@ximian.com>
27701
27702         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
27703
27704 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27705
27706         * appdomain.c: fix buglet when building exe file name.  Handle full
27707         assembly name (needed after latest changes to AssemblyName).
27708         * image.c:
27709         (mono_image_close): free some hashtables.
27710
27711 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
27712
27713         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
27714         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
27715         on some systems (redhat 7.3) 
27716
27717 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
27718
27719         * threads.c: delete the critical section of a sync block,
27720         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
27721
27722 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
27723
27724         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
27725
27726 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27727
27728         * appdomain.[ch]: handle the assembly preload event to try loading the
27729         assemblies using the paths we have in the current domain.
27730
27731         * assembly.[ch]: created an assembly preload hook that is called to try
27732         loading the assembly by other means that the ones provided here.
27733
27734         * domain.c: initialize the domain search path.
27735
27736         From now on, assemblies (TODO: except corlib and System) are loaded
27737         according to these rules when using mono_assembly_load ():
27738
27739                 1. It tries to load the assembly from the ApplicationBase
27740                 of the current domain appending .dll and .exe (TODO: have to
27741                 try loading from name/name.dll and name/name.exe).
27742
27743                 2. It tries the search path specified in PrivateBinPath for the
27744                 current domain (if any).
27745
27746                 3. Previous behavior.
27747
27748 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
27749
27750         * icall.c: implemented GetInterfaceMap() related icall.
27751         * domain.c, loader.h: load MethodInfo in mono_defaults.
27752
27753 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27754
27755         * gc.c: disable the finalizer thread for now, untill all the issues
27756         with it are resolved.
27757
27758 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27759
27760         * string-icalls.c: handle embedded nulls in string ctor when the
27761         length is specified.
27762
27763 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
27764
27765         * class.c: look for explicit interface implementation in parent
27766         classes, too.
27767
27768 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
27769
27770         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
27771
27772 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
27773
27774         * gc.c: protect handles with a critical section.
27775
27776 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27777
27778         * icall.c:
27779         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
27780         parameters. If no assembly specified, try getting the type from all
27781         the assemblies in the current domain, else, load the assembly and get
27782         the type from it.
27783
27784 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27785
27786         * marshal.c: applied patch from Aleksey Demakov that fixes
27787         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
27788
27789 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27790
27791         * icall.c: fixed get_location.
27792
27793 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
27794
27795         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
27796         declarations to make it work with older gcc. 
27797
27798         * loader.c (mono_get_method): set signature->pinvoke for native calls
27799
27800 2002-11-20  Dick Porter  <dick@ximian.com>
27801
27802         * threads.c (mono_thread_init): Set the main thread's handle
27803
27804 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
27805
27806         * gc.c: allow compilation without GC support. Changed to match the
27807         mono coding style.
27808
27809 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
27810
27811         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
27812
27813 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
27814
27815         * reflection.c: set a public key token on the core assemblies.
27816
27817 2002-11-18  Dick Porter  <dick@ximian.com>
27818
27819         * threads.c: Split out some thread initialisation so that other
27820         files can set the start callback function.
27821
27822         * gc.c: Run finalisers in a separate thread, to avoid stack
27823         overflow.  Fixes bug 31333.
27824
27825         * appdomain.c: Set up GC finalisation thread.
27826
27827         * reflection.c: 
27828         * object.c: 
27829         * domain.c: Use gc.h macros for GC_malloc
27830         
27831 2002-11-15  Dick Porter  <dick@ximian.com>
27832
27833         * threadpool.c: 
27834         * threads.c:
27835         * appdomain.c: Removed mono_runtime_init_with_attach(),
27836         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
27837         merging the extra parameter with the existing function.  Removed
27838         unneeded code in mono_thread_attach().
27839
27840 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
27841
27842         * image.c (mono_image_loaded_by_guid): a method to get loaded
27843         images by guid. 
27844         (load_metadata_ptrs): we store the guid as string.
27845
27846 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
27847
27848         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
27849
27850         * metadata.c (mono_guid_to_string): imported method form Zoltan
27851         Varga (slightly modified)
27852
27853         * assembly.c (mono_assembly_open): load precompiled code
27854
27855         * loader.h (MonoMethod): we store the method token for use in the
27856         aot compiler. 
27857
27858 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27859
27860         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
27861         the hook function called when an assembly is loaded.
27862         
27863         * domain.c: Modified file.
27864         (mono_domain_assembly_load): removed hash table insertion of assemblies.
27865
27866         Fixes bug #33196.
27867
27868 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
27869
27870         * reflection.c: Map PEFileKind to the value expected by the WinNT
27871         image loader. 
27872
27873 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27874
27875         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
27876         Read until the buffer is filled completely.
27877
27878 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27879
27880         * icall.c: implemented MonoType.InternalGetEvent ().
27881
27882 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27883
27884         * appdomain.c: implemented InitAppDomainSetup. Delayed
27885         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
27886         the entry_assembly.
27887
27888         * assembly.c: base_dir is now an absolute path ending with
27889         G_DIR_SEPARATOR.
27890
27891         * icall.c: modified get_location according to the above changes.
27892
27893         * object.c: init AppDomain.SetupInformation for the default domain after
27894         we have the entry assembly.
27895
27896         * domain.c: when unloading a domain, setup = NULL.
27897
27898 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
27899
27900         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
27901
27902 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
27903
27904         * object.h, object.c: introduced mono_object_get_virtual_method ()
27905         to lookup the method invoked on an object when a callvirt is done on
27906         a method.
27907         * icall.c: make MethodInfo::Invoke() always do a virtual call.
27908
27909 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27910
27911         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
27912         current domain when loaded an assembly and failed to load it.
27913
27914         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
27915
27916 2002-10-31  Dick Porter  <dick@ximian.com>
27917
27918         * icall.c: 
27919         * file-io.h: 
27920         * file-io.c: Return the error status in a parameter, as the
27921         GetLastError() value has long since been blown away if we try and
27922         look it up in a subsequent internal call invocation.  Delete the
27923         GetLastError() internal call, because it's useless.
27924
27925 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
27926
27927         * class.[ch]: added cast_class to fix bug 29517
27928
27929 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
27930
27931         * marshal.c: create valid IL code in the filter clause:
27932         the new JIT is less forgiving:-)
27933
27934 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27935
27936         * icall.c: removed get_property internal call.
27937
27938 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
27939
27940         * appdomain.h domain.c: Added an ID to appdomains.
27941         
27942         * threads.c threads.h icall.c: Implement icall
27943         Thread:GetDomainID(), and remove unused icall 
27944         CurrentThreadDomain_internal.
27945
27946 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27947
27948         * icall.c: Don't recurse through the base types in GetConstructor.
27949         Fixes bug #32063. 
27950
27951 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
27952
27953         * mempool.h, mempool.c: added mono_mempool_empty() and
27954         mono_mempool_stats().
27955
27956 2002-10-23  Dick Porter  <dick@ximian.com>
27957
27958         * file-io.c: 
27959         * file-io.h: 
27960         * icall.c: Added MonoIO.GetFileType internal call
27961
27962 2002-10-17  Dick Porter  <dick@ximian.com>
27963
27964         * appdomain.c (mono_runtime_cleanup): Don't signal the async
27965         delegate semaphore before waiting for all threads to finish,
27966         because new threads can also call async delegates.  Fixes bug
27967         32004.
27968
27969         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
27970         of 3 seconds, in case another async job is queued.  (This part is
27971         needed because the bug fix reintroduced the 3s exit lag.)  This
27972         makes the mono_runtime_shutdown flag superfluous.
27973
27974 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
27975
27976         * reflection.c: include ehader size in method section headers.
27977         Really check for suplicated modules entries.
27978
27979 2002-10-17  Martin Baulig  <martin@gnome.org>
27980
27981         * debug-mono-symfile.c: Added back support for locals.
27982
27983 2002-10-14  Martin Baulig  <martin@gnome.org>
27984
27985         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
27986         MONO_TYPE_VOID.
27987
27988 2002-10-14  Martin Baulig  <martin@gnome.org>
27989
27990         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
27991         mono_class_get() instead of looking in the class cache. 
27992
27993 2002-10-13  Martin Baulig  <martin@gnome.org>
27994
27995         * debug-mono-symfile.c: Set version number to 28, include the
27996         signature in method names.
27997
27998 2002-10-13  Martin Baulig  <martin@gnome.org>
27999
28000         * debug-mono-symfile.h: Set version number to 27.
28001
28002 2002-10-11  Martin Baulig  <martin@gnome.org>
28003
28004         * gc.c: Don't register/unregister NULL pointers as disappearing links.
28005
28006 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28007
28008         * metadata.c, metadata.h: added helper function to allocate signatures.
28009
28010 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28011
28012         * icall.c: added internal call to get the location of machine.config.
28013
28014 2002-10-08  Martin Baulig  <martin@gnome.org>
28015
28016         * debug-mono-symfile.c: Ignore classes with a pending init for the
28017         moment.
28018
28019 2002-10-03  Dick Porter  <dick@ximian.com>
28020
28021         * threads.c: Freebsd pthread_t is a pointer
28022
28023 2002-10-03  Dick Porter  <dick@ximian.com>
28024
28025         * socket-io.c: Implemented GetHostName_internal
28026
28027 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28028
28029         * mono-config.c:
28030         (mono_config_parse_file): don't leak the text.
28031
28032 2002-10-02  Martin Baulig  <martin@gnome.org>
28033
28034         * debug-mono-symfile.c: Added support for methods.
28035
28036 2002-10-01  Martin Baulig  <martin@gnome.org>
28037
28038         * debug-mono-symfile.c: Don't emit methods and line numbers for
28039         the dynamic symbol file, just write the type table.  We can easily
28040         have an external helper program which creates a symbol file for an
28041         IL file.        
28042
28043 2002-10-01  Dick Porter  <dick@ximian.com>
28044
28045         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
28046         Only add the handle to the cleanup array when we're about to
28047         launch the thread.  Bug 31425 deadlocked when the test was run on
28048         mono under w32.
28049
28050 2002-10-01  Martin Baulig  <martin@gnome.org>
28051
28052         * debug-mono-symfile.c: Added support for properties.
28053
28054 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28055
28056         * reflection.c: unaligned store fix from Mark Crichton
28057         <crichton@gimp.org>.
28058
28059 2002-09-27  Martin Baulig  <martin@gnome.org>
28060
28061         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
28062         New interncall.
28063
28064 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
28065
28066         * assembly.h, assembly.c: use a sane API to hook into the assembly
28067         loading process instead of a useless special-purpouse hack
28068         (ngen needs a hook, too, for example).
28069
28070 2002-09-27  Dick Porter  <dick@ximian.com>
28071
28072         * threads.c (mono_thread_init): Call GetCurrentProcess() so
28073         io-layer can set up some process handle info.  Not needed on w32,
28074         but doesn't hurt either.
28075
28076         * process.c: Pass the program name in the second parameter to
28077         CreateProcess, so the path is searched.  Include the working
28078         directory. Implemented process name, process enumeration, and some
28079         process detail internal calls.
28080         
28081         * icall.c: Added internal calls for process lookup, and some
28082         process details
28083
28084 2002-09-26  Martin Baulig  <martin@gnome.org>
28085
28086         * assembly.c (mono_install_open_assembly_hook): New global
28087         function to install a function to be invoked each time a new
28088         assembly is loaded.
28089         (mono_assembly_open): Run this callback function if set.
28090
28091         * debug-mono-symfile.c: Put back line numbers for the dynamic
28092         symbol file and also record the .il file as source file.  This
28093         allows us to install the temporary symbol file as `file.dbg' just
28094         like a compiler-generated one.
28095
28096 2002-09-26  Nick Zigarovich <nick@chemlab.org>
28097
28098         * Corrected typo in gc.c (BOHEM vs BOEHM).
28099
28100 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28101
28102         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
28103         GetProperties. Also avoid calling g_slist_length in GetProperties and
28104         GetMethods.
28105
28106 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28107
28108         * reflection.c: avoid unaligned stores (bug spotted by
28109         Mark Crichton  <crichton@gimp.org>).
28110
28111 2002-09-25  Martin Baulig  <martin@gnome.org>
28112
28113         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
28114         instead of guint64 for addresses and added prologue/epilogue info.
28115
28116 2002-09-25  Martin Baulig  <martin@gnome.org>
28117
28118         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
28119         store line number info.  For the dynamic symbol file, we only need
28120         to provide the JIT generated dynamic line number info for the dynamic
28121         symbol file.
28122
28123 2002-09-25  Martin Baulig  <martin@gnome.org>
28124
28125         * debug-mono-symfile.h: Incremented version number.
28126
28127 2002-09-24  Martin Baulig  <martin@gnome.org>
28128
28129         * class.c (mono_debugger_class_init_func): New global function
28130         pointer variable.
28131         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
28132         call it.
28133
28134         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
28135         function.  This is called via the mono_debugger_class_init_func
28136         hook to add all types to the dynamic type table.
28137         (ves_icall_MonoDebugger_GetType): New interncall to get a class
28138         from its metadata token.
28139
28140         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
28141         New interncall for the debugger.
28142
28143 2002-09-24  Nick Drochak <ndrochak@gol.com>
28144
28145         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
28146         before using it in case it is null.
28147         
28148 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28149
28150         * metadata.c: allow custom modifiers in local var signatures
28151         (bug spotted by Zoltan Varga).
28152
28153 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28154
28155         * class.c: deal with the <Module> class that may have a NULL vtable.
28156         Eliminate warnings.
28157
28158 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28159
28160         * image.c, image.h: more strong name helpers.
28161         * monosn.c: more work: convert pem keys to cryptoapi format.
28162
28163 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28164
28165         * string-icalls.c: speedup IndexOf.
28166
28167 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28168
28169         * icall.c: updates from Zoltan.2.Varga@nokia.com.
28170
28171 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28172
28173         * icall.c: cleanup: use mono_object_domain ().
28174
28175 2002-09-23  Martin Baulig  <martin@gnome.org>
28176
28177         * debug-mono-symfile.c: Improved type support.
28178
28179 2002-09-22  Martin Baulig  <martin@gnome.org>
28180
28181         * debug-mono-symfile.c: Added support for reference types and strings.
28182
28183 2002-09-22  Martin Baulig  <martin@gnome.org>
28184
28185         * debug-mono-symfile.c: Started to work on the type table.
28186
28187 2002-09-21  Martin Baulig  <martin@gnome.org>
28188
28189         * debug-mono-symfile.c: Largely reworked the symbol table format.
28190         The symbol table is now incrementally updated each time a new
28191         method is added.  We're now also using our own magic and version
28192         so that you don't need to recompile all your classes if the
28193         dynamic table changes.
28194         (mono_debug_update_mono_symbol_file): Removed.
28195         (mono_debug_symfile_add_method): New function to add a method.
28196
28197 2002-09-21  Martin Baulig  <martin@gnome.org>
28198
28199         * icall.c
28200         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28201         New interncall.
28202
28203         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28204         New interncall to get a method from its metadata token.
28205
28206 2002-09-21  Martin Baulig  <martin@gnome.org>
28207
28208         * debug-mono-symfile.c: Create type table.
28209
28210 2002-09-20  Martin Baulig  <martin@gnome.org>
28211
28212         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28213
28214 2002-09-20  Martin Baulig  <martin@gnome.org>
28215
28216         * debug-mono-symfile.c: Provide information about params and locals.
28217
28218 2002-09-20  Martin Baulig  <martin@gnome.org>
28219
28220         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28221         New interncall.
28222
28223         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28224         interncall to get a method from its metadata token.
28225
28226 2002-09-20  Martin Baulig  <martin@gnome.org>
28227
28228         * debug-mono-symfile.c: Added a few checks for method->header
28229         being non-NULL.  This should never happen, but for the moment
28230         let's use a g_warning() rather than a g_assert().
28231
28232 2002-09-19  Mark Crichton  <crichton@gimp.org>
28233
28234         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28235         even if support for it isn't present.  Added an #ifdef to fix this.
28236
28237         * socket-io.c: Added checks back for Solaris support.
28238
28239 2002-09-19  Martin Baulig  <martin@gnome.org>
28240
28241         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28242         changes in the symbol file format.
28243
28244 2002-09-18  Martin Baulig  <martin@gnome.org>
28245
28246         * debug-mono-symfile.c: Set version number to 21.
28247
28248 2002-09-18  Dick Porter  <dick@ximian.com>
28249
28250         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28251         on netbsd.  Fixes bug 30051.
28252
28253 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28254
28255         * reflection.c:
28256         (set_version_from_string): little fix.
28257
28258 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28259
28260         * monosn.c, Makefile.am: added strong name utility.
28261         * reflection.h, reflection.c: implemented delayed signing,
28262         locale, version and hash id assembly attributes.
28263
28264 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28265
28266         * loader.c, metadata.c: load param attributes in signatures.
28267
28268 2002-09-16  Martin Baulig  <martin@gnome.org>
28269
28270         * debug-mono-symfile.c: Added string table with all method names.
28271
28272 2002-09-14  Martin Baulig  <martin@gnome.org>
28273
28274         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28275         fast method lookup.
28276
28277 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28278
28279         * reflection.c: record the public key token of referenced assemblies.
28280
28281 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28282
28283         * image.c, image.h: added functions to get the strong name and the
28284         public key of an assembly.
28285         * pedump.c: use them.
28286
28287 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28288
28289         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28290
28291 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28292
28293         * marshal.c (mono_marshal_get_managed_wrapper): Added
28294         MONO_TYPE_BOOLEAN 
28295
28296 2002-09-11  Martin Baulig  <martin@gnome.org>
28297
28298         * gc.c: Call GC_unregister_disappearing_link() on all links when
28299         finalizing them, this is necessary to aviod a crash in boehm's
28300         finalize handler.
28301
28302 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28303
28304         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28305         nick@chemlab.org.
28306
28307 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28308
28309         * icall.c: implemented MonoType::Module.
28310         * reflection.c, reflection.h: mono_module_get_object () from
28311         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28312
28313 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28314
28315         * icall.c: ignore overridden methods in GetMethods ().
28316         Fix for FieldInfo::SetValue().
28317         * object.c: handle float/double in runtime invoke.
28318
28319 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28320
28321         * object.c: allow a constructor to be called again on an object.
28322
28323 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28324
28325         * class.h, class.c: move field layout code to it's own function and
28326         export it. Get an interface id earlier. Move fields in MonoClass
28327         so they are more cache friendly and align the bitfields.
28328         * loader.c: temporary handle get_param_names() for a runtime method.
28329         * reflection.c, reflection.h: more code to handle runtime creation of
28330         types.
28331
28332 2002-09-09  Martin Baulig  <martin@gnome.org>
28333
28334         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28335         signature with the pinvoke field being set for the actual call.
28336
28337 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28338
28339         * icall.c: removed some unused icalls. Start of map of glib charsets
28340         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28341
28342 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28343
28344         * debug-helpers.c: break infinite loop (found and fixed by
28345         Holger Arnold <harnold@gmx.de>).
28346
28347 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28348
28349         * icall.c: target may be null in create_delegate.
28350
28351 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28352
28353         * marshal.c: handle a boolean return type.
28354
28355 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28356
28357         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28358
28359 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28360
28361         * gc.c: fix weakreferences.
28362
28363 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28364
28365         * icall.c: added icall to get default codepage.
28366
28367 2002-09-03  Dick Porter  <dick@ximian.com>
28368
28369         * threads.h: 
28370         * threads.c: Use MonoThread instead of MonoObject where
28371         apropriate.
28372
28373         Store running thread objects in a hash table, so that we have all
28374         the info to hand when waiting for them to finish
28375         (means we don't need OpenThread() any more, so mingw builds should
28376         be fully functional again.)
28377
28378         * verify.c:
28379         * object.h: Added thread ID to MonoThread
28380
28381 2002-09-03  Martin Baulig  <martin@gnome.org>
28382
28383         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28384
28385 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28386
28387         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28388
28389 2002-09-03  Martin Baulig  <martin@gnome.org>
28390
28391         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28392         argument to store the end address of the disassembled instruction.
28393
28394         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28395         here from debug-symfile.h.
28396         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28397         JIT into this struct.
28398         (MonoSymbolFile): Added `char *image_file' field.
28399         (MonoDebugGetMethodFunc): Removed.
28400         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28401         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28402         (mono_debug_find_method): New method.
28403
28404         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28405         create a full symbol file.
28406         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28407         and static symbol files.
28408         (mono_debug_find_method): The symbol file keeps an internal method hash,
28409         call this to get a MonoDebugMethodInfo from a MonoMethod.
28410
28411         * debug-symfile.[ch]: Removed.
28412
28413 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28414
28415         * image.c (do_mono_image_open): Remove linker version check.
28416
28417 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28418
28419         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28420         wrappers for instance methods.
28421         
28422 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28423
28424         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28425
28426 2002-08-28  Dick Porter  <dick@ximian.com>
28427
28428         * Makefile.am: Export HOST_CC for w32 builds
28429
28430 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28431
28432         * file-io.c process.c: MonoString are null terminated, no
28433         need for mono_string_to_utf16() anymore.
28434
28435 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28436
28437         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28438
28439 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28440
28441         * icall.c, reflection.h: speedup System.MonoType.
28442
28443 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28444
28445         * reflection.c: allow null as the value of a string argument in
28446         custom attributes constructors.
28447
28448 2002-08-27  Martin Baulig  <martin@gnome.org>
28449
28450         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28451         `trampoline_address' field.
28452
28453 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28454
28455         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28456         check (fixes bug #29486) 
28457
28458 2002-08-27  Martin Baulig  <martin@gnome.org>
28459
28460         * debug-mono-symfile.c: Changed the file format in a way that allows us
28461         open it read-only and to use a specially malloced area for all the
28462         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28463         debugging IL code and there is no MCS generated symbol file for it.
28464
28465 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28466
28467         * object.c: added a define for a good string and array
28468         creation speedup (not enabled by default because we need to deal with
28469         the synch stuff).
28470
28471 2002-08-26  Martin Baulig  <martin@gnome.org>
28472
28473         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28474         function to create a dynamic symbol file.  This is used by the
28475         debugger to create a symbol file for IL code on-the-fly.
28476
28477 2002-08-26  Martin Baulig  <martin@gnome.org>
28478
28479         * loader.c (mono_lookup_pinvoke_call): Include the error message
28480         from g_module_error() in the error message.
28481
28482 2002-08-24  Martin Baulig  <martin@gnome.org>
28483
28484         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28485         function to update the symbol file.  The symbol file is mmap()ed
28486         writable, but private.  This allows us to install the symbol file
28487         together with the assembly.
28488
28489 2002-08-24  Martin Baulig  <martin@gnome.org>
28490
28491         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
28492         but they can read the new symbol file format which mcs is now creating.
28493
28494         * debug-symfile.c (mono_debug_find_source_location): Moved to
28495         debug-mono-symfile.c; this is now operating on the new symbol file.
28496
28497 2002-08-23  Martin Baulig  <martin@gnome.org>
28498
28499         * debug-helpers.c (mono_method_desc_from_method): New function to get
28500         a MonoMethodDesc from a MonoMethod.
28501
28502 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28503
28504         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
28505         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
28506
28507 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
28508
28509         * string-icalls.[ch]: make helper methods static.
28510
28511 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28512
28513         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
28514         types to it and to SetValueInternal.
28515
28516         * object.c: Moved handle_enum label to its proper place. This was the
28517         f... bug! ;-)
28518
28519         This time i compiled mcs and gtk-sharp and they both work.
28520
28521 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28522
28523         * icall.c: reverted partially my previous patch until 
28524         object.c:set_value handles enums correcly.
28525
28526 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28527
28528         * icall.c:
28529         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
28530         (ves_icall_System_Environment_get_MachineName): removed warning when
28531         compiling under cygwin.
28532
28533 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28534
28535         * object.c: fixed field_get_value() for reference types.
28536
28537 2002-08-22  Dick Porter  <dick@ximian.com>
28538
28539         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
28540         Don't free a buffer while it's still needed.  Patch from Jonathan
28541         Liger <Jonathan.liger@wanadoo.fr>
28542
28543 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
28544
28545         * icall.c (ves_icall_System_Environment_get_Platform): Add new
28546         internal call.
28547
28548 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
28549
28550         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
28551         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
28552
28553         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
28554         we call unmanaged code which throws exceptions.
28555
28556 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28557
28558         * appdomain.h: added per-domain entry_assembly.
28559         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
28560         arguments.
28561         * icall.c: Assembly::GetEntryAssembly icall.
28562         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
28563         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
28564
28565 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28566
28567         * appdomain.h, gc.c: added mono_domain_finalize ().
28568
28569 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28570
28571         * object.c:
28572         (mono_print_unhandled_exception): changed g_warning by g_printerr
28573         because g_log has a 1024 characters limit (yeah, i got a big stack
28574         trace). Don't print exception name, that should be in ToString 
28575         returned string.
28576
28577 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28578
28579         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
28580         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
28581
28582 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28583
28584         * object.c:
28585         (mono_print_unhandled_exception): after previous commit, i realized
28586         that MS calls ToString on the exception. I changed this function to
28587         do that. This way we get stack_trace for free.
28588
28589 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28590
28591         * object.c:
28592         (mono_print_unhandled_exception): invoke Message property instead of
28593         getting 'message' field from Exception. Don't allocate memory for
28594         'trace' and 'message' if not needed.
28595
28596 2002-08-18  Dick Porter  <dick@ximian.com>
28597
28598         * unicode.c: Fix asserts to match Encoder.cs checks
28599
28600 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28601
28602         * marshal.c: fix unaligned store issue and a few wrong
28603         opcode argument types.
28604
28605 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28606
28607         * icall.c: added GetUninitializedObjectInternal internal call.
28608
28609 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
28610
28611         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
28612         to the right domain.
28613
28614 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
28615
28616         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
28617
28618         * class.c (class_compute_field_layout): set blittable to false for Strings
28619
28620         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
28621
28622 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28623
28624         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
28625         first chunk of code to create types at runtime. Code to
28626         handle ReflectedType/DeclaringType. Make reflection handles
28627         domain specific.
28628
28629 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
28630
28631         * class.c: set correct name in arrays.
28632
28633 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
28634
28635         * appdomain.c (mono_domain_transfer_object): make it work with
28636         valuetypes. bug fixes.
28637
28638 2002-08-12  Dick Porter  <dick@ximian.com>
28639
28640         * object.h: Rename some parameters to avoid c++ keywords (Patch
28641         from Joseph Wenninger <kde@jowenn.at>)
28642
28643 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
28644
28645         * icall.c: added icall to implement Assembly.GetFile*.
28646
28647 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28648
28649         * reflection.h, reflection.c: code to embed managed resources.
28650
28651 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28652
28653         * class.c: move all the type size stuff into
28654         class_compute_field_layout().
28655
28656 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28657
28658         * class.c: ensure enums have always the correct instance size.
28659         * unicode.c: remove wrong assert.
28660
28661 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28662
28663         * assembly.c: fix mem corruption issue.
28664         * image.h, image.c: added mono_image_get_resource () to access
28665         managed resources.
28666         * icall.c: implemented Assembly.EntryPoint property and some
28667         Managed Resources related internalcalls.
28668
28669
28670 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28671
28672         * image.c, image.h: impemented mono_image_get_entry_point ().
28673         * appdomain.c: use mono_image_get_entry_point.
28674
28675 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28676
28677         * reflection.c: support the object type argument when loading
28678         custom attributes.
28679
28680 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
28681
28682         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
28683         String as return type.
28684
28685 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
28686
28687         * reflection.c: fix encoding of named args for custom attrs to match
28688         the ms implementation. Read them back when instantiating custom
28689         attributes.
28690
28691 2002-08-02  Radek Doulik  <rodo@ximian.com>
28692
28693         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
28694         by Dietmar as quick fix
28695         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
28696         16 as stack size, used on more places as quick fix before Dietmar
28697         will fix it properly
28698
28699 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28700
28701         * object.h, object.c: added accessors for fields and properties.
28702
28703 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28704
28705         * class.c, class.h: made mono_class_get_field_from_name ()
28706         loop on parent types.
28707         Added mono_class_get_property_from_name ().
28708
28709 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28710
28711         * class.c, class.h: move the code to setup the type vtable in its own
28712         function so that it can be reused also for types created at runtime.
28713         Eliminate the "class" identifier from the header file.
28714         * reflection.c: setup the vtable for enums so that we can create
28715         objects for use in SetConstant ().
28716
28717 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
28718
28719         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
28720         instead of the delegate itself as this pointer (bug #28383)
28721
28722 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
28723
28724         * marshal.c (mono_marshal_get_managed_wrapper): added return type
28725         conversions.
28726
28727 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28728
28729         * loader.c: don't set the pinvoke bit on icalls.
28730
28731 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
28732
28733         * debug-helpers.c (mono_method_full_name): only print a number to
28734         indicate wrapper type (so that the output is more readable in traces).
28735
28736 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
28737
28738         * class.c (mono_class_init): include method override patch from Paolo
28739
28740 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
28741
28742         * icall.c: fixed GetTypeCode().
28743
28744 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
28745
28746         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
28747         use real delegate invoke function to make it work with multicast
28748         delegates (fix bug# 28291).
28749
28750 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
28751
28752         * object.c: load constant strings.
28753
28754 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28755
28756         * reflection.c: no magic numbers.
28757         * tabledefs.h: security action enum.
28758
28759 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28760
28761         * assembly.c: fix possible memory corruption.
28762
28763 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28764
28765         * reflection.h, reflection.c: added support for linking resources.
28766         * verify.c: check we have an updated corlib.
28767
28768 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
28769
28770         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
28771         string arrays.
28772         (mono_marshal_string_array): null terminate unmanaged string arrays.
28773         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
28774
28775 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
28776
28777         * icall.c: Type.GetType () can now return also types from the
28778         calling assembly.
28779
28780 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28781
28782         * loader.h, loader.c: stack walking support.
28783         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
28784         GetCallingAssembly.
28785
28786 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
28787
28788         * marshal.c: added optimisations for blittable types 
28789
28790         * class.c (mono_array_class_get): do not set blittable attribute on arrays
28791         (mono_class_setup_mono_type): set blittable attribute for single
28792         and double.
28793
28794         * marshal.c (mono_string_utf8_to_builder): impl.
28795         (mono_string_builder_to_utf8): impl.
28796         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
28797
28798 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
28799
28800         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
28801         (mono_marshal_get_managed_wrapper): impl. byref types
28802
28803 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28804
28805         * icall.c:
28806         (search_method): don't display debug message. 
28807
28808 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28809
28810         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
28811
28812 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28813
28814         * appdomain.c: set the missing filename when throwing exception.
28815
28816 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28817
28818         * metadata.c (mono_type_size): code cleanup
28819         (mono_type_stack_size): removed some test code
28820
28821 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
28822
28823         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
28824         mono_get_exception_file_not_found now.
28825
28826         * exception.c (mono_exception_from_name_two_strings): New version
28827         that will call a constructor with two string arguments. 
28828         (mono_get_exception_file_not_found): New helper routine, used to
28829         report file-not-found errors.
28830
28831 2002-07-20  Dick Porter  <dick@ximian.com>
28832
28833         * process.h:
28834         * process.c: Pass file handles to CreateProcess
28835         
28836         * icall.c:
28837         * file-io.h:
28838         * file-io.c: Implemented CreatePipe
28839
28840 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28841
28842         * metadata.c (mono_get_param_info): set alignment for value types
28843
28844 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28845
28846         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
28847         Constify mono_domain_assembly_open().
28848         * loader.c: handle null namespace in icalls.
28849
28850 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28851
28852         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
28853         (emit_str_to_ptr_conv): marshal object as structs
28854
28855         * metadata.c (mono_type_to_unmanaged): marshal object as structs
28856
28857         * marshal.c (mono_marshal_get_runtime_invoke): support value types
28858
28859 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
28860
28861         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
28862         (mono_marshal_get_native_wrapper): we an now return value types
28863
28864 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28865
28866         * verify.c: more checks implemented.
28867
28868 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
28869
28870         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
28871         (fix bug #27695)
28872         (mono_marshal_get_native_wrapper): allow byref arguments
28873         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
28874         impl. PtrToStringXXX methods
28875         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
28876         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
28877         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
28878         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
28879         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
28880
28881 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28882
28883         * reflection.c: fix buglet in parsing an assembly name.
28884
28885 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28886
28887         * marshal.c (emit_ptr_to_str_conv): first impl.
28888
28889 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
28890
28891         * object.c, class.h: cache the vtable in the class as suggested by
28892         vargaz@freemail.hu (Zoltan Varga).
28893
28894 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28895
28896         * class.h, loader.c: added mono_field_from_token().
28897         * verify.c: first cut of type checking code.
28898
28899 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28900
28901         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
28902
28903 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
28904
28905         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
28906         (fix bug #27782)
28907         (mono_marshal_get_remoting_invoke): impl.
28908         (mono_delegate_begin_invoke): impl.
28909         (mono_mb_emit_save_args): impl.
28910         (mono_delegate_end_invoke): impl.
28911         (mono_marshal_get_delegate_begin_invoke):
28912         (mono_marshal_get_delegate_end_invoke):
28913         (mono_marshal_get_delegate_invoke): generate a special name for
28914         those methods (including the signature) and associate them whith
28915         the delegate class. 
28916
28917 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
28918
28919         * reflection.[ch]: 
28920         (mono_reflection_type_from_name): now it has a MonoImage parameter
28921         which is used as the default image to search the type in. If the image
28922         is NULL or getting the type from it fails, it defaults to corlib.
28923
28924         * icall.c: changed 1 call to mono_reflection_type_from_name to match
28925         new parameter.
28926
28927 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28928
28929         * reflection.c: update the parameter table index.
28930
28931 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28932
28933         * domain.c: don't include the mark byte in the string hash.
28934
28935 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28936
28937         * icall.cs: icall for Type.GetTypeCode ().
28938         * verify: a couple of fixes and disabled local initialization checks.
28939
28940 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
28941
28942         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
28943
28944         * debug-helpers.c (mono_method_full_name): print the type of the
28945         runtime wrapper
28946
28947         * metadata.c (mono_signature_hash): a hash function for signatures
28948         (mono_signature_hash): better hash algorithm
28949
28950         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
28951
28952         * debug-helpers.c (mono_method_full_name): this can now generate
28953         method names with signatures
28954
28955         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
28956         method dont have this pointers.
28957
28958 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
28959
28960         * reflection.c: fixup typebuilder tokens.
28961         * image.c: fix buglet.
28962         * marshal.h: remove whitespace.
28963         * metadata.h, metadata.c: reinstate code that was removed.
28964         * verify.c: handle catch directives and fix another couple of bugs.
28965
28966 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
28967
28968         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
28969         (mono_marshal_get_native_wrapper): make it comp. with the old code
28970         (mono_marshal_get_native_wrapper): support boolean
28971         (mono_marshal_get_managed_wrapper): support more types
28972
28973 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
28974
28975         * class.c (class_compute_field_layout): compute class->blittable attribute.
28976
28977 2002-07-09  Dick Porter  <dick@ximian.com>
28978
28979         * threads.c: Make the thread cleaning up cope with threads that
28980         call ExitThread()
28981
28982 2002-07-08  Radek Doulik  <rodo@ximian.com>
28983
28984         * reflection.c (method_encode_code): use non-translated values to
28985         compute finally_start, this fixes exception handling on ppc, yay!
28986
28987         * decimal.h (struct signscale): fix endianess
28988
28989 2002-07-07  Radek Doulik  <rodo@ximian.com>
28990
28991         * reflection.c: swap box_val and not val
28992
28993 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
28994
28995         * reflection.c, reflection.h: handle full assembly info in type name.
28996         Handle Type arguments when loading custom attributes.
28997         * icall.c: updated to use new mono_reflection_type_from_name () method.
28998
28999 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29000
29001         * loader.c:
29002         (method_from_memberref): also print assembly name when method not found.
29003
29004 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29005
29006         * icall.c:
29007         (ves_icall_TypeGetProperties): fixed bug #27473. 
29008
29009 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29010
29011         * reflection.c: display image name and token when cannot find the
29012         .ctor for an attribute.
29013
29014 2002-07-05  Martin Baulig  <martin@gnome.org>
29015
29016         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29017
29018 2002-07-04  Dick Porter  <dick@ximian.com>
29019
29020         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
29021         compile on mingw.  This will cause mingw builds to not wait for
29022         subthreads to terminate after the main thread does.  I've lodged a
29023         bug with the mingw developers for them to wrap OpenThread().
29024
29025 2002-07-03  Dick Porter  <dick@ximian.com>
29026
29027         * threads.c: Store thread IDs instead of handles, because
29028         GetCurrentThread() returns a pseudohandle and therefore stores
29029         useless values.  mono_thread_cleanup() continues checking the
29030         array of threads until it is empty, to cope with subthreads
29031         spawning new threads after the main thread has finished.
29032
29033         * profiler.h:
29034         * profiler.c:
29035         * profiler-private.h: Pass the thread ID to thread profiler
29036         functions, instead of a handle
29037
29038 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29039
29040         * verify.c: fixes to make it more usable.
29041         * pedump.c: added --verify code to verify IL code in an assembly.
29042
29043 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29044
29045         * reflection.c: turn errors into warnings to allow compiling corlib.
29046
29047 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29048
29049         * reflection.c: add special cases to compile corlib.
29050
29051 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29052
29053         * reflection.c: handle properties with only a set method.
29054
29055 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29056
29057         * opcodes.h: add enum with opcodes in opval order.
29058
29059 2002-07-01  Dick Porter  <dick@ximian.com>
29060         
29061         * object.h:
29062         * object.c (mono_runtime_run_main): Removed unneeded argument
29063
29064 2002-06-28  Martin Baulig  <martin@gnome.org>
29065
29066         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29067
29068 2002-06-27  Dick Porter  <dick@ximian.com>
29069
29070         * threads.c: Store the handle in both the parent thread and in the
29071         subthread, to minimise the time between starting a new thread and
29072         storing its ID.
29073
29074 2002-06-26  Dick Porter  <dick@ximian.com>
29075
29076         * appdomain.c (mono_runtime_cleanup): Close the socket library
29077         after all the threads have finished, not before
29078
29079 2002-06-26  Martin Baulig  <martin@gnome.org>
29080
29081         * debug-symfile.c (mono_debug_find_source_location): Added
29082         `guint32 *line_number' argument.  If it's not NULL, store the line number
29083         there and return the file name without the line number.
29084
29085 2002-06-25  Dick Porter  <dick@ximian.com>
29086
29087         * icall.c:
29088         * process.h:
29089         * process.c: Process forking and other support functions
29090
29091 2002-06-25  Dick Porter  <dick@ximian.com>
29092
29093         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
29094         things dont happen when the image is closed.
29095         (mono_image_lookup_resource): Walk the resource section looking
29096         for a particular entry
29097
29098         * cil-coff.h: PE resource section decoding
29099
29100 2002-06-25  Dick Porter  <dick@ximian.com>
29101         
29102         * assembly.h:
29103         * assembly.c: 
29104         (mono_assembly_foreach): Accessor functions to walk the list of
29105         loaded assemblies
29106         (mono_assembly_set_main):
29107         (mono_assembly_get_main): Process methods need to know which
29108         assembly is the "main" one
29109
29110         * object.c (mono_runtime_run_main): Record the main assembly
29111
29112         * debug-helpers.c: Fix typo
29113
29114 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
29115
29116         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
29117         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
29118
29119 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29120
29121         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
29122
29123 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
29124
29125         * image.c (do_mono_image_open): Initialize reference count,
29126         otherwise we leak the MonoImage.
29127
29128 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29129
29130         * reflection.c: small tweak to handle self-hosting.
29131
29132 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29133
29134         * reflection.c: fix type name parse code.
29135
29136 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29137
29138         * reflection.c: break out of the loop.
29139         * image.c: special case corlib.
29140
29141 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29142
29143         * reflection.c: add all the custom attrs at the end to ensure the
29144         ctors have been properly initialized when the attributes are defined
29145         in the current assembly.
29146
29147 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29148
29149         * reflection.c: handle correctly multiple-nested types.
29150
29151 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
29152
29153         * row-indexes.h: fix typos.
29154         * reflection.c: adjust for typos and fix method_def_or_ref
29155         encoding in MethodImpl table.
29156
29157 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29158
29159         * reflection.c: fix entry point patching (thanks Serge!).
29160
29161 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
29162
29163         * verify.c: add check for System.Exception
29164
29165 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29166
29167         * image.c, class.c: minifix for code just c&p'ed.
29168         * reflection.c: warning fix.
29169         * object.h, loader.h, domain.c: load also StringBuilder.
29170
29171 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29172
29173         * marshal.h, marshal.c: some support code to handle complex marshaling.
29174
29175 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29176
29177         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29178         Better signatures with vtable error dump.
29179
29180 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29181
29182         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29183
29184 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29185
29186         * icall.c (ves_icall_Type_GetField): impl.
29187
29188 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29189
29190         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29191         to retrieve a marshal description blob for a field or param.
29192
29193 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29194
29195         * reflection.h, reflection.c: change order of nested type emission
29196         to avoid table corruption. The NestedTypes table is sorted.
29197         * icall.c: change order of GetConstructor results to workaround mcs bug.
29198
29199 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29200
29201         * reflection.h, reflection.c: handle field and param marshal
29202         information.
29203
29204 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29205
29206         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29207
29208 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29209
29210         * reflection.c: fix call convention.
29211
29212 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29213
29214         * reflection.h, reflection.c: mono_image_get_memberref_token()
29215         takes a type instead of a class, now. Added
29216         mono_image_get_array_token() to create tokens for the special
29217         multi-dim array methods.
29218
29219 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29220
29221         * assembly.c: handle modules (no assembly table). Split
29222         loading references in its own function.
29223         * class.c: handle moduleref resolution scope.
29224         * image.c, image.h: cache module name in image.
29225
29226 2002-06-07  Martin Baulig  <martin@gnome.org>
29227
29228         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29229         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29230
29231 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29232
29233         * icall.c: more signature fixes that used uint instead of int.
29234
29235 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29236
29237         * reflection.c: fixed signature of field refs.
29238
29239 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29240
29241         * class.c, reflection.c: handle typerefs of nested types
29242         (both on read and when writing files).
29243
29244 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29245
29246         * icall.c: fix method signatures that tried to workaround the previous
29247         typo, d'oh!
29248
29249 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29250
29251         * debug-helpers.c: fix typo.
29252
29253 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29254
29255         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29256         rewrote the PE/COFF writing code (our programs are understood by the
29257         ms runtime, now).
29258
29259 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29260
29261         * gc.c, gc.h, icall.c: weakreference support.
29262
29263 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29264
29265         * Makefile.am, mono-config.c: use $(sysconfdir).
29266
29267 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29268
29269         * icall.c: changed default precision of Double.ToString() to 15.
29270         Fixed memory leak. Unified with Single.ToString.
29271
29272 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29273
29274         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29275
29276 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29277
29278         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29279         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29280         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29281         and myself.
29282
29283 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29284
29285         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29286
29287 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29288
29289         * reflection.c, socket-io.c: more compilation fixes.
29290
29291 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29292
29293         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29294         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29295         unicode.c: warning and compiler compatibility fixes.
29296
29297 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29298
29299         * class.h, metadata.c: fixed warnings/compilation errors.
29300
29301 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29302
29303         * Makefile.am, mono-config.c, mono-config.h: configuration file
29304         support routines.
29305         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29306         config file. Export methods to insert and lookup mappings.
29307
29308 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29309
29310         * reflection.c: handle types and boxed objects in custom attr
29311         constructors.
29312
29313 2002-05-30  Martin Baulig  <martin@gnome.org>
29314
29315         * debug-symfile.c
29316         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29317
29318 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29319
29320         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29321         to lookup the implmap row for a P/Invoke method.
29322         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29323         P/Invoke method from the runtime on an as needed basis.
29324
29325 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29326
29327         * metadata.c (mono_metadata_parse_signature): impl.
29328
29329 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29330
29331         * class.c: handle .pack directive.
29332
29333 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29334
29335         * object.c: initialize static fields with RVA data.
29336
29337 2002-05-25  Martin Baulig  <martin@gnome.org>
29338
29339         * debug-symfile.c
29340         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29341
29342 2002-05-24  Martin Baulig  <martin@gnome.org>
29343
29344         * debug-symfile.c
29345         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29346         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29347         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29348
29349 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29350
29351         * object.c: special case string ctros in invoke.
29352         * gc.c: silly whitespace changes.
29353
29354 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29355
29356         * threadpool.[ch]: impl. a threadpool that can
29357         be used by mint and mono.
29358
29359 2002-05-22  Martin Baulig  <martin@gnome.org>
29360
29361         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29362         The first argument is now a `MonoReflectionModuleBuilder *', the return
29363         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29364         `methods' field to get the method builder.  The `token' argument is the
29365         unfixed token.
29366
29367         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29368         invalid characters instead of g_assert_not_reached()ing.  This seems
29369         to be the behaviour of mscorlib.
29370
29371 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29372
29373         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29374         Hestilow to fix bug #25104
29375
29376 2002-05-21  Martin Baulig  <martin@gnome.org>
29377
29378         * debug-symfile.c (mono_debug_find_source_location): New function.
29379         Looks up an IL offset in the line number table and returns the source
29380         location as a string.
29381
29382 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29383
29384         * icall.c:
29385         (mono_double_ToStringImpl): changed %f by %g until we have something
29386         better.
29387
29388 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29389
29390         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29391         parameters first in C#.
29392
29393 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29394
29395         * icall.c, reflection.h: added icall to get info about an event.
29396
29397 2002-05-20  Radek Doulik  <rodo@ximian.com>
29398
29399         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29400         endian
29401         (mono_value_box): don't use memcpy for small sizes on
29402         architectures with unaligned access
29403
29404 2002-05-20  Martin Baulig  <martin@gnome.org>
29405
29406         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29407         if `tb->parent == NULL'.
29408         (mono_reflection_create_internal_class): New function.  This is
29409         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29410         for enum types.
29411
29412         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29413         New interncall.
29414
29415 2002-05-19  Martin Baulig  <martin@gnome.org>
29416
29417         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29418         argument to get the length, don't default to the array length.
29419
29420 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29421
29422         * assembly.c (mono_assembly_setrootdir): New function used to
29423         override the MONO_ASSEMBLIES directory.
29424
29425 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29426
29427         * icall.c: ValueType_GetHashCode() initialize local var.
29428
29429 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29430
29431         * reflection.c: sort custom attributes table.
29432
29433 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29434
29435         * reflection.c: support named args in custom attributes (write support).
29436
29437 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29438
29439         * reflection.c: fix finally position calculation.
29440
29441 2002-05-15  Radek Doulik  <rodo@ximian.com>
29442
29443         * reflection.c: fixed endianess at many places
29444
29445         * icall.c (ves_icall_InitializeArray): comment out debug msg
29446
29447 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29448
29449         * object.c (mono_unhandled_exception): new function to handle
29450         unhandled exceptions.
29451         (mono_unhandled_exception): call the UnhandledException event.
29452         (mono_runtime_delegate_invoke): impl.
29453
29454 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29455
29456         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29457         returns the RVA, not the direct pointer to the data. Handle the case
29458         when the class size is fixed.
29459
29460 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29461
29462         * reflection.c: fix some endianess issues.
29463
29464 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29465
29466         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29467
29468         * threads.c (mono_thread_init): added a callback which is invoked
29469         at thread start.
29470
29471 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29472         
29473         * icall.c: make GetHashCode return non-negative values.
29474
29475 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29476
29477         * object.c, icall.c, gc.c: revert to address-based hashcode.
29478
29479 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29480
29481         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29482
29483 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29484
29485         * icall.c, class.c: special case <Module>.
29486
29487 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29488
29489         * icall.c: fix bug in GetNow().
29490
29491 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
29492
29493         * object.c (mono_runtime_class_init): make sure that we call all
29494         static class constructors.
29495
29496 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29497
29498         * reflection.c: sort methodsemantics table.
29499
29500 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29501
29502         * reflection.h, reflection.c: honour init locals setting.
29503
29504 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
29505
29506         * icall.c: copied Double ToStringImpl for Single ToStringImpl
29507
29508 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29509
29510         * reflection.c: support ContructorBuilders in attribute blob creation.
29511
29512 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29513
29514         * reflection.c: some changes to build a binary that can be run
29515         directly in windows.
29516
29517 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29518
29519         * loader.c: print a big message when an icall can't be found.
29520
29521 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29522
29523         * string-icalls.c: fix bug 24248.
29524
29525 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29526
29527         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
29528         icall.c, reflection.h: separate assembly loading by pathname and by
29529         assembly name. Use the MONO_PATH env var to search for assemblies.
29530
29531 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29532
29533         * assembly.c, image.h: add some support for assemblies
29534         with multiple modules.
29535         * class.c, class.h: export mono_class_from_typeref().
29536         * loader.c: remove duplicated code and use mono_class_from_typeref(),
29537         instead.
29538
29539 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29540
29541         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
29542         documentation says (the ECMA one is correct).
29543
29544 2002-05-02  Dick Porter  <dick@ximian.com>
29545
29546         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
29547         Don't name the synchronisation mutex.
29548
29549 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
29550
29551         * rand.c
29552         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
29553         Make the prototypes match.
29554         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
29555         Same.
29556
29557         * icall.c
29558         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
29559         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
29560         all systems have tm.tm_zone, so use strftime() with %Z to print
29561         the timezone abreviation into a temp string.
29562
29563         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
29564         rather than mono_array_addr() on a MonoString on Big Endian
29565         machines.
29566
29567 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
29568
29569         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
29570         fix bug 24041
29571
29572 2002-04-30  Dick Porter  <dick@ximian.com>
29573
29574         * socket-io.c: Cope with SOCKET being an integer rather than a
29575         pointer now.
29576
29577         * threads.c: Added Thread_free_internal, to deal with thread
29578         handle cleanup.  Moved calls to handle_store() and handle_remove()
29579         to start_wrapper(), so each can only be called once.  Allocate
29580         synchronisation blocks with GC_malloc(), and use GC finalisation
29581         to close the handles.
29582
29583         * icall.c: added System.Threading.Thread::Thread_free_internal
29584
29585 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29586
29587         * icall.c: support Environment.Exit, CommandLineArgs().
29588
29589 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29590
29591         * object.c, object.h: added mono_runtime_run_main () and
29592         mono_runtime_get_main_args () for use in System.Environment.
29593
29594 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29595
29596         * gc.c: fix thinko, enable actual finalization since the jit is now
29597         fixed.
29598
29599 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29600
29601         * gc.c, object.c: take into account that an object may be offset wrt the address
29602         returned by GC_malloc().
29603
29604 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29605
29606         * image.c: handle files without entries in the assembly table (modules).
29607
29608 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
29609
29610         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
29611         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
29612         allowed to be null when it's System.Object class setup.
29613
29614 2002-04-27  Martin Baulig  <martin@gnome.org>
29615
29616         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
29617         if `tb->parent == NULL' rather than crashing.
29618
29619 2002-04-28  Nick Drochak  <ndrochak@gol.com>
29620
29621         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
29622         calling acos() where asin() should have been called.
29623
29624 2002-04-26  Martin Baulig  <martin@gnome.org>
29625
29626         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
29627         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
29628         there's a subdirectory called `System', but we don't want to read that
29629         subdirectory as an assembly.
29630
29631 2002-04-25  Martin Baulig  <martin@gnome.org>
29632
29633         * debug-symfile.c: Reflect latest MonoString changes.
29634
29635 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29636
29637         * rand.c, rand.h: instance method icalls need to have an explicit
29638         this pointer as first argument in the C implementation.
29639
29640 2002-04-25  Nick Drochak <ndrochak@gol.com>
29641
29642         * icall.c: Fix typo in map for GetNonZeroBytes
29643
29644 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29645
29646         * string-icalls.c : String does now passes unit tests without any 
29647         errors, the following changes has been made:
29648         
29649         Implemented replace methods.
29650         Renaming of methods to (try) follow the standard.
29651         Fixed compare ordinal
29652         Made all memory allocated directly to function instead of via icall function.
29653         Small performance fix in is_in_array function
29654                         
29655  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
29656
29657         c (mono_string_Internal_ctor_charp_int_int):
29658         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
29659         sindex < 0, throw ArgumentOutOfRangeException instead of
29660         ArgumentNullException.
29661
29662         Added new check for length == 0, however
29663         I need to make it return String.Empty from the C code.
29664         
29665         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
29666         that calculate the length for us here.
29667         
29668         (mono_string_Internal_ctor_sbytep_int_int): Replaced
29669         mono_string_new_utf16 with mono_string_new, since value is utf8.
29670
29671 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29672
29673         * object.c: register the object for finalization if needed.
29674         Allocate one more char in the string for the terminating 0 char.
29675
29676 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29677
29678         * class.c, class.h, image.c: check if a type implemenst a destructor.
29679         Use the proper key for array class lookups.
29680         * icall.c: register the icalls in the System.GC class.
29681         * gc.c, gc.h: GC-related functions and icalls.
29682
29683 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29684
29685         * icall.c:
29686         * socket-io.c:
29687         * unicode.c: free some strings gotten from mono_string_to_utf8 and
29688         changed a couple of free () by g_free ().
29689
29690         * decimal.c: one-liner in the comments for decimal2string ().
29691
29692 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29693
29694         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
29695
29696 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29697
29698         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
29699         * object.c (mono_runtime_invoke_array) : handle null in params
29700
29701 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29702
29703         * string-icalls.c: fixed bug in split (one off bug)
29704
29705 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29706
29707         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
29708         * icalls.c: added String::Equals as internal method
29709
29710 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29711
29712         * threads.c: fixed bug in the double interlocked functions
29713
29714 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
29715
29716         * threads.c: implemented all of the new interlocked icalls.
29717         * string-icalls.c: fix a bug in insert.
29718         * icalls.c: added the icalls for interlocked, removed old string functions.
29719         
29720 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29721
29722         * loader.c: fix off-by-one error when reading argument names.
29723
29724 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29725
29726         * profiler.c: win32 counter implementation (untested).
29727         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
29728         (the latter needs testing and more complete impl. from win32 folks).
29729
29730 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
29731
29732         * object.c: mono_array_new_full workaround mono_array_class_get
29733         problem.
29734
29735 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29736
29737         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
29738         * object.h (mono_string_chars): Changed casting type.
29739
29740 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29741
29742         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
29743                            method signatures to use gunichar2 instead of gint16.
29744
29745 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
29746
29747         * object.h, object.c: domain-specific versions of mono_object_new and
29748         mono_array_new.
29749
29750 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
29751
29752         * object.c: changed String layout
29753
29754         * string-icalls.c (mono_string_Internal_ctor_chara): added
29755         internal string constructors.
29756
29757 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
29758
29759         * threads.c: pass 'this' to the thread start routine.
29760
29761 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29762
29763         * string-icalls.c: fix IndexOf and LastIndexOf. Now
29764         InternalCompareStr don't call twice mono_string_cmp_char for the last
29765         character. Improved performance in mono_string_cmp_char.
29766
29767 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29768
29769         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
29770         code into its own library: libmonoruntime.
29771
29772 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
29773
29774         * object.h, object.c: changed array format so that szarrays do not
29775         require a bounds structure.
29776         * icall.c, appdomain.c: support for new szarray format.
29777
29778 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29779
29780         * metadata.c: compare also the retuns type when comparing signatures:
29781         we didn't do this as an optimization since really overloaded methods
29782         must differ also in the arguments, but this doesn't work with
29783         low-level IL code (or when using explicit conversion operators: see
29784         bug#23498 for an example).
29785
29786 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29787
29788         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
29789
29790 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29791
29792         * icall.c: make MonoType::GetElementType its own icall.
29793
29794 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29795
29796         * icall.c: remove MonoMethod_get_Name().
29797         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
29798         object.
29799
29800 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29801
29802         * string-icalls.c: optimized a few methods.
29803
29804 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29805
29806         * icall.c: added all new string internal calls
29807         * string-icalls.c: added, new string internal call implementation.
29808         * object.c: added mono_string_new_size for allocating a string a size
29809
29810 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
29811
29812         * object.c (mono_object_isinst): use the same code as in the
29813         optimized x86 version.
29814
29815 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29816
29817         * profiler.c: TSC-based timer code (faster and more accurate).
29818         Not hooked up in configure, yet (set USE_X86TSC to 1).
29819
29820 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
29821
29822         * profiler.c, profiler.h: track time spent compiling methods.
29823         * threads.c: track thread creation/destruction.
29824
29825 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
29826
29827         * profiler.c, profiler.h, profiler-private.h: profiling interface
29828         and sample implementation. Moved here so that it can be used also by
29829         the jit.
29830
29831 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
29832
29833         * reflection.c, reflection.h: keep types and other handles separate in
29834         the hash tables for referred tokens. Add guid for modules.
29835
29836 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29837
29838         * assembly.c: fix bugs found with valgrind.
29839         * metadata.h, metadata.c: added mono_metadata_guid_heap().
29840
29841 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
29842
29843         * threads: added icall support for getting current domain for
29844                    the thread.
29845  
29846 2002-04-13  Martin Baulig  <martin@gnome.org>
29847
29848         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
29849         (MonoDebugVarInfo): Added `index' field for register based addresses.
29850         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
29851         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
29852         `MonoDebugVarInfo *params' and `guint32 this_offset' with
29853         `MonoDebugVarInfo *this_var'.
29854
29855         * debug-symfile.c (relocate_variable): New static function to write
29856         a location description for a local variable or method parameter.
29857
29858 2002-04-12  Martin Baulig  <martin@gnome.org>
29859
29860         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
29861         stack offset and begin/end scope address of a local variable.
29862         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
29863         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
29864         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
29865
29866         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
29867         Added new relocation types for start/end scope of a local variable.
29868
29869 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29870
29871         * object.h: add mono_object_domain() macro.
29872         * reflection.c: handle typespecs.
29873         * icall.c: MonoMethod::get_Name() implementation.
29874
29875 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29876
29877         * icall.c: String::GetHashCode() icall implementation.
29878
29879 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29880
29881         * icall.c: String::IndexOfAny icall.
29882         * object.c, object.h: make array->max_length more useful.
29883         Intrduced mono_object_class() and mono_string_length() macros.
29884
29885 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29886
29887         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
29888         instead of g_unichar_isdigit.
29889
29890 2002-04-11  Nick Drochak  <ndrochak@gol.com>
29891
29892         * icall.c: Implement a simple Double.ToString().
29893
29894 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29895
29896         * appdomain.h: only io-layer.h is supposed to be included.
29897         * icall.c: explicitly import environ. Fix warning.
29898
29899 2002-04-10  Nick Drochak  <ndrochak@gol.com>
29900
29901         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
29902                 return true even if it's not Daylight Savings time.
29903                 Only return false for the case where the function isn't
29904                 implemented for a plaform (read Windows).
29905
29906 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29907
29908         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
29909         data with a mutex.
29910
29911 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
29912
29913         * mempool.c (mono_mempool_alloc): only use g_malloc when
29914         absolutely necessary.
29915
29916 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29917
29918         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
29919
29920         * class.c (mono_class_vtable): use domain mempool to allocate vtable
29921         (mono_class_proxy_vtable): use domain mempool
29922
29923 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29924
29925         * appdomain.h, appdomain.c: split initialization that requires the
29926         execution engine support into mono_runtime_init().
29927
29928 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29929
29930         * class.c (mono_class_init): don't include vtable inside MonoClass
29931         to save some memory, gather some statistics.
29932         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
29933
29934 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29935
29936         * icall.c: internalcall implementation for ValueType.Equals().
29937
29938 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
29939
29940         * object.c (mono_message_init): moved 
29941         (mono_runtime_exec_main): new arch. independent impl.
29942         (mono_runtime_invoke_array): new method - like
29943         mono_runtime_invoke, but you can pass an array of objects.
29944         (mono_remoting_invoke): new arch. independent impl.
29945         (mono_message_invoke): new arch. independent impl.
29946         (mono_runtime_class_init): new arch. independent impl.
29947         (mono_runtime_object_init): new arch. independent impl.
29948
29949 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29950
29951         * metadata.c, object.c, reflection.c: documented the exported
29952         functions.
29953
29954 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
29955
29956         * icall.c: simpler code to pass the assembly builder data to corlib.
29957         Implement GetNestedTypes() internalcall.
29958
29959 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29960
29961         * class.c: warn if a type can't be loaded.
29962
29963 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
29964
29965         * image.h: typedef MonoImageOpenStatus
29966         * types.h: removed unused file
29967         
29968 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
29969
29970         * icall.c: Enum_ToObject accepts enum value arguments.
29971
29972 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29973
29974         * class.c: move initialization of properties, events and nested
29975         classes, so that they happen for interfaces, too.
29976
29977 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29978
29979         * icall.c: cleanup some ugly casts in Array_SetValue*.
29980
29981 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29982
29983         * icall.c: the values array fro enums is of the correct type, now.
29984         Implement (correctly) getFullName instead of assQualifiedName for
29985         MonoType.
29986         * reflection.h, reflection.c: added mono_type_get_name ().
29987
29988 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29989
29990         * assembly.c, image.h: for each MonoImage, record from wich assembly
29991         it was loaded.
29992         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
29993         Make Type.Assembly work.
29994
29995 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
29996
29997         * debug-symfile.h: use char* instead of gpointer to avoid
29998         unnecessary casts.
29999
30000         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
30001
30002         * icall.c (ves_icall_InternalExecute): impl. FielSetter
30003         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
30004
30005 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
30006
30007         * icall.c (mono_message_init): impl. (code cleanup)
30008         (ves_icall_InternalExecute): impl. FieldGetter
30009
30010         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
30011         defined we call all (non-static)methods through the vtable. 
30012
30013 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
30014
30015         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
30016         finalizer even though the memory is still referenced (and the chunk of
30017         memory is not freed).
30018
30019 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30020
30021         * assembly.c: fix brokeness.
30022
30023 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
30024
30025         * class.c: kill some warnings. Check explicit interface method
30026         implementation also without considering the namespace.
30027         Load also literal strings in static class data.
30028
30029 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
30030
30031         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
30032         (default_assembly_name_resolver): Make the resolver take the
30033         "base" directory where the assembly was originally defined, so we
30034         can load DLLs that are in the same directory as the assembly that
30035         is being referenced.
30036
30037 2002-03-28  Dick Porter  <dick@ximian.com>
30038
30039         * file-io.h: 
30040         * file-io.c:
30041         * socket-io.c: 
30042         * unicode.h: 
30043         * unicode.c: Warning cleanups
30044
30045 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
30046
30047         * object.h, reflection.h: use the correct type instead of MonoObject.
30048
30049 2002-03-28  Martin Baulig  <martin@gnome.org>
30050
30051         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
30052         (mono_debug_update_symbol_file): Initialize classes if necessary.
30053
30054 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30055
30056         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
30057         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
30058
30059 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
30060
30061         * assembly.h: fix function prototype.
30062         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
30063         * mono-endian.h: use const cast.
30064
30065 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30066
30067         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
30068
30069 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30070
30071         * loader.c: don't assert when a typeref can't be loaded, give
30072         a chance to the runtime to trow an exception instead.
30073         * loader.h: fix warning.
30074
30075 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30076
30077         * class.c (mono_class_proxy_vtable): added proxy support
30078
30079 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
30080
30081         * icall.c: removed last of PAL calls, added System.Environment
30082         * file-io.h, file-io.c: MonoIO implementation
30083         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
30084
30085 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30086
30087         * appdomain.c: do not use the byte marker in ldstr table lookup.
30088         * debug-helpers.c: allow two ':' to separate class and method name.
30089         * object.c: allocate arrays bounds with the GC, too.
30090         * verify: add a few more checks.
30091
30092 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
30093
30094         * reflection.c: output also literal strings. Allocate parameter data
30095         with GC_malloc() (thanks, Martin, for catching this!).
30096
30097 2002-03-26  Martin Baulig  <martin@gnome.org>
30098
30099         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
30100         include the `this' offset in the `param_offsets'.
30101
30102 2002-03-25  Martin Baulig  <martin@gnome.org>
30103
30104         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
30105         mono_debug_get_class() function to get the classes. Added new
30106         relocation types for arrays and strings.
30107         (mono_debug_get_class): New static function to search in all
30108         referenced assemblies for a metadata token.
30109
30110         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
30111
30112 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30113
30114         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
30115         hold gc-allocated objects. Make the string heap a stream like the
30116         others. Removed duplicated code when writing stream info.
30117         Added asserts to catch possible buffer overflows. Set the sorted map
30118         for tables that need sorting. Added some documentation.
30119
30120 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
30121
30122         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
30123         for interned strings and vtables.
30124
30125 2002-03-24  Martin Baulig  <martin@gnome.org>
30126
30127         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
30128         it in the array since it was created with g_slist_prepend().
30129
30130 2002-03-24  Martin Baulig  <martin@gnome.org>
30131
30132         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
30133         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
30134         (mono_debug_method_from_token): Renamed to
30135         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
30136         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
30137
30138         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
30139         relocation types.
30140
30141         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
30142
30143 2002-03-24  Martin Baulig  <martin@gnome.org>
30144
30145         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
30146         (mono_debug_method_from_token): New func.
30147
30148         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
30149         New interncall, calls mono_debug_local_type_from_signature().
30150         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
30151         calls mono_debug_method_from_token().
30152
30153 2002-03-23  Martin Baulig  <martin@gnome.org>
30154
30155         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
30156         specifies the number of bytes to be converted, not the array size.
30157         Return the number of chars, not the number of bytes.
30158         (ves_icall_iconv_get_chars): The `byteCount' argument
30159         specifies the number of bytes to be converted, not the array size.
30160
30161 2002-03-23  Martin Baulig  <martin@gnome.org>
30162
30163         * reflection.h (MonoReflectionSigHelper): New type.
30164
30165         * reflection.c (mono_reflection_sighelper_get_signature_local),
30166         (mono_reflection_sighelper_get_signature_local): New functions.
30167
30168         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
30169         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
30170         interncalls.
30171
30172 2002-03-23  Martin Baulig  <martin@gnome.org>
30173
30174         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
30175         is_writeable is set.
30176         (mono_raw_buffer_update): New function to write the modified map
30177         back to disk.
30178
30179         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30180
30181         * debug-symfile.c (mono_debug_update_symbol_file): Call
30182         mono_raw_buffer_update() when done writing.
30183
30184 2002-03-23  Martin Baulig  <martin@gnome.org>
30185
30186         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30187
30188         * debug-symfile.c: Added support for arguments and local variables.
30189
30190 2002-03-23  Dick Porter  <dick@ximian.com>
30191
30192         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30193         protected by ifdefs, hence breaking the w32 build.
30194
30195 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30196
30197         * object.c: implement is_interned() the right way.
30198
30199 2002-03-21  Martin Baulig  <martin@gnome.org>
30200
30201         * debug-symfile.[ch]: New files to handle debugging information
30202         files. There's also support to dynamically update these symbol
30203         files to include machine dependent information.
30204
30205 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30206
30207         * threads.c (mono_thread_create): new function to create thread
30208         from C
30209
30210 2002-03-20  Martin Baulig  <martin@gnome.org>
30211
30212         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30213         method is a constructor.
30214         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30215         points to ves_icall_InternalInvoke().
30216
30217 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30218
30219         * file-io.c: Flush shouldn't throw exceptions.
30220
30221 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30222
30223         * file-io.c: FileStream flush support; FileSetLength now
30224         restores file pointer.
30225
30226 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30227
30228         * class.c: set image for pointer classes.
30229
30230 2002/03/19  Nick Drochak <ndrochak@gol.com>
30231
30232         * sysmath.c: Forgot one.
30233
30234 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30235
30236         * sysmath.c: Avoid redefining existing names.
30237
30238 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30239
30240         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30241         handled by runtime as icall rather than dllimport from libm.so
30242         * file-io.c, file-io.h: fixed handle argument type.
30243
30244 2002-03-18  Dick Porter  <dick@ximian.com>
30245
30246         * reflection.c (mono_image_get_type_info): rename interface to
30247         iface, because of "#define interface struct" on windows.
30248
30249 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30250
30251         * class.c, class.h: rename and export mono_ptr_class_get().
30252         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30253         * reflection.c, reflection.h, icall.c: better/saner type name
30254         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30255         method signatures.
30256
30257 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30258
30259         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30260
30261         * icall.c (ves_icall_InternalInvoke): impl.
30262
30263 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30264
30265         * reflection.c: output the interface map table, too.
30266
30267 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30268
30269         * class.c (class_compute_field_layout): separate computation of 
30270         static field layout
30271
30272 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30273
30274         * icall.c: added System.Buffer support.
30275         * file-io.c: moved file icalls from PAL to FileStream.
30276
30277 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30278
30279         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30280
30281 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30282
30283         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30284
30285 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30286
30287         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30288
30289 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30290
30291         * debug-helpers.{c,h}: moved here from monograph some useful functions
30292         to locate a method by name/signature in a class or image. Included
30293         also a small and flexible IL disassembler.
30294
30295 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30296
30297         * reflection.c: fixup tokens in methods with small header size, too.
30298
30299 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30300
30301         * object.c (mono_string_to_utf8): remove assert(!error), instead
30302         print a warning. 
30303
30304 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30305
30306         * icall.c: update to the new mono_Array_class_get interface.
30307
30308 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30309
30310         * appdomain.c, object.c: Boehm-GC enable.
30311         * icall.c: make get_data_chunk() support split data requests.
30312         Ensure a class is initialized in more cases. Return only the first
30313         property found in GetProperties() or the compiler gets confused. 
30314         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30315         * reflection.h, reflection.c: add fixup mechanism for field and method
30316         tokens. Initialize assembly->typeref in a single place. Output
30317         properties after events. Support custom attributes for events, too.
30318         Typo fix for paramter custom attrs.
30319
30320 2002-03-07  Martin Baulig  <martin@gnome.org>
30321
30322         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30323
30324 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30325
30326         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30327
30328 2002-03-06  Martin Baulig  <martin@gnome.org>
30329
30330         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30331         non-zero lower bounds. See testcases #F10-#F13.
30332
30333 2002-03-05  Martin Baulig  <martin@gnome.org>
30334
30335         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30336
30337         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30338         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30339         here.
30340         (ves_icall_System_Array_SetValue): Likewise.
30341         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30342         as argument and does the actual work. This function is used when copying a
30343         multi-dimensional array.
30344         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30345         now do all the widening conversions of value types.
30346         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30347
30348 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30349
30350         * class.c: remove some magic numbers and use the smbolic names,
30351         instead. Added init_events() to load event info at class init time.
30352         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30353         and mono_metadata_methods_from_event().
30354         * reflection.h, reflection.c: added support for writing out the evnets
30355         related information.
30356
30357 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30358
30359         * reflection.h, icall.c: use a different method (GetInterfaces)
30360         to gather interface info and add isbyref, isprimitive and
30361         ispointer to the ves_icall_get_type_info() return value.
30362
30363 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30364
30365         * class.h: stared adding support for events.
30366         * icall.c: split find_members implementation. Added debug icall to get
30367         the address of an object.
30368         * reflection.c: handle TypeBuilders in mono_type_get_object().
30369
30370 2002-03-01  Martin Baulig  <martin@gnome.org>
30371
30372         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30373         ArgumentOutOfRangeException(), not an ArgumentException().
30374         (ves_icall_System_Array_GetLowerBound): Likewise.
30375         (ves_icall_System_Array_GetValue): Improved argument checking.
30376         (ves_icall_System_Array_SetValue): Improved argument checking.
30377
30378 2002-03-01  Martin Baulig  <martin@gnome.org>
30379
30380         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30381         called with invalid arguments rather than just dying with g_assert().
30382         (ves_icall_System_Array_SetValue): Likewise.
30383         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30384         raise a NotImplementedException instead.
30385         (ves_icall_System_Array_GetLength): Added argument checking.
30386         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30387
30388 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30389
30390         * object.h (mono_assert): new macros mono_assert and
30391         mono_assert_not_reached
30392
30393 2002-02-28  Martin Baulig  <martin@gnome.org>
30394
30395         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30396         and "System::String::IsInterned" to "System::String::_IsInterned".
30397
30398 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30399
30400         * icall.c: remove hacks for typebuilder. Added icall to create a
30401         modified type from a tybebuilder.
30402         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30403         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30404         to create a backing MonoClass for a TypeBuilder.
30405
30406 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30407
30408         * class.c, class.h: more refactoring of class init.
30409         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30410
30411 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30412
30413         * marshal.c, marshal.h: start of marshaling interface.
30414
30415 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30416
30417         * icall.c: fix order in assembly qualified name icall.
30418
30419 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30420
30421         * class.c: do not free str, since we store it in the hash table.
30422         * reflection.h: add label field to MonoILExceptionInfo.
30423         * reflection.c: handle references to more than one assembly. Handle
30424         case when there isn't a module created in the assembly.
30425
30426 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30427
30428         * class.c: Fix typo. Start refactoring of class init code.
30429
30430 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30431
30432         * appdomain.c: exit with 1 on error.
30433         * class.c: we already have the name in MonoClassField.
30434         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30435         MonoStreamHeader instead of an offset of image->raw_metadata.
30436
30437 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30438
30439         * appdomain.c (mono_init): Be even more descriptive about the error.
30440
30441 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30442
30443         * appdomain.c: give the user an informative message when corlib can't
30444         be loaded.
30445
30446 2002-02-26  Martin Baulig  <martin@gnome.org>
30447
30448         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30449         New icall to get the time zone data.
30450
30451 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30452
30453         * reflection.c: set virtual and raw size of section correctly.
30454         * threads.c: transfer domain information to newly created threads.
30455
30456 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30457
30458         * class.c: when instancing a class in a domain, load the default
30459         vaules for static fields from the constant table. Fix System.Enum to
30460         not be an enum.
30461         * icall.c: implement Object::GetType() internalcall. Implemented
30462         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30463         Fixed checking of binding flags in find_members().
30464         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30465         * reflection.c: handle enumerations when writing to the constant
30466         table. Use a different object cache for types.
30467
30468
30469 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30470
30471         * object.c (mono_object_isinst): fix for arrays
30472
30473         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30474
30475 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30476
30477         * object.c: don't use mprotect ()  and fix intern pool hash table
30478         lookup for big endian systems.
30479
30480 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30481
30482         * icall.c: change type_is_subtype_of () signature.
30483
30484 2002-02-21  Mark Crichton  <crichton@gimp.org>
30485
30486         * rand.c, rand.h: Added random number generator for
30487         System.Security.Cryptography classes.
30488
30489         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30490
30491         * icall.c: Added System.Security.Cryptography calls.
30492
30493 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30494
30495         * class.c, icall.c, metadata.c: better support for pointer types.
30496         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
30497         * reflection.c: Add support for getting custom attrs for properties
30498         and simplify some code.
30499
30500 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30501
30502         * icall.c: change getToken () and add custom attribute GetBlob()helper
30503         method.
30504         * reflection.h: add custom attrs array to the reflection builder structures.
30505         * reflection.c: encode and emit custom attributes for all the relevant
30506         reflection objects. Cache fieldref and methodref tokens. Change
30507         mono_image_create_token() interface to take a MonoDynamicAssembly.
30508         More complete custom attributes decoder. Load custom attributes for
30509         Assembly, Field, Method and Constructor objects, too. Make the
30510         returned array an Attribute[] one, not object[]. Added
30511         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
30512         custom attribute constructor.
30513
30514 2002-02-20  Dick Porter  <dick@ximian.com>
30515
30516         * icall.c:
30517         * rawbuffer.c:
30518         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
30519         problem code out for now).
30520
30521 2002-02-19  Radek Doulik  <rodo@ximian.com>
30522
30523         * object.c (mono_ldstr): use hash table to avoid multiple swapping
30524
30525 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
30526
30527         * icall.c: register the GetCustomAttributes method.
30528         * object.c, object.h: add mono_string_new_len ().
30529         * reflection.h, reflection.c: added mono_runtime_invoke(),
30530         mono_install_runtime_invoke(). Added
30531         mono_reflection_get_custom_attrs () to load custom attributes and
30532         create the attribute objects.
30533
30534 2002-02-19  Dick Porter  <dick@ximian.com>
30535         * threads-dummy-types.c:
30536         * threads-dummy-types.h:
30537         * threads-dummy.c:
30538         * threads-dummy.h:
30539         * threads-pthread-types.c:
30540         * threads-pthread-types.h:
30541         * threads-pthread.c:
30542         * threads-pthread.h:  Deleted obsolete files
30543
30544 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
30545
30546         * class.c (mono_class_vtable): runtime init the class when we
30547         allocate static class data.
30548
30549         * icall.c (ves_icall_System_Array_SetValue): check for null values.
30550
30551         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
30552         and String - but we will need generic marshalling support in the
30553         future. 
30554         (mono_init): set the domain name in a ms compatible way
30555
30556         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
30557         String[].
30558
30559 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
30560
30561         * object.c (mono_array_clone): use alloca() instead of g_malloc  
30562         for sizes
30563
30564         * appdomain.c (mono_domain_unload): impl.
30565
30566 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30567
30568         * appdomain.c, object.c: fix intern pool implementation.
30569         * class.c: fix alignment code.
30570
30571 2002-02-16  Radek Doulik  <rodo@ximian.com>
30572
30573         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
30574         and s2 > s1, just copy lower bytes to be compatible with little
30575         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
30576         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
30577
30578         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
30579         force big_endian to be 1 for big endian machines 
30580         (ves_icall_iconv_new_decoder): ditto
30581
30582 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
30583
30584         * socket-io.c (convert_sockopt_level_and_name): If the system
30585         doesn't define SOL_IP or SOL_TCP, get them by hand using
30586         getprotobyname() and caching the values (because this could be a
30587         slow operation).
30588         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
30589         Use the appropriate struct when the system does support it. Ie,
30590         not all systems have struct ip_mreqn so use struct ip_mreq when
30591         appropriate.
30592
30593 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
30594
30595         * reflection.c: handle finally clauses.
30596
30597 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
30598
30599         * socket-io.c: use g_snprintf() instead of snprintf.
30600
30601 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30602
30603         * reflection.c (mono_param_get_objects): Cast second argument to
30604         mono_method_get_param_names to a const char** to silence the
30605         compiler warning.
30606
30607         * appdomain.c (mono_domain_assembly_open): Put parens around the
30608         truth statement in the for-loop.
30609
30610         * unicode.c (iconv_convert): Got rid of a compiler warning about
30611         int i being unused when the system has a new iconv.
30612         (iconv_get_length): Same.
30613
30614         * image.c (load_class_names): Cast the second argument to
30615         g_hash_table_insert() to char* to hush compiler warnings about the
30616         arg being a const.
30617         (mono_image_open): Same here.
30618
30619         * socket-io.c: Don't conditionally include sys/filio.h or
30620         sys/sockio.h here anymore since we now get them from
30621         io-layer/io-layer.h
30622         (inet_pton): If the system doesn't support inet_aton, implement
30623         using inet_addr and also #define INADDR_NONE if it isn't defined
30624         by the system.
30625
30626 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30627
30628         * metadata.c, metadata.h: added function to get packing and size info
30629         of a typedef.
30630         * reflection.h, reflection.c: handle field RVA data. Save info about
30631         the table layout if needed. Assign typedef indexes to all the types
30632         before dumping the info about them to avoid forward reference problems.
30633
30634 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
30635
30636         * socket-io.c (convert_sockopt_level_and_name): ifdef
30637         SO_ACCEPTCONN because it is not defined on my system (old debian)
30638
30639 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30640
30641         * opcode.c: use stddef.h to get NULL.
30642
30643 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30644
30645         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
30646         for FIONBIO, FIONREAD and SIOCATMARK.
30647         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
30648         define INADDR_NONE and besides, inet_addr() is deprecated and
30649         should not be used. Use inet_pton() instead - it also has the
30650         added bonus that it can easily handle IPv6 addresses as well.
30651         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
30652
30653 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30654
30655         * decimal.c: remove _MSC_VER conditional.
30656
30657 2002-02-13  Dick Porter  <dick@ximian.com>
30658
30659         * socket-io.c: 
30660         * icall.c: Internal calls for Blocking, Select, Shutdown,
30661         GetSocketOption and SetSocketOption
30662
30663 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30664
30665         * assembly.cs: better resolver: use it instead of some kludgy
30666         code.
30667
30668 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
30669
30670         * reflection.c: the best way to speed-up the compiler is to avoid
30671         infinite loops.
30672
30673 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
30674
30675         * class.c (mono_class_vtable): changed the object layout
30676         (obj->vtable->class). 
30677         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
30678
30679 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30680
30681         * assembly.c: look for assemblies in the assembly dir, too.
30682
30683 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30684
30685         * class.c: fix thinko in mono_class_from_type().
30686
30687 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30688
30689         * exception.h, exception.c: added TypeLoadException.
30690         * object.h, object.c: added mono_array_clone ().
30691         * icall.c: handle throwOnError in AssemblyGetType().
30692         Added Array.Clone().
30693         * opcode.h, opcode.c: use a single value for the opcode val.
30694         Compile fix for non-gcc compilers.
30695
30696 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
30697
30698         * opcodes.c, opcodes.h: export interesting info about opcodes.
30699
30700 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
30701
30702         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
30703         icalls. 
30704
30705         * class.c (class_compute_field_layout): set element_class for enums
30706         (mono_class_create_from_typedef): set element_class for normal classes
30707
30708         * icall.c (ves_icall_System_Enum_get_value): impl.
30709
30710         * class.c (mono_class_create_from_typedef): do not set valuetype
30711         flag for System.ValueType and System.Enum
30712
30713 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
30714
30715         * unicode.c (iconv_convert): fix big endian problem.
30716
30717 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30718
30719         * class.c: add asserts if we are ever going to scribble over memory.
30720         * socket-io.c: not all systems have AF_IRDA defined.
30721
30722 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
30723
30724         * class.c (class_compute_field_layout): do not consider static
30725         fields to compute alignment
30726
30727 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
30728
30729         * appdomain.c (mono_appdomain_get): impl.
30730         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
30731
30732 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30733
30734         * icall.c: ignore "file://" prefix when loading an assembly.
30735
30736 2002-01-23  Dick Porter  <dick@ximian.com>
30737
30738         * socket-io.c:
30739         * icall.c:
30740         * Makefile.am: Added socket support
30741
30742 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30743
30744         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
30745         code back.  This should return the assemblies that are loaded by
30746         the runtime on behalf of an application domain. 
30747
30748         The current implementation is still broken, it just returns every
30749         assembly loaded, but until we get real applications domain this
30750         will do.
30751
30752 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
30753
30754         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
30755         AppDomain object.
30756
30757 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30758
30759         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
30760         the mono_class_from_name lookup.
30761         (ves_icall_get_parameter_info): ditto.
30762         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
30763         method.
30764         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
30765
30766 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
30767
30768         * class.c: load also nested classes on class init.
30769         System.ValueType instance methods gets passed boxed
30770         values, unless methods in derived classed that get a pointer to the
30771         data.
30772         * icall.c: use better name parsing code in GetType().
30773         * image.c, image.h: add mono_image_loaded ().
30774         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
30775         * reflection.c, reflection.h: added mono_reflection_parse_type().
30776
30777 2002-01-22  Veronica De Santis <veron78@interfree.it>
30778
30779         * icall.c : Added mapping of internal calls for Manual and Auto reset events
30780         * threads.c : Added the implementation of internal calls for events
30781         * threads.h : Added prototypes of internal calls for events
30782         
30783 2002-01-21  Radek Doulik  <rodo@ximian.com>
30784
30785         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
30786
30787 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
30788
30789         * class.c (mono_class_init): set min_align to 1 (instead of 0)
30790         (mono_class_value_size): use min_align
30791
30792 2002-01-20  Dick Porter  <dick@ximian.com>
30793
30794         * threads.h:
30795         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
30796         so it compiles on w32.
30797
30798 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
30799
30800         * metadata.c (mono_type_stack_size): impl.
30801
30802         * class.c (mono_class_get_field): impl. memberref token
30803
30804 2002-01-16 Veronica De Santis <veron78@@interfree.it>
30805
30806         * icall.h : Added the internal calls mapping for CreateMutex_internal
30807                     and ReleaseMutex_internal.
30808         * threads.h : Added the prototype of mutexes internal calls.
30809         * threads.c : Added the implementations of mutexes internal calls.
30810
30811 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30812
30813         * metaparse.h: removed unused file.
30814         * reflection.c, reflection.h: added stream_data_align () function 
30815         to align data in streams and keep stream aligned. Add support for
30816         exception support in method headers.
30817
30818 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
30819
30820         * unicode.c: make iconv_convert () return the number of bytess written
30821         in the output buffer.
30822
30823 2002-01-15  Dick Porter  <dick@ximian.com>
30824         * threads.c: Make the runtime's idea of infinite timeouts coincide
30825         with the class library's
30826
30827         Fix a particularly egregious bug in mono_thread_cleanup(). That
30828         code was so utterly bogus it must have been written on a Monday.
30829
30830 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30831
30832         * reflection.h: add subtypes field to TypeBuilder.
30833         * reflection.c: encode constants for literal fields.
30834         Handle subtypes. Fix user string token (and add a zero byte)
30835         at the end.
30836         
30837 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
30838
30839         * class.c (mono_class_init): bug fix: assign slot numbers for
30840         abstract methods.
30841
30842 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30843
30844         * reflection.c: don't try to output a code RVA for abstract methods.
30845         Small fixes for method header format. Output parameter info to the
30846         ParamDef table. Save method overriding info to MethodImpl table.
30847         Fix property support. Allow typedef.extends to be a type in the
30848         building assembly.
30849         * verify.c: fix off-by-one error.
30850
30851 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
30852
30853         * class.c: fix mono_class_from_mono_type () for szarray types.
30854         Remove unused cache check in mono_class_from_type_spec().
30855         * icall.c: *type_from_name () functions handle simple arrays and byref.
30856         * reflection.c: handle byref and szarray types. Handle methods without
30857         body (gets P/Invoke compilation working). Handle types and fields in
30858         get_token ().
30859         * reflection.h: add rank to MonoTypeInfo.
30860
30861 2002-01-10  Dick Porter  <dick@ximian.com>
30862
30863         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
30864         internal calls
30865
30866 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30867
30868         * icall.c: initialize class in type_from_handle ().
30869         Loop also in parent classes for get_method ().
30870         * reflection.c: properly encode class and valuetype types.
30871         Start on encoding TypeBuilder types. Handle fieldrefs.
30872         Use correct length when registering a user string.
30873         Handle ConstructorBuilder and MonoMethod in get_token ().
30874         Make mono_type_get_object () aware of cached types.
30875         * object.c: back out change to mono_string_new ().
30876
30877 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
30878         * object.c: mono_string_new should return a NULL when the string 
30879         passed in is NULL -- not try to deference it.
30880         
30881 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30882
30883         * icall.c: hack to make IsSubType work for TypeBuilders.
30884         * reflection.c: emit constructors before methods.
30885         Retrieve param names in mono_param_get_objects().
30886
30887 2002/01/05  Nick Drochak  <ndrochak@gol.com>
30888
30889         * Makefile.am: fix list of headers and sources so automake 1.5
30890         doesn't complain. Removed \# at end of list.
30891
30892 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30893
30894         * reflection.c: get token for a method ref. Set return type of
30895         constructor to void.
30896         * loader.c: debug message.
30897         * class.c: typo fix.
30898
30899 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
30900
30901         * icall.c: fix array init with rank > 1. FindMembers
30902         loops in parent class as well.
30903         * image.c: do not insert nested types in name cache.
30904         * reflection.c: warning fix.
30905         * reflection.h: add override method (for interface impl).
30906
30907 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
30908
30909         * metadata.c: fix customattr decoding.
30910
30911 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
30912
30913         * rawbuffer.cs: Added native Win32 implementation, avoids using
30914         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
30915
30916 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
30917
30918         * class.c: make the low-level routines handle the cache.
30919
30920 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
30921
30922         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
30923
30924 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
30925
30926         * class.c: fix mono_array_element_size() for objects.
30927         * class.h, class.c: add properties to MonoClass and load them
30928         at init time.
30929         * icall.c: check with isinst() when assigning a value to an array
30930         instead of requiring the classes to match exactly.
30931         Implemented icall for System.Type::GetType().
30932         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
30933         enums. Handle bindingflags when looking for methods and fields.
30934         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
30935         and mono_metadata_methods_from_property().
30936         * reflection.h, reflection.c: added structures for propreties,
30937         parameters and enums. Implemented mono_property_get_object() and
30938         mono_param_get_objects().
30939
30940 2001-12-18  Dick Porter  <dick@ximian.com>
30941
30942         * file-io.c: Use mono_string_to_utf16() instead of
30943         mono_string_chars()
30944
30945         * object.c: Added mono_string_to_utf16(), which copies the non
30946         NULL-terminated MonoString into a new double-null-terminated
30947         buffer.
30948
30949 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
30950
30951         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
30952
30953 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
30954
30955         * file-io.c: raise exceptions if handle is invalid.
30956
30957 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
30958
30959         * assembly.c: yet another check for mscorlib.
30960         * class.c, class.h: load nesting info for classes.
30961         * icall.c: many new functions to support the Reflection classes.
30962         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
30963         * reflection.h, reflection.c: mono_image_create_token(),
30964         mono_assembly_get_object(), mono_type_get_object(),
30965         mono_method_get_object(), mono_field_get_object(): methods to return
30966         objects that parallel the C representation of assemblies, types,
30967         methods, fields.
30968
30969 2001-12-11  Dick Porter  <dick@ximian.com>
30970
30971         * icall.c:
30972         * file-io.c: Internal calls for file IO.
30973
30974 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
30975
30976         * tabledefs.h: missing FileAttributes.
30977         * verify.h, verify.c: use is_valid_string () to simplify and check for
30978         valid strings more correctly. Fix warnings and speeling.
30979         Check more tables: Filed, File, ModuleRef, StandAloneSig.
30980         Check code: branches, maxstack, method calls.
30981
30982 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
30983
30984         * object.c (mono_object_allocate): removed static, so that the jit
30985         can allocate value types.
30986
30987         * icall.c (ves_icall_System_DateTime_GetNow): impl.
30988
30989 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30990
30991         * class.c: init enum types right away and register the
30992         token->MonoClass map in mono_class_create_from_typedef ().
30993         * verify.h, verify.c: first cut of the verifier.
30994         * pedump.c: add --verify switch to verify metadata tables.
30995         * tabledefs.h: add some missing enums.
30996
30997 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
30998
30999         * class.c (mono_install_runtime_class_init): impl.
31000         (mono_class_init): renamed mono_class_metadata_init to
31001         mono_class_init, also removed the metadata_inited flag
31002
31003         * object.c (mono_object_isinst): use faster algorithm
31004
31005 2001-11-30  Radek Doulik  <rodo@ximian.com>
31006
31007         * mono-endian.h: reverted last change
31008         added function prototypes
31009
31010         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
31011         add mono-endian.c back
31012
31013         * mono-endian.c: returned back, as Paolo pointed out, it's needed
31014         for unaligned access, I've mistaked it with endianess. I am
31015         sorry.
31016         (mono_read16): fix reverted endianess
31017         (mono_read64): ditto
31018         (mono_read32): ditto
31019
31020 2001-11-30  Dick Porter  <dick@ximian.com>
31021
31022         * exception.c: Implement mono_exception_from_name()
31023
31024 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31025
31026         * metadata.h, metadata.c: remove params_size and locals_size and their
31027         calculation from the metadata code: they are only usefult to the
31028         interp.
31029
31030 2001-11-29  Radek Doulik  <rodo@ximian.com>
31031
31032         * object.c (mono_ldstr): swap bytes here, it's probably not the
31033         best place, but works for me now, I'll redo it once I know mono
31034         better, also note that I add PROT_WRITE and don't reset back, also
31035         note that it's only affects big endians, so x86 should be OK
31036
31037         * mono-endian.h (read16): use just glib macros for both endians
31038
31039         * mono-endian.c: removed as glib macros are used in in
31040         mono-endian.h so we don't need to care about endianess for read
31041         macros as glib does that for us already
31042
31043 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
31044
31045         * class.h, class.h: take minimum alignment into consideration so
31046         that the fields of a class remain aligned also when in an array.
31047
31048 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31049
31050         * loader.h, loader.c: add mono_method_get_param_names().
31051         * class.c: 0-init class fields.
31052
31053 2001-11-26  Dick Porter  <dick@ximian.com>
31054
31055         * icall.c:
31056         * threads-types.h:
31057         * threads.c: New file that handles System.Threading on all platforms
31058
31059         * object.c: 
31060         * object.h: Remove the synchronisation struct from MonoObject,
31061         replace it with a pointer that gets initialised on demand
31062
31063         * Makefile.am: Replace all the system-specific threading code with
31064         a single file that uses the new wrapper library
31065
31066 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
31067
31068         * class.c, class.h: add mono_install_trampoline() so that the runtime
31069         can register a function to create a trampoline: removes the ugly
31070         requirement that a runtime needed to export arch_create_jit_trampoline.
31071         * object.h, object.c: added mono_install_handler() so that the runtime
31072         can install an handler for exceptions generated in C code (with
31073         mono_raise_exception()). Added C struct for System.Delegate.
31074         * pedump.c: removed arch_create_jit_trampoline.
31075         * reflection.c: some cleanups to allow registering user strings and
31076         later getting a token for methodrefs and fieldrefs before the assembly
31077         is built.
31078         * row-indexes.h: updates and fixes from the new ECMA specs.
31079
31080 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
31081
31082         * class.h, class.c: add enum_basetype field to MonoClass.
31083         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
31084         to get index in the constant table reated to a field, param or
31085         property.
31086         * reflection.h, reflection.c: handle constructors. Set public-key and
31087         version number of the built assembly to 0.
31088         * row-indexes.h: update from new ECMA spec.
31089
31090 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31091
31092         * class.h, class.c: add a max_interface_id to MonoClass.
31093         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
31094         since it's used to do that. Added mono_type_type_from_obj().
31095         Make GetType() return NULL instead of segfaulting if the type was not
31096         found. Handle simple arrays in assQualifiedName.
31097         * object.h: add a struct to represent an Exception.
31098         * reflection.c: output call convention in method signature.
31099         Add code to support P/Invoke methods and fixed offsets for fields.
31100
31101 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
31102
31103         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
31104         the value.
31105         * icall.c: use mono_array_addr instead of array->vector: fixes the
31106         reflection image writing.
31107         * reflection.c: init call convention byte to 0 in method signature.
31108         Encode the property signature. Don't output property-related methods
31109         twice. Really process the properties for a type (don't cast a field to
31110         a property, my mom always told me that).
31111         Fix 64 bit issues in pointer alignment in a different and more
31112         readable way.
31113
31114 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
31115
31116         * loader.h: Removed type class from MonoDefaults, added monotype
31117
31118         * loader.c: Loaded MonoType, removed loading of Type
31119
31120         * icall.c (my_mono_new_object): Now returns a System.MonoType,
31121         and fills in System.Type._impl with a RuntimeTypeHandle rather
31122         than the actual MonoClass *
31123
31124         (ves_icall_type_from_handle): change from type_class to
31125         monotype_class
31126
31127         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
31128         implemented
31129
31130         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
31131         implemented
31132
31133         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
31134
31135         (ves_icall_System_Reflection_Assembly_GetType): implemented
31136
31137         (ves_icall_System_MonoType_assQualifiedName): implemented
31138
31139         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
31140
31141 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
31142
31143         * assembly.c (mono_assembly_open): Implement a cache for the
31144         assemblies. 
31145
31146         (mono_assembly_close): only destroy the assembly when the last
31147         reference is gone.
31148         
31149 2001-11-09  Dick Porter  <dick@ximian.com>
31150
31151         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
31152
31153 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
31154
31155         * class.c (mono_class_metadata_init): bug fix: compute the right slot
31156
31157 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31158
31159         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
31160         from Martin Weindel.
31161         * object.h: add mono_string_chars ().
31162
31163 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
31164
31165         * reflection.c (build_compressed_metadata): Eliminates warnings
31166         and uses 64-bit clean code.
31167
31168         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
31169         (mono_type_equal): Change signature to eliminate warnings.
31170
31171 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31172
31173         * icall.c, loader.c: remove the internalcall array constructors.
31174         Changes to match the new MonoArray structure.
31175         * object.h, object.c: an array object doesn't allocate an extra
31176         vector. Add mono_array_new_full () to create jagged arrays easily.
31177
31178 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31179
31180         * metadata.h, metadata.c: add mono_metadata_field_info () to
31181         retreive all the info about a field from vairous tables.
31182         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31183         * class.h, class.c: augment MonoClassField with more info.
31184         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31185         policy and load a field's RVA if needed.
31186
31187 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31188
31189         * class.c (mono_class_metadata_init): create a trampoline for all
31190         virtual functions instead of actually compiling them.
31191
31192 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31193
31194         * class.h, class.c: include name in MonoClassField.
31195         * class.c: fix fundamental type of System.Object and System.String.
31196         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31197         tokens in ldtoken.
31198         * icall.c: remove internalcalls for the Reflection stuff that is now
31199         done in C# code.
31200         * loader.c: mono_field_from_memberref () implementation.
31201         * mono-endian.c: thinko (s/struct/union/g).
31202         * object.c, object.h: make the mono_string_* prototypes actually use
31203         MonoString instead of MonoObject.
31204         * reflection.c, reflection.h: updates for changes in the reflection
31205         code in corlib: we use C structures that map to the actual C# classes.
31206         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31207         fat method header if needed and use the info from the ILGenerator for
31208         methods. Handle fields in types. Misc fixes.
31209
31210 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31211
31212         * class.c (mono_class_metadata_init): bug fix: always allocate
31213         space for static class data
31214
31215 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31216
31217         * class.c (mono_compute_relative_numbering): use relative
31218         numbering to support fast runtime type checks.
31219
31220 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31221
31222         * class.c (mono_class_create_from_typeref): added debugging output
31223         to print class name when MonoDummy is returned instead of real class
31224
31225 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31226
31227         * class.c (mono_class_metadata_init): interface offset table now
31228         contains pointers into the vtable - this is more efficient for the jit
31229
31230 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31231
31232         * class.c (mono_class_metadata_init): use a temporary vtable (the
31233         old algorithm only worked for the interpreter, but not for the jit)
31234
31235 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31236
31237         * loader.c (method_from_memberref): use mono_class_get to get the
31238         class of an array instead of using System.Array directly.
31239         (mono_get_method): also add MEMBERREF methods to the method cache
31240         which usefull for arrays.
31241
31242 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31243
31244         * pedump.c (arch_compile_method): added to compute vtable entry
31245
31246         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31247         number of interfaces.
31248         
31249         * class.h: merged MonoArrayClass into MonoClass
31250
31251         * class.c (mono_class_create_from_typedef): compute the vtable size and
31252         allocate space to include the vtable inside MonoClass
31253         (mono_class_metadata_init): initialize the vtable
31254
31255 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31256
31257         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31258         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31259         * image.c: endian fixes by Laurent Rioux.
31260         * object.h, object.c: rename MonoStringObject to MonoString and
31261         MonoArrayObject to MonoArray. Change some function names to conform to
31262         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31263         guint16* as first argument, so don't use char*.
31264         Provide macros to do the interesting things on arrays in a portable way.
31265         * threads-pthread.c: updates for the API changes and #include <sched.h>
31266         (required for sched_yield()).
31267         * icall.c: updates for the API changes above.
31268         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31269         platforms that need them.
31270
31271 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31272
31273         * class.c: set the correct type for all the fundamental
31274         type when loading the class.
31275
31276 2001-10-05  Dick Porter  <dick@ximian.com>
31277
31278         * threads-pthread.c (pthread_mutex_timedlock): Simple
31279         compatibility version for C libraries that lack this call.
31280
31281 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31282
31283         * class.c: MonoTypes stored in MonoClass are stored as
31284         fundamental MonoTypes when the class represents a
31285         fundamental type (System.Int32, ...).
31286         The TypeHandle return by ldtoken is a MonoType*.
31287         * icall.c: ves_icall_get_data_chunk () write out all the
31288         PE/COFF stuff. Implement ves_icall_define_method (),
31289         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31290         * image.c: properly skip unknown streams.
31291         * loader.h, loader.c: add type_class to mono_defaults.
31292         * metadata.c, metadata.h: export compute_size () as
31293         mono_metadata_compute_size () with a better interface.
31294         Typo and C&P fixes.
31295         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31296         * reflection.c, reflection.h: many cleanups, fixes, output method
31297         signatures and headers, typedef and typeref info, compress the metadata
31298         tables, output all the heap streams, cli header etc.
31299         * row-indexes.h: typo fixes.
31300
31301 2001-10-04  Dick Porter  <dick@ximian.com>
31302
31303         * object.h: Add a synchronisation mutex struct to MonoObject
31304
31305         * object.c (mono_new_object): Initialise the object
31306         synchronisation mutexes
31307
31308         * icall.c: System.Threading.Monitor internal calls
31309         
31310         * threads-pthread.h:
31311         * threads-pthread.c: System.Threading.Monitor internal calls
31312
31313         * threads-types.h: New file, includes the system-specific thread
31314         structures
31315         
31316         * threads-pthread-types.h:
31317         * threads-pthread-types.c: New files, handle pthread-specific
31318         synchronisation types
31319
31320         * threads-dummy-types.h: 
31321         * threads-dummy-types.c: New files of dummy support for
31322         thread-specific types
31323
31324         * metadata.c:
31325         * image.c:
31326         * pedump.c: include mono-endian.h not endian.h
31327         
31328         * Makefile.am: More threads files.
31329         Name mono-endian.h not endian.h
31330
31331 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31332
31333         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31334         stuff and implement a few more bits.
31335         * icall.c: a field needs to be dereferenced twice. Do not use the same
31336         name for two variables in the same scope.
31337         * image.c, image.h: cleanups.
31338
31339 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31340
31341         * class.c (mono_class_metadata_init): bug fix: compute the right size
31342
31343 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31344
31345         * icall.c: implemented some of the Reflection internalcalls.
31346         * image.c, image.h: start writing out the PE/COFF image.
31347         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31348         that does the reverse than decode_blob_size ().
31349         * object.c: use mono_metadata_encode_value (). Move here
31350         temporary implementation of mono_string_to_utf8 ().
31351         * rawbuffer.c: make malloc_map static.
31352
31353 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31354
31355         * metadata.c: fix type comparison for arrays.
31356         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31357         Added a couple of new classes to monodefaults.
31358         * icall.c: added a couple of Reflection-related internalcalls.
31359         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31360         Added a byval_arg MonoType to MonoClass.
31361
31362 2001-09-28  Dick Porter  <dick@ximian.com>
31363
31364         * icall.c:
31365         * threads-pthread.h: 
31366         * threads-pthread.c: Implemented internal calls for
31367         LocalDataStoreSlot operations.  Applied mutexes around all shared
31368         data.  Reworked the thread creation and Start() operations to
31369         avoid a race condition.
31370         
31371         * threads-dummy.h:
31372         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31373
31374 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31375
31376         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31377
31378 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31379
31380         * class.c, loader.c: warn and return NULL instead of erroring out.
31381         * icall.c: added System.AppDomain::getCurDomain().
31382         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31383
31384 2001-09-25  Dick Porter  <dick@ximian.com>
31385
31386         * threads-pthread.h:
31387         * threads-pthread.c: Implemented timed thread joining and added
31388         System.Threading.Thread::Join_internal internal call
31389
31390         * icall.c: Added System.Threading.Thread::Join_internal internal call
31391
31392         * threads-dummy.h:
31393         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31394
31395 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31396
31397         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31398         mono_string_intern () to implement the semantics of the ldstr opcode
31399         and the interning of System.Strings.
31400         * icall.c: provide hooks to make String::IsIntern and String::Intern
31401         internalcalls.
31402
31403 2001-09-23  Dick Porter  <dick@ximian.com>
31404
31405         * threads-dummy.c: 
31406         * threads-dummy.h: New files of dummy threading routines
31407
31408         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31409         support code based on system specifics
31410
31411         Rename PTHREAD_LIBS to THREAD_LIBS
31412         
31413 2001-09-23  Dick Porter  <dick@ximian.com>
31414
31415         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31416         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31417         internal calls.
31418         (mono_thread_init): Set up a Thread object instance to return when
31419         the main thread calls Thread.CurrentThread
31420         (mono_thread_cleanup): Wait for all subthreads to exit
31421
31422         * icall.c: New internal calls for System.Threading.Thread::Sleep
31423         (including Schedule) and CurrentThread
31424
31425         * threads.h: New file, to insulate thread-specific stuff from the
31426         rest of the code
31427
31428 2001-09-21  Dick Porter  <dick@ximian.com>
31429
31430         * threads-pthread.h: 
31431         * threads-pthread.c: New file, for handling pthreads-style
31432         threading support.  Start() now starts a new thread and executes
31433         the ThreadStart delegate instance.
31434
31435         * icall.c: Added the internalcall for
31436         System.Threading.Thread::Start_internal
31437
31438         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31439
31440 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31441
31442         * loader.c: work around the different signatures for delegates
31443         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31444
31445 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31446
31447         * class.h, class.c: add mono_class_get_field_from_name ().
31448         * *: Fix C comments and other ANSI C issues.
31449
31450 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31451
31452         * endian.h, assembly.c: fix some endianness issues.
31453
31454 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31455
31456         * loader.h, load.c: add delegate_class to mono_defaults.
31457         Handle runtime provided methods in mono_get_method ().
31458
31459 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31460
31461         * loader.c (mono_get_method): use pinvoke for internal call
31462
31463         * icall.c: use pinvoke for internal call
31464
31465         * loader.c (method_from_memberref): set the method name
31466
31467 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31468
31469         * metadata.c: help the compiler generate better code for
31470         mono_class_from_mono_type ().
31471
31472 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31473
31474         * class.c (mono_class_metadata_init): delayed computing of the
31475         class size to mono_class_metadata_init ()
31476
31477 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31478
31479         * class.c, class.h: add an interfaces member to MonoClass.
31480         * image.c, image.h: add assembly_name field to MonoImage
31481         from the assembly table.
31482         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31483
31484 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31485
31486         * class.c: Handle Array in mono_class_from_mono_type ().
31487         * metadata.c, pedump.c: some endian fixes.
31488
31489 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31490
31491         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
31492         * metadata.c: fix small problem introduced with the latest commit.
31493
31494 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
31495
31496         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
31497         We don't need a MonoMetadata pointer anymore to compare signatures in
31498         mono_metadata_signature_equal (), update callers.
31499         Reduced memory usage an number of allocations for MonoMethodHeader and
31500         MonoMethodSignature.
31501
31502 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
31503
31504         * metadata.c: added compare for szarray.
31505
31506 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
31507
31508         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
31509         and add a couple more types to it and mono_defaults. Give an hint on
31510         classes that need implementing in our corlib and are referenced
31511         in mscorlib.
31512
31513 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
31514
31515         * class.h, class.c: keep track if a class is also an Enum.
31516         * loader.c: Implement a couple more types for use in libffi
31517         marshalling. Gives better diagnostics when failing to dlopen
31518         a library. Set method->klass for P/Invoke methods, too.
31519
31520 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
31521
31522         * class.c, class.h: add a MonoType this_arg to MonoClass that
31523         represents a pointer to an object of the class' type that
31524         can be used by the interpreter and later the type cache.
31525         Add best guess alignment info for valuetype objects.
31526
31527 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
31528
31529         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
31530         into MonoType: one less level of indirection and allocation and
31531         simplifies quite a bit of code. Added cache for MonoTypes that are
31532         used frequently, so that we don't need to allocate them all the time.
31533
31534 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
31535
31536         * class.c (mono_class_create_from_typedef): System.Enum is also a
31537         value type, although it does not derive from System.ValueType
31538         (maybe a bug in the ms compiler?)
31539
31540         * metadata.c (mono_type_size): return the right size for value types
31541
31542         * loader.c (mono_get_method): only initialize method header if not abstract
31543
31544         * class.c (mono_class_from_mono_type): use mono_default values. 
31545
31546 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
31547
31548         * *: use MonoClass pointers instead of <type_tokens>
31549         
31550         * class.h: new flag: metadata_inited.
31551
31552         * class.c (mono_class_metadata_init): impl.
31553         (mono_class_instance_size): impl.
31554         (mono_class_data_size): impl.
31555
31556 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31557
31558         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
31559         MonoClass now has the name and name_space fields. 
31560         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
31561         mono_get_method () takes and optional MonoClass as argument.
31562         Removed mono_typedef_from_name() and added mono_class_token_from_name()
31563         instead that takes advantage of a map from class names to typedef
31564         tokens in MonoImage.
31565
31566 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
31567
31568         * metadata.c: zero is not a valid alignment boundary.
31569         Merge MONO_TYPE_VOID in default decoding code.
31570
31571 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
31572
31573         * image.h: merged MonoMetadata into MonoImage
31574
31575         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
31576         identify the type of elements.
31577
31578 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
31579
31580         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
31581         * cil-coff.h: split MonoMSDOSHeader and add size info.
31582         * image.c: add some consistency checks.
31583         * metadata.c: fix row size computation: one programmer
31584         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
31585         add explanation for the locator routine.
31586         Fix decoding of size in method header.
31587         
31588 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
31589
31590         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
31591         (g_concat_dir_and_file): Bring g_concat_dir_and_file
31592         function from gnome-libs.  This uses the right path separator
31593         based on the OS, and also works around a bug in some systems where
31594         a double slash is not allowed. 
31595         (default_assembly_name_resolver): Use g_concat_dir_and_file
31596         (mono_assembly_open): ditto.
31597
31598 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
31599
31600         * metadata.c (mono_metadata_signature_equal): impl.
31601
31602         * *: void is now a realy MonoType (instead of using NULL)
31603         
31604         * metadata.c (do_mono_metadata_parse_type): use
31605         mono_metadata_parse_type to parse void value.
31606
31607 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
31608
31609         * metadata.c, metadata.h: in the signature and method header store
31610         only the space required for holding the loca vars and incoming arguments.
31611
31612 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
31613
31614         * metadata.c (do_mono_metadata_parse_type): treat void like any
31615         other type (instead of assigning NULL);
31616
31617 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
31618
31619         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
31620
31621 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
31622
31623         * image.c (do_mono_image_open): added a cache for arrays.
31624
31625 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31626
31627         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
31628         decode a single column from a row in a metadata table and changes
31629         to take advantage of it in the typedef locator (gives a nice speed up).
31630         Store offset info for function params.
31631
31632 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
31633
31634         * image.h (MONO_IMAGE_IS_CORLIB): removed 
31635
31636 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
31637
31638         * assembly.c: how could mono_assembly_close () had ever worked?
31639         * metadata.c, metadata.h: provide offset info for local vars.
31640         Implement mono_type_size () to take care of alignment as well
31641         as size (it was mono_field_type_size in cli/class.c before).
31642
31643 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
31644
31645         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
31646
31647         * assembly.h (CORLIB_NAME): set to corlib.dll
31648
31649         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
31650
31651 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31652
31653         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
31654         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
31655         tokentype.h: massive namespace cleanup.
31656
31657 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31658
31659         * metadata.h, metadata.c: decode exception clauses when parsing method header.
31660
31661 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
31662
31663         * metadata.c (mono_metadata_free_type): added check for type !=
31664         NULL (void) before calling mono_metadata_free_type()
31665
31666 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
31667
31668         * metadata.h, row_indexes.h: added header with enumerations to use
31669         to index in the columns from tables in metadata and to decode coded
31670         tokens: we should start using this instead of embedding magic numbers
31671         all over the code.
31672
31673 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
31674
31675         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
31676         Move metadata_t info from cli_image_info_t to MonoImage, where
31677         it's easily accessible. Changed all the uses accordingly.
31678         Added the method and class caches to MonoImage.
31679         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
31680         and mono_metadata_decode_value () signature to be more consistent
31681         with the other parse functions (and simplify code). Taken advantage
31682         of zero-length array allocation with GCC. Removed reduntant (and
31683         wrong) MonoFieldType struct and use MonoParam instead. Changed
31684         mono_metadata_parse_field_type () to use common code for parsing.
31685         Added mono_metadata_typedef_from_field () and
31686         mono_metadata_typedef_from_method () to lookup a typedef index from a
31687         field or method token.
31688         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
31689
31690 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
31691
31692         * metadata.c (mono_metadata_parse_field_type): Implement. 
31693         (do_mono_metadata_parse_type): Split engine from
31694         mono_metadata_parse_type, so that we can create smaller structures
31695         for things that just have one pointer to the MonoType (look at
31696         the MonoFieldType)
31697
31698 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
31699
31700         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
31701         as Jan Gray found out, it is incorrect. 
31702
31703 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
31704
31705         * assembly.c: Implement asssembly loading.  This loads an image
31706         and loads all the referenced assemblies.  Come to think of it, we
31707         could always do lazy loading of the assemblies. 
31708
31709         * image.c (mono_image_open): Keep loaded images in a hashtable.
31710
31711         * image.h (MonoImage): Add reference count.
31712
31713 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
31714
31715         * assembly.c (mono_assembly_open): Keep track of the file name in
31716         case the assembly has no ASSEMBLY table.
31717
31718         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
31719         from get.c here.
31720
31721 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
31722
31723         * metadata.c, metadata.h: decode local vars in method header
31724         parse function. Change callers accordingly.
31725
31726 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
31727
31728         * metadata.h, cil-coff.h: protect against multiple inclusion.
31729         Added some new structures to hold information decoded from metadata:
31730         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
31731         and relevant decoding/free functions.
31732         * metadata.c: implement decoding functions. Add warning for out of bounds
31733         index in mono_metadata_locate(). Implement mono_get_method () to retreive
31734         all the info about a method signature and invocation. Remove check on
31735         uninitialized local var in parse_mh() and fix memory leak.
31736
31737 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
31738
31739         * metadata.h: More macros.
31740
31741         * tokentype.h: New file.
31742
31743 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
31744
31745         * assembly.c: added a consistency check and initialize
31746         some structures with g_new0().
31747         * metadata.c: fixed a couple more bugs in table size computation
31748         and add other checks for out-of bound access to metadata.
31749
31750 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
31751
31752         * metatada.c: fix bugs computing table sizes. Spew a
31753         warning when index in string heap is out of bounds.
31754
31755 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
31756
31757         * metadata.h: Add a couple of macros to manipulate tokens. 
31758
31759 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31760
31761         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
31762         cli_section_tables).
31763
31764 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
31765
31766         * metadata.c (mono_metadata_user_string): New function, provides
31767         access to the UserString heap. 
31768
31769 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
31770
31771         * metadata.c: Add inline documentation.
31772
31773 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
31774
31775         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
31776         files. 
31777
31778 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
31779
31780         * typeattr.h: New file, TypeAttribute flags. 
31781
31782 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
31783
31784         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
31785         mono_assembly_ensure_section): Section loading code.
31786         (load_section_tables): Load the sections.
31787
31788         * mono/metadata/metadata.c (mono_metadata_locate_token,
31789         mono_metadata_locate): Functions to locate the information
31790         definition given a token or a table and an index.
31791         (mono_metadata_compute_table_bases): New.
31792         (compute_size): New function to compute the sizes of the various
31793         tables.
31794
31795         * mono/metadata/metadata.h: Finish listing the different index
31796         types. 
31797
31798         * mono/metadata/pedump.c: Improve to dump new information.
31799
31800 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
31801
31802         * mono/metadata/metadata.c: Entered all the tables matching
31803         Beta2. 
31804
31805         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
31806
31807
31808
31809