2009-04-29 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * metadata-verify.c: Verify the custom attribute table.
4
5 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6
7         * metadata-verify.c: Verify the constant table.
8
9 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
10
11         * metadata-verify.c: Verify the memberef table.
12
13 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
14
15         * metadata-verify.c (get_coded_index_token): Remove
16         dead argument.
17
18 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
19
20         * metadata-verify.c: Verify the interfaceimpl table.
21
22 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
23
24         * verify.c: Improve error message.
25
26         * debug-helpers.c (mono_type_get_desc): Harden the code that
27         deals with VAR and MVAR.
28
29 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
30
31         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
32         part of #498692.
33
34 2009-04-23 Tom Hindle <tom_hindle@sil.org>
35
36         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
37         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
38
39 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
40
41         * security-core-clr.c: Avoid redundant checks for platform code, 
42         e.g. check for method and for class (very common) and check
43         for class and outer class (less common)...
44
45 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
46
47         * reflection.c: Avoid returning random cattrs for synthetic methods.
48         Fixes #498545.
49
50 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
51
52         * assembly.c: assemblies in the GAC should never be shadow-copied.
53
54 2009-04-26  Mark Probst  <mark.probst@gmail.com>
55
56         * domain.c, domain-internals.h: Disable
57         track_resurrection_{objects,handles}_hash in MonoDomain if using
58         SGen.
59
60 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
61
62         * metadata-verify.c: Verify the param table.
63
64 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
65
66         * metadata-verify.c (verify_typedef_table): Range check FieldList and
67         MethodList.
68
69         * metadata-verify.c (verify_method_table): Proper check the ParamList
70         field.
71
72 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
73
74         * metadata-verify.c (verify_method_table): Check for runtime
75         implemented functions such as delegate .ctors. Remove spurious
76         printf.
77         
78 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
79
80         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
81
82 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
83
84         Don't allocate MonoGenericInfo for ownerless generic params.
85         * class-internals.h (MonoGenericParam::info): Move field to ...
86         (MonoGenericParamFull): ... this.  New struct.
87         (MonoGenericContainer::type_params): Change type to
88         MonoGenericParamFull.
89         (MonoGenericParam, MonoGenericContainer): Update accessors.
90         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
91         'info' field for ownerless generic param.
92         (mono_metadata_load_generic_params): Update to changes.
93         * reflection.c (mono_reflection_create_generic_class): Likewise.
94         (reflection_methodbuilder_to_mono_method): Likewise.
95         (mono_reflection_initialize_generic_parameter): Likewise.
96
97 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
98
99         Don't use MonoGenericParamInfo for ownerless generic params.
100         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
101         use ParamInfo class at all.
102         (mono_class_from_generic_parameter): Use them.
103         (make_generic_param_class): Fix a couple of instances where 'pinfo
104         == NULL' wasn't handle.
105
106 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
107
108         * class.c (make_generic_param_class): Carve out of ...
109         (mono_class_from_generic_parameter): ... here.
110
111 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
112
113         Simplify mono_class_from_generic_parameter
114         * class-internals.h (MonoGenericParamInfo::token): New field.
115         * metadata.c (mono_metadata_load_generic_params): Initialize it
116         from metadata.
117         * class.c (mono_class_from_generic_parameter): Use it instead of
118         searching through metadata.
119
120 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
121
122         * metadata-verify.c: Add verification of the method table.
123
124 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
125
126         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
127         Delegate::Invoke optimization.
128
129 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
130
131         * appdomain.c (mono_domain_create_appdomain_internal): Free the
132         string returned by get_shadow_assembly_location_base.
133
134         * appdomain.c (get_shadow_assembly_location_base): Add a comment
135         about caller's ownership.
136
137 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
138
139         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
140         reflection memory on domain unload.
141
142         * domain.c (mono_domain_free): Don't free refobject_hash, let the
143         reflection cleanup code do it.
144
145         * domain-internals.h: Add mono_reflection_cleanup_domain.
146
147         This fixes a memory leak for managed mirrors of reflection objects
148         on domain unload. 
149
150 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
151
152         * metadata-verify.c: Implement more verification of the field table.
153
154 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
155
156         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
157         doesn't try to parse the input assembly, which can be broken.
158
159 2009-04-23  Mark Probst  <mark.probst@gmail.com>
160
161         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
162         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
163         by using the lowest bit in the link to store whether the link is
164         tracked.  Move the track_resurrection hashes into boehm-gc.c.
165
166 2009-04-22  Miguel de Icaza  <miguel@novell.com>
167
168         * Makefile.am: Split the console support in platform specific code
169         and put together a framework for making this easy in the future so
170         that we can start splitting code instead of having a mess of PLATFORM_WIN32
171
172 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
173
174         * pedump.c: Fix a warning.
175
176 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * verify.c (mono_delegate_type_equal): Compare valuetypes using
179         mono_class_from_mono_type to avoid bad interactions with the dual representation
180         of the generic type definition.
181
182 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
183
184         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
185         get the MonoClass for the call context type as it might be a generic
186         instance.
187
188         Fixes #491483.
189
190 2009-04-21  Mark Probst  <mark.probst@gmail.com>
191
192         * object-internals.h: The Thread object has no execution_context
193         member anymore.
194
195         * threads.c, threadpool.c, threads-types.h: Accessor functions for
196         the execution context.
197
198         * appdomain.c: Bump corlib version.
199
200 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
201
202         * verify.c (do_newobj): Improve error message.
203
204 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
205
206         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
207         is nested in the filter block.
208
209         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
210         block is not fully nested.
211
212         Fixes #495656.
213
214 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
215
216         * verify.c (verify_type_compatibility_full): Compare MonoClass and
217         not MonoType to check for equality of valuetypes as the generic type
218         definition allows for two different encodings: the generic type definition
219         class or a generic instance over the GTD arguments.
220
221         Fixes #496175.
222
223 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
224
225         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
226
227         * verify.c (do_initobj): Improve error message.
228
229 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
230
231         * metadata-verify.c: Enable pe verification as the issue with #496453
232         is that the authenticode data directory have a different unspecified
233         format. Ignore it for now.
234
235         * pedump.c: Run the metadata verifier together with the IL verifier.
236
237         Fixes ##496453.
238
239 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
240
241         * metadata-verify.c: Temporarily disable pe verification due to #496453.
242
243 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
244
245         * class.c (can_access_type): Check visibility against
246         the element type for pointers and arrays.
247
248         Fixes #496150.
249
250 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
251
252         * metadata-verify.c: Fix cli and table verification to use information
253         from the MonoImage. A lot of duplicated code got killed.
254
255 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
256
257
258         This patch starts to integrate the metadata verifier with the runtime code.
259
260         This patch causes major regression in functionality for the metadata verifier
261         as cli and table verification are disabled since they require to be ported to
262         use MonoImage information.
263
264         * image.c (do_mono_image_load): Split the code in this function
265         into mono_image_load_pe_data and mono_image_load_cli_data.
266         Add     care_about_pecoff parameter to not load pecoff data.
267         Call into the metadata verifier for pecoff and cli verification.
268
269         * image.c (mono_image_open_raw): New function that doesn't perform
270         any parsing of the image contents.
271         
272         The reason for the 3 new functions is to give pedump better control
273         into the interaction with the verifier.
274
275         * metadata-internals.h: Add new functions from image.c as part of the
276         internal mono API.
277
278         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
279         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
280         to make those functions work together with the runtime.
281
282         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
283         true if the image needs to be verified.
284
285         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
286
287         * pedump.c: Use new metadata verifier API.
288
289 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
290
291         * object.c (mono_install_vtable_trampoline): Make this receive a
292         trampoline creation function instead of trampoline, allowing the JIT
293         to use a different trampoline for each vtable.
294
295 2009-04-18  Mark Probst  <mark.probst@gmail.com>
296
297         * object.c (mono_raise_exception): Don't reset the thread abort
298         exception state here.
299
300 2009-04-18  Mark Probst  <mark.probst@gmail.com>
301
302         * icall-def.h: New icall for getting the thread abort exception
303         state for a thread.
304
305         * object.c, thread.c, object-internals.h: A thread's abort
306         exception state is now a GC handle.  To get the object it stands
307         for, we must move it into the current app domain, if it's
308         different than the one where it originated from.
309
310         * appdomain.c: Bump corlib version.
311
312         * domain.c, domain-internals.h: New function for setting the
313         domain and migrate the thread abort exception or not.
314
315 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
316
317         * metadata-verify.c: Add initial verification of the
318         field table.
319
320 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
321
322         * metadata-verify.c: Add a macro to conditionally enable
323         dumping of verification information. Add  make_coded_token
324         and search_sorted_table to enable search sorted tables
325         by a given coded token.
326
327 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
328
329         * metadata-verify.c: Add array mapping from table index
330         to description offset. Add get_col_offset and get_col_size
331         functions.
332
333 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
334
335         * metadata-verify.c: Add remaining table descriptions offsets.
336         Add remaining coded index descriptions.
337
338 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
339
340         * metadata-verify.c: Fixed constant table description.
341         Fixed calculation of HasCustomAttribute coded index size.
342         Fixed calculation of size for many table indexes. 
343
344 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
345
346         * pedump.c (dump_metadata): Dump table offset instead
347         of useless pointer in memory.
348
349 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
350
351         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
352
353 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
354
355         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
356         a missing of for interface types.
357
358 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
359
360         * metadata-verify.c (verify_pe_optional_header): Add comment of why
361         the code is commented.
362
363         * metadata-verify.c (verify_resources_table): Remove spurious printf
364         and don't fail if there are unmanaged resources. Gmcs generates a useless
365         one     for all assemblies - I bet it's some MS compatibility junk.
366
367 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
368
369         * metadata-verify.c (verify_typedef_table): Verify the extends field.
370
371         * metadata-verify.c (mono_image_verify): Add a is_corlib.
372
373         * verify-internals.h: Same.
374
375         * pedump.c: Fix for mono_image_verify new signature.
376
377 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
378
379         * metadata-verify.c (verify_typedef_table): Verify for some invalid
380         flags combinations.
381
382 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
383
384         * metadata-verify.c (verify_module_table): Ignore the generation field.
385
386 2009-04-15  Martin Baulig  <martin@ximian.com>
387
388         * debug-mono-symfile.c
389         (mono_debug_symfile_lookup_location): Don't print a warning for
390         unknown extended opcodes if they're within 0x40 and 0x7f.
391
392 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
393
394         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
395         invoke signatures returning an enum. Fixes #494847.
396
397 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
398
399         * metadata-verify.c: Initial code to verify the typedef table.
400
401 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
402
403         * verify.c (mono_method_verify): Don't fail if an unconditional branch
404         with non empty stack happens before the beginning of a try block.
405
406         Fixes #494812.
407
408 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
409
410         * metadata-verify.c: Verify typename and typenamespace fields of
411         the typeref table.
412
413 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
414
415         * metadata-verify.c: Initial code to verify the typeref table.
416
417 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
418
419         * verify.c (verify_delegate_compatibility): Fix error message.
420
421 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
422
423         * security-core-clr.c: Fix typo
424
425 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
426
427         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
428         a MonoGHashTable to keep its values alive.
429         (emit_marshal_boolean): Fix a warning.
430
431 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
432
433         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
434         not have any interface configured for IPv4/IPv6.
435
436 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
437
438         * assembly.c: fix typo in error message.
439
440 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
441
442         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
443         allocating the location holding the this argument to prevent
444         'too many root sets' errors.
445
446         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
447         to mark fields as special static.
448         (mono_field_static_get_value): Handle special static fields.
449         (mono_field_static_set_value): Ditto.
450
451         * class-internals.h (struct _MonoClassField): Document this.
452
453 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
454
455         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
456           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
457           case.  This will handle when managed code returns null to native code.
458
459         Code is contributed under MIT/X11 license.
460
461 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
462
463         * object.c (build_imt_slots): Changing a free to a g_free to match
464           the g_malloc0 in add_imt_builder_entry that allocated this memory.
465
466         Code is contributed under MIT/X11 license.
467
468 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
469
470         * marshal.c (emit_marshal_boolean): Adding code to ensure that
471           the correct TRUE value is passed through the marshaling layer.
472
473         Code is contributed under MIT/X11 license.
474
475 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
476
477         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
478         correctly. Fixes #492330.
479         
480         * marshal.c: Fix the embedding of object pointers into JITted code in
481         the native-to-managed wrappers by allocating some GC tracked memory, and
482         embedding the address of that.
483
484 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
485
486         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
487         pointers into the vtable.
488
489 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
490
491         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
492
493         * verify.c (verify_ldftn_delegate): Improve error message.
494
495 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
496
497         * reflection.c (my_mono_class_from_mono_type): Remove.
498
499 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
500
501         Prepare to reduce memory usage of owner-less generic parameters (1/n)
502         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
503         and constraints fields into ...
504         (MonoGenericParamInfo): ... this.
505         (mono_generic_param_info, mono_generic_container_get_param_info):
506         New accessors.
507         * class.c, debug-helpers.c, icall.c: Update to changes.
508         * metadata.c, reflection.c, verify.c: Likewise.
509
510 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
511
512         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
513
514         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
515         
516         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
517         booleans with sbytes.
518
519 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
520
521         * class.c (can_access_instantiation): Verify accesibility of element types
522         for arrays and pointers.
523
524         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
525
526         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
527
528         Fixes #493068.
529
530 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
531
532         * verify.c (do_invoke_method): Improve error messages.
533
534 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
535
536         * verify.c:  Fixing the MSVC build.
537
538         Code is contributed under MIT/X11 license.
539
540 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
541
542         * security-core-clr.c: Simplify get_reflection_caller not to call
543         mono_method_get_last_managed (another stack walk) and adjust the
544         callers to handle a (should not happen) NULL return value.
545
546 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
547
548         Add accessors to some MonoGenericParam fields
549         * class-internals.h (mono_generic_param_owner): New accessor.
550         (mono_generic_param_num): Likewise.
551         (mono_type_get_generic_param_owner): New helper.
552         (mono_type_get_generic_param_num): New helper.
553         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
554
555 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
556
557         * class-internals.h (mono_generic_container_get_param): New wrapper.
558         * class.c, icall.c, metadata.c, verify.c: Use it.
559
560 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
561
562         Fix gtest-252.cs
563         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
564         the standard case/loop.  In particular, don't complain about
565         references to generic type definitions.
566
567 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
568
569         * debug-helpers.c (dis_one): Decode string arguments.
570
571 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
572
573         * pedump.c (dump_verify_info): Dump type name correctly.
574
575 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
576
577         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
578         are larger than code size.
579
580         This can happen in valid code if the try/catch block is not followed by any instruction
581         and do a backward branch on the leave instruction.
582
583         Fixes #492494.
584
585 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
586
587         * security-core-clr.c: Fix typo while comparing second method names
588         in can_avoid_corlib_reflection_delegate_optimization
589
590 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
591
592         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
593
594         Fixes #487738.
595
596 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
597
598         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
599         a MVAR using a class context.
600
601         Fixes #490335.
602
603 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
604
605         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
606
607         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
608
609         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
610         functions supplied by the JIT for the SGEN GC.
611
612         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
613         
614 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
615
616         monitor.c (mono_monitor_try_enter_internal):
617         Added calls to profile monitor contentions.
618         Also duplicated a small piece of code (the "get the monitor" logic)
619         from the fast path to the slow path, and changed the relevant goto
620         statements, so that monitor acquisition events can be emitted from the
621         slow path (this is by Paolo Molaro).
622
623 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
624
625         * profiler.c, profiler.h, profiler-private.h:
626         Added support for profiling monitor contentions.
627
628 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
629
630         * metadata-verify.c: Verify the modules table.
631
632 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
633
634         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
635         using the context of the method been verifier and not of the method been called.
636
637         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
638         safely inflate generic types. 
639
640 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
641
642         * security-core-clr.c: Change the strategy for checking the 
643         "reflection using delegates optimization" to avoid unneeded 
644         attributes in multiple class libraries.
645
646 2009-04-02  Mark Probst  <mark.probst@gmail.com>
647
648         * sgen-gc.c: Remove object element in the disappearing link struct
649         by storing the object pointer in the link.
650
651 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
652
653         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
654
655 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
656
657         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
658
659         * verify.c (mono_method_verify): Do proper bounds checking of exception
660         clause ranges.
661
662 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
663
664         * loader.c (mono_field_from_token): Don't crash if the field parent could
665         not be decoded.
666
667 2009-03-31  Mark Probst  <mark.probst@gmail.com>
668
669         * sgen-gc.c: Execute critical finalizers after ordinary
670         finalizers.
671
672         * class-internals.h, domain.c: Add CriticalFinalizerObject to
673         mono_defaults.
674
675 2009-03-31 Jb Evain <jbevain@novell.com>
676
677         * verify.c (do_ldstr): don't check if a string is in the user strings
678         heap if the current image is dynamic.
679
680 2009-03-31  Mark Probst  <mark.probst@gmail.com>
681
682         * sgen-gc.c: Wait until the last finalizer has executed when
683         returning from WaitForPendingFinalizers.
684
685 2009-03-31  Martin Baulig  <martin@ximian.com>
686
687         * mono-debug-debugger.h (MonoDebuggerEvent): Add
688         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
689         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
690         (mono_debugger_event_create_appdomain): New function.
691         (mono_debugger_event_unload_appdomain): New function.
692
693         * appdomain.c (mono_domain_create_appdomain_internal): Call
694         mono_debugger_event_create_appdomain().
695
696 2009-03-31  Martin Baulig  <martin@ximian.com>
697
698         * mono-debug-debugger.c
699         (mono_debugger_register_class_init_callback): Also register the
700         class init callback if the class is already initialized to make
701         things work with shadow copied assemblies.
702
703 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
704
705         * security-core-clr.c
706         (mono_security_core_clr_ensure_reflection_access_field): Let 
707         critical code access the field (just like we do for methods). Use
708         check_field_access helper.
709         (mono_security_core_clr_ensure_reflection_access_method): Use 
710         check_field_access helper.
711
712 2009-03-31  Mark Probst  <mark.probst@gmail.com>
713
714         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
715         call the run-finalize function directly.
716
717         * gc.c, gc-internal.h: Make run_finalize() non-static.
718
719 2009-03-31  Mark Probst  <mark.probst@gmail.com>
720
721         * sgen-gc.c: Use a separate struct for disappearing links.
722
723 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
724
725         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
726         * MaxIOVectorLength enabled, just ignore them.
727         Fixes bug #349688.
728
729 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
730
731         * metadata-verify.c: Fix eglib build.
732
733 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
734
735         * threads-types.h: Fix the win32 build.
736
737 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
738
739         * class.c: move coreclr inheritance/override checks to 
740         security-core.clr.c
741         * security-core.clr.c|h: add code from class.c with additional
742         documentation. Fix override check when the method is not critical.
743
744 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
745
746         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
747         (match_class): Ditto.
748
749 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
750
751         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
752
753         * metadata-verify.c: Implement table layout row size calculation. Verify
754         the total size of the tables.
755
756 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
757
758         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
759
760 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
761
762         * appdomain.c:
763         * console-io.[ch]: added new mono_console_init() to make sure that
764         file descriptors 0, 1 and 2 are opened.
765         Bug #489019 fixed.
766
767 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
768
769         * appdomain.h: Export a new callback type and a new function to
770         set this callback. This allow a mono host to provide it's own
771         definition for "platform code".
772         * metadata-internals.h: Add a core_clr_platform_code flag on 
773         _MonoImage to (cache and) know if it is representing platform 
774         code.
775         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
776         on platform code images.
777         * security-core-clr.c|h 
778         (mono_security_set_core_clr_platform_callback): Allow the host
779         to provide it's own platform check definition.
780         (mono_security_core_clr_determine_platform_image): Detect if an 
781         image is platform code (using the specified callback).
782         (mono_security_core_clr_is_platform_image): Return cached value 
783         for platform code.
784
785 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
786
787         * threads.c (mono_create_thread): New helper function to wrap CreateThread
788         which has different parameter types for the 'tid' argument in windows and
789         the io-layer.
790
791         * appdomain.c attach.c threads.c: Use the new helper.
792
793 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
794
795         * metadata-verify.c: Verify valid table bits.
796
797 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
798
799         * metadata-verify.c (verify_metadata_header): Store size in the size field.
800
801         * metadata-verify.c: Add initial table schema verification.
802
803 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
804
805         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
806         obtain the refclass argument needed by mono_param_get_objects (). Fixes
807         #488383.
808
809         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
810
811         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
812
813 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
814
815         * security-core-clr.c: Add/update documentation
816
817 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
818
819         * marshal.c (emit_marshal_object): Generate code to throw an exception
820         instead of throwing it. Fixes #488670.
821
822 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
823
824         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
825         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
826         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
827         and add a call to mono_security_core_clr_ensure_delegate_creation
828         to do the extra checks required by CoreCLR.
829         * security-core-clr.c|h: Add function to check delegate creation,
830         both in the binding and accessibility, under CoreCLR.
831
832 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
833
834         * reflection.c (mono_reflection_create_dynamic_method): when 
835         coreclr is enabled make sure that every resolved object are
836         checked (e.g. field and method access).
837         * security-core-clr.c|h: Add function to check objects resolved
838         when a dynamic method is created.
839
840 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
841
842         * metadata-verify.c: Cache directory rva translations.
843
844         * metadata-verify.c: Add cli-header and streams verification.
845
846 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
847
848         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
849         the wrong offset (8 instead of 6).
850
851 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
852
853         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
854         methods, return the native function address itself. Fixes
855         #487758.
856
857 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
858
859         * console-io.c: some of the values for control characters might not be
860         present.
861
862 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
863
864         * exception.c|h: Add helpers to create [Field|Method]AccessException
865         * icall.c: Add required coreclr check calls for field reflection.
866         Move the existing (method) check logic into security-core-clr.c
867         * security-core-clr.c: Add functions to check if the access of a
868         field or method is allowed when reflecting under coreclr. This is
869         mostly done using a stack walk to find the "real" caller: i.e. the
870         code that is calling the reflection
871
872 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
873
874         * gc-internal.h: Change location of gc_wrapper.h
875
876 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
877
878         * class.c: Simplification to coreclr checks for overrides that
879         makes it easier to set breakpoints.
880
881 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
882
883         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
884         mono_security_core_clr_method_level): Avoid potential 
885         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
886         user/application code) and make it easier to set breakpoints
887
888 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
889
890         * metadata-verify.c: Reject cli header tables that mono don't handle.
891
892 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
893
894         * pedump.c: Fix CLI header dumping.
895
896 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
897
898         * metadata-verify.c: More CLI header verification.
899
900 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
901
902         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
903
904 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
905
906         * metadata-verify.c: Initial verification of the CLI header.
907
908 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
909
910         * metadata-verify.c (verify_resources_table): Fix verification of zero
911         sized resource section and id entries count.
912
913 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
914
915         * icall.c: Handle user types in many Type icalls. Fixes #486303.
916
917 2009-03-17  Jb Evain  <jbevain@novell.com>
918
919         * profiler.c: call mono_gc_base_init from mono_profiler_load.
920
921 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
922
923         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
924         (mono_gc_make_descr_for_array): Ditto.
925
926 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
927
928         * verify.c (mono_verifier_is_class_full_trust): Add support for
929         CoreCLR security mode where trusted assemblies are defined as
930         "platform code".
931
932 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
933
934         * metadata-verify.c: Add minimal PECOFF resource verification.
935
936 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
937
938         * metadata-verify.c: Be less restrictive with some coff fields.
939
940 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
941
942         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
943         params as boxed values on stack. Fixes #485706.
944
945 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
946
947         * console-io.c: the termios values may vary in different flavors of unix.
948
949 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
950
951         * console-io.[ch]: return the entire set of control characters when
952         initializing the terminal.
953         * appdomain.c: bump corlib version.
954
955 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
956
957         * mono-perfcounters.c: added support for in-process custom
958         performance counters.
959
960 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
961
962         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
963
964 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
965
966         * metadata-verify.c: Verify the data pointed by the import table. 
967
968 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
969
970         * metadata-verify.c (load_data_directories): Store data
971         directory contents.
972
973         * metadata-verify.c: Verify the import table. 
974
975 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
976
977         * metadata-verify.c: Verify data directories.
978
979 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
980
981         * metadata-verify.c: Check section header flags.
982
983 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
984
985         * appdomain.c: if the assembly name is a shadow-copied file, return
986         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
987         in mono_make_shadow_copy.
988         * icall.c: if the assembly name is a shadow-copied file, replace it
989         with the original assembly path.
990
991         Bug #484244 fixed. NUnit tests for corlib can be run without
992         --noshadow now.
993
994 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
995
996         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
997         entries when the table is reallocated.
998
999         * icall.c: Allocate the memory used by the mono_ptr_array macros using
1000         mono_gc_alloc_fixed () since it contains GC refs.
1001
1002 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * reflection.c (ensure_complete_type): New helper function to call
1005         type resolve handlers for unfinished dynamic types.
1006         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1007
1008 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1009
1010         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1011         #483247.
1012
1013 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1014
1015         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1016
1017 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1018
1019         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1020         between GCHandles of type WeakTrackResurrection and the objects they
1021         point to.
1022
1023         * gc.c: Partly implement the sematics of GCHandles of type 
1024         WeakTrackResurrection: these handles should only be cleared after the
1025         finalizer of the object they are pointing to has ran.
1026
1027 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1028
1029         * icall.c: Partially revert r126631 because using the jump
1030         trampolines for generic shared methods makes it superfluous.
1031
1032 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * threads.c (handle_store): Create the 'threads' hash table with the proper
1035         MONO_HASH_VALUE_GC type.
1036
1037 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1038
1039         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1040         FIRST_GC_TRACKED.
1041
1042         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1043         and LAST_GC_TRACKED as a GC root.
1044
1045         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1046
1047         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1048         the static data even if it consists of 1 reference.
1049
1050         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1051         if there is a GC descriptor.
1052
1053         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1054         instead of through the GC since they contain no object references.
1055
1056 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1057
1058         * generic-sharing.c (instantiate_other_info): Always return a jump
1059         trampoline for method code.
1060
1061 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1062
1063         * culture-info-tables.h: generated to include the en-tt culture.
1064
1065 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1066
1067         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1068         capture the thread context.
1069
1070         * object.c (mono_async_result_new): Cache the invoke wrappers to
1071         ExecutionContext::Capture.
1072
1073 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1074
1075         * marshal.h: Add a prototype for what mono_compile_method returns
1076         for invoke wrappers.
1077
1078         * gc.c: Use the new prototype declaration.
1079
1080 2009-03-04  Geoff Norton  <gnorton@novell.com>
1081
1082         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1083         * gc-internal.h:
1084         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1085
1086 2009-03-04  Martin Baulig  <martin@ximian.com>
1087
1088         * mono-debug.h
1089         (mono_debugger_runtime_invoke): Removed.
1090
1091         * mono-debug-debugger.c
1092         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1093
1094 2009-03-02  Martin Baulig  <martin@ximian.com>
1095
1096         * mono-debug.h
1097         (mono_debugger_unhandled_exception): Removed.
1098         (mono_debugger_handle_exception): Removed.
1099         (mono_debugger_throw_exception): Removed.
1100
1101         * mono-debug.c
1102         (mono_debug_debugger_version): Bump to 5.
1103
1104         * mono-debug-debugger.c: Moved the exception handling code to
1105         ../mini/debug-mini.c
1106
1107 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1108
1109         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1110         finalize_objects_hash.
1111
1112         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1113         
1114         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1115         field.
1116
1117         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1118         cache.
1119
1120         * image.c (mono_image_close): Free it.
1121         
1122         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1123         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1124         on the this argument.
1125
1126         * gc.c (run_finalize): Optimize the calling of the finalizers.
1127
1128 2009-03-03  Martin Baulig  <martin@ximian.com>
1129
1130         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1131         of the `MonoGenericInst' changes.
1132
1133 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1134
1135         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1136         mono_array_class_get_cached to reduce locking contention. Extract
1137         a domain var.
1138
1139         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1140         intermediary managed arrays. Use caching version of mono_array_new
1141         to allocate the result array.
1142
1143         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1144
1145         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1146
1147         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1148         to reduce locking contention.
1149
1150 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1151                 
1152         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1153         thunk builder code for the non-interface case.
1154
1155 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * object.c (get_generic_virtual_entries): New helper function to collect
1158         the virtual generic method instances which need to be added to an IMT
1159         thunk.
1160         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1161         Instead of creating a new IMT thunk, reset the vtable slot to the
1162         trampoline, the thunk will be created the next time the trampoline is called.
1163         (build_imt_slots): Add support for virtual generic methods in interfaces by
1164         adding to the IMT thunk all the methods registered using 
1165         mono_method_add_generic_virtual_invocation ().
1166
1167         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1168         (struct _MonoIMTCheckItem): Ditto.
1169
1170         * object.c (mono_method_add_generic_virtual_invocation): Take a
1171         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1172         the IMT thunk to include all items.
1173         
1174         * object.c (mono_class_create_runtime_vtable): Add a missing
1175         mono_loader_unlock ().
1176
1177 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1178
1179         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1180
1181         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1182
1183 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1184
1185         * object-internals.h: Rename _MonoReflectionEvent to
1186         MonoReflectionMonoEvent so it reflects the right managed type.
1187         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1188
1189         * icall.c:
1190         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1191         type.
1192
1193 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1194
1195         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1196         intermediary managed arrays. Use caching version of mono_array_new
1197         to allocate the result array.
1198
1199 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1200
1201         * reflection.c: Use cached version of mono_array_new alongside
1202         the mono_reflection_get_custom_attrs_by_type call path.
1203
1204 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1205
1206         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1207         intermediary managed arrays. Use caching version of mono_array_new
1208         to allocate the result array.
1209
1210         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1211
1212 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1213
1214         * icall.c: Add small implementation of a growable stack bound array.
1215
1216         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1217
1218         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1219         intermediary managed arrays. Use caching version of mono_array_new
1220         to allocate the result array.
1221
1222 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1223
1224         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1225         helps Enum::CompareTo to be implemented without reboxing all enums
1226         to their underlying type.
1227 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1228
1229         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1230         since it acquires a global lock leading to scalability problems.
1231
1232         * profiler.c: Make the stat profiler work with multiple appdomains, this
1233         currently only works when no appdomains are unloaded.
1234
1235 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1236
1237         * appdomain.c: make the check to avoid copying when the assembly is
1238         already shadow copied actually work.
1239
1240 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1241
1242         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1243
1244         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1245         changes to the managed side.
1246
1247 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1248
1249         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1250         classes + a separate lock for it, as it is used frequently at runtime, not
1251         just during metadata loading/JIT compilation.
1252
1253         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1254         for szarrays.
1255         
1256         * object-internals.h (mono_class_from_name_cached): New macro to cache
1257         the results of the lookup locally without having to declare a static
1258         variable to hold it.
1259         (mono_class_get_field_from_name_cached): Ditto.
1260         (mono_array_class_get_cached): Ditto.
1261
1262         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1263         the new macros.
1264         
1265         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1266         slower search in metadata.
1267
1268         * pedump.c: Fix a warning.
1269
1270 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * reflection.c (encode_locals): Add checks for user types.
1273         (method_encode_clauses): Ditto.
1274         (method_encode_code): Ditto.
1275         (mono_image_create_token): Ditto.
1276
1277         * object-internals.h: Change the type of more fields from MonoReflectionType*
1278         to MonoObject*.
1279
1280 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1281
1282         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1283         the a thread does not suspend within 100ms.
1284
1285         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1286         in addition to StopRequested as well.
1287
1288         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1289
1290         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1291         search the method_hash before inserting a new entry, to avoid crashes when
1292         the same method is inserted multiple times, causing the old 
1293         MonoDebugMethodInfo structure to be freed by the value dtor function.
1294
1295 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1296
1297         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1298         SO_EXLUSIVEADDRUSE where available.
1299
1300 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1301
1302         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1303         runtime invoke wrappers, this time it is string ctor wrappers, which
1304         pass a dummy string as 'this' instead of their obj argument. Fixes
1305         #478473.
1306
1307 2009-02-21  Jb Evain  <jbevain@novell.com>
1308
1309         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1310         only get create_culture once.
1311
1312 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1313
1314         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1315         check before the locking.
1316         
1317         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1318         (mono_reflection_create_runtime_class): Ditto.
1319         (mono_reflection_sighelper_get_signature_local): Ditto.
1320         (mono_reflection_sighelper_get_signature_field): Ditto.
1321
1322         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
1323         is a System.MonoType object or similar.
1324         (monotype_cast): New helper function to cast a MonoObject to a 
1325         MonoReflectionType object.
1326
1327         * object-internals.h: Change MonoReflectionType* members in structures to
1328         MonoObject* members to force the usage of the monotype_cast () function.
1329
1330         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
1331         structures/arrays. This causes us to assert instead of crashing when 
1332         instances of user defined subclasses of System.Type are encountered.
1333
1334 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1335
1336         * cil-coff.h:
1337         * icall-def.h:
1338         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
1339         win32 resource loaded from a PE file.
1340
1341         * image.c: fix mono_image_lookup_resource.
1342
1343 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1344
1345         * icall-def.h:
1346         * threads-types.h:
1347         * threads.c: added internal call for WaitHandle.SignalAndWait.
1348
1349 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
1350
1351         * cominterop.c : Adding cominterop_type_from_handle and 
1352           registering it as an icall.  Replacing all references
1353           to type_from_handle.
1354
1355         Code is contributed under MIT/X11 license.
1356
1357 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1358
1359         * Makefile.am: Add lock-tracer.h and lock-trace.c.
1360
1361         * appdomain.c: Call the tracer init function.
1362
1363         * domain-internals.h: Enable the tracer for the domain locks.
1364
1365         * image.c: Enable the tracer for image locks.
1366
1367         * loader.c: Enable the trace for the loader lock.
1368
1369         * lock-tracer.h:
1370         * lock-tracer.c: Initial implementation of the lock trace utility.
1371         The tracer requires a compile time define to be enabled and a env var
1372         to be enabled at runtime.
1373
1374 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1375
1376         * domain.c (mono_domain_code_foreach): Improve documentation.
1377
1378 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1379
1380         * appdomain.c:
1381         * generic-sharing.c:
1382         * object.c:
1383         * reflection.c:  Adjust locking order to the new semantics where the loader lock
1384         comes first.
1385
1386 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1387
1388         * domain.c: Add mono_domain_code_* functions that perform locking
1389         around the domain codeman.
1390
1391         * domain-internals.h: Export those functions.
1392
1393         * object.c: Use new functions instead of acquiring the domain lock.
1394
1395 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
1398         delegate. Fixes #477396.
1399
1400 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * reflection.c (create_custom_attr): Get rid of alloca.
1403
1404 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
1405
1406         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
1407           Adding exception handling for all CCW calls.
1408
1409         Code is contributed under MIT/X11 license.
1410
1411 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1412
1413         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
1414
1415         * marshal.c (emit_marshal_boolean): Add null checks to the new 
1416         native->managed marshalling code. Fixes #476247.
1417
1418 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1419
1420         * class.c (mono_class_get_vtable_entry): Move the addition of
1421         static rgctx invoke wrappers for vtable methods here, this simplifies
1422         a lot of code and causes fewer rgctx wrappers to be created.
1423
1424         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
1425         name of the statistics to begin with an uppercase.
1426
1427 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1428
1429         * reflection.c: Revert previous change as it breaks the build.
1430         
1431 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1432
1433         * verify.c: Properly handle SZARRAY element type.
1434
1435         Fixes #474271.
1436
1437 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1438
1439         * reflection.c (mono_image_create_method_token): Correctly encode
1440         MethodDef MemberRefParent token.
1441
1442         Fixes #472845.
1443
1444 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1445
1446         * image.c (mono_image_close): Delete the critical section before
1447         freeing the memory holding it.
1448
1449 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1450
1451         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
1452         Fixes #476257.
1453
1454 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1455
1456         * pedump.c (main): Call mono_marshal_init so pedump
1457         doesn't crash.
1458
1459 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1460
1461         * loader.c (method_from_memberref): Properly fix #474271 and
1462         don't break the runtime bad.
1463
1464 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
1467         (mono_domain_alloc0): Ditto.
1468
1469 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1470
1471         * loader.c (method_from_memberref): Don't abort if the array
1472         method is not found. A regular loader failure is more informative
1473         and correct.
1474
1475         Fixes #474271.
1476
1477 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1478
1479         *loader.c: Guard MonoImage::method_cache/methodref_cache
1480         using the image lock instead of the loader lock.
1481
1482         * metadata.h: Add comments about which fields are protected by
1483         the image lock.
1484
1485 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
1488
1489         * generic-sharing.c (mono_method_construct_object_context): Remove the
1490         wrapper_type == NONE assert, it is not needed.
1491
1492 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * reflection.c (clear_cached_object): New helper function.
1495         (mono_method_clear_object): New function to clear the cached reflection
1496         objects for a dynamic method.
1497
1498         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
1499         Partly fixes # 463323.
1500         
1501 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1502
1503         * class.c:
1504         * loader.c:
1505         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
1506
1507 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1508
1509         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
1510         take the image lock instead of the loader lock.
1511
1512         * metadata-internals.h: Export new functions.
1513
1514 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1515
1516         * domain.c (app_config_parse): Remove another use of stat that is
1517         not necessary as g_file_get_contents already does the presence
1518         check. 
1519
1520 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
1523
1524         * marshal.c: Move the bstr handling code to cominterop.c.
1525
1526         * marshal.c: Remove some COM interop code missed previously.
1527
1528 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1529
1530         More Paolo patches from the Wii port:
1531         
1532         * security.c: Remove ves_icall_System_Environment_get_UserName
1533         from here.
1534
1535         * icall.c: And put ves_icall_System_Environment_get_UserName
1536         here. 
1537
1538         * appdomain.c (mono_set_private_bin_path_from_config): Remove
1539         redundant call to stat that was only used to test for the file
1540         existence.   Patch from Paolo.
1541
1542         * gc.c (run_finalize): If COM is disabled, do not link in
1543         mono_marshal_free_ccw.
1544
1545         * generic-sharing.c: Use alloca.h here as well.
1546
1547 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
1548
1549         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
1550
1551 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1552
1553         * cominterop.c cominterop.h: New files.
1554
1555         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
1556         function/typedefs which are needed by cominterop.c global.
1557
1558 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1559
1560         * generic-sharing.c: Don't take the loader lock to guard image
1561         mempool allocs.
1562
1563 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1564
1565         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
1566         called without the loader lock which is required to guard MonoImage:tokens.
1567
1568 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1569
1570         * class.c:
1571         * metadata.c:
1572         * method-builder.c:
1573         * marshal.c:
1574         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
1575
1576 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1577
1578         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1579         Rework the code to use regular mono_image_alloc/0.
1580
1581         * loader.c: Rework the code to use regular mono_image_alloc/0.
1582
1583         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1584
1585 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
1586
1587         * object-internals.h : Fixing a typo in the 
1588           MonoReflectionComVisibleAttribute struct.
1589
1590         * marshal.c (cominterop_com_visible): Check the implemented 
1591           interfaces for ComImport.
1592
1593         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
1594           assume that bools should be treated as VARIANTBOOLs.
1595
1596         * marshal.c (emit_marshal_boolean): Adding cases for 
1597           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
1598
1599         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
1600           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
1601
1602         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
1603           should be treated as VARIANTBOOLs.    
1604
1605         Code is contributed under MIT/X11 license.
1606
1607 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1608
1609         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
1610         allocation with the image lock.
1611
1612 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1613
1614         This patch is the last of a series to remove explicit reference of MonoImage::mempool
1615         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
1616
1617         * object.c: Add mono_string_to_utf8_image.
1618
1619         * object-internals.h: Export mono_string_to_utf8_image.
1620
1621         * reflection.c: Rework all explicit references to the the image mempool to go thought
1622         the mono_image_alloc set of functions.
1623
1624 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1625
1626         This patch is the third of a series to remove explicit reference of MonoImage::mempool
1627         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
1628         and generics-sharing.c.
1629
1630         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
1631         as first argument. Note that this function remains broken as it doesn't perform locking around the
1632         mempool allocation.
1633
1634         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
1635
1636         * image.c: Add g_slist_append_image.
1637
1638         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
1639         the supplied image for allocation. Move code into mono_metadata_field_info_full.
1640
1641         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
1642         Fix all related code to do the same.
1643
1644         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
1645
1646         * metadata-internals.h: Fix the signatures.
1647
1648 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1649
1650         This patch is the second of a series to remove explicit reference of MonoImage::mempool
1651         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
1652         and similar to work using MonoImage.
1653
1654         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
1655         MonoMemPool.
1656
1657         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
1658
1659         * class.c (mono_metadata_signature_deep_dup): Same.
1660
1661         * class.c (inflate_generic_type): Same.
1662
1663         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
1664
1665         * metadata.c (mono_metadata_signature_dup_full): Same.
1666
1667         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
1668         mono_metadata_signature_dup_full.
1669
1670         * metadata.c (mono_metadata_type_dup): Same.
1671
1672         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
1673
1674         * reflection.c: Same.
1675
1676         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
1677
1678         * metadata-internals.h: Fix the signatures.
1679
1680         * class-internals.h: Same.
1681
1682 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1683
1684         This patch is the first of a series to remove explicit reference of MonoImage::mempool
1685         and use mono_image_alloc set of functions instead. 
1686
1687         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
1688         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
1689         of a MonoMemPool.
1690
1691         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
1692
1693         * class.c (g_list_prepend_mempool): Removed.
1694
1695         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
1696
1697         * image.c: Add g_list_prepend_image.
1698
1699         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
1700
1701         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
1702
1703
1704 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1705
1706         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
1707         mono_image_unlock.
1708
1709         * image.c (mono_image_init): Init the lock field.
1710  
1711         * image.c (mono_image_init): Cleanup the lock field.
1712
1713         * image.c: Add mono_image_(un)lock functions.
1714
1715 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1716
1717         * class.c, class-internals.h: mono_method_get_context_general()
1718         combines the functionality of mono_method_get_context() and
1719         mini_method_get_context().
1720
1721         * generic-sharing.c, domain-internals.h:
1722         mono_method_construct_object_context() and
1723         mono_domain_lookup_shared_generic() moved from mini.
1724
1725         * icall.c (ves_icall_InternalInvoke): Handle the case where the
1726         method doesn't have the correct instantiation because it's shared
1727         generic code.  Fixes #473999.
1728
1729 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1730
1731         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
1732
1733         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
1734         
1735 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1736
1737         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
1738
1739         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
1740
1741         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
1742         and recheck the cache for dups after it.
1743
1744         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
1745
1746         Fixes one of the deadlocks found in #473150.
1747
1748 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
1749
1750         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
1751           For Win32, add additional break conditions for accept.
1752
1753         Code is contributed under MIT/X11 license.
1754
1755 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
1758         lazily initialize the native wrapper cache.
1759         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
1760         cache, since they are different from the normal wrappers.
1761
1762         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
1763
1764         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
1765         AOT compiled native wrappers.
1766
1767 2009-02-09  Geoff Norton  <gnorton@novell.com>
1768
1769         * appdomain.h:
1770         * security-core-clr.c: Allow enabling core-clr from the embedding
1771         API.
1772
1773 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1774
1775         * socket-io.c: when requesting all the local ips, if there are no
1776         interfaces up and running, MS returns 127.0.0.1.
1777
1778 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1779
1780         * mono-perfcounters-def.h: processor time is an inverse time.
1781         Fixes bug #468625.
1782
1783 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1784
1785         * socket-io.c: an empty host name returns the list of local IPs.
1786         Fixes bug #386637 part 1/2.
1787
1788 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * verify.c (mono_class_interface_implements_interface): Call
1791         mono_class_setup_interfaces ().
1792         (merge_stacks): Ditto.
1793
1794 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1795
1796         * class.c (mono_class_setup_interfaces): New function to lazily initalize
1797         klass->interfaces.
1798         (mono_generic_class_get_class): Don't initalize klass->interfaces.
1799         (mono_generic_class_get_class): Ditto.
1800
1801 2009-02-06  U-QUACK\miguel  <miguel@quack>
1802
1803         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
1804         they live in security.c
1805
1806         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
1807         another bit from Paolo's code.
1808
1809 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1810
1811         * object.c (build_imt_slots): Add a small optimization to avoid inflating
1812         methods which will be discarded by add_imt_builder_entry ().
1813
1814         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
1815         need to be boxed.
1816
1817         * loader.c: Add a statistics for the size of the memberref signature cache.
1818         
1819         * loader.c (find_cached_memberref_sig): New helper function.
1820         (cache_memberref_sig): Ditto.
1821
1822         * loader.c: Cache the result of parsing memberref signatures, since otherwise
1823         they will be parsed again for every generic instantiation, leading to unbounded
1824         memory growth.
1825
1826 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
1829         parameters of generic methods.
1830
1831         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
1832         after the original method is copied to the inflated method.
1833         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
1834
1835         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
1836         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
1837
1838         * class.c metadata.c: Update after the changes above.
1839
1840 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
1841
1842         * metadata-verify.c: Simplified error handling and added
1843         section table validation.
1844
1845 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1846
1847         * class-internals.h (MonoClassExt): New structure containing rarely used
1848         fields of MonoClass.
1849         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
1850         through a new 'ext' field.
1851
1852         * class.c (mono_class_alloc_ext): New helper function to allocate 
1853         class->ext.
1854
1855         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
1856
1857 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1858
1859         * object.c (mono_object_get_virtual_method): Properly inflate
1860         generic methods.  Fixes #472692.
1861
1862 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
1865         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
1866         for the parent type, the created type must be ready to be used on a generic
1867         instantiation.
1868         We fill this_arg/byval_arg if the parent is a generic instance to make sure
1869         we won't have duplicated entries in generic_inst_cache.
1870
1871         Fixes #469553.
1872
1873 2009-02-05  Miguel De Icaza  <miguel@novell.com>
1874
1875         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
1876         replace with plain BSD per the comments on the bug MONO77637.
1877
1878 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1879
1880         * class.c (mono_class_get_generic_class): New accessor function.
1881         (mono_class_get_generic_container): Ditto.
1882
1883         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
1884         fields, similar to the ones in MonoMethod.
1885
1886         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
1887         (mono_class_create_from_typedef): Set klass->is_generic if needed.
1888
1889         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
1890         
1891         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
1892         the same information as element_class->byval_arg.
1893
1894         * class.c reflection.c: Remove references to class->byval_arg.
1895
1896         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
1897         klass->enum_basetype directly.
1898
1899         * verify.c metadata.c object.c icall.c reflection.c: Use 
1900         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
1901         directly.
1902
1903 2009-02-04  Miguel de Icaza  <miguel@novell.com>
1904
1905         * icall-def.h: Remove internal calls for sockets when
1906         DISABLE_SOCKET is defined, file system writing features when the
1907         OS only support reading and not writing data and Policy support if
1908         the Policy is disabled.
1909         
1910         * image.c (do_mono_image_open): Apply Paolo's patches for using
1911         mono_file_map_ APIs here.
1912
1913         * assembly.c: Add support for platforms to avoid prefix
1914         auto-detection. 
1915
1916 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1917
1918         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
1919         warning.
1920
1921         * class.c (mono_class_inflate_generic_class): New helper function.
1922
1923         * class.c: Use mono_class_inflate_generic_class in a few places. Add
1924         statistics for inflated methods/classes.
1925
1926         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
1927
1928         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
1929         the call is made from Delegate.CreateDelegate () for the invoke method of
1930         a delegate.
1931
1932         * loader.c: Add a statistics for the memory occupied by inflated signatures.
1933
1934         * metadata.c (mono_metadata_signature_size): New helper function.
1935
1936         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
1937         generic instances.
1938
1939         * metadata.c (inflated_method_in_image): Avoid calling 
1940         mono_method_signature () if the method does not already have a signature.
1941
1942 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
1943
1944         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
1945         valuetype is compatible with target type, check by inheritance as a
1946         VT is not really compatible with System.ValueType, for example.
1947
1948         * verify.c (do_invoke_method): Improve error message.
1949
1950         * verify.c (do_box_value): If boxing a nullable, use the type argument
1951         on stack instead.
1952
1953         * verify.c (do_newobj): Improve error message.  
1954
1955         Fixes #469549.
1956
1957 2009-02-03  Miguel de Icaza  <miguel@novell.com>
1958
1959         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
1960
1961 2009-02-03  Mark Probst  <mark.probst@gmail.com>
1962
1963         * generic-sharing.c: Don't hold domain lock when calling
1964         instantiate_other_info().  Fixes #471958.
1965
1966         * domain-internals.h, loader.c: Describe locking policy of domain
1967         lock vs loader lock.
1968
1969 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
1970
1971         * verify.c (mono_delegate_signature_equal): Make it possible to check
1972         first-arg-bound delegates to static method.
1973
1974         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
1975         static methods with the first arg bound.
1976
1977         Fixes #469529.
1978
1979 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
1980
1981         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
1982         errors.
1983
1984         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
1985         under strict mode. Any type, when boxed can be seen as a reference type.
1986
1987         Fixes #469528.
1988
1989 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
1990
1991         * object.h: The lower bound of an array is a signed integer value.
1992         Introduce mono_array_lower_bound_t typedef. It should be used instead of
1993         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
1994
1995         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
1996         calculate the upper bound.
1997         
1998         Fixes #471252.
1999
2000 2009-02-02  Miguel de Icaza  <miguel@novell.com>
2001
2002         From Paolo's work, refactored, cleared up:
2003         
2004         * threadpool.c, icall.c: ifdef code that requires a working socket
2005         stack.
2006
2007         * metadata.c (mono_metadata_field_info): Do not attempt to return
2008         a value from a function declared as void.
2009
2010         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2011         from the console stack.
2012
2013         * assembly.c: use strrchr instead of rindex.
2014
2015         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2016         alloca.h on systems that have it.
2017
2018         * environment.c: Avoid code that uses stuff from
2019         HAVE_SYS_UTSNAME_H
2020         
2021         * appdomain.c: Include sys/time.h.
2022
2023         * console-io.c: include sys/ioctl.h if it is available.
2024
2025 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2026
2027         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2028
2029         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2030         the method builder.
2031
2032         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2033         after it was created and cached, as the later is not thread safe.
2034         
2035 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2036
2037         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2038         called while the debugging module is not initialized. Fixes #471669.
2039
2040 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2041
2042         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2043
2044         Fixes #471255.
2045
2046 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2047
2048         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2049         loader lock is not taken while the templates lock is held.  Fixes
2050         #471089.
2051
2052 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2053
2054         * metadata.c (type_in_image): Added a check to fix a monodis
2055         crash.
2056
2057 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2058
2059         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2060         nullable arguments.
2061
2062         * object.c (mono_runtime_invoke_array): Ditto.
2063         
2064         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2065         freeing wrappers of dynamic methods.
2066
2067         * loader.c (mono_free_method): Call it. Fixes #463323.
2068         
2069         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2070         methods taking vtype/byref arguments, to fix yet another bug caused by
2071         the sharing of runtime invoke wrappers. Partly fixes #471259.
2072
2073 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2074
2075         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2076         <first file in file table>:1 when the IL offset does not have an associated
2077         line number.
2078
2079 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2080
2081         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2082         variable info for a method.
2083
2084         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2085         
2086 2009-01-30  Jb Evain  <jbevain@novell.com>
2087
2088         * pedump.c: reuse code from monodis to make sure pedump honors
2089         MONO_PATH, which is needed to verify net_2_1 assemblies.
2090
2091 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2094         there is no line number info.
2095
2096 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2097
2098         Avoid some MonoType allocations
2099         * reflection.c (mono_reflection_initialize_generic_parameter):
2100         Reuse MonoType from param->pklass rather than allocating one.
2101         (mono_dynamic_image_free): Update to changes.
2102
2103 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2104
2105         Rearrange some code to improve consistency
2106         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2107         (mono_reflection_initialize_generic_parameter): ... here.
2108
2109 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2110
2111         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2112         with type constraints as an experiment.
2113
2114         * boehm-gc.c (on_gc_notification): Update mono_stats.
2115
2116 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2117
2118         Avoid some allocations
2119         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2120         pointer to tail array to avoid extra allocation.
2121         * metadata.c (free_generic_inst): Update to changes.
2122         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2123         on-stack struct.
2124
2125 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2128         return TRUE if the two type objects are the same.
2129
2130 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2131
2132         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2133         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2134         klass->min_align, since klass->min_align contains the managed alignment,
2135         while the native alignment can be different, like for longs on x86.
2136         Fixes #469135.
2137
2138         * class-internals.h (MonoMarshalType): Add a min_align field.
2139
2140 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2141
2142         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2143         the 1.0 format.
2144
2145 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2146
2147         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2148         some comments about the usage of the used_regs field.
2149
2150         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2151         Fixes #469217.
2152
2153 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2154
2155         * appdomain.c: return NULL instead of throwing FileNotFoundException
2156         when LoadAssembly() fails.
2157
2158 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2159
2160         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2161         image if the owner is NULL.  Fixes the AOT failures.
2162
2163 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2166         MonoGenericParam structure using memset so the image field is initialized
2167         as well.
2168
2169 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2170
2171         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2172         a plain store.
2173
2174 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2175
2176         * class.c (mono_class_setup_vtable_general): In the generic instance
2177         optimization, set method->slot for abstract virtual methods. Fixes part of
2178         #467834.
2179
2180 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2181
2182         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2183         which signals that the unloading has started but all appdomain services must
2184         remain operational.
2185
2186         * appdomain.c (mono_domain_unload): The initial state for unloading now
2187         is unloading_start and we switch to unloading after the managed call to
2188         AppDomain::DomainUnload has finished.
2189
2190         The new unloading state has to be created because managed code in the
2191         DomainUnload event can depend on things like the threadpool still working.
2192         The domain must remain fully functional while the event executes.
2193
2194         This shown as an issue due to Process::WaitForExit, which waits for
2195         async reads of stdout and stderr to complete. Since those are processed
2196         in the threadpool the code deadlocks because the DomainUnload callback 
2197         waits for the async read finished event, which should have been set by a
2198         threadpool job but has been discarded due to the domain been in unload
2199         state.
2200
2201 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2202
2203         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2204         image must match.
2205
2206 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2207
2208         * reflection.c (resolve_object): For fields, inflate the class and
2209         then get the field in the inflated class.
2210
2211 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2212
2213         * object-internals.h (struct _MonoException): Added a comment
2214         explaining the new use of trace_ips.
2215
2216 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2217
2218         * generic-sharing.c (inflate_other_data): Inflate array methods
2219         correctly.
2220
2221         * loader.c, class-internals.h: Rename search_in_array_class() to
2222         mono_method_search_in_array_class() and make it non-static.
2223
2224 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2227         Hopefully fixes #458168.
2228
2229 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2230
2231         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2232         as it is performed elsewhere.
2233
2234         Code is contributed under MIT/X11 license
2235
2236 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2237
2238         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2239         requests queued.
2240         * object.c (mono_raise_exception): Increment the exceptions total
2241         counter when an exception is thrown.
2242         * class-internals.h: Add a location for storing the total number of
2243         asp.net requests served.
2244         * mono-perfcounters.c: Implement update support for asp.net counters
2245         from the class libraries. Implement read support for asp.net counters
2246         and exceptions total counter.
2247
2248 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2251         accessing klass->methods. Fixes #467385.
2252
2253 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2256         for byval arguments without an [Out] attribute. Fixes #467212.
2257
2258         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2259         Fix compilation under android.
2260         
2261         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2262         processed, scan them directly after they are copied, to achieve better locality
2263         and cache usage.
2264
2265         * socket-io.c: Applied patch from Koushik Dutta
2266         (koush@koushikdutta.com). Disable IPV6 when running under android.
2267
2268 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * icall.c (ves_icall_InternalExecute): Add write barriers.
2271
2272         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2273         the GC code.
2274
2275         * sgen-gc.c: Implement write barriers in IL code.
2276
2277 2009-01-17  Geoff Norton  <gnorton@novell.com>
2278
2279         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2280
2281 2009-01-17  Geoff Norton  <gnorton@novell.com>
2282
2283         * image.c: When unloading the image->references table, there can be gaps
2284         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2285         when unloading an appdomain.
2286
2287 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2288
2289         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2290         speed up ptr-in-nursery checks.
2291
2292         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2293         threads_lock () to prevent deadlocks.
2294
2295         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2296         does not need to be scanned during minor collections, since writes to it
2297         must use write barriers.
2298
2299 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2300
2301         * metadata-verify.c: Add pe nt header verification.
2302         
2303 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2304
2305         * gc.c: Fix a few warnings when using SGEN.
2306
2307 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2308
2309         * metadata-verify.c: Add pe optional header verification.
2310
2311 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * sgen-gc.c: Add support for user defined marker functions, used by
2314         MonoGHashTable to avoid registering a GC root for every hash node.
2315
2316 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
2319         non-pinned roots into separate hashes to avoid having to traverse them
2320         in functions which are only interested in one kind.
2321
2322 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2323
2324         * metadata-verify.c: Add pe header machine field verification.
2325         
2326 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2327
2328         * metadata-verify.c: Add pe header size verification.
2329
2330 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2331
2332         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
2333         using the GC, they don't contain references.
2334
2335         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
2336
2337 2009-01-13  Geoff Norton  <gnorton@novell.com>
2338
2339         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
2340         AppDomains created on the native side can be cleaned up on the native side.
2341
2342 2009-01-13  Geoff Norton  <gnorton@novell.com>
2343
2344         * appdomain.c: Ensure that we call mono_context_init for the embedding api
2345         as well as the managed api.
2346
2347 2009-01-13  Geoff Norton  <gnorton@novell.com>
2348
2349         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
2350         with a MonoAppDomain initialized against it.
2351
2352 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2353
2354         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
2355         
2356         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
2357
2358         * marshal.c: Avoid setting the exception clauses after a method has been entered 
2359         into the wrapper caches. Fixes #465700.
2360
2361         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
2362         method builder.
2363         (mono_mb_create_method): Set the clauses from the method builder.
2364
2365 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2366
2367         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
2368         Patch from Makoto Kishimoto.
2369
2370 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2371
2372         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
2373         encoding them as ROOT_DESC_COMPLEX.
2374         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
2375
2376 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2377
2378         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
2379         no longer point to the nursery.
2380
2381         * sgen-gc.c: Add a few comments/FIXMEs.
2382         
2383         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
2384
2385         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
2386         initialization of the various _method variables thread safe. Fixes
2387         #465377.
2388
2389 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2390
2391         * domain.c, domain-internals.h: Remove the shared_generics_hash
2392         and its lookup functions.
2393
2394 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
2395
2396         * socket-io.c:  Fixing the MSVC build. 
2397
2398         Code is contributed under MIT/X11 license.
2399
2400 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
2401
2402         * metadata-verify.c: Add pe header watermark verification.
2403
2404 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2405
2406         * metadata-verify.c: Add lfanew verification.
2407
2408 2009-01-12  Jb Evain  <jbevain@novell.com>
2409
2410         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
2411         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
2412
2413 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2414
2415         * socket-io.c: Fix the build.
2416
2417         * environment.c: Fix an #ifdef.
2418
2419 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * threadpool.c (async_invoke_thread): Handle the wait function returning
2422         WAIT_IO_COMPLETION as well.
2423         (async_invoke_io_thread): Ditto.
2424
2425 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
2426
2427         * threads.c: Fixing the Windows build.
2428
2429         Code is contributed under MIT/X11 license.
2430
2431 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2432  
2433         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
2434         interrupt a wait.
2435         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
2436         the thread to wait again.
2437
2438 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2439
2440         * metadata-verify.c: Initial skeleton of the metadata verifier.
2441
2442         * pedump.c: Add support for the metadata verifier.
2443
2444         * verify-internal.h: Export the whole assembly metadata verifier function.
2445
2446 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2447
2448         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
2449
2450 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * Makefile.am: Upgrade dtrace-prelink.sh location.
2453
2454 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2455
2456         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
2457         well. Otherwise the shutdown deadlock that happens on unix will can happen
2458         as well.
2459         If the main thread code finishes too fast it's possible that the finalizer
2460         thread won't have executed yet, won't record itself as the finalizer thread
2461         and the shutdown sequence will wait on it forever.
2462
2463 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2464
2465         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
2466         with MSVC.
2467
2468 2009-01-08  Miguel de Icaza  <miguel@novell.com>
2469
2470         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
2471         Robert Jordan for pointing this out.
2472
2473 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
2474
2475         * icall.c
2476         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
2477         ves_icall_System_IO_DriveInfo_GetDriveType.
2478
2479 2009-01-07  Miguel de Icaza  <miguel@novell.com>
2480
2481         * icall.c: Wrap calls to mono_strtod in CriticalSection
2482         invocations when using eglib, to work around #464316.
2483
2484 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2485
2486         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
2487         return value of GetCurrentDirectory to never access unitialized memory.
2488
2489 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2490
2491         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
2492         return value of GetCurrentDirectory and expand the buffer if needed.
2493
2494         Fixes #459094.
2495
2496 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
2497
2498         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
2499           Adding a call to mono_init_com_types.
2500
2501         Code is contributed under MIT/X11 license.
2502
2503 2009-01-07  Geoff Norton  <gnorton@novell.com>
2504
2505         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
2506         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
2507         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
2508         be the value of the ip buffer.
2509
2510 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2511
2512         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
2513         interfaces_packed here.
2514
2515         Fixes part of #463294.
2516
2517 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2518
2519         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
2520
2521         Fixes part of #463294.
2522
2523 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2524
2525         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
2526         is a boxed complex as well.
2527
2528         Fixes part of #463294.
2529
2530 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2531
2532         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
2533         control if a methodspec should be created for the generic method definition from external assemblies.
2534         Caching of methodspec is done using the handleref hash table.
2535
2536         Fixes #462592.
2537
2538 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
2539
2540         * loader.c (find_method): When searching the interfaces of a class
2541         check the transitive closure of implemented interfaces.
2542
2543         Fixes #463303.
2544
2545 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2546
2547         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
2548         
2549 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2550
2551         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
2552         interfaces calculation to fill_valuetype_array_derived_types.
2553
2554         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
2555         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
2556         for example.
2557
2558         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
2559         interfaces for valuetypes if needed.    
2560
2561         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
2562         for their basetype as well. Types are array expanded if rank is > 0.
2563
2564         Fixes #400716.
2565
2566 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
2567
2568         * socket-io.h : Changing the signature of
2569           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
2570           the blocking state.
2571
2572         * icall-def.h :  Changing the signature of
2573           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
2574
2575         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
2576           For Windows only.  Avoid blocking when calling accept by
2577           querying for a connection via select.  The loop also queries
2578           the thread state every 1000 micro seconds for the thread
2579           stop state.  This will avoid the process hanging on shutdown
2580           when using a TcpChannel that is never connected to.
2581
2582         Code is contributed under MIT/X11 license.
2583
2584 2008-12-30  Marek Safar  <marek.safar@gmail.com>
2585
2586         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
2587
2588 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2589
2590         * class.c (get_implicit_generic_array_interfaces): Extract common
2591         code to a helper function making it a lot easier on the eyes.
2592
2593 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2594
2595         * class.c (get_implicit_generic_array_interfaces): If the internal
2596         enumerator is an interface inflate System.Object instead of itself.
2597
2598         Fixes #461261.
2599
2600 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
2601
2602         * object.c (mono_runtime_invoke_array): Don't assert with
2603         byref nullable types.
2604
2605         * marshal.c (mono_marshal_get_runtime_invoke): To handle
2606         byref nullables we unbox the object and store it on the
2607         stack. 
2608         We can't use the boxed object since it is the T of Nullable<T>
2609         and the boxed representation of a nullable it's underlying type
2610         or null.
2611         We could cheat and create a boxed nullable and use the same
2612         machinery of other byref VTs but this feels like a hack and
2613         using the stack has the bonus of reducing heap pressure.
2614
2615         Fixes #461941.
2616
2617 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
2618
2619         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
2620         return value.
2621
2622         Fixes #461867.
2623
2624 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
2625
2626         * icall-def.h : Adding an internal call definition for 
2627           System.Environment.internalBroadcastSettingChange.
2628
2629         * icall.c : Adding a Windows only implementation to broadcast a 
2630           WM_SETTINGCHANGE when an environment variable has changed.
2631
2632         Code is contributed under MIT/X11 license.
2633
2634 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2635
2636         * class.c, class-internals.h: Made
2637         mono_class_has_parent_and_ignore_generics() non-static.
2638
2639 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
2640
2641         * image.c: deal with the mmap failing when loading an image.
2642
2643 2008-12-17  Geoff Norton  <gnorton@novell.com>
2644
2645         * threadpool.c: Ensure that the io_queue_lock is initialized
2646         in all circumstances, as we always attempt to cleanup against it.
2647
2648 2008-12-17  Miguel de Icaza  <miguel@novell.com>
2649
2650         * icall.c (ves_icall_System_Environment_get_Platform): For
2651         compatibility reasons for existing client code we will keep
2652         returning 4 for a while.   
2653
2654         For how long will depend on the documentation being updated, and
2655         for us to give client code a chance to be updated.
2656
2657         This reverts the original decison on #433108 since we did not
2658         catch roughly 33 instances of the broken code in our own source
2659         code base, we did not catch failures on the buildbots, and QA did
2660         not bring this as a problem.
2661
2662         Only today I found some customer's code breaking due to our own
2663         class libraries not being fully updated and tracked it down to
2664         this change.  I am reverting it because if we could not even get
2665         our story straight in our own code base, how can we hope that our
2666         end user code be fixed?
2667
2668         As of this morning, our Wiki page that documents how to detect
2669         Unix had not been fixed.    
2670
2671 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
2672
2673         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
2674
2675         * class.c (mono_class_get_fields): Handle loading errors.
2676
2677 2008-12-12 Mark Mason <mmason@upwardaccess.com>
2678
2679         * 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.
2680         
2681 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
2682
2683         * mono-perfcounters.c: avoid warning.
2684
2685 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2686
2687         * reflection.c (ensure_runtime_vtable): Work on generic instances and
2688         make sure all interfaces have MonoClass::interface_id set.
2689
2690         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
2691         method table is property set.
2692
2693 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2694
2695         * class.c: New function mono_class_setup_interface_id that setup
2696         MonoClass::interface_id if needed.
2697
2698         * class-internals.h: Export new function.
2699
2700 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2701
2702         * class.c: Add code to sanity check the vtable after setup_vtable_general
2703         has done it's work.
2704
2705 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2706
2707         * icall.c: make Assembly.GetExecutingAssembly work properly when
2708         reflection is used to invoke the method.
2709         Bug #321781 fixed.
2710
2711 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2712
2713         * metadata/generic-sharing.c: Look for constraints in all type
2714         arguments, not just the first one.
2715
2716 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2717
2718         * appdomain.c: return the correct CodeBase for an Assembly instance
2719         that was loaded from the shadow-copy directories.
2720         Bug #458190 fixed.
2721
2722 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2723
2724         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
2725
2726         * sgen-gc.c (check_object): New debugging helper function.
2727
2728         * object.c: Fix calls to mono_value_copy_array ().
2729
2730 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2731
2732         * class.c (mono_class_setup_fields): If working on an inflated class
2733         first check if the generic definition did init with success.
2734
2735         Fixes #445361.
2736
2737 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2738
2739         pedump.c (main): Fix a warning.
2740
2741 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
2742
2743         * object-internals.h : Adding a definition for 
2744           MonoReflectionComVisibleAttribute.
2745
2746         * marshal.c (cominterop_com_visible) :  Method added to check the 
2747           ComVisible attribute of a class.
2748
2749         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
2750           cominterop_raise_hr_exception added to consolidate common code 
2751           to raise hr exceptions.
2752
2753         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
2754           if a managed class should support IDispatch.
2755
2756         * marshal.c 
2757           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
2758           Added additional checks for managed object when getting 
2759           an IDispatch interface.
2760
2761         Code is contributed under MIT/X11 license.
2762
2763 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2764
2765         pedump.c (main): Handle mono_get_method () returning NULL. 
2766
2767 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2768
2769         * marshal.h: Fix a warning.
2770
2771 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2772
2773         * marshal.c : Adding cominterop_release_all_rcws to release all
2774           runtime callable wrappers held by the runtime.
2775
2776         * marshal.h : Adding declaration for cominterop_release_all_rcws.
2777           
2778         Code is contributed under MIT/X11 license.
2779
2780 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2781
2782         * metadata.c (mono_image_alloc_lock): New helper function.
2783         (mono_image_alloc0_lock): Ditto.
2784
2785         * metadata.c: Use the alloc_lock () helper functions for allocating
2786         memory from the image mempool.
2787
2788 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
2789
2790         * class.c (mono_class_from_generic_parameter): Document it's
2791         locking behavior. Fix double checked locking here, we stored in
2792         param->pklass a partially initialized MonoClass and no membar was used.
2793
2794 2008-12-05  Marek Habersack  <mhabersack@novell.com>
2795
2796         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
2797         (3) functions are present in the C library use them to do the
2798         job. If they are absent, make sure that the sum of int_part and
2799         dec_part is rounded before returning. This is necessary due to the
2800         division of dec_part by the power of 10 before the final addition
2801         is performed - if the result is not rounded in some cases it will
2802         yield invalid results.
2803
2804 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2805
2806         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
2807         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
2808         instruction instead of a pointer constant.
2809
2810 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * loader.c (mono_method_get_header): Do most of the work outside the
2813         loader lock, to avoid assembly load hook deadlocks.
2814
2815         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
2816         (mono_metadata_parse_type_full): Ditto.
2817
2818 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
2819
2820         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
2821         Make the stack depth fixed. Ensure proper argument passing to the backtrace
2822         funtions. Finally, use a lock to produce well ordered output.
2823
2824         The lock looks silly, as all calls to the corlib mempool should be guarded
2825         with the loader lock, but for some reason this fact doesn't help. 
2826
2827         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
2828
2829 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2830
2831         * socket-io.c: 64 bit big-endian fixes.
2832
2833 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2834
2835         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
2836         targets that require strict compatibility between the types.
2837
2838         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
2839         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
2840         Kill the strict argument and create a new one valuetype_must_be_boxed.
2841
2842         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
2843         state that all valuetypes must be boxed.
2844
2845         Fixes #448560.
2846
2847 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
2848
2849         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
2850         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
2851
2852         Contributed under MIT/X11 license.
2853
2854 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
2855
2856         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
2857         the inflate_generic_type machinery should handle it.
2858
2859         This avoids a crash when the field's flags is zero and it's type is
2860         a primitive.
2861         What happens is that mono_metadata_parse_type_full will see that opt_attrs
2862         is zero and will return one of the cached built-in primitive types. Since
2863         those types live in read-only memory, the code that copies it crashes.  
2864
2865 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2866
2867         * object.c: Don't put function descriptors into generalized IMT
2868         thunks.
2869
2870 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2871
2872         * class.c: Enable generic code sharing on PPC64.
2873
2874 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2875
2876         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
2877         from mini/mini.c.
2878
2879         * generic-sharing.c: Allocate the method template slists from the
2880         image mempool so it doesn't leak.
2881
2882 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
2883
2884         * class.c (generic_array_methods): Release the linked list.
2885
2886 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2887
2888         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
2889         invocation to g_utf16_to_utf8().
2890
2891 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2892
2893         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
2894         arguments on big endian archs.
2895
2896 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
2897
2898         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
2899         the type name (test added in corlib).
2900
2901 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
2902
2903         * pedump.c: initialize perf. counters. Fixes a segv.
2904
2905 2008-11-25  Martin Baulig  <martin@ximian.com>
2906
2907         * mono-debug-debugger.c
2908         (mono_debugger_runtime_invoke): Return the exception object if an
2909         exception was thrown.  Visual Studio displays the exception object
2910         in the locals window.
2911
2912 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2913
2914         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
2915         ftnptr.
2916
2917 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2918
2919         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
2920         MONO_TYPE_U are sizeof (gpointer), too.
2921
2922 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2923
2924         * marshal.c (mono_type_native_stack_size): Fixed size and
2925         alignment for reference types.
2926
2927 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2928
2929         * class.c (mono_class_generic_sharing_enabled): Disable generic
2930         code sharing for PPC64.
2931
2932 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
2933
2934         * icall.c (mono_method_get_equivalent_method): Make sure
2935         method->klass->methods is inited before looping over it.
2936
2937 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2938
2939         * object.c: when calling ExecuteAssembly in a newly created domain,
2940         the configuration file and application base are already set up.
2941         Bug #446353 take 2 fixed.
2942
2943 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
2946         Fixes #444715. Fix a warning.
2947
2948 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
2949
2950         * appdomain.c: write the full path of the assembly to the .ini file
2951         created when "shadow-copying"
2952         Bug #446353 fixed.
2953
2954 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
2957         if signature==FALSE.
2958
2959 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2960
2961         * marshal.h : Fix the cygwin build.
2962            marshal.c:12442: undefined reference to `_IID_IMarshal'
2963           
2964         Code is contributed under MIT/X11 license.
2965
2966 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2967
2968         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
2969           free threaded marshaler when QueryInterface is called on a COM callable
2970           wrapper requesting the IMarshal interface.
2971           
2972         Code is contributed under MIT/X11 license.
2973
2974 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2975
2976         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
2977
2978         * reflection.c (mono_type_get_object): Special case the very common
2979         void type.
2980
2981         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
2982         hold typeof(void).
2983
2984 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
2985
2986         * process.h : Adding method declaration for
2987           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
2988           
2989         * process.c : Adding implementation for
2990           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
2991           
2992         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
2993           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
2994
2995         Code is contributed under MIT/X11 license.
2996
2997 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
2998
2999         * appdomain.c (unload_thread_main): Clean up threadpool by
3000         calling mono_thread_pool_remove_domain_jobs.
3001
3002         * domain-internals.h (struct _MonoDomain): Add new fields to
3003         help coordinate the cleanup of the threadpool.
3004
3005         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3006         that cleans up the threadpool of all jobs associated with an appdomain.
3007         It does that by cleaning up the queues and making sure all active
3008         threads are accounted.
3009
3010         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3011         unloaded or in the process of. Take this is such way that there is
3012         no race condition between another thread starting the unload and the
3013         current thread acknowledging it.
3014
3015         * threadpool.c (async_invoke_thread): Same.
3016
3017         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3018         firing the new thread.
3019
3020         * threadpool.c (start_tpthread): Same.
3021
3022         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3023
3024         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3025
3026 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3027
3028         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3029         Add support for DuplicateHandle.
3030         
3031         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3032         Add support for DuplicateHandle.
3033         
3034         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3035         Add support for DuplicateHandle.
3036
3037         Code is contributed under MIT/X11 license.
3038
3039 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3040
3041         * class-internals.h: Make min_align into a whole byte.
3042
3043         * class.c: Set min_align for SIMD types to 16.
3044
3045 2008-11-05  Geoff Norton  <gnorton@novell.com>
3046
3047         * attach.c: Default the attacher to enabled for all cases including
3048         embedded.
3049
3050 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3051
3052         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3053         change r117650.
3054
3055 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3056
3057         * monitor.c, monitor.h: New function for querying offsets of
3058         members of MonoThreadsSync.
3059
3060 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3063         to speed up this function and to avoid the boundless memory growth caused by
3064         the signature_dup () calls.
3065
3066 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3067
3068         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3069         wrapper.
3070
3071         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3072         by 1 bit.
3073
3074         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3075
3076 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3077
3078         * appdomain.c:
3079         * domain-internals.h: made mono_set_private_bin_path_from_config()
3080         "internal".
3081         * object.c: call the above function after setting the configuration
3082         file path for the root domain.
3083         Fixes bug #314478.
3084
3085 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3086
3087         * assembly.c: when the assembly is loaded from an absolute path, end
3088         basedir with a directory separator.
3089         Bug #440781 fixed.
3090
3091 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3092
3093         * monitor.c (mono_monitor_get_fast_enter_method): If
3094         CompareExchange is not available, don't create the fastpath
3095         instead of asserting.  (The method is missing in the 1.1 profile.)
3096
3097 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3098
3099         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3100
3101         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3102         Monitor.Exit IL fastpaths.
3103
3104 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3105
3106         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3107
3108 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3109
3110         * class.c (mono_class_create_from_typedef): Added Vector2l.
3111
3112 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3113
3114         * class.c (mono_class_create_from_typedef): Added Vector2d.
3115
3116 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3117
3118         * appdomain.c: translate \ into / for cache_path.
3119         * domain-internals.h: new mono_is_shadow_copy_enabled().
3120         * icall.c: (fill_reflection_assembly_name) do the same path
3121         manipulations that get_code_base does.
3122         (get_code_base) use mono_is_shadow_copy_enabled.
3123
3124 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3125
3126         * appdomain.c: shadow-copied assemblies go to CachePath +
3127         ApplicationName when both are set. DynamicBase has nothing to do with
3128         shadow copies.
3129         Bug #406877 fixed.
3130
3131 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3132
3133         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3134         STANDALONESIG table.
3135
3136         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3137         standalone signatures.
3138
3139         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3140         comparison code: instead of comparing the signatures using a custom
3141         equals function, transform them to a common signature and compare that. This
3142         works better with AOT.
3143
3144 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3145
3146         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3147
3148         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3149         call for generic instances.
3150         (mono_class_setup_properties): Call setup_properties () before accessing
3151         gklass->properties.
3152
3153         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3154         over the virtual methods of a class using metadata if possible, avoiding the
3155         creation of MonoMethod's for non-virtual methods.
3156         
3157         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3158         get_virtual_methods () to iterate over the virtual methods of classes.
3159
3160 2008-10-25  Martin Baulig  <martin@ximian.com>
3161
3162         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3163
3164 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3165
3166         * class.c (mono_class_create_from_typedef): Added Vector4i.
3167
3168 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3169
3170         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3171         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3172         special-casing applies to eliminate the call completely.
3173
3174 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3175
3176         * class.c (mono_class_create_from_typedef): Added Vector8s.
3177
3178 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3179
3180         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3181
3182 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3183
3184         * icall.c: get rid of annoying warning.
3185
3186 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3187
3188         * threadpool.c: in 1.x, if you change the background status of the
3189         threadpool thread, it's not reset.
3190         Remove unnecessary calls to SetState.
3191
3192 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3193
3194         * threadpool.c: asynchronously create a set of idle threads upon first
3195         use of the threadpool. SetMinThreads will now start the appropriate
3196         number of idle threads if they are not already running. The default is
3197         1 threadpool thread per CPU. Increased the maximum number of threads
3198         per CPU to 10.
3199
3200 2008-10-22  Martin Baulig  <martin@ximian.com>
3201
3202         Revert r116521 from Zoltan, it breaks the debugger:
3203
3204         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3205         over the virtual methods of a class using metadata if possible, avoiding the
3206         creation of MonoMethod's for non-virtual methods.
3207         
3208         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3209         get_virtual_methods () to iterate over the virtual methods of classes.
3210
3211 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3212
3213         * threads.c: when creating a threadpool thread, set its state to
3214         'background'.
3215         * threadpool.c: reset the background state of a threadpool thread
3216         after finishing each work item
3217         Bug #437888 fixed.
3218
3219 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3222         
3223         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3224         generic instances which works by inflating the methods in the container
3225         class's vtable.
3226
3227         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3228         variant which doesn't make a copy if no inflation was done.
3229         (mono_class_setup_fields): Use it.
3230
3231         * metadata.c (mono_metadata_get_shared_type): New helper function to
3232         return a shared instance of a given MonoType.
3233
3234         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3235         a copy of most non-generic types.
3236
3237 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3238
3239         * threadpool.c: remove one more GetSystemInfo () call.
3240
3241 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3242
3243         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3244         use the code in mono-proclib.h to get processor information.
3245
3246 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3247
3248         * appdomain.c: fixed the logic that determines whether assemblies in a
3249         directory are "shadow-copied" or not. Bug #433483 fixed.
3250
3251 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3252
3253         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3254         warning.
3255
3256 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3257
3258         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3259         returning a vtype.
3260
3261         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3262         reflection.c: Use mono_field_get_name () for accessing a field's name.
3263
3264         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3265         class.c
3266
3267         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3268         field.
3269
3270         * loader.c (find_method_in_class): Reenable the metadata optimization by
3271         not using it for generic instances.
3272
3273         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3274         data/def_type fields from MonoClassField into a separate structure.
3275         (struct MonoClassField): Remove data/def_type fields.
3276         (struct _MonoClass): Add a 'field_def_values' array to store the default
3277         values/RVA for fields.
3278
3279         * class.c reflection.c: Update after the changes.
3280         
3281         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3282         for accessing field->data.
3283
3284         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3285
3286         * loader.c (find_method_in_class): Revert the last change for now as
3287         it breaks Mono.C5 unit tests.
3288
3289         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3290         'field_generic_types' and 'field_objects' which contain the information
3291         previously stored in MonoInflatedField.
3292         (MonoInflatedField): Delete.
3293         (struct _MonoClassField): Delete 'generic_info' field.
3294
3295         * reflection.c: Store the information which was previously in 
3296         field->generic_info in MonoDynamicGenericClass instead.
3297
3298         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3299         MonoClassField changes.
3300
3301 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3302
3303         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3304         store the value inside the data array of the MonoMethodWrapper.
3305         This saves memory, is faster and fixes the lifetime issues (methods
3306         were never removed from the hash previously). May also fix bug#436996.
3307
3308 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3309
3310         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3311         generic instances, compute the type from the generic definition instead of
3312         looking in field->generic_info.
3313
3314         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3315         for inflated fields, the only user was get_fieldref_token () which no
3316         longer needs it.
3317
3318         * class.c (mono_class_init): Revert the last change as it seems to cause
3319         crashes.
3320
3321         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
3322         bytes on 64 bit platforms.
3323
3324         * object.c (mono_class_create_runtime_vtable): Fix a warning.
3325         
3326         * object.c (mono_class_create_runtime_vtable): Don't initalize
3327         field->data/field->def_type here, it is done lazily by 
3328         mono_class_get_field_default_value ().
3329
3330         * icall.c (ves_icall_get_enum_info): Call 
3331         mono_class_get_field_default_value () instead of directly accessing
3332         field->data and field->def_type.
3333
3334         * object.c (get_default_field_value): Ditto.
3335
3336         * class.c (mono_field_get_data): Ditto.
3337         
3338         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
3339         call for generic instances.
3340
3341         * loader.c (find_method_in_class): If klass != from_class, then inflate
3342         the method with the context of from_class, since the caller assumes this.
3343
3344 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
3345
3346         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
3347         for accessing method->slot.
3348
3349 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
3350
3351         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
3352
3353 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3354
3355         * class.c (mono_method_get_vtable_index): Use
3356         mono_method_get_vtable_slot () for accessing method->slot.
3357
3358         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
3359         accessing klass->methods.
3360
3361         * class.c (mono_method_get_vtable_slot): New helper function.
3362         (mono_class_get_vtable_entry): Ditto.
3363         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
3364         accessing method->slot.
3365
3366         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
3367         method to get_inflated_method ().
3368
3369         * class.c (mono_class_get_inflated_method): New helper method to obtain
3370         a method of an inflated class without calling setup_methods ().
3371         (mono_class_get_cctor): Use get_inflated_method.
3372
3373         * generic-sharing.c (mono_class_get_method_generic): Ditto.
3374         
3375         * marshal.c image.c: Lazily create all the marshal caches.
3376
3377         * image.c (mono_image_init): Move initialization of runtime_invoke
3378         caches to marshal.c.
3379
3380         * marshal.c (get_cache): New helper function to lazily initialize a 
3381         wrapper cache.
3382         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
3383
3384         * debug-helpers.c (mono_method_full_name): Include generic arguments.
3385
3386 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
3387
3388         * loader.c: fixed check for interface type.
3389
3390 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3391
3392         * appdomain.c: check for NULL setup before it's referenced.
3393
3394 p
3395 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3396
3397         * class.c: remove the unused old vtable setup code.
3398
3399 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3400
3401         * class.c: don't depend on interface order in
3402         setup_interface_offsets (bug #435777).
3403         * reflection.c: sort the InterfaceImpl table (patch from
3404         Jb Evain  <jbevain@novell.com>).
3405
3406 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3407
3408         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
3409         the low level assemblies lock.
3410
3411 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
3412
3413         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
3414         object.c, reflection.c, socket-io.c, threads.c: introduced
3415         mono_framework_version () to return the major framewrok version,
3416         changed the code that was using more complex patterns to use it.
3417         Return the correct value for PlatformID for OSX.
3418
3419 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
3420
3421         * icall-def.h, process.h, process.c: added an icall to get info about
3422         processes using mono-proclib.
3423
3424 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
3425
3426         * mono-perfcounters.c: use the mono-proclib functions to
3427         access process information.
3428
3429 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3430
3431         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
3432         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
3433         reflection.c: remove rawbuffer usage: mmap support is more sanely
3434         provided by utils/mono-mmap.
3435
3436 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
3437
3438         * gc.c: use posix semaphores when possible so that
3439         mono_gc_finalize_notify() is signal safe.
3440
3441 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
3442
3443         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
3444         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
3445         be #ifdef-ed out, the linker will remove the rest.
3446
3447         * marshal.c: Implement DISABLE_COM.
3448
3449         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
3450
3451 2008-10-11  Miguel de Icaza  <miguel@novell.com>
3452
3453         * locales.c (string_invariant_compare_char): Optimization: do not
3454         call g_unichar_type unless we actually need the information.
3455
3456 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3457
3458         * object.c, class-internals.h: Also create remoting trampolines
3459         for generic methods.  Pass the domain to the remoting trampoline
3460         creation function, too.
3461
3462 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3463
3464         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
3465
3466 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3467
3468         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
3469         Vector4ui.
3470
3471 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3472
3473         * assembly.c:
3474         * locales.c: remove the use of g_strdown. Fixes bug #322313.
3475
3476 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3477
3478         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
3479         for the least possible amount of time (extending the fix in r113458).
3480
3481 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3482
3483         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
3484
3485 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3486
3487         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
3488         as possible simd intrinsic types.
3489         Optimized the test to check for the common prefix first.
3490
3491 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
3492
3493         * class.c: back out part of a broken optimization committed on
3494         May 23th (bug #433908).
3495
3496 2008-10-09  Mark Probst  <mark.probst@gmail.com>
3497
3498         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
3499         Win32.  Should fix #432388 for most cases until we have the new
3500         profiler on Win32.
3501
3502 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
3505         instead of using inst->id so the hash is stable for AOT.
3506
3507 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3508
3509         * appdomain.c:
3510         * icall.c: create a .ini file for shadow-copied assemblies that
3511         contains the location of the original assembly. Use this to return the
3512         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
3513         Also fix the number of '/' for windows when returning the CodeBase.
3514         Fixes bug #430920.
3515
3516 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3517
3518         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
3519
3520         Code is contributed under MIT/X11 license.
3521
3522 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3523
3524         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
3525           if if the class vtable needs initialized.
3526
3527         Code is contributed under MIT/X11 license.
3528
3529 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3530
3531         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
3532           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
3533           STRING->BSTR, and CLASS->INTERFACE.
3534
3535         Code is contributed under MIT/X11 license.
3536
3537 2008-10-07  Marek Habersack  <mhabersack@novell.com>
3538
3539         * sysmath.h: changed the declaration of the
3540         ves_icall_System_Math_Round2 icall by adding an extra
3541         away_from_zero parameter.
3542
3543         * sysmath.c (ves_icall_System_Math_Round2): added support for
3544         away from zero rounding. The icall now takes an extra boolean
3545         parameter to signal that away from zero operation is requested.
3546
3547 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
3550         the delegate klass so it can work with full-aot.
3551         (mono_marshal_get_delegate_end_invoke): Ditto.
3552         (mono_marshal_get_delegate_invoke): Ditto.
3553
3554 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
3555
3556         * gc.c, attach.h, attach.c: remove a bad pattern:
3557         add_finalizer_callback () is not implemented correctly, it can't
3558         without adding more overhead to the finalizer loop and it's not
3559         even needed, since we know exactly what we need to call, so there is
3560         no need to do so through an expensive function pointer.
3561
3562 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
3563
3564         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
3565         for the no-gc case.
3566         * attach.c (mono_attach_init): Remove the #ifdef.
3567
3568 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3569
3570         * attach.c (mono_attach_init): Don't use
3571         mono_gc_add_finalizer_thread_callback when compiling without GC.
3572         Fixes #432306.
3573         
3574         Code is contributed under MIT/X11 license.
3575
3576 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3577
3578         * class.c (mono_class_create_from_typedef): Remove the 
3579         #ifndef DISABLE_SIMD stuff.
3580
3581 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3582
3583         * class-internals.h (MonoClass): Added simd_type bit field.
3584
3585         * class.c (mono_class_create_from_typedef): Check if type is a simd
3586         intrinsic.
3587
3588 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3589
3590         * object.c (mono_method_add_generic_virtual_invocation): Only add
3591         instantiations to the thunk whose count is at least as large as
3592         the threshold.
3593
3594 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3595
3596         * icall.c: changed the Type of the exception thrown when trying to
3597         invoke a constructor on an abstract class. Part of the fix for bug
3598         #324185.
3599
3600 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3601
3602         * class.c, class-internals.h (mono_method_get_vtable_index): New
3603         function which returns the index into the vtable and properly
3604         handles inflated virtual generic methods.
3605
3606 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3607
3608         * object.c, domain.c, object-internals.h, domain-internals.h:
3609         Generalize IMT thunk machinery to also handle thunks for virtual
3610         generic method invokes.  When a virtual generic method is invoked
3611         more than a number of times we insert it into the thunk so that it
3612         can be called without lookup in unmanaged code.
3613
3614         * generic-sharing.c, class-internals.h: Fetching a
3615         MonoGenericInst* for a method from an (M)RGCTX.
3616
3617 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * marshal.c (emit_marshal_string): Applied a variant of a patch by
3620         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
3621         marshalling. Fixes #431304.
3622
3623 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
3624
3625         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3626           handle when ref is specified without In or Out.
3627
3628         Code is contributed under MIT/X11 license.
3629
3630 2008-09-30  Mark Probst  <mark.probst@gmail.com>
3631
3632         * loader.c (mono_get_method_constrained): Don't expand method with
3633         the class's context, because it's already a method of that class.
3634
3635 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
3636
3637         * attach.c : should be correct build fix.
3638
3639 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * attach.c: Fix the previous change.
3642
3643 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
3644
3645         * attach.c : quick w32 build fix.
3646
3647 2008-09-27  Miguel de Icaza  <miguel@novell.com>
3648
3649         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
3650         crashes MonoDevelop: #430455.
3651
3652 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
3653
3654         * domain-internals.h (struct _MonoDomain): Move most fields used only by
3655         the JIT do MonoJitDomainInfo in ../mini/mini.h.
3656
3657         * domain.c: Remove initialization/cleanup of the removed fields.
3658
3659 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3660
3661         * class.c (mono_class_generic_sharing_enabled): Enable generic
3662         code sharing for PPC.
3663
3664 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
3665
3666         * attach.c : Fixing the Windows builds.
3667
3668         Code is contributed under MIT/X11 license.
3669
3670 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3671
3672         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
3673         the default generic sharing mode to 'all'.
3674
3675 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3676
3677         * generic-sharing.c, class-internals.h: New function for checking
3678         whether a method needs a static RGCTX invoke wrapper.  A few
3679         funtions moved from mini/generic-sharing.c.
3680
3681         * icall.c: New function used.
3682
3683 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3684
3685         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
3686         Static RGCTX invoke wrapping applies to value type methods, too.
3687
3688         * class.c (mono_class_setup_vtable_general): In generic-shared
3689         value types, wrap methods with a static RGCTX invoke wrapper.
3690
3691 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
3694         osx build.
3695
3696 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
3697
3698         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
3699         register a callback which is called when the finalizer thread is woken
3700         up.
3701         (finalizer_thread): Call the callback if it exists.
3702
3703         * attach.h attach.c: New files, implementing the attach mechanism.
3704
3705         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
3706         
3707         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
3708         by the previous change.
3709
3710 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
3711
3712         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
3713         loader.c, marshal.c, metadata-internals.h, metadata.c,
3714         method-builder.c, object.c, reflection.c: introduced specific functions
3715         to allocate from the domain and image mempools and cleaned up most of
3716         the code to use them (still missing a few in reflection.c).
3717         Keep the loader bytes counter updated.
3718
3719 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
3720
3721         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
3722         loader-related counters.
3723
3724 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
3725
3726         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
3727         added more MS-compatible counters.
3728
3729 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * class.c (mono_class_setup_fields): Call setup_fields before accessing
3732         class->blittable. Fixes #428217.
3733
3734 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
3735
3736         * reflection.c (mono_image_get_field_on_inst_token): Call 
3737         field_encode_signature () since that handles custom modifiers too.
3738         Fixes #424663.
3739
3740 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
3741
3742         * reflection.c (add_custom_modifiers): New helper function to merge custom
3743         modifiers stored in objects to a MonoType.
3744         (fieldref_encode_signature): Encode custom modifiers.
3745         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
3746         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
3747
3748 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
3749
3750         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
3751         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
3752         64-bit IL only images because imports are not resolved for IL only images.
3753         Special thanks to Bill Holmes for finding this bug and testing the patch.
3754         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
3755
3756         Contributed under MIT/X11 license.
3757
3758 2008-09-19  Miguel de Icaza  <miguel@novell.com>
3759
3760         * mono-config.c (dllmap_start): Add support for the bits keyword
3761         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
3762
3763 2008-09-19  Mark Probst  <mark.probst@gmail.com>
3764
3765         * reflection.c (inflate_mono_method): When the class the method is
3766         to be inflated for is itself not inflated, just return the method.
3767
3768 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
3769
3770         * mono-perfcounters.c: use more user friendly process instance names.
3771
3772 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
3773
3774         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3775           handle "[in] ref" and "[in][out] ref" cases.
3776
3777         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
3778           to mono_mb_create_method.  This was causing problems calling native to
3779           managed passing Variants by value.
3780
3781         Code is contributed under MIT/X11 license.
3782
3783 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
3784
3785         * class.c (can_access_internals): Call mono_assembly_load_friends ()
3786         before accessing the friend_assembly_names field.
3787
3788         * assembly.c (mono_assembly_load_friends): Make this callable multiple
3789         times.
3790         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
3791         called lazily when it is needed.
3792
3793         * metadata-internals.h (struct _MonoAssembly): Add 
3794         'friend_assembly_names_inited' flag.
3795
3796 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
3797
3798         * mono-perfcounters-def.h: fix the types of a few counters.
3799         * mono-perfcounters.c: implemented the instance names getter
3800         and a few bugfixes.
3801
3802 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
3803
3804         * culture-info-table.h : regenerated.
3805
3806 2008-09-17  Robert Jordan  <robertj@gmx.net>
3807
3808         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
3809         context bound objects. Fixes #415577.
3810
3811         Code is contributed under MIT/X11 license.
3812
3813 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
3814
3815         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
3816         implementation (bug #423582).
3817
3818 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
3819
3820         * object.c (mono_object_get_virtual_method): Handle the case method->slot
3821         is not set. Fixes #426309.
3822
3823 2008-09-16  Jb Evain  <jbevain@novell.com>
3824
3825         * class.c (mono_class_from_name): fix the exported type look up
3826         when the type is defined in a referenced assembly.
3827
3828 2008-09-16  Jb Evain  <jbevain@novell.com>
3829
3830         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
3831         increment the next index counter on each iteration to make that work
3832         for more than one type forwarder. Unmanaged part to fix #422929.
3833
3834 2008-09-15  Mark Probst  <mark.probst@gmail.com>
3835
3836         * object-internals.h: enum ComInterfaceType in
3837         MonoInterfaceTypeAttribute is guint32, not guint16.
3838
3839 2008-09-12  Mark Probst  <mark.probst@gmail.com>
3840
3841         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
3842         writing code.
3843
3844 2008-09-11  Mark Probst  <mark.probst@gmail.com>
3845
3846         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
3847         not gboolean.
3848
3849 2008-09-11  Mark Probst  <mark.probst@gmail.com>
3850
3851         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
3852         Endianness fixes for MonoSymbolFileOffsetTable.
3853
3854 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
3855
3856         * process.c (complete_path) : Removing quotes from the 
3857           input path.  The glib file routines do not handle file paths
3858           that have quotes around them.
3859
3860         Code is contributed under MIT/X11 license.
3861
3862 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
3863
3864         * socket-io.h : Adding a comment to provide locations where 
3865           changes to MonoSocketAsyncResult need to be synced.
3866
3867         Code is contributed under MIT/X11 license.
3868
3869 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
3870
3871         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
3872         parameters as well. Fixes #425001.
3873
3874 2008-09-08  Miguel de Icaza  <miguel@novell.com>
3875
3876         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
3877         windows build.
3878
3879 2008-09-07  Miguel de Icaza  <miguel@novell.com>
3880
3881         * console-io.c: Add support for tracking the window size if it
3882         changes.
3883
3884         The setup is very simple: the TtySetup function will now return a
3885         pointer to a location in memory that tracks the current console
3886         size.  The managed code checks its current value every time its
3887         queried against the last value set, and updates accordingly.
3888
3889         With this setup we can work with multiple consoles, and we do not
3890         require to poke into managed code from a signal handler.
3891
3892         Additionally, the environment for COLUMNS and LINES is now handled
3893         in unmanaged code.
3894
3895         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
3896
3897 2008-09-07  Mark Probst  <mark.probst@gmail.com>
3898
3899         * marshal.c (mono_type_native_stack_size): Treat
3900         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
3901
3902 2008-09-04  Jb Evain  <jbevain@novell.com>
3903
3904         * class.c (mono_class_is_assignable_from): fix assignability of nullables
3905         to nullables.
3906
3907 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
3908
3909         * verify.c (verify_type_compatibility_full): Revert change
3910         to allow converting a native int to unmanaged pointer be verifiable
3911         under non-strict mode.
3912         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
3913
3914         * verify.c: Added some TODOs.
3915
3916 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
3917
3918         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
3919           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
3920           Changed to use GlobalAlloc for the memory returned on Windows platforms.
3921
3922         Code is contributed under MIT/X11 license.
3923
3924 2008-09-02  Jb Evain  <jbevain@novell.com>
3925
3926         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
3927
3928 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
3929
3930         reflection.c (typebuilder_setup_fields): Handle classes with
3931         explicit size.
3932
3933 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
3934
3935         class.c (mono_class_setup_events): Add memory barrier due to
3936         double checked locking.
3937         
3938         class.c (mono_class_setup_properties): Same.
3939
3940 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
3941
3942         * class.c (mono_class_is_assignable_from): Fix the build.
3943         
3944         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
3945         before accessing klass->interface_bitmap. Fixes #421744.
3946
3947 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
3948
3949         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
3950         the runtime into no-exec mode, useful when running the AOT compiler.
3951
3952         * appdomain.c gc.c object.c: Avoid executing managed code when running
3953         in no-exec mode.
3954         
3955         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
3956
3957         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
3958         special case when the mono_assembly_loaded () returns NULL because the 
3959         search hook is not installed.
3960
3961 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
3962
3963         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
3964         crashes in bstr marshalling on linux.
3965
3966 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
3967
3968         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
3969         with more than one parameter.
3970
3971 2008-08-24  Miguel de Icaza  <miguel@novell.com>
3972
3973         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
3974         start/stop flow control as well when turning off ICANON (allows
3975         C-s and C-q to be read by Console.ReadKey).
3976
3977 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
3978
3979         * class.c (mono_class_init): Move the initialization of nested classes
3980         into mono_class_get_nested_types (). Fixes #418433.
3981
3982         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
3983         flag.
3984
3985         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
3986         iterating tough the nested classes of a class.
3987
3988 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
3991         on arm.
3992
3993 2008-08-22  Miguel de Icaza  <miguel@novell.com>
3994
3995         * console-io.c (sigcont_handler): Support signal chaining for
3996         SIGCONT.
3997
3998         (console_set_signal_handlers): Use best practices with sigaction,
3999         clear the structure before using it. 
4000
4001 2008-08-22  Robert Jordan  <robertj@gmx.net>
4002
4003         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4004         Fix the Windows build.
4005
4006 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4007
4008         * class.c (mono_class_generic_sharing_enabled): Make the default
4009         sharing mode 'corlib'.
4010
4011 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4012
4013         * console-io.c (console_set_signal_handlers): Fix a warning.
4014
4015         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4016         method normally, the JIT will take care of avoiding recursion.
4017
4018 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4019
4020         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4021
4022         Code is contributed under MIT/X11 license.
4023
4024 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4025
4026         * console-io.c (sigcont_handler): We need to restore the entire
4027         termios state, not only the original settings, as things like echo
4028         can be controlled after this (Booish exposes this issue with its
4029         own ReadLine implementation).
4030
4031         Additionally, we need to set the terminal back into keypad_xmit
4032         mode.
4033         
4034         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4035         string as a paramter as well.   Otherwise we get different
4036         keyboard sequences.
4037
4038 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4039
4040         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4041         delegates with byref out parameter passing. Fixes #351520.
4042
4043         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4044         a generic context.
4045         (mono_type_get_desc): Add the type arguments for GENERICINST.
4046         (mono_method_full_name): Stringify the class name using mono_type_full_name
4047         so it picks up generic arguments.
4048
4049 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4050
4051         * console-io.c: Removed debug output.
4052
4053 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4054
4055         reflection.c (mono_reflection_create_runtime_class): Alloc
4056         the nested classes linked list using the dynamic image mempool.
4057         Fixes leak in corlib compilation.
4058
4059 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4060
4061         * console-io.c: Fix incredibly annoying behavior on the console
4062         after resuming execution after control-z.   This affected every
4063         console application.
4064
4065 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4066
4067         * mempool-internals.h: Header for mono private mempool functions. The first
4068         two function are for allocating glib linked lists using pools.
4069
4070         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4071
4072         * Makefile.am: Added mempool-internals.h.
4073
4074 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4077         (mono_domain_free): Ditto.
4078
4079         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4080         be used by the JIT to store its domain-specific information, instead of putting
4081         it directly into MonoDomain.
4082
4083         * domain.c (mono_install_create_domain_hook): New helper function to install
4084         a hook which initializes domain->runtime_info.
4085
4086         * domain.c (mono_install_free_domain_hook): Ditto.
4087         
4088 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4089
4090         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4091         asserting if the ares parameter is null.
4092
4093         * mono-perfcounters.c: Fix warnings.
4094
4095         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4096         is not needed, don't check for interruptions either.
4097         (mono_marshal_get_delegate_end_invoke): Ditto.
4098
4099 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4100
4101         * mono-perfcounters.c (predef_readonly_counter): added support for
4102         reading the ASP.NET Requests Queued counter from another process.
4103
4104 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4107         MonoImage to simplify the AOT code.
4108
4109 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4110
4111         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4112         marshalling. Fixes #416078.
4113
4114 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4115         
4116         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4117         it is set, looking up the icall address is deferred to the JIT, since 
4118         in embedded scenarios, the icall might not be registered in the runtime
4119         doing the AOT compilation. Backported from the 2.0 branch.
4120
4121 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4122
4123         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4124         Fixes #415621.
4125
4126 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4127
4128         * Makefile.am: added support for cross-compilation.
4129
4130 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4131
4132         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4133
4134 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4135
4136         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4137
4138 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4139
4140         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4141         mono-perfcounters.c: performance counters implementation.
4142
4143 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4144
4145         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4146         to gpointer, letting the AOT code decide what to store in it.
4147
4148 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4149
4150         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4151           mono_class_setup_methods if the methods are not initialized.
4152
4153         Code is contributed under MIT/X11 license.
4154
4155 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4156
4157         * verify.c: Remove some debug code I commited by accident.
4158
4159         * verify.c (mono_method_is_valid_in_context): Change the return value
4160         to make possible to distinguish between invalid and unverifiable.
4161
4162         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4163         methods.
4164
4165 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4166
4167         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4168         constraints. Fixes regression in gtest-253.
4169
4170 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4171
4172         * verify.c (mono_verifier_verify_class): Don't allow generic types
4173         with explicit layout.
4174
4175         * verify.c (mono_method_verify): Check locals and argument types.
4176
4177 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4178
4179         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4180         wait if the thread is in StopRequested state.
4181
4182         * class.c (mono_class_from_name): Refactor the module searching code into
4183         a separate function so it can be reused in the AOT case too.
4184
4185 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4186
4187         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4188         Check both the type and it's generic type definition for loader errors.
4189         
4190         * verify.c (mono_method_is_valid_in_context): Don't generate another
4191         error when a type errors occur, this leads to the wrong exception been
4192         thrown.
4193
4194 2008-07-28  Dick Porter  <dick@ximian.com>
4195
4196         * icall-def.h
4197         * process.c
4198         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4199         New internal calls to duplicate and close a process handle.
4200
4201 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4202
4203         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4204
4205 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4206
4207         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4208
4209 2008-07-27  Robert Jordan  <robertj@gmx.net>
4210
4211         * class.c (mono_class_init): Don't compute class.has_finalize for
4212         valuetypes. Fixes #412477.
4213
4214 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4215
4216         * verify.c: Implement constraint equivalence checking.
4217         This is required when a generic parameter is used as
4218         argument to a constrained one.
4219
4220         Fixes #410637.
4221
4222 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4223
4224         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4225
4226         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4227
4228         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4229         synch with managed object layout.
4230
4231 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4232
4233         * verify.c (do_branch_op): Handle valuetypes and generic
4234         arguments properly.
4235
4236         * verify.c (do_cmp_op): Same.
4237
4238         Fixes #410383.
4239
4240 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4241
4242         * generic-sharing.c: Fix memory leaks.
4243
4244         * class.c, class-internals.h: Make
4245         mono_class_inflate_generic_type_with_mempool() non-static.
4246
4247 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4248
4249         * pedump.c (dump_verify_info): Dump full class name.
4250
4251 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4252
4253         * generic-sharing.c: Removed some old code that didn't do anything.
4254
4255 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4256         * profiler.c: Added runtime_initialized_event,
4257         mono_profiler_install_runtime_initialized and
4258         mono_profiler_runtime_initialized. This new hook tells the profiler
4259         when the runtime is sufficiently initialized to be able to call
4260         mono_thread_attach on the root appdomain.
4261         * profiler.h, profiler-private.h: Likewise.
4262
4263 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4264
4265         * verify.c (do_cast): Do boxing for generic arguments as well.
4266
4267         * class.c (is_nesting_type): Drop generic instantiations before
4268         checking for nesting.
4269
4270         * class.c (can_access_instantiation): Allow access to generic
4271         arguments.
4272
4273 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4274
4275         * verify.c (verify_class_for_overlapping_reference_fields):
4276         On some cases, the field size might be zero, guard against that.
4277         Fix the explicit layout check to work as expected.
4278
4279 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4280
4281         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4282         mono_thread_resume () during shutdown, since the thread we want to abort
4283         might be suspended.
4284
4285 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4286
4287         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4288         warning.
4289
4290         * debug-mono-symfile.c: Fix a warning.
4291
4292         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4293
4294         * object.c (mono_class_vtable): Check if exception_type is set, and return
4295         NULL as defined by the function comments.
4296
4297 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4298
4299         * mempool.c: Use malloc for every single mempool allocation if the
4300         configure option is set.  This makes it easier to track mempool
4301         allocations with tools like Valgrind.
4302
4303 2008-07-22  Jb Evain  <jbevain@novell.com>
4304
4305         * reflection.c (create_dynamic_mono_image): emit the same
4306         metadata version that SL2 does when creating a SL2 image.
4307
4308 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4309
4310         * icall-def.h:
4311         * icall.c: New icall System.Enum:get_hashcode. This function
4312         avoids the overhead of boxing the enum to the underlying type.
4313
4314 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4315
4316         * reflection.c (mono_method_get_object): Don't let static RGCTX
4317         invoke wrappers get into MonoReflectionMethods.
4318
4319 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
4320
4321         * object-internals.h:
4322         * object.c: New mono_runtime_class_init_full function
4323         that makes throwing the exception optinal.
4324
4325         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
4326         for the case where the exception object is supplied.
4327
4328 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
4329
4330         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
4331         old ld versions.
4332
4333         Contributed under MIT/X11 license.
4334
4335 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4336
4337         * string-icalls.c (ves_icall_System_String_InternalSplit):
4338         Optimize array allocation by caching the MonoClass of the
4339         array type.
4340
4341         * icall.c (ves_icall_Type_GetMethodsByName): Same.
4342
4343         * reflection.c (mono_param_get_objects): Same.
4344
4345 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4346
4347         * icall-def.h:
4348         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
4349         It inflates the given type using the class context.
4350
4351 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4352
4353         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
4354         the vtable if it already exists.
4355
4356         * object-internals.h: Add mono_class_try_get_vtable as part of the
4357         internal API.
4358
4359         * reflection.c (mono_type_get_object): Use the MonoObject from the
4360         vtable when possible. Reduces locking contention on reflection heavy
4361         code.
4362
4363 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
4364
4365         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
4366         g_bit_nth_msf () since that macro is not implemented in eglib.
4367
4368 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
4371         on platforms which do not support it.
4372
4373 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
4376
4377 2008-07-11  Martin Baulig  <martin@ximian.com>
4378
4379         * mono-debug-debugger.h
4380         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
4381
4382         * mono-debug-debugger.c
4383         (_mono_debugger_interruption_request): New global volatile variable.
4384         (mono_debugger_check_interruption): New public function.
4385
4386         * threads.c
4387         (mono_thread_current_check_pending_interrupt): Call
4388         mono_debugger_check_interruption().
4389         (mono_thread_interruption_checkpoint_request): Likewise.
4390
4391 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4392
4393         * verify.c: Add more type checks for loaded types. Verify the result
4394         handle from ldtoken.
4395
4396 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4397
4398         * loader.c (field_from_memberref): Don't crash if the field
4399         wasn't found.
4400
4401 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4402
4403         * verify.c: Verify if type and method instantiations
4404         don't have invalid VAR or MVAR arguments.
4405
4406 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4407
4408         * verify.c: Fix double free of function pointer list.
4409
4410 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4411
4412         * object.c (mono_string_to_utf8): Comment the new code as it
4413         breaks under eglib.
4414
4415 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
4416
4417         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
4418
4419 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
4420
4421         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
4422           is not throw too many times.
4423
4424         Code is contributed under MIT/X11 license.
4425
4426 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4427
4428         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
4429         debugging is turned off.
4430
4431 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
4432
4433         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
4434
4435 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4436
4437         * class-internals.h, class.c: Added new generic sharing option:
4438         Share only stuff in System.Collections.Generic, which is now the
4439         default.
4440
4441 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4442
4443         * generic-sharing.c, class-internals.h: New function for getting a
4444         generic method in a generic class given the corresponding method
4445         for a different instantiation of the class.  Partly refactored
4446         from mini-trampolines.c.
4447
4448         * class.c: Make sure generic methods have a class_inst if they are
4449         part of a generic class.
4450
4451         * metadata.c (mono_type_stack_size_internal): Handle type
4452         variables.
4453
4454 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4455
4456         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
4457         Signifies whether information on the this/vtable/mrgctx variable
4458         is available.
4459
4460 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4461
4462         * object.c, object-internals.h, icall.c: New function
4463         mono_delegate_ctor_with_method(), which does the same as
4464         mono_delegate_ctor(), but takes an explicit method argument
4465         instead of taking the method from the jit info.
4466
4467         * marshal.c: When creating a delegate with an inflated method take
4468         the "this" argument as the target class for the castclass.
4469
4470 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4471
4472         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
4473         mono_jit_info_table_find() to perform very badly in some cases.
4474
4475 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4476
4477         * icall.c (type_from_typename): Handle 'string'.
4478
4479         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
4480         wrappers into the wrapper_hash, since the key is not a MonoMethod.
4481
4482 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4483
4484         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
4485
4486         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
4487         number of available managed allocator types.
4488
4489         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
4490         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
4491
4492 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
4495         which is a low level lock protecting just the 'jit_code_hash' hash table.
4496
4497         * domain.c: Initialize+cleanup jit_code_hash_lock.
4498         
4499 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4500
4501         * coree.c (mono_load_coree): Set coree_module_handle global variable only
4502         after initialization.
4503
4504         * coree.h: Make MonoFixupExe internal.
4505
4506         Contributed under MIT/X11 license.
4507
4508 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4509
4510         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
4511         because that is platform independent. Check NumberOfRvaAndSizes in PE32
4512         as well.
4513         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
4514         image being loaded is a CLI image and _CorValidateImage gets called.
4515
4516         * coree.h: Add MonoLoadImage.
4517
4518         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
4519         instead of LoadLibrary.
4520
4521         Contributed under MIT/X11 license.
4522
4523 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
4524
4525         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
4526         for any primitive type.
4527
4528 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4529
4530         * object.c (mono_array_new_specific): Optimize this and the other allocation
4531         functions a bit.
4532         
4533         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
4534         domains too if mono_dont_free_domains is set.
4535
4536         * domain-internals.h (mono_dont_free_domains): New internal option controlling
4537         whenever to free appdomain data after it has been unloaded.
4538
4539         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
4540         
4541 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
4542
4543         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
4544         (mono_method_get_equivalent_method): Fix a warning.
4545
4546         * object.c (mono_message_init): Avoid looking up array types for each call.
4547
4548 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4549
4550         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
4551         call.
4552
4553         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
4554         even more.
4555
4556         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
4557         each iteration.
4558
4559         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
4560         fields of an enum.
4561
4562 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * object.c (mono_value_box): Fix boxing of nullables.
4565
4566 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4567
4568         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
4569         mono_module_handle that is defined by the linker; no initialization required.
4570         * coree.h: Remove mono_module_handle, add __ImageBase, update
4571         mono_image_open_from_module_handle.
4572         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
4573         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
4574         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
4575         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
4576         to 4 GB away from image base address. IA64 version is not tested but was very
4577         easy to implement and should work if we ever need it.
4578         * domain.c (mono_init_internal): Avoid system error message boxes.
4579         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
4580         with has_entry_point. Handle do_mono_image_load fauilre correctly.
4581         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
4582         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
4583         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
4584
4585         Contributed under MIT/X11 license.
4586
4587 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4588
4589         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
4590         as part of the private mono API.
4591         
4592         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
4593         Do proper argument checking for methods that belong to generic classes.
4594         Do proper type resolution for GMFH/2.
4595         Fixes #377324.
4596         
4597 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4598
4599         * verify.c (do_switch): Fix a memory corruption bug with
4600         the jump index is out of bound.
4601
4602 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4603
4604         * verify.c: Disable debug code.
4605
4606 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4607
4608         * reflection.c (mono_image_get_methodbuilder_token): Use
4609         mono_image_get_methodspec_token_for_generic_method_definition
4610         instead of mono_image_get_memberref_token. We cache more memberef
4611         entries now.
4612
4613 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4614
4615         * verify.c: Inflate exception clause types.
4616         Fixes #402606.
4617         
4618 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
4621         name.
4622
4623         * reflection.c (mono_image_get_ctorbuilder_token): Same.
4624
4625         * reflection.c (mono_image_create_method_token): Same.
4626
4627 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4628
4629         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
4630         It does the same as mono_image_get_methodref_token but works on
4631         MethodBuilder.
4632
4633         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
4634         and always generate a methodspec. This follows the old behavior and fixes
4635         the regressions in System.Core. 
4636
4637 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4638
4639         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
4640         don't event mono_class_get () succeeds. Fixes #402182.
4641
4642 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4643
4644         * metadata-internals.h: Added MonoDynamicImage::methodspec
4645         hashtable to store methodspec tokens created for MethodBuilders.
4646
4647         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
4648         MethodBuilders as open instantiations if a methodspec was requested.
4649
4650         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
4651
4652         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
4653
4654         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
4655
4656         Fixes bug #349190.
4657
4658 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4659
4660         * loader.c (method_from_methodspec): Avoid crashing if the
4661         method lookup fails.
4662
4663 2008-06-20  Dick Porter  <dick@ximian.com>
4664
4665         * socket-io.c (get_socket_assembly): Cope with Moonlight network
4666         classes being in a different assembly.  Fixes bug 399184.
4667
4668 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
4669
4670         * loader.c (mono_loader_init): Make this callable multiple times.
4671         (mono_dllmap_insert): Call mono_loader_init () so this works even before
4672         the runtime is initialized. Fixes #401755.
4673
4674 2008-06-19  Dick Porter  <dick@ximian.com>
4675
4676         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
4677         Fixes bug 349688.
4678
4679 2008-06-19  Dick Porter  <dick@ximian.com>
4680
4681         * socket-io.c:
4682         * icall-def.h: Implement Socket generic Send() and Receive()
4683         methods.  Fixes bug 395168.
4684
4685 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
4686
4687         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
4688
4689         Contributed under MIT/X11 license.
4690
4691 2008-06-18  Martin Baulig  <martin@ximian.com>
4692
4693         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
4694         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
4695         set to 80.0.  The debugger <-> runtime interface is now frozen as
4696         well.   
4697
4698         * mono-debug.c
4699         (mono_debug_debugger_version): Bump to 4.
4700
4701 2008-06-18  Martin Baulig  <martin@ximian.com>
4702
4703         * debug-mono-symfile.c
4704         (load_symfile): Don't check the minor version.
4705
4706         * debug-mono-symfile.h: Bump the version number to 50.0.
4707
4708 2008-06-18  Martin Baulig  <martin@ximian.com>
4709
4710         * debug-mono-symfile.c
4711         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
4712         minimum required version.
4713
4714 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4715
4716         * reflection.c (mono_custom_attrs_from_property): Fix support for
4717         retriveving cattrs of dynamic inflated generic types.
4718
4719         * reflection.c (mono_custom_attrs_from_event): Same.
4720
4721         * reflection.c (mono_custom_attrs_from_field): Same;
4722
4723         * reflection.c (typebuilder_setup_events): Same cattrs of events.
4724
4725         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
4726         Moved to metadata.c.
4727
4728         * metadata.c: New functions to retrive the equivalent field, event
4729         of property from the generic type definition.
4730
4731         * metadata-internals.h: Added new functions from metadata.c.
4732
4733 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4734
4735         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
4736         to cached in a mempool is used.
4737
4738         * metadata.c (free_generic_class): In some situations field generic_info type
4739         is not properly dup'ed and leads to double free'ing.
4740
4741         Fixes #400643.
4742
4743 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4744
4745         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
4746         this arguments (will be needed later for generic methods).
4747         Collect stats.
4748
4749 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4750
4751         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4752         Create a static RGCTX invoke wrapper for methods which require it.
4753
4754 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4755
4756         * object.c, class-internals.h: New function for checking whether
4757         an individual field is special static.
4758
4759 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
4762         linear search since the table is sorted.
4763
4764         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
4765         Fixes #324180.
4766
4767 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
4770         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
4771
4772         * gc.c (mono_domain_finalize): Allow an infinite timeout.
4773
4774         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
4775         
4776         * threads.c (mono_thread_request_interruption): Get rid of locking, use
4777         InterlockedCompareExchange to query and modify 
4778         thread->interruption_requested.
4779
4780         * object-internals.h (struct _MonoThread): Change interruption_requested
4781         to a gint32 so it can be modified by atomic operations. Add 
4782         'critical_region_level' from the managed side, change small_id to a guint32,
4783         add new set of 'unused' fields.
4784
4785         * appdomain.c: Bump corlib version.
4786
4787 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4788
4789         * class.c (mono_class_from_name): Search modules as well. Fixes
4790         #322332.
4791
4792 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4793
4794         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
4795         templates.  Templates are generalized with an additional type_argc
4796         argument.  RGCTX templates have type_argc==0, MRGCTX templates
4797         have type_argc>0.
4798
4799         * domain-internals.h, domain.c: New hash table for looking up
4800         MRGCTXs.
4801
4802         * metadata.c, metadata-internals.h: Rename hash and equal
4803         functions for MonoGenericInst's and make them public.
4804
4805         * class-internals.h: New data structures for the MRGCTX.  Macros
4806         for distinguishing slots in the RGCTX and the MRGCTX.
4807
4808 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4809
4810         * object.c (mono_method_get_imt_slot): Put the same methods of
4811         different instantiations of the same generic interface in the same
4812         IMT slots, to make generic sharing simpler.
4813
4814 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4815
4816         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
4817
4818         * metadata.c (mono_metadata_field_info_with_mempool): Added.
4819         This function works just like mono_metadata_field_info, but
4820         accept a mempool as argument to be used allocating memory.
4821
4822         * marshal.c (mono_marshal_load_type_info): Use new function
4823         to load marshal data into image mempool.
4824
4825 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4826
4827         * class.c (mono_class_inflate_generic_type_with_mempool):
4828         This function allows to inflate a generic type using
4829         a mempool.
4830
4831         * class.c (inflate_generic_type): Take a mempool as argument
4832         and use it to do type dup'ing.
4833
4834         * class.c (mono_class_setup_fields): Field type for generic
4835         generic classes are allocated from the image mempool.
4836
4837         * metadata.c (free_generic_class): Inflated field type is
4838         now allocated in the image mempool.
4839
4840 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4841
4842         * threads.c (thread_cleanup): Free MonoThread::name.
4843
4844 2008-06-12  Marek Habersack  <mhabersack@novell.com>
4845
4846         * appdomain.c (ensure_directory_exists): avoid unnecessary
4847         mkdir(2) calls when the shadow directory already exists.
4848         (mono_make_shadow_copy): copy also satellite assemblies from the
4849         private bin directories.
4850
4851 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
4852
4853         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
4854         
4855         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
4856         a page boundary. Fixes #396219.
4857
4858 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4859
4860         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
4861         due to double-checked locking.
4862
4863 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4864
4865         * assembly.c (build_assembly_name): Release memory on failure.
4866
4867         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
4868
4869 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4870
4871         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
4872         memory on failure.
4873
4874 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4875
4876         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
4877         memory on failure.
4878
4879 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4880
4881         * loader.c (field_from_memberref): Check if field signature type is equal
4882         to the non-inflated type of the field. Fixes #398980.
4883
4884 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
4885
4886         * assembly.c (mono_assembly_load_from_full): Call 
4887         mono_assembly_load_friends () outside the assemblies lock, since it can
4888         acquire the loader lock. Fixes #323696.
4889
4890         * reflection.c (resolve_object): Inflate the inst with the context for
4891         FieldOnTypeBuilderInst. Fixes #399010.
4892
4893 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4894
4895         * reflection.c (mono_image_get_field_on_inst_token): Don't
4896         inflate the field to encode it's signature. If it's a
4897         VAR or MVAR it should stay that way in the signature.
4898         Fixes #399047.
4899
4900 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4901
4902         * reflection.c (resolve_object): Release memory of inflated types.
4903
4904 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4905
4906         * loader.c (mono_method_get_signature_full): Remove assert about
4907         loading a methodspec to a generic method. We have such methods, such as
4908         System.Threading.Interlocked::CompareExchange<T>.
4909         This assert was removed since it crashes the verifier when it checks
4910         methods calling CompareExchange<T>.
4911
4912 2008-06-10  Marek Safar  <marek.safar@gmail.com>
4913
4914         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
4915         of Type array and not MonoType.
4916
4917 2008-06-10  Marek Habersack  <mhabersack@novell.com>
4918
4919         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
4920         <lupus@ximian.com>
4921
4922 2008-06-10  Martin Baulig  <martin@ximian.com>
4923
4924         * debug-mono-symfile.h
4925         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
4926         changes to the file format, but we were generating incorrect
4927         source file indices in the line number table due to a bug, which
4928         made backtraces report an incorrect source file.
4929
4930 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4931
4932         * mono-debug.c: Moved mono_debug_free_method_jit_info from
4933         mini/debug-mini.c to here.
4934
4935         * mono-debug.c (il_offset_from_address): Free memory from find_method.
4936
4937         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
4938         use it to release structs returned by mono_debug_find_method.
4939
4940 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
4941
4942         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
4943         since it needs to set method->slot for all interface methods.
4944
4945 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
4946
4947         * class-internals.h: Forgot to add.
4948
4949 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
4950
4951         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
4952
4953         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
4954         Lookup the custom attributes from property_hash.
4955
4956         * reflection.c (mono_save_custom_attrs): Save the custom attributes
4957         in property_hash. Allocate all data using the image mempool.
4958
4959         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
4960         for dynamic_custom_attrs to checks if the image is dynamic.
4961
4962 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4963
4964         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
4965         assemblies array.
4966         
4967         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
4968         runtime functions while holding the domain assemblies lock.
4969
4970 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
4971
4972         * verify.c: Reapplied the last bit of the reverted changes.
4973
4974 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
4975
4976         * verify.c: Reapplied more of the reverted changes.
4977
4978 2008-06-09  Martin Baulig  <martin@ximian.com>
4979
4980         * debug-mono-symfile.c (load_symfile): Check the major version
4981         first; if it's wrong, don't print the minor version in the error message.
4982
4983 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4984
4985         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
4986         lock instead of the domain lock to avoid deadlocks, since the thread might
4987         already hold the loader lock.
4988
4989         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
4990         (mono_thread_attach): Ditto.
4991
4992         * monitor.c: Use a TLS variable for holding the current thread id instead
4993         of calling pthread_self ().
4994         (mono_monitor_init_tls): New internal function to initialize the TLS
4995         variable.
4996         (mono_monitor_try_enter_internal): Put the owner == id check after the
4997         owner == 0 check.
4998
4999         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
5000         missed optimizations when using gcc-4.3.
5001
5002 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
5003
5004         * reflection.c (mono_dynamic_image_free): Free the memory
5005         used by MonoGenericParam in MonoDynamicImage::gen_param.
5006
5007         * reflection.c (mono_reflection_setup_generic_class): Allocate
5008         container from mempool.
5009
5010         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5011         container from mempool.
5012
5013 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5014
5015         * threads.c (mono_set_pending_exception): New internal function to set the
5016         pending exception of the current thread.
5017         (mono_thread_get_and_clear_pending_exception): Check for 
5018         thread->pending_exception as well.
5019
5020         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5021
5022         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5023         it can trigger a collection.
5024
5025 2008-06-06  Martin Baulig  <martin@ximian.com>
5026
5027         Merged the `debugger-kahalo' branch.
5028
5029         * mono-debug.h
5030         (MONO_DEBUGGER_VERSION): Bumped to 72.
5031
5032         * debug-mono-symfile.h
5033         (MonoSymbolFileMethodIndexEntry): Removed.
5034         (MonoSymbolFileMethodEntry): New public typedef.
5035         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5036         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5037         `data_offset'.
5038         (MonoSymbolFileMethodEntry): Removed.
5039         (MonoSymbolFileLexicalBlockEntry): Removed.
5040         (MonoSymbolFileLineNumberEntry): Removed.
5041         (MonoDebugLexicalBlockEntry): Removed.
5042         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5043         removed `num_il_offsets' and `il_offsets'.
5044         (MonoSymbolFile): Replace `version' with `major_version' and
5045         `minor_version'.
5046         (MONO_SYMBOL_FILE_VERSION): Replace with
5047         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5048         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5049
5050         * debug-mono-symfile.c
5051         (mono_debug_symfile_lookup_location): Add support for the new line
5052         number table format.
5053
5054 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5055
5056         * metadata.c (free_generic_class): Release the inflated
5057         MonoClass of dynamic generic classes if it's not a generic
5058         type definition.
5059
5060 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5061
5062         * verify.c: Reapplied more of the reverted changes.
5063
5064 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5065
5066         * reflection.c (lookup_custom_attr): Clean the cached flag or
5067         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5068         for SRE types.
5069
5070 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5071
5072         * verify.c: Reapplied a small part of the reverted changes.
5073
5074 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5075
5076         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5077
5078         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5079         previously in managed code.
5080         (mono_monitor_exit): Ditto.
5081         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5082
5083         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5084         the managed definition.
5085
5086 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5087
5088         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5089
5090 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5091
5092         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5093         
5094         * monitor.c: Add some micro optimizations.
5095
5096         * icall.c (type_from_typename): Handle 'bool'.
5097
5098 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5099
5100         * verify.c: Implement constructor verification per P III 1.8.1.4.
5101         Fixes #396716.
5102
5103 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5104
5105         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5106         holding the assemblies lock here too.
5107
5108 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5109
5110         * verify.c: Kill stack_top function.
5111
5112 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5113
5114         * verify.c: Kill stack_get function.
5115
5116 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5117
5118         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5119
5120 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5121
5122         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5123         more reliable.
5124
5125         * verify.c (mono_method_verify): Inflate params and locals to avoid
5126         mismatch when checking for compatibility.
5127
5128 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5129
5130         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5131         Length prefix should be size in bytes. Fix bug #339530.
5132         
5133         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5134         Length prefix should be size in bytes. Fix bug #339530.
5135
5136         Code is contributed under MIT/X11 license.
5137
5138 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5139
5140         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5141
5142         Contributed under MIT/X11 license.
5143
5144 2008-06-05  Martin Baulig  <martin@ximian.com>
5145
5146         * mono-debug-debugger.c
5147         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5148
5149 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5150
5151         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5152         while holding the assemblies lock to prevent deadlocks. Handle the case
5153         where the search hook returns NULL but the assembly was still loaded.
5154         Fixes #323696.
5155
5156         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5157         modify domain state.
5158
5159 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5160
5161         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5162         * Makefile.am (pedump_LDADD): Post-process object files and
5163         add dtrace-generated object file, if necessary.
5164
5165         Code is contributed under MIT/X11 license.
5166
5167 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5168
5169         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5170
5171 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5172
5173         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5174
5175 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5176
5177         * threads.c: Try to free everything from the delayed free table
5178         when shutting down threads, and set the variable to NULL after the
5179         table is freed so that calling
5180         mono_thread_hazardous_try_free_all() when shutting down the root
5181         domain doesn't crash.
5182
5183 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5184
5185         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5186         the caller if resulting type was inflated.
5187
5188         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5189         was inflated.
5190
5191         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5192
5193
5194 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5195
5196         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5197         class library tests.
5198
5199         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5200         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5201         #396989.
5202
5203 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5204
5205         * domain.c, domain-internals.h: The JIT infos are now freed by the
5206         JIT info table code.  They are freed immediately if there only a
5207         single JIT info table in circulation.  If there is more, the free
5208         is delayed via a queue.
5209
5210         * threads.c, threads-types.h: New hazard pointer function for
5211         freeing all freeable delayed items in one sitting.
5212
5213 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5214
5215         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5216
5217         * reflection.c (typebuilder_setup_properties): Same.
5218
5219         * reflection.c (typebuilder_setup_events): Same.
5220
5221 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5222
5223         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5224         and use it for allocating memory.
5225
5226         * reflection.c (mono_marshal_spec_from_builder): Same.
5227
5228         * reflection.c: Change code to use new signatures.
5229
5230         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5231
5232 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5233
5234         * decimal.c (rescale128): Put back one line which was accidently commented
5235         out.
5236         
5237         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5238         to cause crashes.
5239
5240 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5241
5242         * reflection.c (mono_reflection_generic_class_initialize): Name must
5243         be always malloc'ed so we can free it later on. Do this for field, property
5244         and event.
5245
5246         * metadata.c (free_generic_class): Free field, property and event names.
5247
5248 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5249
5250         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5251         instead of g_memdup.
5252
5253         * reflection.c (typebuilder_setup_fields): Same.
5254
5255 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5256
5257         * decimal.c (rescale128): Optimize this function a bit more.
5258
5259 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5260
5261         * metadata.c (free_generic_class): Release some memory from
5262         SRE generic classes.
5263
5264 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5265
5266         * reflection.c (mono_image_get_generic_field_token): No reference
5267         to name is kept, free it.
5268
5269         * reflection.c (mono_reflection_generic_class_initialize): Free
5270         more memory of the inflated field.
5271
5272 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5273
5274         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5275         code.
5276
5277 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5278
5279         * reflection.c (mono_dynamic_image_free): Release memory used by
5280         MonoDynamicImage::array_methods elements.
5281
5282         * reflection.c (assembly_add_win32_resources): Release memory after
5283         encoding.
5284
5285 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5286
5287         * decimal.c (log2_32): Use an optimized version for this function too.
5288         
5289         * decimal.c (log2_64): Fix this on 32 bit machines.
5290
5291 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5292
5293         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5294
5295         * class.c (mono_metadata_signature_deep_dup): Same.
5296
5297         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5298         a mempool.
5299
5300         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5301
5302         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5303
5304         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5305
5306         * class-internals.h: Update signatures to take a MonoMemPool.
5307
5308 2008-06-02  Dick Porter  <dick@ximian.com>
5309
5310         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5311         * icall-def.h: Add
5312         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5313         FormatMessage API to get the error text.  Fixes bug 321827.
5314
5315 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5316
5317         * decimal.c: Add some micro optimizations to make decimal operations faster.
5318
5319 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5320
5321         * reflection.c (method_encode_clauses): Take a mempool
5322         as parameter and use it to allocate the clause array.
5323
5324         * reflection.c (mono_image_get_field_on_inst_token): Free
5325         the inflated type after encoding it.
5326
5327         * reflection.c (mono_dynamic_image_free): Free each element
5328         of MonoDynamicImage::gen_params.
5329
5330         * reflection.c (reflection_methodbuilder_to_mono_method):
5331         Allocate the generic param array from the mempool.
5332         Allocate signature params from the mempool.
5333
5334         * reflection.c (mono_reflection_generic_class_initialize):
5335         Free inflated fields after been used.
5336
5337 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5338
5339         * icall.c: Reapply the memory leak fixes as they no
5340         longer make mono crash.
5341
5342 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5343
5344         * reflection.c (mono_type_get_object): Don't store the suplied
5345         MonoType with type_hash. A caller which pass a type that
5346         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
5347         might end with a pointer to freed memory.
5348         The solution is to use byval_arg or this_arg from the associated
5349         MonoClass of the supplied type.
5350
5351 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
5352
5353         * icall.c: Revert the rest of the last change as it breaks the build too.
5354
5355 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5356
5357         * icall.c: Revert a leak fix as it's breaking the build.
5358
5359 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5360
5361         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
5362
5363 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5364
5365         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
5366
5367 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5368
5369         * icall.c: Fix some memory leaks.
5370
5371 2008-05-29  Dick Porter  <dick@ximian.com>
5372
5373         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
5374         async socket operations from the pending list when a socket
5375         closes.  Leaving it until the threadpool services the event
5376         exposes a race condition when a socket descriptor is reused.
5377         Fixes bug 377589.
5378
5379 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5380
5381         * object.c: Fix negative index check for array alocation.
5382
5383 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5384
5385         * icall.c, marshal.c: Delegate wrappers should skip visibility.
5386         This check is performed by the verifier for IL created delegates
5387         and by Delegate::CreateDelegate for programatically created ones.
5388         Fixes #372406.
5389
5390 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5391
5392         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
5393         Fix code to use mono_array_size_t instead of int.
5394
5395         Based on patch by Luis F. Ortiz.
5396         Contributed under X11 license.
5397         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5398
5399 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5400
5401         * icall.c: Added ves_icall_System_Array_GetLongLength and
5402         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
5403         arrays.
5404
5405         * icall.h: Export both new functions.
5406
5407         Based on patch by Luis F. Ortiz.
5408         Contributed under X11 license.
5409         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5410
5411 2008-05-28  Martin Baulig  <martin@ximian.com>
5412
5413         The debugger now requires exactly r103463.
5414
5415         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
5416         This version is not supported by the debugger, wait for 72.
5417
5418 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5419
5420         * object.h: Changed array related functions to use
5421         mono_array_size_t instead of guint32. Forgot to commit this file.
5422
5423         Patch by Luis F. Ortiz.
5424         Contributed under X11 license.
5425         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5426
5427
5428 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5429
5430         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
5431         don't define it. Use the number literal instead.
5432
5433 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5434
5435         * icall.c: Changed array related functions to use
5436         mono_array_size_t instead of guint32.
5437
5438         * icall.c (ves_icall_System_Array_GetLength): Check for length
5439         overflow under MONO_BIG_ARRAYS.
5440
5441         Based on patch by Luis F. Ortiz.
5442         Contributed under X11 license.
5443         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5444
5445 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5446
5447         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
5448
5449         Based on patch by Luis F. Ortiz.
5450         Contributed under X11 license.
5451         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5452
5453 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5454
5455         * object.c, object.h: Changed array related functions to use
5456         mono_array_size_t instead of guint32.
5457
5458         Patch by Luis F. Ortiz.
5459         Contributed under X11 license.
5460         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5461
5462 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5463
5464         * object.h: Introduced mono_array_size_t typedef. This must be used
5465         in all places an array length is expected. This is 64bits wide if
5466         MONO_BIG_ARRAYS is enabled.
5467
5468         Patch by Luis F. Ortiz.
5469         Contributed under X11 license.
5470         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5471
5472 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5473
5474         * security-manager.c class.c: Set the class exception info by calling
5475         mono_class_set_failure ().
5476
5477         * class.c (mono_class_get_exception_data): New accessor function.
5478         (mono_class_set_failure): Store exception_data in the property hash.
5479
5480         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
5481         the struct as a property.
5482
5483         * loader.c (mono_get_method_full): Store the lookup result for method
5484         tokens in method_cache, the others in methodref_cache to decrease the memory
5485         usage of hash tables.
5486
5487         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
5488         (mono_image_init): method_cache is lazy inited now.
5489
5490         * metadata-internals.h (struct _MonoImage): Change method_cache to
5491         a MonoValueHashTable, add a separate methodref_cache.
5492
5493 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
5494
5495         * number-formatter.h: Fix tables to avoid arithemtic overflow in
5496           Double.ToString as exposed by Bug #383531.
5497
5498 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * number-formatter.h: Make some tables static.
5501
5502         * class.c (mono_method_set_generic_container): New accessor function.
5503         (mono_method_get_generic_container): Ditto.
5504
5505         * class-internals.h (struct _MonoMethod): Remove rarely used 
5506         'generic_container' field, store it in the property hash instead. Add 
5507         'is_generic' boolean field instead.
5508
5509         * image.c (mono_image_init): Initialize property_hash.
5510         (mono_image_close): Destroy property_hash.
5511
5512         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
5513         hold rarely used fields of runtime structures belonging to this image.
5514
5515         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
5516         to get/set method->generic_container.
5517
5518         * loader.c (mono_get_method_from_token): Avoid loading the method header for
5519         generic methods.
5520
5521 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
5522
5523         * class.c (mono_class_inflate_generic_method_full): Don't increase
5524         mono_stats.inflated_method_count for methods found in the cache.
5525
5526         * threads.c (mono_thread_request_interruption): Add a comment about 
5527         QueueUserAPC ().
5528
5529 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
5530
5531         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
5532         interface_offsets_packed table.
5533         
5534         * class.c (mono_class_init): Remove some dead code.
5535
5536         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
5537         mono_class_setup_vtable () when CAS is active to detect security problems.
5538
5539 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
5540
5541         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
5542
5543         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
5544         parameters as it's irrelevant for delegate checking.
5545
5546 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
5547
5548         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
5549
5550         * class.c (mono_class_init): Control the creation of a generic vtable using
5551         a global which is true by default, but set to false by the runtime startup code.
5552         
5553         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
5554         Disabled for now since it breaks the embedding API.
5555         Move the setup of class->methods for arrays to mono_class_setup_methods ().
5556         (mono_class_setup_methods): Add a memory barrier.
5557
5558         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
5559         when mono_class_init () doesn't compute the generic vtable.
5560         
5561 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
5562         * profiler.c: Added mono_profiler_install_statistical_call_chain,
5563         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
5564         to support call chains (backtrace) in the stat profiler.
5565         * profiler.c, profiler-private.h: Likewise.
5566
5567 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5568
5569         * generic-sharing.c: Init generic class when a method of it is
5570         requested via a runtime generic context.
5571
5572 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
5573
5574         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
5575
5576         * reflection.c (mono_type_get_object): Add a FIXME.
5577
5578         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
5579
5580         * class.c (mono_class_get_method_by_index): New helper function, returning an
5581         entry in the class->methods array.
5582
5583 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5584
5585         * class.c (mono_class_init): Only do the array optimization for szarrays. 
5586         Avoid creating a generic vtable for generic instances as well.
5587         (mono_class_get_method_from_name_flags): Don't search in the metadata for
5588         generic instances.
5589
5590 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5591
5592         * loader.c (mono_get_method_constrained): Inflate the signature
5593         with class context. Fix #325283.
5594
5595 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5596
5597         * object.c (mono_class_create_runtime_vtable): Add a comment.
5598
5599         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
5600         where needed.
5601         (setup_interface_offsets): Handle the case when this is called twice for arrays.
5602         (mono_class_setup_vtable_general): Add an assert.
5603         (mono_class_init): Avoid creating a generic vtable for arrays.
5604
5605         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
5606         here, let mono_class_init () do that.
5607
5608         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
5609         interfaces in mscorlib.
5610
5611         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
5612         interfaces. Add some comments.
5613         (mono_class_init): Call mono_class_setup_methods () here since it is no
5614         longer called by mono_class_setup_vtable ().
5615
5616         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
5617         not set in class->vtable.
5618         (mono_class_create_runtime_vtable): Reenable the disabled code.
5619
5620         * object.c (mono_class_create_runtime_vtable): Disable the last change for
5621         now as it causes some test failures.
5622
5623         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
5624         if using the vtable trampoline. Also remove some strange code which put the
5625         generic methods themselves into the vtable slots. Remove the AOT init_vtable
5626         stuff as it is no longer needed.
5627
5628 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5629
5630         * pedump.c: Give make --verify all option check code as well.
5631         Using --verify code won't check for metadata now.
5632
5633 2008-05-19  Martin Baulig  <martin@ximian.com>
5634
5635         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
5636
5637         * mono-debug.c
5638         (_mono_debug_using_mono_debugger): New global variable; it's set
5639         directly by the debugger, so mono_debug_using_mono_debugger() also
5640         works after attaching.
5641
5642 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5643
5644         * object.c (mono_class_create_runtime_vtable): Use memory barriers
5645         as we do double checked locking on MonoClass::runtime_info and
5646         MonoClassRuntimeInfo::domain_vtables.
5647
5648 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
5649
5650         * debug-helpers.c (print_field_value): Fix a warning.
5651
5652 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
5653
5654         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
5655         set in the AOT case.
5656
5657 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5658
5659         * class.c (mono_class_setup_vtable_general): Use memory barriers
5660         as we do double checked locking on MonoClass::vtable.
5661
5662 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5663
5664         * reflection.c (resolve_object): Inflate only if the generic context
5665         is not null. Fixes #389886.
5666
5667 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
5668
5669         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
5670         instead of g_free.
5671
5672         Code is contributed under MIT/X11 license.
5673
5674 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5675
5676         * class.c: Revert unrelated change.
5677
5678 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5679
5680         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
5681         a generic instantiation, use mono_class_from_mono_type instead of playing
5682         with MonoType directly.
5683
5684 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5685
5686         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
5687         checks must ignore generic instantiations, so mono_class_has_parent is not
5688         suitable. Fixes #390128.
5689
5690 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
5691
5692         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
5693         it to avoid registering tokens during metadata generation. Fixes #390023.
5694
5695 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5696
5697         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
5698         consistent.
5699
5700         Contributed under MIT/X11 license.
5701
5702 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5703
5704         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
5705         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
5706         to fixup the EXE image.
5707         (mono_cleanup): Use mono_close_exe_image.
5708         (mono_close_exe_image): New function.
5709         * image.c: Include "marshal.h".
5710         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
5711         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
5712         counting when the image is loaded outside of mono_image_open_full. Set status
5713         based on GetLastError.
5714         * coree.c: Include required headers. Add init_from_coree.
5715         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
5716         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
5717         (_CorExeMain): Set init_from_coree.
5718         (CorExitProcess): Only call ExitProcess for now.
5719         (CorBindToRuntimeEx): New stub implementation.
5720         (CorBindToRuntime): New function.
5721         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
5722         (MonoFixupExe): ILONLY executables require no fixups.
5723         (mono_set_act_ctx): New function to set activation context.
5724         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
5725         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
5726         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
5727         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
5728         as MONO_INTERNAL.
5729         * domain-internals.h: Add mono_close_exe_image.
5730
5731         Contributed under MIT/X11 license.
5732
5733 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
5734
5735         * metadata.c (mono_metadata_compute_size): Correctly calculate field
5736         size for generic param and event tables. Fixes #388977.
5737
5738 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
5739
5740         * loader.c (mono_method_signature): Use memory barriers because of the double
5741         checked locking pattern.
5742
5743         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
5744         aborting or aborted as well. Fixes #376391.
5745         
5746         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
5747         existing runtime state in the Suspend handler during shutdown.
5748
5749 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
5750
5751         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
5752
5753         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
5754         which are starting up or shutting down.
5755
5756         * threads.c (mono_threads_set_shutting_down): Don't return a value since
5757         this function never returns if the runtime is already shutting down.
5758
5759         * icall.c (ves_icall_System_Environment_Exit): Update after 
5760         mono_threads_set_shutting_down () signature change.
5761         
5762 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
5763
5764         * class.c: Added can_access_instantiation to verify if the instantiation
5765         is visible. Fix access check for nested types as they returned TRUE
5766         before doing type and generic instantiation visibility checks.
5767
5768 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
5769
5770         * reflection.c (mono_reflection_create_generic_class): The created type
5771         must have a different container from its TypeBuilder. Otherwise they
5772         will end sharing generic arguments, which is wrong.
5773
5774         Due to the sharing, making a generic instance of the created type using
5775         the TypeBuider generic arguments resulted in the generic type definition
5776         been returned, which is wrong as well.
5777
5778         As a bonus the code was leaking the type_params array. This memory should
5779         be allocated from the image mempool.
5780
5781         This fixes bug #354047.
5782
5783 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
5784
5785         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
5786         to here         as they are now used in assembly.c new code.
5787         Added a skipverification flag to MonoAssembly.
5788         New internal function mono_assembly_has_skip_verification.
5789
5790         * assembly.c: New function mono_assembly_has_skip_verification. It checks
5791         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
5792         part of #387274.
5793
5794 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5795
5796         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
5797         needed. Fixes #387034.
5798
5799         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
5800
5801 2008-05-06  Miguel de Icaza  <miguel@novell.com>
5802
5803         * assembly.c (mono_assembly_load_reference): Prevent crash while
5804         disassembling Silverlight 2.0 executables while we still do not
5805         have GACed libraries.
5806
5807 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * reflection.c: Special case generic type definitions as well. Fixes #383444.
5810
5811 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
5812
5813         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
5814         of the dynamic case. Fixes #387404.
5815
5816 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5817
5818         *verify.c (mono_verifier_is_class_full_trust): If under
5819         verify_all and the verifier mode was not set, only
5820         gac and corlib types are fulltrust. This makes --verify-all
5821         usable to detect unverifiable code, which is the expected
5822         use case.
5823
5824 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5825
5826         * verify.h: Ops, commited the header with debug
5827         enabled.
5828
5829 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5830
5831         * verify.c (merge_stack): Use the new value on unverifiable
5832         stack merges.
5833
5834         * verify.c (verify_type_compatibility_full): Comparison
5835         of nullable types can't use mono_class_is_assignable_from.
5836
5837         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
5838         that makes all verification errors be reported.
5839
5840         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
5841         mono_method_verify.
5842
5843 2008-05-05  Robert Jordan  <robertj@gmx.net>
5844
5845         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
5846         support for value types. See #386415.
5847
5848         * object.c: comments.
5849
5850         Code is contributed under MIT/X11 license.
5851
5852 2008-05-05  Martin Baulig  <martin@ximian.com>
5853
5854         * debug-mono-symfile.h
5855         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
5856         for old pre-terrania symbol files.
5857
5858 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5859
5860         * mono-config.c: Add ppc64 architecture.
5861
5862         Code is contributed under MIT/X11 license.
5863
5864 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5865
5866         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
5867           PPC64 uses function descriptors as well.
5868
5869         Code is contributed under MIT/X11 license.
5870
5871 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
5872
5873         * object.c (compute_class_bitmap): Ignore literal static fields.
5874
5875         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
5876         var has an invalid format.
5877         (describe_ptr): Add some sanity checks for the vtable.
5878         (add_nursery_frag): Clear unused nursery fragments.
5879         (major_collection): Clear all remaining nursery fragments.
5880
5881 2008-05-03  Robert Jordan  <robertj@gmx.net>
5882
5883         * image.c, metadata-internals.h: add thunk_invoke_cache.
5884
5885         * marshal.c, marshal.h: implement
5886         mono_marshal_get_thunk_invoke_wrapper ().
5887
5888         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
5889
5890         Code is contributed under MIT/X11 license.
5891
5892 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
5893
5894         * verify.c (do_leave): Empty the stack.
5895
5896 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
5897
5898         * class.c (mono_class_is_assignable_from): Variance
5899         doesn't work between reference and value types. For example,
5900         given type C<T+>, C<int32> is not assignable to C<object>.
5901         Break the argument checking loop on first error. 
5902
5903 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
5904
5905         * icall.c : base64_to_byte_array() needs some more strict
5906           check for sequence of '=' characters. Patch by Santa
5907           Marta (http://deee.g.hatena.ne.jp/santamarta).
5908
5909           Contributed under MIT/X11 license.
5910           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
5911
5912 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
5913
5914         * domain.c: Disable LoadLibrary support to fix Win32 build.
5915
5916         Code is contributed under MIT/X11 license.
5917
5918 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
5919
5920         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
5921         to help with cache behaviour.
5922
5923 2008-05-01  Miguel de Icaza  <miguel@novell.com>
5924
5925         * appdomain.c (mono_domain_from_appdomain): Add new accessor
5926         method. 
5927
5928 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
5929
5930         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
5931
5932 2008-05-01  Dick Porter  <dick@ximian.com>
5933
5934         * process.c (process_get_fileversion): Only pass 16 bits of
5935         language ID to VerLanguageName.  Fixes bug 381204.
5936
5937 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5938
5939         * verify.c (mono_method_verify): Fix the comparison
5940         operator for code bounds check.
5941
5942 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5943
5944         * verify.c (mono_method_verify): Check the bounds of
5945         all access of the code array.
5946
5947 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
5948
5949         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
5950
5951 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
5952
5953         * image.c (mono_image_strong_name_position): Fix return value when the rva is
5954         not valid.
5955
5956 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
5957
5958         * loader.c (mono_get_method_from_token, mono_method_signature): Add
5959         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
5960         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
5961         fixup main EXE images when using mono.exe for mixed-mode assembly support.
5962         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
5963         mono_runtime_load.
5964         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
5965         runtime initialization from metadata.
5966         * assembly.c: Remove obsolete ceGetModuleFileNameA.
5967         (mono_set_rootdir): Use mono_get_module_file_name.
5968         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
5969         handles.
5970         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
5971         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
5972         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
5973         MonoCLIImageInfo. Add support for module handles.
5974         (load_cli_header): Update mono_cli_rva_image_map signature.
5975         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
5976         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
5977         (mono_image_rva_map): Add support for module handles.
5978         (mono_image_ensure_section_idx): Add support for module handles.
5979         (mono_image_close): Add support for module handles.
5980         (do_load_header): Add support for module handles.
5981         (mono_image_open_from_module_handle): New function for internal use.
5982         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
5983         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
5984         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
5985         handles.
5986         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
5987         * image.h: Add mono_image_fixup_vtable.
5988         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
5989         support.
5990         * coree.h: New file.
5991         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
5992         unsupported native code.
5993         (mono_marshal_set_callconv_from_modopt): New function splitted from
5994         mono_marshal_get_managed_wrapper.
5995         (mono_marshal_get_managed_wrapper): Use
5996         mono_marshal_set_callconv_from_modopt.
5997         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
5998         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
5999         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
6000         that results in a deadlock when the runtime is loaded in _CorDllMain.
6001         * Makefile.am: Add coree.c and coree.h.
6002
6003         Contributed under MIT/X11 license.
6004
6005 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6006
6007         * generic-sharing.c: Search for type arguments in array element
6008         types as well.
6009
6010 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6011
6012         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6013
6014         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6015
6016         * object.c: Don't setup the RGCTX when the vtable is created,
6017         because we're setting it up lazily now.
6018
6019 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6022         64 bit support.
6023
6024 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6025
6026         * verify.c (verify_class_for_overlapping_reference_fields): 
6027         If class is under fulltrust allow reference types to overllap
6028         if they have the same RVA.
6029
6030 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6031
6032         * pedump.c: Added new flag valid-only, that makes the verifier
6033         behaves just like --security=validil. It won't fail type load
6034         due to unverifiable restrictions.
6035
6036 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6037
6038         * class-internals.h (struct MonoMethod): Added a verification_success
6039         field to cache verifier executions. Reduced MonoMethod:slot size by
6040         one bit.
6041
6042 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6043
6044         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6045         instead of a 'vt' argument to save an indirection and to allow these to be used
6046         for valuetypes.
6047         (scan_vtype): New helper function to scan an area using a gc descriptor.
6048         (mono_gc_wbarrier_value_copy): Implement this.
6049         (handle_remset): Add support for REMSET_VTYPE.
6050         (find_in_remset_loc): Ditto.
6051         (mono_gc_base_init): Allow some debugging options to be controlled through the
6052         use of the MONO_GC_DEBUG env variable.
6053         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6054         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6055
6056 2008-04-23  Martin Baulig  <martin@ximian.com>
6057
6058         * domain.c (mono_domain_create): Move the call to
6059         mono_debug_domain_create() down, after allocating the domain id.
6060
6061 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6062
6063         verify.c (verify_class_for_overlapping_reference_fields): Skip
6064         static fields while verifying for overlapping fields as they
6065         don't matter at all.
6066
6067 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6068
6069         * domain-internals.h: added a declaration of
6070         mono_make_shadow_copy.
6071
6072         * assembly.c (mono_assembly_open_full): shadow copying of
6073         assemblies moved to here, so that all the assemblies within the
6074         application domain's private binary directories can be
6075         processed. Fixes bug #380546
6076
6077         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6078         mono_make_shadow_copy and made non-static. The decision whether
6079         to shadow-copy an assembly is made based on its location - it's
6080         copied if it's in one of the private application domain binary
6081         directories and its different to the target file in the shadow
6082         directory. Fixes bug #380546
6083
6084 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6087
6088         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6089         types.
6090
6091         * reflection.c (mono_image_create_token): Handle 
6092         Method/ConstructorOnTypeBuilderInst.
6093         (resolve_object): Ditto.
6094         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6095         so it can be called from resolve_object. Also handle the case when the inflated
6096         class already has its methods setup.
6097
6098 2008-04-21  Martin Baulig  <martin@ximian.com>
6099
6100         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6101
6102 2008-04-20  Geoff Norton  <gnorton@novell.com>
6103
6104         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6105         pointer dereference.
6106
6107 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6108
6109         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6110         portability API to look up the assembly file. Fixes behavior in
6111         situations when the application has a bin/ directory, but the
6112         assembly search patch refers to Bin/ (and thus the requested file
6113         name is Bin/SomeLibrary.dll). Fixes bug #379888
6114
6115 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6116
6117         verify.c (mono_type_is_generic_argument): Extracted this check
6118         from a dozen places to here.
6119
6120         verify.c: Fixed all issues related to boxing generic arguments
6121         and their constraints.
6122
6123 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6124
6125         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6126
6127 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6128
6129         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6130         isn't finished yet. Fixes #363447.
6131
6132 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6133
6134         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6135         Fixes #346419.
6136
6137 2008-04-13  Jb Evain  <jbevain@novell.com>
6138
6139         * domain.c: update the 2.1 profile versions.
6140         Merged from the Moonlight 2 branch.
6141
6142 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6143
6144         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6145         mscorlibs for the non-refonly case as well.
6146
6147         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6148         in mono_assembly_load_from_full (). Fixes #378924.
6149
6150 2008-04-11  Geoff Norton  <gnorton@novell.com>
6151
6152         * icall.c: The global extern environ doesn't exist on Mac.  We
6153         need to call NSGetEnviron instead.
6154
6155 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6156
6157         verify.c: Add generic method constraint verification.
6158
6159 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6160
6161         class.c (mono_class_inflate_generic_method_full): Add a long
6162         explanation to the is_mb_open hack. Remove the FIXME.
6163
6164 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6165
6166         * verify.c (mono_method_verify): Mark all unknown opcodes
6167         as invalid. Mark jmp as unverifiable.
6168
6169 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6170
6171         * verify.c: Add code to do type constraint verification on class instances.
6172
6173         * verify.c (mono_verifier_verify_class): Use the type constraint 
6174         verification code.
6175
6176 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6177
6178         * class.c (mono_class_get_field_default_value): Don't pass cindex
6179         as hint to mono_metadata_get_constant_index. The local is not initialized
6180         and should contain garbage most of the time. This could only work
6181         with a lot of luck.
6182
6183 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6184
6185         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6186
6187 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6188
6189         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6190
6191         * class.c (mono_class_from_generic_parameter): Save the token of the
6192         generic param in MonoClass::sizes.generic_param_token.
6193
6194         * reflection.c (mono_custom_attrs_from_class): If the class type is
6195         VAR or MVAR retrieve the attributes of the generic param.
6196
6197 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6198
6199         * class.c (mono_class_init): Do class verification if the verifier
6200         is enabled.
6201
6202 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6203
6204         * verify-internal.h: Added mono_verifier_verify_class.
6205
6206         * verify.c: Added mono_verifier_verify_class. It checks for
6207         classes with explicit layout that have overlapping reference fields.
6208
6209         * pedump.c: Init the verifier state prior to verification. Fixed
6210         command line arguments.
6211
6212 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6213
6214         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6215
6216 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6217
6218         * verify-internals.h: Fix a warning.
6219
6220 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6221
6222         * verify-internals.h: New header with the verifier configuration
6223         extracted from mini.c.
6224
6225         * verify.c: Implemented the new functions exported by verify-internals.h.
6226
6227 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6228
6229         * verify.c: Add proper verification of ckfinite.
6230
6231 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6232
6233         * verify.c (do_conversion): Improved error message to something
6234         more meanfull.
6235
6236         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6237         with primitive types.
6238
6239 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6240
6241         * verify.c: Added tail prefix checking. Marked icall
6242         as unverifible.
6243
6244 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6245
6246         * verify.c: Fix the detection of branches to the middle
6247         of an instruction.
6248
6249 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6250
6251         * verify.c: Implemented verification of volatile. and
6252         unaligned. prefix. Check if a type is valid after retrieving it.
6253
6254 2008-04-01  Dick Porter  <dick@ximian.com>
6255
6256         * process.c (process_get_fileversion): If there's no string block,
6257         set the file language to en_US.  Fixes the other new part of bug
6258         374600.
6259
6260 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6261
6262         * class.c: New functions mono_method_can_access_field_full and
6263         mono_method_can_access_method_full. They perform type visibility
6264         and type site check.
6265
6266         * class-internal.h: Added exported functions.
6267
6268         * verify.c: Use new functions to implement proper visibility checks.
6269
6270 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6271
6272         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6273
6274 2008-03-28  Dick Porter  <dick@ximian.com>
6275
6276         * process.c (process_get_fileversion): Use the first language ID
6277         we see, rather than insisting on an invariant language.  Fixes bug
6278         374600.
6279
6280 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6281
6282         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6283         the streams to fix reading of invalid memory later.
6284
6285         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6286         to ease debugging.
6287
6288 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6289
6290         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6291         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6292
6293 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6294         * threads.h: Added MonoThreadManageCallback type and
6295         mono_thread_set_manage_callback prototype
6296         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6297         (used to store the mono_thread_manage callback).
6298         * threads.c: Added mono_thread_set_manage_callback, and handle
6299         "MonoThread->manage_callback" in build_wait_tids.
6300
6301 2008-03-26  Dick Porter  <dick@ximian.com>
6302
6303         * process.c (process_get_fileversion): Set FileVersionInfo strings
6304         to Empty when the resource doesn't have the particular info.
6305         Fixes bug 355717.
6306
6307 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6308
6309         * verify.c (mono_method_verify): Proper prefix validation.
6310
6311 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6312
6313         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6314         itself in a separate argument instead of throwing them. Fixes #373448.
6315
6316         * appdomain.c: Bump corlib version.
6317
6318 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6319
6320         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
6321
6322 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6323
6324         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
6325         version macros.
6326
6327 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6328
6329         * generic-sharing.c, class-internals.h: Code for putting
6330         reflection types into the runtime generic context.
6331
6332 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6333
6334         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
6335         Fixes #340662. 
6336
6337
6338 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * verify.c (VerifyContext): Added instruction prefix data to the struct.
6341
6342         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
6343
6344         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
6345
6346         * verify.c (do_cast): Let the result value keep the boxed status.
6347
6348         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
6349
6350 2008-03-17  Jb Evain  <jbevain@novell.com>
6351
6352         * reflection.c: when running on a 2.0 runtime, emit
6353         unconditionally the #~ header version as 2.0, and the
6354         CLI header version as 2.5, for symmetry's sake with csc.
6355
6356 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * class.c: Remove the unused cache_interface_offsets stuff.
6359
6360         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
6361         profiler.c: Fix warnings.
6362
6363 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6364
6365         * generic-sharing.c, class-internals.h: Support for putting
6366         methods into the runtime generic context.
6367
6368 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6369
6370         * class.c (mono_class_setup_fields): Ignore calls made to this function for
6371         classes which are generic instances of not-yet finished typebuilders. Fixes
6372         #351172.
6373
6374         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
6375
6376 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
6377
6378         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
6379
6380         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
6381         field, replace it with a hash table in MonoDynamicImage.
6382
6383         * reflection.c (inflate_mono_method): Access the generic definition object from
6384         image->generic_def_objects instead of imethod->reflection_info.
6385
6386         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
6387
6388         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
6389         
6390         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
6391         function in reflection.c so it is easier to keep in sync with the dynamic image
6392         creation code.
6393
6394         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
6395         mono_image_close ().
6396
6397 2008-03-15  Mark Probst  <mark.probst@gmail.com>
6398
6399         * class.c (mono_class_generic_sharing_enabled): Disable generic
6400         sharing for all architectures except AMD64 and x86 to fix build.
6401
6402 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6403
6404         * verify.c: Use the generic definition MonoGenericContext when available.
6405         Remove code for checking generics instance compatibility in favor of
6406         mono_class_is_assignable_from.
6407
6408 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6409
6410         * marshal.c, marshal.h, metadata-internals.h, image.c,
6411         wrapper-types.h: New wrapper for invoking a shared static method
6412         without having to pass the runtime generic context argument.
6413
6414 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6415
6416         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
6417
6418 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6419
6420         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
6421         
6422         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
6423         create a token from a FieldOnTypeBuilderInst.
6424         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
6425         (resolve_object): Ditto.
6426
6427         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
6428         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
6429
6430 2008-03-14  Martin Baulig  <martin@ximian.com>
6431
6432         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
6433
6434         * debug-mono-symfile.h
6435         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
6436         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
6437
6438 2008-03-10  Martin Baulig  <martin@ximian.com>
6439
6440         * debug-mono-symfile.h
6441         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
6442         `lexical_block_table_offset'.
6443         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
6444         `lexical_blocks'.
6445         (MonoSymbolFile): Added `version'.
6446
6447         * mono-debug.h
6448         (MonoDebugLexicalBlockEntry): Removed.
6449         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
6450         `lexical_blocks'.
6451
6452         * mono-debug.c (mono_debug_add_method): Don't compute lexical
6453         blocks here; the debugger now does this internally.
6454
6455 2008-02-27  Martin Baulig  <martin@ximian.com>
6456
6457         * object.c (mono_runtime_exec_main): Call
6458         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
6459         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
6460
6461 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6462
6463         * verify.c (verify_type_compatibility_full): Allow native int to be converted
6464         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
6465
6466 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6467
6468         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
6469         ldftn with a virtual method.
6470
6471 2008-03-13  Geoff Norton  <gnorton@novell.com>
6472
6473         * decimal.c:  Only include memory.h if the platform has it.
6474
6475 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
6476
6477         * assembly.c, class.c, metadata-internals.h: make sure public key
6478         tokesns are compared in a case-insensitive way. Also, all
6479         the lookups in the GAC use a lowercase public key token
6480         (gaacutil already does the lowercasing on install). Fixes
6481         bug #369541.
6482
6483 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
6484
6485         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
6486         and return value.
6487
6488 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
6489
6490         * image.c: when someone loads a mscorlib from a file, return the
6491         currently loaded mscorlib (fixes bug #369253).
6492
6493 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6494
6495         * class.c: handle types with no parents by forcing them to have
6496         System.Object as a parent and marking them as broken (this currently
6497         allows the first part of bug #369173 to work as well, likely because
6498         we don't check for typeload exceptions everywhere yet).
6499
6500 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
6501
6502         * class.c: more complete check that types belong to corlib
6503         (fixes second part of bug #369173).
6504
6505 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
6506
6507         * generic-sharing.c:  Including glib.h for the MSVC builds to define
6508           "inline" to "__inline" before including mono-membar.h.
6509           
6510         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
6511           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
6512           MSVC builds.
6513
6514         Contributed under MIT/X11 license.
6515
6516 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6517
6518         * verify.c (do_invoke_method): Remove return type validation.
6519
6520         * verify.c (do_ret): Do return type validation at return site instead of
6521         call site.
6522
6523 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6524
6525         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
6526
6527         * verify.c: Some todos cleaned and improved a few error messages.
6528
6529 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
6532
6533 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6534
6535         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
6536         system types correctly.
6537
6538         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
6539         function.
6540
6541 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6542
6543         * assembly.c (build_assembly_name): Fix a warning.
6544
6545 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6546
6547         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
6548         the called function takes an object type argument. Fixes storing or
6549         valuetypes across remoting as well as reducing memory usage.
6550         * image.c, metadata-internals.h: remove now unused ldfld_remote and
6551         stfld_remote wrapper caches.
6552
6553 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6554
6555         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
6556         is not found.
6557
6558         * reflection.c (mono_image_register_token): New helper function to save
6559         a token->object mapping.        
6560
6561         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
6562         managed code.
6563
6564         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
6565         one dimension arrays. Fixes #367670.
6566         (mono_reflection_get_type_internal): Ditto.
6567
6568 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6569
6570         * marshal.c: mono_load_remote_field_new() always returns object.
6571         so use the proper signature (fixes bug #366445).
6572
6573 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6574         
6575         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
6576         add an 'inline_failure' flag instead.
6577
6578 2008-03-04  Mark Probst  <mark.probst@gmail.com>
6579
6580         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
6581         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
6582         contains the location of "this", used for exception handling.
6583
6584 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6585
6586         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
6587         their size on all platforms for perf reasons.
6588
6589 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6590
6591         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
6592         object-internal.h
6593
6594         * object-internal.h: Same.
6595
6596 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6597
6598         * reflection.h: Fix the build I just broke.
6599
6600 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6601
6602         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
6603         Test if a token is valid, this remove explicit usage of 
6604         MonoDynamicImage::tokens from the verifier code.
6605
6606         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
6607
6608         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
6609         instead of direct access to MonoDynamicImage::tokens.
6610
6611 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6612
6613         * verify.c (token_bounds_check): Fix the build I just broke.
6614
6615 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6616
6617         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
6618
6619         * verify.c (verifier_load_method): Fixed the errors message.
6620
6621         * verify.c (mono_method_verify): Fixed a debug message.
6622
6623 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
6624
6625         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
6626         mono-perfcounters.h, class-internals.h: support for predefined
6627         writable counters, query of categories and counters, bugfixes.
6628
6629 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6630
6631         * verify.c (do_refanytype): Verify the refanytype opcode.
6632
6633         * verify.c (mono_method_verify): Use do_refanytype.
6634
6635 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6636
6637         * verify.c (do_mkrefany): Verify the mkrefany opcode.
6638
6639         * verify.c (mono_method_verify): Use do_mkrefany.
6640
6641 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
6642
6643         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
6644         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
6645         implementation.
6646
6647 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6648
6649         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
6650         the type load exception.
6651
6652 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
6653
6654         * verify.c: Added a few FIXME for method signatures
6655
6656         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
6657         of mono_method_get_signature and get vararg call working. Removed unused
6658         checks for return value.
6659
6660         * verify.c (do_refanyval): Verify the refanyval opcode.
6661
6662         * verify.c (mono_method_verify): Implemented verification of arglist and
6663         use do_refanyval.
6664
6665 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6666
6667         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
6668         vtypes to marshal.c.
6669
6670         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
6671         it works for AOT as well.
6672
6673 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6674
6675         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
6676         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
6677         the system time is adjusted.
6678
6679 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
6680
6681         * icall.c, icall-def.h: use the new time functions (fixes the
6682         non-monotonic behaviour of TickCount).
6683
6684 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
6685
6686         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
6687         it breaks the build.
6688         
6689         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
6690         cattr is not finished yet.
6691
6692 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6693
6694         * verify.c: Proper token validation for field, method and type.
6695
6696 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6697
6698         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
6699
6700         * loader.c (method_from_memberref): Generate type load error instead of method missing
6701         if the type is not found.
6702
6703 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
6704
6705         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
6706         some of the conversions caused the generation of a marshal directive exception.
6707
6708 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6709
6710         verify.c: Report which exception should be thrown by the JIT.
6711         Added a lot of FIXME notes.
6712
6713 2008-02-22  Mark Probst  <mark.probst@gmail.com>
6714
6715         * generic-sharing.c: Runtime generic context slots are not
6716         instantiated on init anymore.  Instead, provide function to do the
6717         instantiating on demand.
6718
6719         * class-internals.h: Added vtable to runtime generic context.
6720         Macros for encoding direct and indirect slot offsets in one
6721         guint32.
6722
6723 2008-02-21  Mark Probst  <mark.probst@gmail.com>
6724
6725         * object.c, generic-sharing.c: Moved some generic sharing code
6726         from object.c to generic-sharing.c.
6727
6728         * generic-sharing.c: Added support for extensible runtime generic
6729         context.
6730
6731         * metadata-internals.h: Two new hash tables in MonoImage for
6732         extensible runtime generic context support.
6733
6734         * domain.c: Unregister generic vtables upon domain unloading.
6735
6736         * image.c: Destroy new hash tables upon image unloading.
6737
6738         * metadata.c: Unregister generic subclasses upon image unloading.
6739
6740         * class-internals.h: New data structure for runtime generic
6741         context template.  New fields in the runtime generic context for
6742         extensible part.
6743
6744         * Makefile.am: Added generic-sharing.c.
6745
6746 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6747
6748         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
6749         there is a pending loader exception, raise it.
6750
6751         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
6752         same.
6753
6754         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
6755         same.
6756
6757         Fixes #363450.
6758
6759 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
6760
6761         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
6762
6763         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
6764         
6765         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
6766         ref-only requests for compatibility with MS.
6767
6768 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
6769
6770         * reflection.c (mono_custom_attrs_from_method): Don't silently
6771         return an empty list for generic method instances.
6772         (mono_custom_attrs_from_param): Likewise.
6773
6774 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
6775             Raja R Harinath  <harinath@hurrynot.org>
6776
6777         Fix #354757
6778         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
6779         * class.c (mono_class_inflate_generic_method_full): Initialize it
6780         when a fully-open method is instantiated.
6781         * metadata.c (inflated_method_equal, inflated_method_hash): Update
6782         to new field.
6783         * reflection.c (inflate_mono_method): Don't create a temporary context.
6784
6785 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
6786
6787         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
6788         Compute correct value, to prepare for imethod->reflection_info going away.
6789
6790 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
6791
6792         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
6793
6794 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
6795
6796         * verify.c: Implement skip visibility flag.
6797
6798 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
6799
6800         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
6801         which contains an extra field to tell the kind of exception that should be thrown.
6802
6803         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
6804
6805 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
6806
6807         * loader.c (mono_method_get_param_names): Initialize 'klass' after
6808         'method' is updated.
6809
6810 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
6811
6812         * class.c (mono_class_layout_fields): Set class->min_align for classes using
6813         explicit layout as well. Fixes #360375.
6814
6815 2008-02-11  Geoff Norton  <gnorton@novell.com>
6816
6817         * loader.c: Guard and dereference against inflated generic methods
6818
6819 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
6820
6821         * class.c: Include Retargetable spec in assembly name.
6822         * assembly.c: Always include PublicKeyToken spec in assembly name
6823         (with value "null" if assembly is not signed), and include
6824         Retargetable spec.
6825         * icall-def.h: Added icall for Assembly.get_fullname.
6826         * icall.c: Added icall returning the fullname of an assembly.
6827
6828 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
6829
6830         * class.c (mono_class_setup_vtable_general): Add a missing call to
6831         mono_class_setup_methods () which is needed in the AOT case.
6832
6833 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
6834
6835         * verify.c (mono_type_get_stack_name): Added. Return the name for the
6836         stack type of the given MonoType.
6837
6838         * verify.c (verify_type_compatibility_full): Handle the void type.
6839
6840         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
6841         way stack merging works.
6842
6843         * verify.c (store_local): Improved verification message.
6844
6845         * verify.c (do_branch_op): If the merging is invalid, the method
6846         is unverifiable and not invalid. Improved error message.
6847
6848         * verify.c (merge_stacks): Properly merge a boxed valuetype and
6849         a reference type diferent than System.Object. Improved error
6850         message.
6851
6852 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
6853
6854         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
6855
6856         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
6857         type of an enum even if the argument is byref.
6858
6859         * verify.c: Replace all explicit uses of enumtype and enum_basetype
6860         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
6861
6862         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
6863
6864         *verify.c (verify_type_compatibility_full): Make enum types
6865         compatible with their base types.
6866
6867         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
6868         types are compatible for the special case of a boxed valuetype and
6869         System.Object.
6870
6871         * verify.c (verify_stack_type_compatibility): The function
6872         is_compatible_boxed_valuetype was extracted from here.
6873
6874         * verify.c (push_arg): Only set ctx->has_this_store if the method
6875         is not static.
6876
6877         * verify.c (do_ldelem): Fixed a typo in an error message and added
6878         strict check for mixing int32 and native int as the array type
6879         and ldelem type.
6880
6881         * verify.c (merge_stacks): Consider boxed valuetypes in the
6882         compatibility checks.
6883
6884 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
6885         * profiler.h: (MonoGCEvent): Added start-stop the world events.
6886
6887 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
6888         *class.c: use_new_interface_vtable_code: renamed the env var to have
6889         a "MONO_" prefix, and fix the logic to enable it by default.
6890
6891 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
6892         *class.c:
6893         mono_class_setup_vtable_general: rewrote the way in which interface
6894         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
6895         makes the code more maintainable.
6896         For now the old code is still there, and can be activated setting
6897         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
6898
6899 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
6900
6901         * verify.c: guarded some debug functions around and #ifdef.
6902
6903         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
6904
6905 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
6906
6907         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
6908         changes for now since they seem to break too many things.
6909
6910 2008-02-05  Mark Probst  <mark.probst@gmail.com>
6911
6912         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
6913         mono_marshal_find_nonzero_bit_offset): Added macro and function
6914         for finding the byte- and bit-offset of a bitfield within a
6915         struct.
6916
6917 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
6918
6919         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
6920         (mono_marshal_get_struct_to_ptr): Ditto.
6921
6922         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
6923         cctor_signature.
6924
6925 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
6926
6927         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
6928         between methods for non-corlib types.
6929
6930 2008-02-02  Geoff Norton  <gnorton@novell.com>
6931
6932         * loader.c (mono_method_get_param_names): Populate the parameter name for 
6933         generic parameters as well. (Fixes #342536)
6934
6935 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
6936
6937         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
6938
6939         * verify.c (do_invoke_method): Fix for calling with byref structs.
6940
6941         * verify.c (do_cast): push a boxed value type based on the type token and not
6942         the type of stack.
6943
6944 2008-01-31  William Holmes  <billholmes54@gmail.com>
6945
6946         * process.c (process_module_string_read): Check the size returned form 
6947           VerQueryValue to avoid out of memory exception. 
6948
6949 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
6950
6951         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
6952         Handle properly modules which are not in the moduleref table. Fixes
6953         #356938.
6954
6955 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
6956
6957         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
6958         the dynamic case which is now in managed code.
6959         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
6960
6961         * marshal.c (mono_string_to_bstr): Fix a warning.
6962         (init_com_provider_ms): Ditto.
6963
6964         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
6965
6966         * exception.c (mono_get_exception_out_of_memory): New helper function.
6967
6968 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
6969
6970         * marshal.c: Add support for BSTR marshalling
6971         using other COM systems.
6972
6973         Code is contributed under MIT/X11 license.
6974
6975 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
6976
6977         * object.c (mono_runtime_invoke_array): reverted previous
6978         commit as it breaks the build.
6979
6980 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
6981
6982         * object.c (mono_runtime_invoke_array): Verify arguments for
6983         invalid types. Fixes #348522.
6984
6985 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
6986
6987         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
6988         non-final virtual calls using call. 
6989
6990         * verify.c (do_invoke): fixed some TODOs.
6991
6992         * verify.c (push_arg): set has_this_store for "ldarga 0".
6993
6994 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
6995
6996         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
6997         which belong to an inflated class. Fixes #356531.
6998
6999 2008-01-26  Robert Jordan  <robertj@gmx.net>
7000
7001         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
7002         which resort to FindFirstFile when a certain error condition
7003         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7004         Code is contributed under MIT/X11 license.
7005
7006 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7007
7008         * marshal.c (emit_marshal_string): Fix out string marshalling
7009         to use specified encoding. Fixes #323900.
7010
7011         Code is contributed under MIT/X11 license.
7012
7013 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7014
7015         * class.c (mono_class_inflate_generic_method_full): Don't modify
7016         iresult->context after cache check.
7017
7018 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7019
7020         * class.c (mono_class_inflate_generic_method_full): Change the
7021         struct assignments to memcpy for better visibility and add some comments.
7022
7023 2008-01-23  Dick Porter  <dick@ximian.com>
7024
7025         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7026         procedure, and make it work on windows.
7027
7028 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7029
7030         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7031         a MonoReflectionTypeBuilder since it is always of that type.
7032
7033         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7034
7035         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7036
7037         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7038         
7039         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7040
7041         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7042
7043         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7044         instantiations from the type cache.
7045
7046 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7047
7048         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7049
7050         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7051
7052 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7053
7054         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7055
7056         * verify.c (mono_method_verify): removed old TODO
7057
7058 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7059
7060         * verify.c (do_newobj): add visibility check.
7061
7062 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7063
7064         * verify.c (do_load_function_ptr): add visibility check.
7065
7066 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7067         *class.c:
7068         mono_generic_class_get_class: hook profiler events.
7069         mono_field_get_offset: added to support heap-shot in the new profiler.
7070         *class.h: exported mono_field_get_offset.
7071         * reflection.c:
7072         mono_reflection_setup_internal_class: hook profiler events.
7073
7074 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7075
7076         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7077         argument here too and use it to avoid checking for pending exceptions if 
7078         possible.
7079
7080 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7081
7082         * assembly.c (build_assembly_name): add arg for passing the assembly
7083         flags. Do not consider a PublicKey with value "null" valid.
7084         (mono_assembly_name_parse_full): added boolean argument that will be
7085         set if the assembly name contains a PublicKeyToken spec. Added support
7086         for the Retargetable spec for which only Yes or No are allowed as valid
7087         value. Consider assembly name invalid if Retargetable spec is set, but
7088         either version, culture or public key (token) are not specified.
7089         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7090         with implementation in assembly.c.
7091         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7092         from MonoAssemblyName.
7093         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7094         introduced argument for mono_assembly_name_parse_full to know if the
7095         assembly name has a PublicKeyToken spec, and if it has instruct
7096         fill_reflection_assembly_name to use default value for keyToken (if
7097         PublicKeyToken is null).
7098
7099 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7100
7101         * verify.c (mono_method_verify): fixed ovf ops with
7102         float values. They are unverifiable now.
7103
7104 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7105
7106         * class.c (set_failure_from_loader_error): add BadImageException to the
7107         list of exceptions that can cause a type to fail to load.
7108
7109         * class.c (mono_class_get_exception_for_failure): same.
7110
7111 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7112
7113         * verify.c (in_any_exception_block): added, check if offset
7114         is part of any exception handling clause.
7115
7116         * verify.c (get_stack_type): added VAR and MVAR types.
7117
7118         * verify.c (do_stobj): better error messages.
7119
7120         * verify.c (do_cpobj): added, check cpobj.
7121
7122         * verify.c (do_initobj): added, check initobj.
7123
7124         * verify.c (do_sizeof): added, check sizeof.
7125
7126         * verify.c (do_localloc): added, check localloc.
7127
7128         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7129
7130 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7131
7132         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7133         save_lmf/restore_lmf opcodes.
7134
7135         * threads.c (mono_threads_install_notify_pending_exc): New function to
7136         install a callback notifying the JIT there is a pending exception on a thread.
7137         (mono_thread_request_interruption): Call the new callback.
7138         (mono_thread_get_and_clear_pending_exception): New function to return the
7139         exception pending on a thread.
7140
7141         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7142         to turn off checking for pending exceptions.
7143         (mono_marshal_get_native_wrapper): Ditto.
7144
7145 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7146
7147         * threads-types.h: Get rid of the unnecessary extern declarations.
7148
7149 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7150
7151         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7152         return field from parent class if not private.
7153         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7154         returns fields from parent class if they are not private.
7155         (method_nonpublic): added function to determine if a given method
7156         should be considered non-public. Returns false for private methods
7157         on parent class, and internal methods from parent on the 1.0 profile.
7158         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7159         use method_nonpublic function to determine whether method should be
7160         returned.
7161         (property_accessor_public): use newly introduced method_nonpublic
7162         function to determine whether accessor is non-public. 
7163         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7164         event from parent class if not private. Only return static event if
7165         Static flag is set, and only return static event from parent class if
7166         FlattenHierarchy flag is set.
7167         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7168         include non-private events from parent class.
7169
7170 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7171
7172         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7173         warning.
7174
7175 2008-01-16  Wade Berrier <wberrier@novell.com>
7176
7177         * security.c: Add assembly.h header to appease some warnings
7178
7179 2008-01-16  Dick Porter  <dick@ximian.com>
7180
7181         * process.c (process_module_string_read): Remove trailing null
7182         when saving string.
7183
7184 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7185
7186         * class-internals.h: A new data structure describing the layout of
7187         a runtime generic context (MonoRuntimeGenericContextTemplate).
7188
7189         * metadata-internals.h: Added a hash table to MonoDomain that maps
7190         from open generic classes to their runtime generic context
7191         templates.
7192
7193         * object.c: Building of the runtime generic context, including
7194         proper handling of generic type arguments of superclasses.
7195         Building of the runtime generic context according to the template.
7196
7197 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7198
7199         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7200         Fixes #350856.
7201
7202         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7203         mono_portability_find_file (). Fixes #325466.
7204         (mono_image_get_public_key): Fix a warning.
7205
7206 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7207
7208         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7209         Fixes #353550.
7210         (mono_class_from_name_case): Ditto.
7211
7212 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7213
7214         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7215           common storage for the tables used in the System/NumberFormatter class.
7216
7217 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7218
7219         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7220
7221 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7222
7223         * verify.c (get_boxable_mono_type): check if the token is valid.
7224
7225         * verify.c (set_stack_value): changed to add an error if an
7226         invalid type is set on stack. Changed all callers due to signature change.
7227
7228         * verify.c (do_stobj): implement stobj validation.
7229
7230 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7231
7232         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7233         set container->is_method, it was set earlier.
7234
7235         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7236         generic methods.
7237
7238         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7239         is_method of the generic container to TRUE for methods.
7240
7241 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7242
7243         * metadata.c (type_in_image): Handle type parameters properly.
7244
7245         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7246         memory ownership of this structure.
7247
7248 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7249
7250         * verify.c (get_boxable_mono_type): make typedref types been just
7251         unverifiable. check for void type.
7252
7253         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7254
7255         * verify.c (do_load_function_ptr): accept method spec tokens.
7256
7257 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7258
7259         * marshal.c (mono_class_native_size): Always set *align even if this is called
7260         recursively.
7261
7262 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7263
7264         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7265         out-of-date.
7266
7267 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7268
7269         * verify.c: removed some old unused tables. A huge bunch of small fixes
7270         to things found while testing the verifier with mono basic.
7271
7272         * verify.c (dump_stack_value): dump null literal flag to.
7273
7274         * verify.c (verify_type_compatibility_full): fix comparison
7275         for types that have a generic super type.
7276
7277         * verify.c (verify_stack_type_compatibility): fix compatibility
7278         between null literals and reference types. fix compatibility between
7279         boxed valuetypes and object. fix corner case test for enums.
7280
7281         * verify.c (do_cmp_op): proper verification of cgt.un in case
7282         of reference types.
7283
7284         * verify.c (do_invoke_method): fix error message.
7285
7286         * verify.c (do_store_indirect
7287
7288         * verify.c (check_is_valid_type_for_field_ops): proper verification
7289         of managed pointers to valuetypes and boxed valuetypes. proper verification
7290         of null literals.
7291
7292         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7293         allow token to be a reference type.
7294
7295         * verify.c (do_cast): proper handling of boxes valuetypes.
7296
7297         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7298         in object[].
7299
7300         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7301         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7302         fixed the decoding of unbox_any
7303
7304 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7305
7306         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7307
7308 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7309
7310         * verify.c (do_newobj): do delegate verification.
7311
7312         * verify.c (verify_delegate_compatibility): perform delegate
7313         verification.
7314
7315         * verify.c (verify_ldftn_delegate): perform tests related to
7316         ldftn delegates.
7317
7318         * verify.c (mono_delegate_signature_equal): perform the
7319         slightly diferent signature comparison required by delegates.
7320
7321         * metadata.c (mono_metadata_type_equal_full): added and exported
7322         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
7323         allows signature only comparison.
7324
7325         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
7326         as MONO_INTERNAL.
7327
7328 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7329
7330         * verify.c: added a bunch of stack_slot_* functions to
7331         make access to stack slot type easier. This is required to
7332         allow optional flags, like null literal, boxed value and
7333         this pointer.
7334         All access paths to IlStackDesc::stype have been changed 
7335         to use these new funcions.
7336         Removed a bunch of unused functions and cleared all warnings.
7337         This patch introduces the usage of the this pointer and 
7338         boxed value flags.
7339
7340 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
7341
7342         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
7343
7344 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7345
7346         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
7347         match managed version.
7348
7349         * appdomain.c: Bump corlib version.
7350         
7351         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
7352         argument.
7353
7354 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
7355
7356         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
7357         Set public key token to zero-length byte array if assembly is not
7358         strongnamed.
7359
7360 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
7363         writing a vtype array elem.
7364
7365 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
7366
7367         * assembly.c (build_assembly_name): return FALSE if length of token is
7368         not 16 (if not "null").
7369         (mono_assembly_name_parse_full): return FALSE if value of version,
7370         culture, token or key is 0.
7371         * icall.c (fill_reflection_assembly_name): add boolean arguments to
7372         specify whether public key and public key token must be set to default
7373         value (zero-length byte array) if not available. Set versioncompat to
7374         SameMachine. If public key is available or the default is set, then
7375         set PublicKey flag.
7376         (ves_icall_System_Reflection_Assembly_FillName): if no public key
7377         is available, use empty byte array as default value. On the 2.0
7378         profile, use default value for public key token if not set.
7379         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
7380         profile, use default value for public key if not set. On the 2.0
7381         profile, use default value for public key token if not set.
7382         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
7383         default values for public key and public key token.
7384
7385 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7386
7387         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
7388         field to keep it in synch with the managed object.
7389
7390         * marshal.c (emit_marshal_object): Add support for byref marshalling of
7391         delegates. Fixes #351520.
7392
7393         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
7394         contains defined memory.
7395         
7396         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
7397
7398         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
7399         
7400         * sgen-gc.c (check_consistency): New helper function to do a consistency check
7401         of the GC data structures.
7402
7403         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
7404
7405         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
7406         
7407         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
7408         barrier.
7409         (mono_array_clone_in_domain): Ditto.
7410         (mono_array_clone_in_domain): Ditto.
7411
7412         * threads.c (start_wrapper): Register the thread start argument as a GC root.
7413         (cache_culture): Use a write barrier.
7414
7415         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
7416         (ves_icall_get_property_info): Ditto.
7417
7418         * object.h (MONO_STRUCT_SETREF): New macro.
7419
7420         * class-internals.h (MonoStats): Add some GC statistics.
7421
7422         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
7423
7424 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
7425
7426         * exception.c (mono_exception_from_name_two_strings):
7427         Break from loop after method is found.
7428
7429 2008-01-04  Dick Porter  <dick@ximian.com>
7430
7431         * process.c (process_module_string_read): Rename variable to
7432         reflect correct usage, after fixing bug 345972.
7433
7434 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
7435
7436         * verify.c (mono_type_create_fnptr_from_mono_method): 
7437         created a MonoType function pointer instance to be used during
7438         verification. The verifier releases this memory at end.
7439
7440         * verify.c (mono_method_is_constructor): extracted repeated
7441         checks for constructor into a single class.
7442
7443         * verify.c (do_push_field): use new extracted method
7444         for constructor check.
7445
7446         * verify.c (do_newobj): same.
7447
7448         * verify.c (do_ldftn): renamed to do_load_function_ptr
7449         and make it verify ldvirtftn too.
7450
7451         * verify.c (mono_method_verify: proper verification
7452         of ldvirtftn. release created MonoMethod instances.
7453
7454 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7455
7456         * verify.c (token_bounds_check): added.
7457
7458         * verify.c (do_ldftn): added.
7459
7460         * verify.c (mono_method_verify): proper verificartion of ldftn.
7461
7462 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7463
7464         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
7465         than the table row count. It's the resposibility of the caller to
7466         make the bounds check and raise the correct error.
7467
7468         * metadata.c (mono_metadata_decode_row_col): Same.
7469
7470         * loader.c (mono_get_method_from_token): perform bounds check
7471         on token for methoddef table.
7472
7473 2007-12-29  Miguel de Icaza  <miguel@novell.com>
7474
7475         * icall.c
7476         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
7477         assert into a negative result, the managed code already coped with
7478         that.
7479
7480         Some folks on Windows reported this error. 
7481
7482 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
7483
7484         * appdomain.c: Bump corlib version.
7485         * icall.c:
7486         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
7487         CultureInfo.CreateCulture to create CultureInfo for name.
7488         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
7489         create CultureInfo for name. Fixes bug #347174.
7490
7491 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7492
7493         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
7494         flags.
7495
7496         * verify.c (is_valid_branch_instruction): allow branching to the
7497         first instruction of the protected block.
7498
7499         * verify.c (is_valid_cmp_branch_instruction): same.
7500
7501         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
7502         avoid double initialization.
7503
7504         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
7505         detect which cases the eval stack should just be copied.
7506
7507         * verify.c (mono_method_verify): check if the eval stack
7508         is empty when entering a protected block.
7509
7510 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7511
7512         * verify.c: added is_clause_in_range, is_clause_inside_range,
7513         is_clause_nested and verify_clause_relationship. They perform
7514         the verifications stated in P1 12.4.2.7.
7515
7516         * verify.c (mono_method_verify): remove some unused variables,
7517         add the new exception clause checks, add instruction border
7518         checks for protected block start/end, improved some error 
7519         messages and fixed a bug in the way invalid instruction access
7520         is detected.
7521
7522 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7523
7524         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
7525         from GC 7.0 if available.
7526
7527         * object.c: Remove an unused define.
7528         
7529         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
7530
7531         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
7532
7533         * null-gc.c (mono_gc_make_descr_for_array): Implement.
7534
7535         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
7536
7537         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
7538         to take the same arguments as the other make_descr functions.
7539
7540         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
7541
7542         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
7543         directly.
7544
7545         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
7546         mini.c.
7547
7548         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
7549         call to boehm-gc.c.
7550
7551         * boehm-gc.c (mono_gc_register_root): Fix a warning.
7552
7553         * null-gc.c (mono_gc_register_root): Fix a warning.
7554
7555         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
7556
7557         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
7558         (mono_gc_base_init): Call GC_init ().
7559
7560         * null-gc.c: Define mono_gc_register_root () as a no-op.
7561
7562         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7563
7564 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
7565
7566         * verify.c: add prototype for merge_stacks at top
7567
7568         * verify.c (do_switch): added.
7569
7570         * verify.c (merge_stacks): on some cases the stack merging
7571         was not happening properly. Unequal stack sizes at merge
7572         points should be invalid.
7573
7574         * verify.c (mono_method_verify): added more debug info on stack state.
7575         verify switch properly.
7576
7577 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
7578
7579         * method-builder.h: New file, moved the mono_mb_ declarations here from 
7580         marshal.h.
7581
7582         * boehm-gc.c marshal.c: Include method-builder.h.
7583
7584         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
7585
7586         * marshal.c: Remove some code which is now in method-builder.c.
7587
7588 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7589
7590         * method-builder.c: New file, extraction of the method builder functionality 
7591         from marshal.c.
7592
7593         * marshal.c: Move the mb functions into method-builder.c.
7594
7595         * marshal.h marshal.c: Export some mono_mb_... functions.
7596
7597         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
7598
7599         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
7600         the caller.
7601
7602         * class.c (mono_class_get_full): Check the token type in the dynamic case.
7603
7604         * loader.c (mono_field_from_token): Ditto.      
7605
7606         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
7607         type as well.
7608         
7609         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
7610         Fixes #342565.
7611
7612         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
7613         a helper function for setting it.
7614
7615         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
7616
7617         
7618         * assembly.c: Significally simplify code now that referenced assemblies are 
7619         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
7620
7621         * threads.h: Don't include  the internal threads-types.h header file. Fixes
7622         #349952.
7623
7624 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
7625
7626         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
7627         instructions that were target of branches or are at protected block boundaries.
7628
7629         * verify.c (in_same_block): handle filter clauses.
7630
7631         * verify.c (is_valid_branch_instruction): added. checks the target of
7632         instructions br or brtrue/false.
7633
7634         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
7635         binary branch instructions such as beq and bge.
7636
7637         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
7638         and made it pin the instruction as been part of the exception block.
7639
7640         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
7641         of in_same_block.
7642
7643         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
7644         of in_same_block.
7645
7646         * verify.c (do_ret): ret from a protected block is unverifiable and
7647         not invalid.
7648
7649         * verify.c (do_static_branch): verify br and br.s instructions.
7650
7651         * verify.c (merge_stacks): add extra param to support detection
7652         of branches in the middle of instructions.
7653         
7654         * verify.c (mono_method_verify): verify branches and exception blocks
7655         that target the middle of instructions. Proper verification of br and br.s.
7656
7657 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
7658
7659         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
7660         skip_visibility field.
7661         (reflection_methodbuilder_from_dynamic_method): Ditto.
7662
7663         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
7664         registrations. Fixes #348193.
7665
7666         * threads.h: Move the internal mono_thread_get_pending_exception () to
7667         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
7668
7669 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
7670
7671         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
7672         icall registration. Fixes #348193.
7673
7674         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
7675         for corlib classes into object. Fixes #349621.
7676
7677 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
7678
7679         * icall.c (property_accessor_nonpublic): new function to determine
7680         whether an accessor allows a property to be considered non-public.
7681         Returns false for private accessor(s) from parent class, and internal
7682         accessor(s) from parent on 2.0 profile (and higher).
7683         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
7684         to determine whether property should be included if NonPublic flag
7685         is set. Fixes bug #349078.
7686
7687 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
7688
7689         * verify.c (init_stack_with_value): added.
7690
7691         * verify.c (mono_method_verify): extracted common
7692         code for exception initialization into init_stack_with_value.
7693
7694         * verify.c (mono_method_verify): initialize the exception
7695         for handler clauses as well.
7696
7697         * verify.c (mono_method_verify): fix the exception clause
7698         ordering rules, it should use handler end offset and not
7699         start offset.
7700
7701 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
7702
7703         * rawbuffer.c: remove useless warning.
7704
7705 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
7706
7707         * threads.h, threads-types.h: move functions to the correct header
7708         (fixes bug#349952).
7709
7710 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7711
7712         * verify.c (mono_method_verify): proper verification
7713         of exception handling clauses ranges and fallthru in
7714         and out of protected blocks.
7715
7716 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7717
7718         * verify.c (mono_method_verify): fixed compilation issue.
7719
7720 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7721
7722         * verify.c (mono_method_verify): a printf slipped in, changed
7723         to use verifier debug macro.
7724
7725 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
7726
7727         * verify.c (is_correct_leave): check for filter clauses.
7728
7729         * verify.c (do_filter): added.
7730
7731         * verify.c (mono_method_verify): property verification of leave.
7732
7733
7734 2007-12-18  Mark Probst  <mark.probst@gmail.com>
7735
7736         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
7737         Win32 build, until we figure out how to do the proper thing on
7738         Win32.
7739
7740 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
7741
7742         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
7743         by the previous patch.
7744         
7745         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
7746         the assembly resolve handler for refonly assemblies.
7747
7748 2007-12-17  Mark Probst  <mark.probst@gmail.com>
7749
7750         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
7751         Make sure only one thread is allowed to commence shutdown, and
7752         don't allow new threads to be started once shutdown is in
7753         progress.
7754
7755 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
7756
7757         * verify.c (is_correct_endfilter): added.
7758
7759         * verify.c (is_unverifiable_endfilter): added.
7760
7761         * verify.c (do_endfilter): added.
7762
7763         * verify.c (mono_method_verify): property verification of endfilter
7764         and fixed a corner case or endfinally.
7765
7766 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
7767
7768         * verify.h: new flags to support fail fast of unverifiable code and
7769         do non-strict verification. Non-strict verification is required to
7770         have MS runtime compatibility. There are a huge amount of unverifiable
7771         code that it accepts as verifiable. The strict mode verifies the code
7772         as the specs says.
7773         Non-strict mode will be required in cases where code needs to be
7774         accepted as verifiable but fails under strict mode.
7775
7776         * pedump.c: added support to fail fast and non-strict verification.
7777
7778         * verify.c: added support for both fail fast and non-strict verification.
7779
7780 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
7781
7782         * verify.c (is_correct_endfinally): added.
7783
7784         * verify.c (mono_method_verify): property verification of endfinally.
7785
7786 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7787
7788         * verify.c (in_any_block): check for filter clauses.
7789
7790         * verify.c (is_correct_rethrow): added.
7791
7792         * verify.c (mono_method_verify): property verification of rethrow.
7793
7794         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
7795
7796 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7797
7798         * verify.c (do_throw): added.
7799
7800         * verify.c (mono_method_verify): property verification of throw
7801
7802 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
7803
7804         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
7805         assemblies. Fixes #346425.
7806
7807 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
7808
7809         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
7810         FieldBuilders.
7811
7812         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
7813
7814         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
7815         prevent asserts when this is called with a token which might not be valid.
7816
7817         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
7818         lookup_dynamic_token_class with valid_token == FALSE.
7819
7820         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
7821
7822         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
7823
7824         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
7825         
7826 2007-12-10  Mark Probst  <mark.probst@gmail.com>
7827
7828         * gc.c: Don't delay threadpool thread finalization unless Mono is
7829         shutting down.
7830
7831 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7832
7833         * threads.c: turn an assert into a non-fatal warning.
7834
7835 2007-12-09  Robert Jordan  <robertj@gmx.net>
7836
7837         * icall.c (GetVirtualMethod): Add missing argument validation.
7838
7839 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7840
7841         * verify.c (do_cast): added.
7842
7843         * verify.c (mono_method_verify): property verification of castclass and isinst.
7844
7845
7846 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7847
7848         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
7849
7850         * verify.c (do_stelem): added.
7851
7852         * verify.c (mono_method_verify): property verification of stelem.X.
7853
7854 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7855
7856         * class.c, class-internals.h: Introduce an environment variable
7857         (MONO_GENERIC_SHARING) through which the extent of generic code
7858         sharing can be controlled (share all classes, share only corlib
7859         classes, or share nothing).
7860
7861         * object.c: Only create runtime generic context for classes for
7862         which sharing is enabled.
7863
7864 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7865
7866         * verify.c (do_ldelem): refactor it to work with ldelem.any.
7867
7868         * verify.c (mono_method_verify): property verification of ldelem.any.
7869
7870 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7871
7872         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
7873         added ldelem.X opcodes.
7874
7875         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
7876
7877         * verify.c: proper verification of ldelem.X 
7878
7879 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
7882
7883 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7884
7885         * verify.c (mono_method_verify): null literal requires special handling,
7886         the value pushed on stack need to be flagged as so.
7887
7888         * verify.c (do_ldelema): Verify ldelema properly.
7889
7890 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7891
7892         * verify.c: Verify ldlen properly.
7893
7894 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
7895
7896         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
7897         to the target object's type. Fixes #346160.
7898
7899 2007-12-05  Dick Porter  <dick@ximian.com>
7900
7901         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
7902         Solaris needs the same workaround as BSD-derived systems.  Fixes
7903         bug 323524, patch by Burkhard Linke
7904         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
7905
7906 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
7907
7908         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
7909         handle to use when error dialog is shown; otherwise, update mask
7910         to show no error dialog when an error occurs.
7911
7912 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
7913
7914         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
7915
7916         * class.c (mono_class_get_field_default_value): New helper function to initialize
7917         field->def_type and field->data.
7918
7919 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
7920
7921         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
7922         the general one.
7923
7924         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
7925
7926         * marshal.c: Avoid depending on delegate->method_info being set.
7927
7928         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
7929         
7930         * object.c (mono_delegate_ctor): Set delegate->method.
7931
7932         * object-internals.h (struct _MonoDelegate): Add 'method' field.
7933
7934         * appdomain.c: Bump corlib version.
7935
7936 2007-11-27  Raja R Harinath  <harinath@gmail.com>
7937
7938         * metadata.c (mono_generic_inst_equal_full): Short-circuit
7939         equality check if we're comparing canonicalized MonoGenericInsts.
7940
7941 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
7942
7943         * class.c (generic_array_methods): Call mono_class_setup_methods () before
7944         accessing class->methods.
7945
7946 2007-11-22  Dick Porter  <dick@ximian.com>
7947
7948         * threads.c: Ensure that the synch_cs is set before trying to use
7949         it.
7950
7951 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
7952
7953         * profiler.c: r89126 broke the statistial profiler, unbreak.
7954
7955 2007-11-22  Martin Baulig  <martin@ximian.com>
7956
7957         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
7958
7959         * mono-debug.c
7960         (mono_debug_debugger_version): Bump to 3.
7961         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
7962         -> mono_debugger_class_initialized().
7963
7964         * mono-debug-debugger.c
7965         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
7966
7967         * class.c
7968         (mono_debugger_start_class_init_func): Removed.
7969         (mono_debugger_class_loaded_methods_func): Added.
7970         (mono_class_setup_methods): Call it here.
7971
7972 2007-11-22  Martin Baulig  <martin@ximian.com>
7973
7974         * mono-debug.c
7975         (mono_debug_add_delegate_trampoline): New public method.
7976         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
7977
7978         * mono-debug.h
7979         (MonoSymbolTable): Added `global_data_table'.
7980         (MonoDebuggerTypeKind): Removed.
7981
7982 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
7983
7984         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
7985         these methods.
7986
7987         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7988         
7989 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
7990
7991         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
7992
7993 2007-11-20  Martin Baulig  <martin@ximian.com>
7994
7995         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
7996
7997         * mono-debug-debugger.c
7998         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
7999         (mono_debugger_remove_breakpoint): Likewise.
8000         (mono_debugger_check_breakpoints): Likewise.
8001         (mono_debugger_register_class_init_callback): New public method.
8002         (mono_debugger_remove_class_init_callback): Likewise.
8003         (mono_debugger_add_type): Likewise.
8004
8005         * mono-debug-debugger.h
8006         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8007
8008 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8009
8010         * class.c: more interface implementations needed for the
8011         array enumerator (fixes bug #341112).
8012
8013 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8014
8015         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8016         fix ParamName of ArgumentNullExceptions.
8017
8018 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8019
8020         * reflection.c (mono_reflection_encode_sighelper): Generate the
8021         modopts and modreqs.   I have a useless test that crashes monodis,
8022         but that shows the code working.
8023
8024 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8025
8026         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8027         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8028
8029 2007-11-15  Dick Porter  <dick@ximian.com>
8030
8031         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8032         When joining a thread, it's the thread that's calling Join that
8033         gets WaitSleepJoin state not the target.  Fixes the standalone
8034         test case in bug 334740, and hopefully the whole bug too.
8035
8036 2007-11-15  Dick Porter  <dick@ximian.com>
8037
8038         * process.c: Read file version info from the files pointed at by
8039         process modules, not the current process.  Fixes bug 315969.
8040
8041         Use windows typedef names in some places to fix warnings on the
8042         windows build.
8043
8044 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8045
8046         * image.c, metadata-internals.h: Added a generic_class_cache hash
8047         to MonoImage for looking up generic classes when sharing generics.
8048
8049 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8050
8051         * sgen-gc.c: warning cleanups.
8052
8053 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8054
8055         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8056         inherited properties.
8057
8058 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8059
8060         * object.c, class-internals.h: Added more information to the
8061         runtime generic context.
8062
8063 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8064
8065         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8066         instead of just the target method. Generalize the abstract method handling to
8067         handle any non-static method.
8068
8069         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8070         mono_marshal_get_delegate_invoke () signature change.
8071
8072 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8073
8074         * class.c, class-internals.h: Made
8075         mono_type_get_basic_type_from_generic () public.  Fixed member
8076         access check for shared generics.
8077
8078         * loader.c: Don't insert field into field cache if it's part of a
8079         non-inflated generic class.
8080
8081         * domain.c, domain-internals.h: The generic sharing context is now
8082         part of the jit info data structure.  Added two accessor
8083         functions.
8084
8085 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8086
8087         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8088         the array Get/Set/Address methods, since the JIT inlines them.
8089
8090         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8091
8092         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8093         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8094
8095         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8096         mono_marshal_get_delegate_invoke signature change.
8097
8098         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8099         an additional argument. Add support for invoking abstract methods.
8100
8101         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8102
8103         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8104
8105 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8106
8107         * class.c: Do field layout for open generic classes as well.
8108
8109 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8110
8111         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8112         other objects, because the threadpool is still around.  Put them
8113         in a list instead and after finalizing all other objects in the
8114         root domain shut down the thread pool and then finalize the
8115         threads.  Fixes bug #337383.
8116
8117         * threads.c, thread-types.h: New mono_thread_create_internal()
8118         function for marking a thread with the threadpool flag before it
8119         started.  Set synch_cs to NULL after freeing it.
8120
8121         * threadpool.c: Mark threadpool threads before they start.
8122
8123 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8124
8125         * reflection.h, reflection.c: don't export random functions
8126         and lazy load dbnull and missing objects.
8127
8128 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8129
8130         * class.c: Initialize COM types if COM interfaces
8131         are present (not just COM classes).
8132         
8133         Code is contributed under MIT/X11 license.
8134
8135 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8136         * reflection.c:
8137         create_dynamic_mono_image: hook module profiler events (dynamic case).
8138         mono_image_basic_init: hook assembly profiler events (dynamic case).
8139
8140 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8141         * profiler.c:
8142         simple_appdomain_unload: completely terminate the profiler
8143         instead of only processing the statistical samples.
8144         simple_shutdown: make sure this is really called exactly once,
8145         even in multithreaded applications, and always listen to
8146         appdomain events.
8147         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8148         here, the "[un]load" functions will do it.
8149         Fixes bugs #333791 and #325261.
8150
8151 2007-11-07  Geoff Norton  <gnorton@novell.com>
8152
8153         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8154         rather than depend on __APPLE__.
8155
8156 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8157
8158         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8159
8160 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8161
8162         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8163         UTF16 MonoString. Fix the crash from bug #335488
8164
8165 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8166
8167         * marshal.c: Correct (for non-Win32 OS) length != size in 
8168         mono_string_from_bstr. Fix #339530.
8169
8170 2007-11-06  Geoff Norton  <gnorton@novell.com>
8171
8172         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8173         to succeed
8174
8175 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
8176
8177         * process.c: Added run-time GetProcessId API detection for Windows.
8178
8179 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8180
8181         * reflection.c  (mono_param_get_objects): If a parameter has the
8182         attribute [System.Runtime.InteropServices.Optional] we should
8183         set the DefaultValue of the ParameterInfo to be
8184         System.Reflection.Missing instead of DBNull.
8185
8186         See bug #339013.
8187
8188         (mono_get_reflection_missing_object): New method,
8189         returns the System.Reflection.Missing.Value singleton instance.
8190
8191 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8192
8193         * culture-info-table.h : regenerated.
8194
8195 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8196
8197         * icall.c: Use GetEnvironmentStrings on windows
8198         so we are using the same environment block as 
8199         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8200         #333740.
8201         
8202         Code is contributed under MIT/X11 license.
8203
8204 2007-10-31  Martin Baulig  <martin@ximian.com>
8205
8206         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8207
8208         * mono-debug-debugger.h
8209         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8210
8211 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8212
8213         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8214         classes.
8215
8216 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8217
8218         * culture-info-table.h : regenerated.
8219
8220 2007-10-30  Robert Jordan  <robertj@gmx.net>
8221
8222         * icall-def.h, icall.c:
8223         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8224
8225         Code is contributed under MIT/X11 license.
8226
8227 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8228
8229         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8230         inflated class instead of inflating them again.
8231         
8232         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8233         dynamic case.
8234
8235         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8236         Call setup_supertypes () after klass->parent is set.
8237         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8238
8239         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8240         for inflated instances of not yet created dynamic generic classes.
8241         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8242         times from inflated_method.
8243         (methodbuilder_to_mono_method): Ditto.
8244
8245 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8246
8247         * gc.c: code cleanup and removed old untested option of not creating the
8248         finalizer thread.
8249
8250 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8251
8252         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8253         creating a jump trampoline for dynamic methods.
8254
8255 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8256
8257         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8258         generic TypeBuilders when called from another method of the same type (bug #335131).
8259
8260
8261 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8262
8263         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8264         doesn't seem to work perfectly.
8265         
8266         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8267         called multiple times.
8268         (methodbuilder_to_mono_method): Ditto.
8269         (resolve_object): Inflate FieldBuilder's.
8270
8271 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8272
8273         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8274         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8275         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8276
8277 2007-10-26  Dick Porter  <dick@ximian.com>
8278
8279         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8280         Thread initialisation changes
8281
8282 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8283
8284         * verify.c: fix compatibility check between arrays and System.Array
8285
8286 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8287
8288         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8289         too. Fixes #336999.
8290
8291 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8292
8293         * object.c (mono_value_box): Use typed allocation here.
8294
8295 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8296
8297         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8298         trampoline instead of compiling the method right away.
8299
8300         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8301
8302 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8303
8304         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8305         related fields for dynamic classes. Fixes #334493.
8306
8307 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8308
8309         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8310         
8311         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8312
8313         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8314         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8315
8316         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8317
8318         * reflection.c (create_generic_typespec): Initialize klass->generic_container
8319         if needed.
8320         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
8321
8322 2007-10-18  Jonathan Chambers <joncham@gmail.com>
8323
8324         * marshal.c: Use correct key when removing item
8325         from ccw_hash.
8326         
8327         Code is contributed under MIT/X11 license.
8328
8329 2007-10-17  William Holmes  <billholmes54@gmail.com>
8330
8331         *marshal.c: Adding a case to marshal booleans to U1
8332
8333         Code is contributed under MIT/X11 license.
8334
8335 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
8336
8337         * class.c (mono_class_from_name): Search the modules compromising dynamic
8338         assemblies. Fixes #331601.
8339
8340 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
8341
8342         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
8343         exception if the type name contains an assembly component. Fixes #334203.
8344
8345         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
8346         modules inside dynamic assemblies. Fixes #334200.
8347         
8348         * reflection.c: Set image->public_key and image->public_key_length;
8349
8350         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
8351         fields.
8352
8353         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
8354         
8355 2007-10-16  Mark Probst  <mark.probst@gmail.com>
8356
8357         * metadata.c: Implemented correct comparing of generic classes.
8358         An inflated generic class can be equal to a non-inflated one if it
8359         is inflated with generic type variables as type arguments.  Fixes
8360         bug #333798.
8361
8362 2007-10-15  Dick Porter  <dick@ximian.com>
8363
8364         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
8365         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
8366         81646.
8367
8368         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
8369         instead of a monitor lock.  This means that monitor_try_enter and
8370         co can set the thread state safely.
8371         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
8372         thread_interrupt_requested, so interrupt actually works.
8373
8374         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
8375         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
8376         state accessor function
8377
8378 2007-10-15  Martin Baulig  <martin@ximian.com>
8379
8380         * mono-debug.h
8381         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
8382         the debugger with the current runtime.
8383
8384 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8385
8386         * object.c, object-internals.h: added the ability to set a single
8387         trampoline for all the slots in a vtable.
8388
8389 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8390
8391         * marshal.c: deal with a possible race condition during multicast
8392         delegate invocation.
8393
8394 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8395
8396         * class.c: ensure value type methods don't have the synchronized
8397         flag set.
8398
8399 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8400
8401         * string-icalls.c, string-icalls.h: reverted unapproved patch that
8402         breaks the build.
8403
8404 2007-10-11  Joel Reed  <joelwreed@comcast.com>
8405
8406         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
8407         to take an options parameter so that empty entries can be removed during
8408         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
8409
8410 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8411
8412         * marshal.c: make sure we don't store the signature from a dynamic
8413         method into the runtime invoke cache (bug #327189).
8414
8415 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8416
8417         * marshal.c: make sure the wrapper methods are properly initialized.
8418
8419 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8420
8421         * metadata.c, metadata-internals.h: Generalized
8422         mono_type_stack_size() to mono_type_stack_size_internal() which
8423         takes an additional argument specifying whether it allows open
8424         types.
8425
8426 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8427
8428         * verify.c (do_invoke_method): handle typedbyref params
8429         correctly and check for unverifiable return values.
8430
8431         * verify.c (do_newobj): fix a warning.
8432
8433 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8434
8435         * verify.c: don't tread typedbyref as allways unverifable,
8436         so uses, like (ld/st)loc.0 are valid. verify for the cases
8437         that it matters, like boxing related operations.
8438
8439 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8440
8441         * verify.c: add verification of the newobj opcode. verification
8442         of delegate instantation still missing due ldftn and virldftn not
8443         pushing the function type on stack
8444
8445 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8446
8447         * class-internals.h: Runtime generic context data structure
8448         definition.
8449
8450         * object.c: Initialization of runtime generic context at runtime
8451         vtable creation time.
8452
8453 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
8454         * class.c (mono_class_create_from_typedef,
8455         mono_class_from_generic_parameter, mono_ptr_class_get,
8456         mono_fnptr_class_get, mono_bounded_array_class_get)
8457         * domain.c (mono_domain_create, mono_domain_free)
8458         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
8459         * image.c (do_mono_image_load, mono_image_close):
8460         Hooked up load-unload profiler events.
8461
8462 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8463
8464         * domain.c: track statistics about the actual amount of native code
8465         allocated.
8466
8467 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8468
8469         * class.c: the valuetype enumerators don't have the additional
8470         supertypes interfaces.
8471
8472 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8473
8474         * class.c: need more interfaces setup for the IEnumerator<T>
8475         object created for arrays (tests/ienumerator-interfaces.2.cs).
8476
8477 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
8478
8479         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
8480
8481 2007-10-05  Alp Toker  <alp@atoker.com>
8482
8483         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8484         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8485         #315863.
8486
8487 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8488
8489         * verify.c (verify_type_compatibility_full): verification of
8490         compatibility improved, validates correctly non-strict checks between
8491         native int and I4 types different than (unsigned)int32.
8492
8493         * verify.c (do_store_indirect): added, do all verification of
8494         ldind.X opcodes. 
8495
8496         * verify.c (get_load_indirect_mono_type): renamed to
8497         get_indirect_op_mono_type, as it now returns the MonoType for 
8498         ldind.X and stind.X opcodes.
8499
8500 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8501
8502         * reflection.c: Fix the encoding of generic type definition for
8503         TypeBuilders.
8504
8505         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
8506         mono_image_typedef_or_ref but allows to specify if typespec lookups should
8507         be made. Typespec check is done prior to typeref cache lookup.
8508
8509         * reflection.c (mono_image_typedef_or_ref): now just delegate to
8510         mono_image_typedef_or_ref_full.
8511
8512         * reflection.c (encode_generic_class): encode the generic class
8513         directly instead of calling encode_type.
8514
8515         * reflection.c (encode_type): encode the generic type definition
8516         MonoClass as a generic instantiation.
8517
8518         * reflection.c (create_typespec): cache typespec tokens in
8519         the assembly->typespec cache. Don't create typespec for a generic
8520         instance MonoClass. Create typespec for the generic type defintion.
8521
8522         * reflection.c (create_generic_typespec): encode the generic
8523         class directly instead of calling encode_type.
8524
8525         * reflection.c (mono_image_create_token): encode the generic
8526         type definition not using a typespec for MonoType instances.
8527
8528
8529 2007-10-04  Raja R Harinath  <rharinath@novell.com>
8530
8531         Fix #328812
8532         * class.c (mono_image_init_name_cache): Don't return nested
8533         'protected internal' classes.
8534         (mono_class_from_name_case): Likewise.
8535
8536 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
8537
8538         * icall-def.h, icall.c : get_bundled_machine_config() is now the
8539           common function used by both DefaultConfig in System.dll and
8540           InternalConfigurationHost in System.Configuration.dll.
8541
8542 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8543
8544         * class.c: automatically add to vectors only a few essential explicit
8545         generic interfaces. The rest of the interfaces that arrays should
8546         provide are currently implicitly added (but still not lazily, see the
8547         design in the discussion of bug#325495 for the details of what is
8548         needed for that). Additionally, implicit interfaces are assigned the
8549         same vtable slot as the explicit interfaces (as they are compatible):
8550         this enables huge memory savings since we don't need to instantiate
8551         as many memthods and as large vtables anymore. Also, Since
8552         GetEnumerator<T> returns an instance of a type that is required to
8553         support a similarly large set of interfaces as arrays, we add
8554         implicit interfaces and interface offset sharing support to those
8555         types, too. This change adds all the required interfaces so that
8556         the anonarray.cs test case in the bug report works (we don't add
8557         all the interfaces to arrays of arrays 3-level deep and more because
8558         of the memory requirements explained in the bug and since they are much
8559         less common: the lazy-loading support will enabled them to work, too).
8560
8561 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8562
8563         * verify.c (merge_stacks): major clean up, all type compatibility
8564         checks are done by verify_type_compatibility. This fix my earlier lack
8565         of understanding of the CLR type system and merge_stacks no longer looks
8566         scary.
8567
8568         * verify.c: fixed some bad spelling.
8569
8570 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8571
8572         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
8573         a given stack slock.
8574         
8575         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
8576         verify_type_compatibility_full. This removed a near indentical function and fixed
8577         handling of Int32 and IntPtr across all opcodes.
8578
8579 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8580
8581         * class.c: only vectors have the additional generic interfaces.
8582
8583 2007-10-01  Jonathan Chambers <joncham@gmail.com>
8584
8585         * mono-config.c: Use g_strcasecmp instead of
8586         strcasecmp like everywhere else to fix
8587         compilation with MSVC.
8588         
8589         Code is contributed under MIT/X11 license.
8590
8591 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8592
8593         * object.c, object-internals.h: refactored the IMT code to enable
8594         building a single slot at a time and lazily creating the IMT trampolines
8595         and thunks.
8596
8597 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
8598
8599         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
8600
8601         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
8602         Fixes #328501.
8603         
8604 2007-09-29  Raja R Harinath  <harinath@gmail.com>
8605
8606         * loader.c (method_from_methodspec): Rearrange to avoid
8607         un-necessary exposition.  Don't assert out if the method's
8608         declaring type is a generic type definition.
8609
8610 2007-09-28  Martin Baulig  <martin@ximian.com>
8611
8612         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
8613
8614 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
8615
8616         * class-internals.h: optimize field layout of MonoClass to
8617         requires less cachelines at runtime and save a few bytes on 64 bit
8618         systems.
8619
8620 2007-09-28  Jb Evain  <jbevain@novell.com>
8621
8622         * reflection.c: when encoding type names in custom attributes,
8623         if the type is a closed generic type, its generic arguments
8624         have to be serialized as AssemblyQualifiedName, so that when
8625         they are deserialized, it's possible to re-create them properly.
8626         Fixes #329450.
8627
8628
8629 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8630
8631         * object.c, class-internals.h: added delegate-creation counter.
8632
8633 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8634
8635         * class.c: cleanup of the code that synthetizes interfaces for
8636         arrays in 2.0: saves quit a bit of corlib mempool memory.
8637         Code to fix bug #325495 ifdeffed out for now until the issues
8638         with memory usage and O(n^2) behaviour are fixed.
8639
8640 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8641
8642         * marshal.c: when possible, do not duplicate the name of the methods
8643         in the method builder and in the generated MonoMethod.
8644
8645 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8646         * verify.c: added support for type checking ldind_* opcodes.
8647
8648 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8649
8650         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
8651         which is used to distinguish the fully open instantiation of a TypeBuilder
8652         with the rest. This temporary hack is required to restore the property that
8653         the fully open instantiation is the same type of the generic type definition.
8654
8655         * class-internals.h (mono_generic_class_is_generic_type_definition):
8656         new function as part of the internal API.
8657
8658         * class.c (inflate_generic_type): return NULL when the generic inst is
8659         fully open. The fully open generic type is now the same as the generic type
8660         definition for non TypeBuilder types.
8661
8662         * class.c (mono_generic_class_get_class): removed assert since it is
8663         no longer valid, gklass->cached_class can point to the generic type definition.
8664
8665         * class.c (mono_generic_class_is_generic_type_definition): new.
8666
8667         * metadata.c (mono_generic_class_hash): added is_tb_open field
8668         to the hash calculation.
8669
8670         * metadata.c (free_generic_class): if the generic class is associated
8671         with the generic type definition, its field will come from the mempool and
8672         must not be freed.
8673
8674         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
8675         new, this function identifies the corner case of a TypeBuilder fully open
8676         instantiation.
8677
8678         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
8679         for lookup. Set gclass->cached_class to be the container class in case of
8680         the fully open instantiation of non TypeBuilder types.
8681
8682         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
8683         to compare generic classes.
8684
8685         * reflection.c (method_encode_methodspec): remove assert that
8686         no longer is valid.
8687
8688         * reflection.c (mono_reflection_generic_class_initialize): add
8689         an aditional assert to ensure the proper type is used.
8690
8691 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
8692
8693         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
8694         to enjoy it.
8695
8696 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8697
8698         * verify.c (push_arg): Fixed support for ldarga
8699         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
8700         MonoType used as first arg in case of instance calls.
8701
8702 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8703
8704         * verify.c: Support for verifying VAR and MVAR types, 
8705
8706 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
8707
8708         * icall.c (ves_icall_get_property_info): Set the reflected type of the
8709         accessors correctly.
8710
8711 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8712
8713         * threads.c: support OSX and other systems in
8714         mono_thread_get_stack_bounds (bug #328026).
8715
8716 2007-09-25  Martin Baulig  <martin@ximian.com>
8717
8718         * mono-debug.h
8719         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
8720
8721 2007-09-24  Martin Baulig  <martin@ximian.com>
8722
8723         * mono-debug.h
8724         (MonoDebugClassEntry): Moved the definition of this struct into
8725         mono-debug.c to make it private.
8726
8727         * mono-debug.c
8728         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
8729         type table per symbol file, we don't need to store the symfile id
8730         any longer.
8731
8732 2007-09-24  Martin Baulig  <martin@ximian.com>
8733
8734         Create one type table per symbol file, since a `MonoClass *' gets
8735         invalid when its image is unloaded.
8736
8737         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
8738         (MonoDebugHandle): Added `type_table'.
8739
8740 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
8741
8742         * mempool.c, mempool.h: added mono_mempool_new_size () API
8743         to be able to specify a smaller initial size for the pool.
8744         Adjusted the code to slowly increase pool size before using
8745         the previous default size.
8746         * image.c: use a small initial size for image mempools.
8747
8748 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
8749
8750         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
8751         Fixes ##320990.
8752
8753         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
8754         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
8755
8756 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
8757
8758         * metadata.c (mono_type_create_from_typespec): Remove an invalid
8759         free. Fixes #327438.
8760
8761 2007-09-21  Raja R Harinath  <harinath@gmail.com>
8762
8763         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
8764         generic instantiations, etc.
8765         <MONO_TYPE_ARRAY>: Likewise.
8766
8767 2007-09-21  Martin Baulig  <martin@ximian.com>
8768
8769         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
8770         these structs were never defined.
8771         (MonoDebugHandle): Removed the `_priv' field, it was never used.
8772
8773 2007-09-21  Martin Baulig  <martin@ximian.com>
8774
8775         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
8776
8777 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
8778
8779         * image.c: removed the guid hash tables: we can get the same info
8780         without the additional memory usage hit (partially fixes also bug #327052).
8781
8782 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
8783
8784         * profiler.h, profiler-private.h, profiler.c: add a new profiler
8785         event to handle unloading methods. After the event is called, the
8786         corresponding MonoMethod* must be considered invalid.
8787         * loader.c (mono_free_method): call the new mono_profiler_method_free
8788         event.
8789
8790 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8791
8792         * domain-internals.h: New flag in MonoJitInfo which marks shared
8793         generic methods.  New hash table (shared_generics_hash) in
8794         MonoDomain to keep track of shared generic methods.  Prototypes
8795         for functions to register and lookup shared generic methods.
8796
8797         * domain.c: Support for registering and looking up shared generic
8798         methods via a hash table (shared_generics_hash) in MonoDomain.
8799
8800         * class-internals.h: New exception to signal failure of shared
8801         compilation of a generic method.  New counters for generics
8802         sharing in MonoStats.
8803
8804 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
8805
8806         * image.c, metadata-internals.h: don't keep a file descriptor open
8807         for loaded assemblies (bug#325988).
8808
8809 2007-09-19  Raja R Harinath  <rharinath@novell.com>
8810
8811         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
8812         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
8813         use the corresponding datatypes.
8814         (type_in_image): Update to changes.
8815         (CleanForImageUserData): Simplify.
8816         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
8817         Avoid quadratic behaviour in handling the "stolen" list by
8818         separating the filter predicate out, and by prepending the stolen
8819         items rather than appending them.
8820         (steal_ginst_in_image): Likewise.
8821         (mono_metadata_clean_for_image): Update to changes.
8822
8823 2007-09-19  Martin Baulig  <martin@ximian.com>
8824
8825         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
8826
8827 2007-09-19  Martin Baulig  <martin@ximian.com>
8828
8829         * mono-debug.c (mono_debug_cleanup): Don't call
8830         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
8831
8832 2007-09-19  Raja R Harinath  <harinath@gmail.com>
8833
8834         Fix crash on 'make run-test' in mcs/errors
8835         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
8836         Avoid more potential allocations in mono_class_from_mono_type.
8837         (ginst_in_image): Update to changes.
8838         (gclass_in_image): Rearrange slightly.
8839
8840 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8841
8842         * class.c (mono_class_init): Move the code that sets up class->methods to 
8843         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
8844
8845         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
8846         canonical instance of an inflated generic signature.
8847         (mono_type_create_from_typespec): Remove an invalid free.
8848
8849         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
8850
8851 2007-09-18  Marek Habersack  <mhabersack@novell.com>
8852
8853         * domain-internals.h: added a declaration of the
8854         mono_assembly_load_full_nosearch internal function.
8855
8856         * assembly.c (mono_assembly_load_with_partial_name): use
8857         mono_try_assembly_resolve return value properly.
8858         (mono_assembly_load_full_nosearch): copied the function body from
8859         mono_assembly_load_full, without the code to invoke assembly
8860         search hooks.
8861         (mono_assembly_load_full): calls the above new function and if the
8862         assembly is not resolved, invokes the search hooks.
8863
8864         * appdomain.c (mono_runtime_init): restore the global postload
8865         assembly search handlers.
8866
8867 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8868
8869         * class.c (mono_class_init): Make sure class->methods and class->properties
8870         are never NULL in the generics case.
8871
8872         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
8873
8874 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * metadata.c (free_generic_class): Disable some code to fix the build.
8877
8878         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
8879
8880         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
8881         from the image mempool.
8882
8883         * metadata.c (free_generic_class): Free more data from the inflated class.
8884
8885         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
8886
8887         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
8888         mempool.
8889         (mono_type_create_from_typespec): Ditto.
8890
8891         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
8892         MonoImage to the caller.
8893         (mono_init_internal): Save the opened image in a global variable.
8894         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
8895
8896         * reflection.c (resolve_object): Fix a leak.
8897
8898         * metadata.c: Fix the freeing of data in the generics caches.
8899         
8900         * metadata.c (free_generic_inst): Comment this out to fix the build.
8901         (free_generic_class): Ditto.
8902
8903         * metadata.c: Free cached generic methods, instantinations and classes when
8904         they are removed from the caches.
8905         (mono_metadata_free_type): Free the type itself.
8906
8907         * class.c: Free the result of mono_class_inflate_generic_type () in a few
8908         places.
8909
8910 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
8911
8912         * boehm-gc.c: restrict managed allocs to __thread supporting
8913         architectures.
8914
8915 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
8916
8917         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
8918         (mono_generic_class_get_class): Fix a leak.
8919
8920         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
8921         mono_metadata_free_type ().
8922         (mono_metadata_inflate_generic_inst): Fix a leak.
8923
8924 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8925
8926         * mono-debug.c (free_header_data): Fix a leak missed earlier.
8927
8928         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
8929         mempool.
8930
8931         * mono-debug.c (mono_debug_close_image): Fix call to 
8932         g_hash_table_remove ().
8933
8934 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
8935
8936         * icall-def.h: redirect all the string ctor to the managed
8937         CreateString () methods.
8938         * string-icalls.c, string-icalls.h: removed dead code for string
8939         ctors and icalls.
8940
8941 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8942
8943         * mono-debug.c: Fix memory leaks.
8944
8945 2007-09-14  Jonathan Chambers <joncham@gmail.com>
8946
8947         * threads-types.h: Implement mono_hazard_pointer_set and 
8948         mono_hazard_pointer_clear macros using do/while(0) to fix
8949         compilation with MSVC.
8950         
8951         Code is contributed under MIT/X11 license.
8952
8953 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8954
8955         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
8956         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
8957
8958 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8959
8960         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
8961         icalls.
8962
8963 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8964
8965         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
8966         managed-code allocated as well.
8967
8968 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
8969
8970         * class.c (mono_class_is_assignable_from): Add support for generic variance.
8971
8972 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
8973
8974         * boehm-gc.c: fixed the build after the AOT changes.
8975
8976 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * wrapper-types.h: Add an ALLOC wrapper type.
8979
8980         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
8981         reference managed allocator methods.
8982
8983 2007-09-12  Marek Safar  <marek.safar@gmail.com>
8984
8985         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
8986         of Type array and not MonoType, a fix suggested by Hari.
8987         
8988 2007-09-12  Jonathan Chambers <joncham@gmail.com>
8989
8990         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
8991         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
8992         
8993         Code is contributed under MIT/X11 license.
8994
8995 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
8996
8997         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
8998
8999 2007-09-12  Marek Habersack  <mhabersack@novell.com>
9000
9001         * image.c (do_mono_image_open): if assembly file fails to open and
9002         MONO_IOMAP is in effect, try to find the path in a
9003         case-insensitive way.
9004
9005         * appdomain.c (mono_runtime_init): do not install postload hooks -
9006         tests show that MS.NET doesn't use anything of that sort to
9007         trigger the AppDomain.AssemblyResolve event.
9008         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9009         made non-static.
9010         (mono_runtime_init): init portability helpers here.
9011
9012         * assembly.c (mono_assembly_load_with_partial_name): if other   
9013         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9014         to resolve the assembly.
9015
9016         * domain-internals.h: added mono_try_assembly_resolve and marked
9017         it as internal.
9018
9019 2007-09-11  Jb Evain  <jbevain@novell.com>
9020
9021         * object-internals.h (MonoReflectionDynamicMethod): add
9022         a `MonoReflectionType *owner` field. The owner is used
9023         * reflection.c:
9024         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9025         method as the class declaring the dynamic method.
9026         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9027         dynamic method to the declaring type of the methodbuilder.
9028
9029 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9030
9031         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9032         rules for calling methods via reflection.
9033
9034 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9035
9036         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9037         Inflate MonoType's.
9038
9039 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9040
9041         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9042         provide a managed method that does fast allocations without needing
9043         a managed->unmanaged transition. Boehm GC implementation currently
9044         enabled for ptrfree objects on sane architectures.
9045
9046 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9047
9048         * marshal.c, marshal.h: exported a couple of useful functions and
9049         added mono_mb_get_label () to easily handle backward branches.
9050
9051 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9052
9053         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9054
9055 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9056
9057         * loader.c (find_method): Fixed the regression introduced while
9058         fixing bug #81466.
9059
9060 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9061
9062         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9063         well.
9064         
9065         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9066         icall.c reflection.c: Pass a MonoGenericContext argument to 
9067         mono_lookup_dynamic_token ().
9068
9069         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9070         #82744.
9071         
9072 2007-09-09  Robert Jordan  <robertj@gmx.net>
9073
9074         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9075         for generic methods.
9076
9077         * object.c (mono_object_get_virtual_method): Handle generic methods.
9078         Fixes bug #78882.
9079
9080         Code is contributed under MIT/X11 license.
9081
9082 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9083
9084         * image.c: fix locking in mono_image_load_file_for_image ().
9085
9086 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9087
9088         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9089         used only as a cache: added an icall to fill it.
9090
9091 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9092
9093         * reflection.h: exposed mono_reflection_free_type_info
9094         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9095         since mono_reflection_bind_generic_parameters makes a copy of it.
9096         * reflection.c (free_type_info): subinfos should be freed.
9097         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9098         made non static.
9099         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9100         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9101         this fixes #82695 and #81726.
9102    
9103
9104 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9105
9106         * process.h, process.c:  added support for user profile/info in
9107           ProcessStartInfo. For now only Windows works.
9108
9109 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9110
9111         * metadata.c: consider the generic arguments when comparing
9112         signatures (bug #82614).
9113
9114 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9115
9116         * cil-coff.h, image.c: updated assembly loader to cope with the
9117         PE32+ 64 bit file format.
9118
9119 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9120
9121         * assembly.c, class.c, domain.c, loader.c: remove useless
9122         inclusion of cil-coff.h.
9123
9124 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9125
9126         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9127         if interface is marked with CoClassAttribute. 
9128    
9129         Code is contributed under MIT/X11 license.
9130
9131 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9132
9133         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9134         if it's seen twice in major collections.
9135
9136 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9137
9138         * sgen-gc.c: big objects are not copied to the gray area, but they
9139         need to be considered for scanning, too, if they are brought alive
9140         by an object ready for finalizations or a survived one.
9141
9142 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9143
9144         * sgen-gc.c: properly account the number of disappearing links when
9145         they are nullified.
9146
9147 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9148
9149         * sgen-gc.c: share the code to scan the registered roots between the
9150         different types of collections.
9151
9152 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9153
9154         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9155
9156 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9157
9158         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9159         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9160
9161 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9162
9163         * security-manager.c (mono_security_manager_get_methods):
9164         LinkDemandSecurityException now has 2 arguments instead of 3.
9165
9166 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9167
9168         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9169         platforms which need it.
9170
9171 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9172
9173         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9174         dtor.
9175
9176 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9177
9178         * threads.c: free the thread static data on thread exit.
9179
9180 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9181
9182         * class.c: walk the hierarchy to find the generic definition for
9183         a class (fixes runtime part of bug #82498).
9184
9185 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9186
9187         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9188         ...
9189
9190         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9191
9192 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9193
9194         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9195
9196 2007-08-24  Robert Jordan  <robertj@gmx.net>
9197
9198         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9199
9200 2007-08-24  Jb Evain  <jbevain@novell.com>
9201
9202         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9203         for byref types.
9204
9205 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9206
9207         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9208         #82286.
9209
9210 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9211
9212         * assembly.c: Fix a warning.
9213         
9214 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9215
9216         * appdomain.c: parse the <runtime> section looking for the probing
9217         element with the 'privatePath' attribute, which sets additional
9218         directories in which the runtime should look for assemblies.
9219
9220 2007-08-23  Robert Jordan  <robertj@gmx.net>
9221
9222         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9223         Fixes #82499.
9224
9225 2007-08-23  Martin Baulig  <martin@ximian.com>
9226
9227         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9228         _mono_debug_init_corlib() and remove it from the header file.
9229
9230 2007-08-23  Martin Baulig  <martin@ximian.com>
9231
9232         * mono-debug-debugger.c
9233         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9234         don't notify the debugger about it.
9235
9236         * mono-debug-debugger.h
9237         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9238
9239 2007-08-23  Robert Jordan  <robertj@gmx.net>
9240
9241         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9242         Code is contributed under MIT/X11 license.
9243
9244 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9245
9246         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9247
9248 2007-08-22  Martin Baulig  <martin@ximian.com>
9249
9250         * mono-debug.c: Store debugging info on a per-domain basis and
9251         free it on domain unload.  Add support for unloading symbol files.
9252
9253         * mono-debug.h
9254         (MonoDebugList): New typedef.
9255         (MonoSymbolTable):
9256         - add `data_tables and `type_table'.
9257         - replace 'symbol_files' and `num_symbol_files' with a
9258           `MonoDebugList *'.
9259         (mono_debug_data_table): Removed.
9260         (mono_debug_list_add): New public function.
9261         (mono_debug_list_remove): New public function.
9262         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9263         (mono_debug_init_2_memory): Renamed into
9264         mono_debug_open_image_from_memory().
9265         (mono_debug_close_image): New public function.
9266         (mono_debug_domain_create): Likewise.
9267         (mono_debug_domain_unload): Likewise.
9268         (MONO_DEBUGGER_VERSION): Bump to 60.
9269
9270         * mono-debug-debugger.h
9271         (MonoDebuggerEvent):
9272         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9273         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9274         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9275         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9276           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9277         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9278           meaning.
9279         (mono_debugger_add_symbol_file): Removed.
9280         (mono_debugger_add_type): Removed.
9281         (mono_debugger_lookup_type): Removed.
9282         (mono_debugger_lookup_assembly): Removed.
9283
9284         * domain.c
9285         (mono_domain_create): Call mono_debug_domain_create().
9286         (mono_init_internal): Call mono_debug_init_corlib().
9287
9288         * assembly.c
9289         (mono_assembly_close): Call mono_debug_close_image().
9290
9291 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9292
9293         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9294         mmap call.
9295
9296 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9297
9298         * sgen-gc.c: ensure section->pin_queue_end is initialized
9299         correctly when non pinning objects in the section have been found.
9300
9301 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9302
9303         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9304         containing a list of directories separated by ':'. MSDN docs say
9305         the directories should be separated with ';'. Part of a bugfix for
9306         bug #81446
9307
9308 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9309
9310         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9311         it should MonoType and not MonoClass.
9312
9313 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9314
9315         * culture-info-table.h : regenerated.
9316
9317 2007-08-20  William Holmes  <billholmes54@gmail.com>
9318
9319         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
9320          to call ReplaceFile Kernel32 on windows or in io-layer.
9321         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
9322         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
9323          as an internal call.
9324
9325         Code is contributed under MIT/X11 license.
9326
9327 2007-08-20  Jb Evain  <jbevain@novell.com>
9328
9329         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
9330         and MONO_EXCEPTION_FIELD_ACCESS.
9331
9332         * debug-helpers.[c|h]: new mono_field_full_name function.
9333
9334 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9335
9336         * class.c: Removed class_security_level() and moved it to
9337         security-core-clr.c.
9338
9339         * security-core-clr.c, security-core-clr.h: class_security_level()
9340         is now public and renamed to mono_security_core_clr_class_level().
9341         It also looks for security attributes in the classes a class is
9342         nested in.
9343
9344 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9345
9346         * security-core-clr.c, security-core-clr.h: CoreCLR security
9347         utility functions.
9348
9349         * Makefile.am: Added security-core-clr.[ch].
9350
9351         * security-manager.c, security-manager.h: Functions and enum for
9352         setting and getting the security mode.
9353
9354         * class.c: CoreCLR security checks.
9355
9356 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9357
9358         * icall-def.h, process.c, process.h: implemented icall to get
9359         user/system processor times.
9360
9361 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9362
9363         * domain.c, threads.c, class-internals.h, domain-internals.h: New
9364         reader-lock-free jit_info_table.
9365
9366 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
9367
9368         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
9369
9370         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
9371
9372         * object-internals.h (MonoException): Add missing _data member.
9373
9374 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9375
9376         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
9377         checking that only methods with matching qname or fqname are picked
9378         from implemented interfaces.
9379
9380 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9381
9382         * verify.c (do_newarr):added, do type verification of
9383         newarr ops, push the right value on the eval stack.
9384         * verify.c (mono_method_verify): use do_newarr
9385
9386
9387 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9388
9389         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
9390         factored the common code into get_boxable_mono_type, which
9391         is now using mono_type_get_full, this fixed byref related tests.
9392
9393 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9394
9395         * class.c: added mono_type_get_full, this function has the same
9396         behavior of mono_class_get_full but the returned MonoType has
9397         all metadata of the associated token in case of a typespec token.
9398         * class.c: added mono_type_retrieve_from_typespec, used by 
9399         mono_type_get_full to retrieve the token type.
9400         * class.c (mono_class_create_from_typespec): changed to use
9401         mono_type_retrieve_from_typespec.
9402         * class.c (mono_ldtoken): changed to use mono_type_get_full
9403         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
9404         * class-internals.h: exported mono_type_get_full for internal use.
9405
9406 2007-08-16  Jb Evain  <jbevain@novell.com>
9407
9408         * domain.c (supported_runtimes): add entry for
9409         the 'moonlight' runtime version.
9410
9411 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * verify.c (mono_method_verify): small typo sliped in.  
9414
9415 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9416
9417         * verify.c (do_unbox_value): added, do type verification of
9418         unboxing ops
9419         * verify.c (mono_method_verify): use do_unbox_value
9420
9421
9422 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9423
9424         * verify.c (dump_stack_value): fixed typo, was printing string
9425         instead of object on stack.
9426         * verify.c (do_box_value): moved the byref check up as it leads
9427         to invalid code and should be done earlier.
9428         * verify.c: improved error messages for and ldobj
9429
9430 2007-08-15  William Holmes  <billholmes54@gmail.com>
9431
9432         * marshal.c (emit_marshal_custom): Omit the call to 
9433           marshal_native_to_managed when calling native to managed 
9434           and the argument is specified as an out argument.
9435
9436         Code is contributed under MIT/X11 license.
9437
9438 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9439
9440         * verify.c: fixed the type checks for generics, function pointers and vectors.
9441         Added type verification for ldobj and ldtoken. The verifier
9442         would segfault if header or signature of a method contained references
9443         to non-existant types.
9444
9445 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9446
9447         * marshal.c (cominterop_get_ccw): Patch from
9448         Bill Holmes to no walk up interface hierarchy. 
9449         All parent methods should be present in the interface for COM.
9450    
9451         Code is contributed under MIT/X11 license.
9452
9453 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9454
9455         * marshal.c (emit_marshal_com_interface): Patch from
9456         Bill Holmes to handle COM Interfaces as return values
9457         for native->managed calls.
9458    
9459         Code is contributed under MIT/X11 license.
9460
9461 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
9462
9463         * marshal.c (cominterop_get_idispatch_for_object): Implement
9464         for runtime callable wrappers.
9465    
9466         Code is contributed under MIT/X11 license.
9467
9468 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
9469
9470         * pedump.c (main): changed from mono_init to mono_init_from_assembly
9471         so 2.0 types are accessible
9472
9473
9474 2007-08-13  Miguel de Icaza  <miguel@novell.com>
9475
9476         * domain.c (mono_init_internal): Call mono_assembly_load_friends
9477         once we load mscorlib.   Due to the order in which we initialize,
9478         the mono_assembly_load_full routine that loads mscorlib did not
9479         load friends.   We now load it once we load the
9480         mono_defaults.internals_visible_class class. 
9481
9482         * assembly.c: Expose the mono_load_friend_assemblies method.
9483
9484 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
9485
9486         * verify.c: improved the handling of boxing, better
9487         type checking for unary ops and conversion. Fix bug
9488         regarding managed pointer compatibility checking
9489
9490 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9491
9492         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
9493
9494         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
9495
9496 2007-08-09  Raja R Harinath  <rharinath@novell.com>
9497
9498         * reflection.c (dup_type): Remove.
9499         * class.c (dup_type): Remove.
9500         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
9501         instead of the dodgy 'dup_type'.
9502         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
9503         handle the case where 'dup_type' needed the second argument.
9504
9505 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9506
9507         * domain.c: Fix a warning.
9508
9509 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9510
9511         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
9512         checking that methods with the same fqname are not overridden
9513         with a method from an ancestor.
9514
9515 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
9516
9517         * threads.c (free_thread_static_data_helper): Avoid a crash if
9518         thread->static_data is not yet set.
9519
9520 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
9521
9522         * marshal.c: Use correct image when emitting
9523         native wrapper for COM calls.
9524    
9525         Code is contributed under MIT/X11 license.
9526
9527 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
9528
9529         * icall-def.h, security.c, security.h :
9530           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
9531
9532 2007-08-07  Martin Baulig  <martin@ximian.com>
9533
9534         * mono-debug-debugger.h
9535         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
9536
9537         * domain.c (mono_domain_free): Call
9538         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
9539
9540 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9541
9542         * verify.c (check_underflow, check_overflow): error message now returns IL offset
9543         * verify.c (in_same_block): code should test if either offset is inside the clauses
9544         * verify.c (mono_method_verify): push the exception into the eval stack of exception
9545         and filter blocks
9546
9547 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9548
9549         * image.c (mono_image_close): Fix a leak.
9550
9551         * object.c (mono_runtime_invoke_array): Avoid using alloca.
9552
9553         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
9554
9555 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9556
9557         * domain.c, threads.c, threads-types.h: fix memory retention issue
9558         with thread static variables not being cleared on domain unload.
9559         Reuse thread static slots after domain unload.
9560
9561 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
9564         nullable type.
9565
9566         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
9567         now done in mono_runtime_invoke_array.
9568
9569         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
9570         receiver is a nullable type.
9571
9572         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
9573         generic parameter.
9574
9575 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
9576
9577         * marshal.c: Implement COM Objects as return type for 
9578         managed->unmanaged calls. Added Release calls for COM Object
9579         out/return values in managed->unmanaged calls.
9580
9581         Code is contributed under MIT/X11 license.
9582
9583 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9584
9585         * threads.h, threads-type.h: move the hazard pointer declarations
9586         to the private header.
9587
9588 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9589
9590         * file-io.c, appdomain.c: memory leak fixes.
9591
9592 2007-08-02  Dick Porter  <dick@ximian.com>
9593
9594         * socket-io.c
9595         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
9596         SO_REUSEADDR setting into io-layer/sockets.c.
9597
9598 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9599
9600         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
9601         from Object when called on a generic parameter. Fixes #82211.
9602
9603 2007-08-01  Dick Porter  <dick@ximian.com>
9604
9605         * file-io.c (convert_share): Test FileShare values bit-by-bit.
9606         Fixes bug 79250 yet again.
9607
9608 2007-07-30  Martin Baulig  <martin@ximian.com>
9609
9610         Merged the `debugger-dublin' branch.
9611
9612         * mono-debug.h
9613         (MonoDebugDataTable): New typedef.
9614         (MonoDebugMethodAddressList): New typedef.
9615         (MonoDebugWrapperData): Removed.
9616         (MonoDebugSymbolTable): Removed `current_data_table',
9617         `current_data_table_size', `current_data_table_offset'.
9618         (MonoDebugDataItemType): Moved into mono-debug.c.
9619         (MonoDebugMethodJitInfo): Remove `address'.
9620         (mono_debug_data_table): New global variable.
9621         (mono_debug_lookup_method_addresses): New public function.
9622         (mono_debug_find_method): Take a `MonoMethod *', not a
9623         `MonoDebugMethodInfo *'.
9624
9625         * mono-debug.c: Drop support for the old symbol tables.
9626
9627 2007-06-28  Martin Baulig  <martin@ximian.com>
9628
9629         * mono-debug.c (mono_debug_debugger_version): New public variable.
9630
9631 2007-07-31  William Holmes  <billholmes54@gmail.com>
9632
9633         * metadata.c Changed mono_type_create_from_typespec to not insert
9634           the type into the hash map until after
9635           do_mono_metadata_parse_type has completed.
9636         Fixes Bug #82194
9637         Code is contributed under MIT/X11 license.
9638
9639 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9640
9641         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
9642         generic parameter. Fixes #82211.
9643
9644 2007-07-27  Jb Evain  <jbevain@novell.com>
9645
9646         * pedump.c (dump_metadata, dump_metadata_header): dump
9647         versions contained in the metadata header.
9648
9649 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9650
9651         * threads.c: register small_id_table with the GC.
9652
9653 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9654
9655         * threads.c, threads.h, class-internals.h, object-internals.h:
9656         Hazard pointers, to be used by lock-free parallel algorithms.
9657
9658 2007-07-26  Dick Porter  <dick@ximian.com>
9659
9660         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
9661         routine on non-windows platforms, as I've not managed to think of
9662         a non-kludgy way of doing this.  Finishes off bug 78739.
9663
9664 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9665
9666         * object.c: properly setup interface_bitmap in proxy vtables.
9667
9668 2007-07-25  Marek Habersack  <mhabersack@novell.com>
9669
9670         * appdomain.c (get_shadow_assembly_location): do not use TickCount
9671         to create unique shadow copy target directories, use the domain's
9672         serial number instead. Each domain gets a unique target directory
9673         that way.
9674
9675         * domain.c (mono_domain_create): added code to increment domain
9676         shadow copy serial number and cache the value in the current
9677         domain structure.
9678
9679         * domain-internals.h (struct _MonoDomain): added a new field -
9680         shadow_serial to hold the serial number used in generation of
9681         shadow-copy directories. This is to make sure that the directory
9682         name is unique for each and every domain created. We avoid a race
9683         condition with overriding assemblies already in use by other app
9684         domains.
9685
9686 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
9687
9688         * class.c (mono_bounded_array_class_get): fixed memory leak when 
9689         binding generic parameters.
9690
9691 2007-07-24  Raja R Harinath  <rharinath@novell.com>
9692
9693         * metadata.c (do_mono_metadata_parse_generic_class): Use
9694         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
9695         error.
9696
9697 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9698
9699         * loader.c, class-internals.h, reflection.c: removed the per-method
9700         generics hashtable: we use the global one through the call of
9701         mono_class_inflate_generic_method ().
9702
9703 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9704
9705         * class.c, metadata.c, class-internals.h: introduce yet another
9706         generics global cache for inflated methods (fixes 98% of the perf
9707         issue in bug #81806).
9708
9709 2007-07-23  Raja R Harinath  <rharinath@novell.com>
9710
9711         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
9712         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
9713         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
9714         return a MonoGenericInst containing (a copy) of those types.
9715         (mono_metadata_inflate_generic_inst): Update to changes.
9716         (mono_metadata_parse_generic_inst): Likewise.
9717         (mono_get_shared_generic_inst): Likewise.
9718         * reflection.c (mono_class_bind_generic_parameters): Likewise.
9719         (mono_reflection_bind_generic_method_parameters): Likewise.
9720         * metadata-internals.h: Likewise.
9721         * icall.c (free_generic_context): Kill.
9722         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
9723
9724         * reflection.c (reflection_methodbuilder_to_mono_method): Use
9725         mono_metadata_type_dup.
9726         * marshal.c (mono_mb_create_method): Likewise.
9727
9728         * metadata.c (mono_metadata_type_dup): Rename from
9729         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
9730         MonoImage.  Handle a few more cases, esp. when no mempool is given.
9731         * marshal.c, metadata-internals.h: Update to changes.
9732
9733 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9734
9735         * class.c: fixed a small leak for array classes and removed warning.
9736
9737 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9738
9739         * loader.c (mono_method_get_param_token): Make this work on generic methods.
9740         Return 0x8000000 for return parameters. Fixes #82161.
9741
9742 2007-07-21  Marek Habersack  <grendello@gmail.com>
9743
9744         * appdomain.c (get_shadow_assembly_location): append the current
9745         ticks value to the path. Avoids overwriting the same assemblies by
9746         several threads at the same time.
9747
9748 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9749         and Raja R Harinath  <rharinath@novell.com>
9750
9751         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
9752         Simplify slightly.
9753         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
9754         property for testing if a method is a generic method definition.
9755
9756 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9757
9758         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
9759
9760 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9761
9762         * verify.c: used function from private branch, reverted to the one in class.h 
9763
9764 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * verify.c: a typo slipped in and the code wont compile
9767
9768 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9769
9770         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
9771         disabled box instruction as it is doing the wrong thing
9772         improved stack dump messages, now it is easier to debug type related issues
9773
9774
9775 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
9776
9777         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
9778
9779 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9780
9781         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
9782         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
9783         grouped with class and valuetype. This change will simply 
9784         the code as it should be handled just like unmanaged pointers.
9785
9786 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9787
9788         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
9789
9790 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9791
9792         * verify.c: several stack merge issues fixed, reference comparisons now
9793         check the type size. strict type check now works correctly.
9794         added more uses of IS_MANAGED_POINTER macro.
9795         fixed issues pointed by running the test suite against .net.
9796         
9797
9798 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9799
9800         * class.c, loader.c, class-internals.h: Removed the
9801         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
9802         defines.
9803
9804         * icall.c: Better error checking in some internal reflection
9805         methods.
9806
9807 2007-07-18  William Holmes  <billholmes54@gmail.com>
9808
9809         * filewatcher.c : removed unused variable 'filename' in 
9810           ves_icall_System_IO_FSW_SupportsFSW
9811
9812 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9813
9814         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
9815         obsolete, removed.
9816
9817 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9818
9819         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
9820         
9821         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
9822
9823 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9824
9825         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
9826         Implement generics support.
9827         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
9828
9829         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
9830         type_args and method_args arguments.
9831         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
9832         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
9833         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
9834
9835 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
9836
9837         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
9838           It adds a rootimage parameter to mono_reflection_get_type_internal,
9839           adds new function mono_reflection_get_type_with_rootimage and use
9840           the rootimage to resolve the types instead of the current image
9841
9842 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9843
9844         * culture-info-table.h: Forgot to update after r78304.
9845
9846 2007-07-13  Raja R Harinath  <rharinath@novell.com>
9847
9848         * class.c (mono_class_is_open_constructed_type)
9849         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
9850
9851 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
9852
9853         * class.c (mono_bounded_array_class_get):  method fails if used with
9854         an incomplete TypeBuilder enum (no basetype field), fixed it by 
9855         avoiding calculating the size for such array as it cannot be instantiated.
9856         Fix bug #82015
9857
9858 2007-07-12  Raja R Harinath  <rharinath@novell.com>
9859
9860         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
9861         field.
9862         * metadata.c, reflection.c: Update to changes.
9863
9864 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
9865
9866         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
9867         mono_class_is_valid_enum, they are used to valide a enum when loading.
9868         * reflection.c: used new functions to throw TypeLoadException when and
9869         invalid enum is build with TypeBuilder. Fixes #82018
9870   
9871 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9872
9873         * object.c: forgot commit of mono_class_setup_methods () to access
9874         iface->methods.
9875         * object-internals.h: added a few more handy fields to
9876         MonoIMTCheckItem.
9877
9878 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9879
9880         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
9881         iface->methods.
9882
9883 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9884
9885         * class-internals.h, object-internals.h, object.c: IMT-based
9886         interface invocation core from Massimiliano Mantione
9887         (massi@ximian.com) with a reworked arch-specific interface,
9888         bsearch implementation and a few bugfixes and memory savings by me.
9889
9890 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
9891
9892         * class.c (mono_class_create_from_typedef): mono would segfault if 
9893         an enum did not have a __value field. It now throws a TypeLoadException
9894         for such cases. Fix bug #82022
9895
9896 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9897
9898         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
9899
9900 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9901
9902         * class.c (mono_class_init): If a class is already inited but has
9903         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
9904
9905 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9906
9907         * class.c: Properly handle the case of an unimplemented interface
9908         method.  Fixes: 81673.
9909
9910 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9911
9912         * class-internals.h, object.c: cleanup patch from massi: use
9913         MonoVTable->interface_bitmap since the vtable interfaces offset array
9914         is going away.
9915
9916 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9917
9918         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
9919         GetMDStreamVersion icall instead.
9920
9921 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9922
9923         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
9924         not use mono_dl_build_path() with a full library name: makes
9925         fallbacks to libgaim and libfam work.
9926
9927 2007-07-06  William Holmes  <billholmes54@gmail.com>
9928
9929         * assembly.c: Added a continue statement in probe_for_partial_name when
9930          parse_assembly_directory_name fails.  Fixes : 82002
9931
9932 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
9933
9934         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
9935         and added a verification  for TYPEDBYREF.
9936         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
9937         make native int interchangeable with int32 and some small cleanup and formating.
9938         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
9939         handle byref of byref.
9940         * verify.c (push_local): handle byref of byref.
9941         * verify.c (do_binop): invalid mix of values is unverifiable
9942         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
9943         added visibility checks
9944         * verify.c (field related method): added visibility checks
9945         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
9946
9947 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
9948
9949         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
9950         string.
9951
9952 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9953
9954         * profiler.c (mono_profiler_load): Fix an off-by-one error.
9955
9956         * marshal.c (emit_marshal_string): When returning a string from managed code,
9957         allways make a copy even for unicode strings. Fixes #81990.
9958
9959 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
9960
9961         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
9962         of byref generic inst types (bug #81997).
9963
9964 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9965
9966         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
9967         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
9968
9969 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
9970
9971         * marshal.c (emit_marshal_string): Add support for unicode strings in
9972         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
9973
9974 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
9975
9976         * verify.c: field load/store are now verified, missing only access checks now
9977
9978 2007-06-28  Martin Baulig  <martin@ximian.com>
9979
9980         * mono-debug.c (mono_debug_debugger_version): New public variable.
9981
9982 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
9983
9984         * locales.c: When constructing DateTimeFormat or NumberFormat for
9985         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
9986         MonoCultureInfo contructed from the current locale is always
9987         read-only and has UseUserOverride set to true. All MonoCultureInfo
9988         instances returned for GetCultures have both IsReadOnly and
9989         UseUserOverride set to true. Fixes part of bug #81930.
9990
9991 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
9992
9993        * icall-def.h: Update System.__ComObject icalls
9994        * marshal.c: Avoid managed transition (and object creation)
9995        when looking up COM interface in RCW.
9996        * marshal.h: Ditto.
9997        
9998        Code is contributed under MIT/X11 license.
9999
10000 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
10001
10002         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
10003         to avoid crashes during assembly unloading.
10004
10005 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10006
10007         Fix MethodInfo.IsGenericMethodDefinition
10008         * reflection.c (mono_reflection_bind_generic_method_parameters):
10009         Rearrange code to ensure we always uses a generic method definition.
10010         * class.c (mono_class_inflate_generic_method_full): Set
10011         'generic_container' field only for generic method definitions.
10012         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10013         Use presense of 'generic_container' field as indication of being a
10014         generic method definition.
10015
10016 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10017
10018         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10019
10020         * object-internals.h: Reflect changes in the layout of the managed Delegate
10021         class.
10022         
10023         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10024         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10025         runtime memory used by the dynamic method. Fixes #77146.
10026
10027 2007-06-21  Dick Porter  <dick@ximian.com>
10028
10029         * file-io.h: 
10030         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10031         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10032         81767.
10033
10034 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10035
10036         * reflection.c (method_encode_methodspec): Add a tripwire.
10037         * class.c (inflate_generic_type): The fully open generic type is
10038         not the same as the generic type definition.
10039
10040 2007-06-21  Martin Baulig  <martin@ximian.com>
10041
10042         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10043
10044         * mono-debug-debugger.h
10045         (MonoDebuggerBreakpointInfo): Removed.
10046         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10047         (mono_debugger_remove_breakpoint): Likewise.
10048         (mono_debugger_breakpoint_callback): Likewise.
10049         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10050
10051 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10052
10053         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10054         generic type is not the same as the generic type definition.
10055         * class.c (mono_generic_class_get_class): Likewise.
10056
10057 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10058
10059         * icall.c: The second argument to 
10060         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10061         is a MonoType not a MonoClass.
10062
10063 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10064
10065         * verify.c: support for function pointers in the verifier
10066
10067 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10068
10069         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10070
10071 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10072
10073         * assembly.c: removed Mono.Data.SqliteClient from the list of
10074         forward-compatible assemblies as it breaks the ABI (bug #81899).
10075
10076 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10077
10078         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10079         lookup/update with the loader lock.
10080         * reflection.c (mono_class_bind_generic_parameters): No need to
10081         protect mono_metadata_lookup_* with the loader lock.
10082         * class.c (inflate_generic_type): Likewise.
10083         
10084         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10085         on a generic instantiated type.
10086
10087 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10088
10089         *verify.c: produce meanfull error messages on verification error
10090         *verify.c: fixed some cases of verification errors reported as validation errors
10091         *pedump.c: fixed the error name array, now it shows validation errors properly
10092         *verify.h: fixed the contant that should be used for verification errors
10093
10094 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10095
10096         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10097         for bug #77596, 81858 and 80743 (generics data structures on domain
10098         unload).
10099
10100 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10101
10102         Avoid allocating 'MonoGenericContext' on the heap.
10103         * class-internals (_MonoMethodInflated::context): Make field
10104         inline, not a pointer.
10105         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10106         stack.  Use the context embedded within the inflated method as the
10107         hash key, rather than 'new_context'.
10108         * class.c (inflate_generic_context): Simplify.  Return a struct
10109         rather than allocating on the heap.
10110         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10111         doesn't salt away a copy of the context -- simplifying the
10112         lifetime rules of a 'MonoGenericContext *'.
10113         (mono_method_get_context): Return pointer to embedded context.
10114         (setup_generic_array_ifaces): Allocate temporary context on stack.
10115         * reflection.c (inflate_mono_method): Likewise.
10116         (mono_reflection_bind_generic_method_parameters): Likewise.
10117         Use the context embedded within the inflated method as the hash key.
10118
10119         Avoid a source of allocation of 'MonoGenericContext'.
10120         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10121         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10122         * class.c: Update to changes.
10123         (mono_generic_class_get_context): Simplify drastically.  Now just
10124         returns a pointer to the field.
10125         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10126         argument as a const pointer.
10127         (mono_metadata_generic_context_equal): Likewise.
10128         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10129         Update to changes.
10130
10131 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10132
10133         * verify.c improved the handling of brtrue/brfalse, factored out common code
10134
10135 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10136
10137         Kill MonoGenericMethod.
10138         * class-internals.h (MonoGenericContext::method_inst): Rename from
10139         'gmethod' and convert to a MonoGenericInst.
10140         (MonoGenericMethod): Remove.
10141         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10142         * loader.c (method_from_methodspec): Update to changes.  Use a
10143         MonoGenericContext as the key to the hashtable.
10144         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10145         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10146         (mono_metadata_generic_context_hash): Likewise from
10147         'mono_metadata_generic_method_hash'.  Change hash function.
10148         (mono_metadata_load_generic_params): Update to changes.
10149         (mono_get_shared_generic_method): Remove.
10150         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10151         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10152         (inflate_generic_context): Likewise.
10153         (mono_class_inflate_generic_method_full): Likewise.
10154         (setup_generic_array_ifaces): Likewise.
10155         (mono_class_create_from_typespec): Likewise.
10156         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10157         (method_encode_methodspec): Update callsite.
10158         (reflection_methodbuilder_to_mono_method): Update to changes.
10159         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10160         MonoGenericContext as the key to the hashtable.
10161         (inflate_mono_method): Update to changes.
10162
10163         * class-internals.h (MonoGenericMethod::container): Remove.
10164         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10165
10166 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10167
10168         * profiler-private.h, profiler.c, profiler.h: added API to profile
10169         exception events.
10170
10171 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10172
10173         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10174
10175 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10176
10177         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10178         Fixed overflow and underflow not aborting the verification process.
10179
10180 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10181
10182         * class-internals.h (MonoStats): Added stats entries for dynamic
10183         code allocations.
10184
10185 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10186
10187         * loader.c (mono_free_method): Free header->locals and header->clauses.
10188
10189         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10190         dynamic case.
10191
10192         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10193
10194         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10195
10196 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10197
10198         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10199         the tables.
10200
10201 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10202
10203         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10204
10205 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10206
10207         MonoGenericMethod on a diet
10208         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10209         here ...
10210         (_MonoGenericMethod::reflection_info): ... from here.
10211         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10212         Update to changes.
10213         * reflection.c (inflate_mono_method): Likewise.
10214         (mono_reflection_bind_generic_method_parameters): Likewise.
10215
10216 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10217
10218         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10219         *verify.c: factored long ldarg forms to share code with short forms
10220
10221 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10222
10223         *verify.c: fixed code formating factored some duplicate code
10224         into a new function
10225
10226         *verify.h: fixed binary incompatibility introduced earlier
10227
10228         *pedump.c: fixed formating
10229
10230 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10231
10232         Fix assertion when disassembling Mono.C5.dll
10233         * loader.c (method_from_methodspec): Avoid inflating a method
10234         twice with the same context.  If the methodref is inflated, use
10235         the declaring method instead.
10236
10237         * class.c (mono_class_from_generic_parameter): Fix case similar to
10238         bug #81830 handled below, but for method containers.
10239
10240 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10241
10242         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10243         get_shared_generic_class.  Directly inflate the instance.
10244         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10245         (inflate_generic_class): Delete.
10246         (get_shared_generic_class): Delete.  Move setting of
10247         'cached_class' and 'cached_context' ...
10248         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10249
10250         * metadata.c (mono_metadata_lookup_generic_class): Change
10251         signature to take the components of a MonoGenericClass rather than
10252         an allocated MonoGenericClass.  Change semantics to be intern-like.
10253         * reflection.c (mono_class_bind_generic_parameters): Update to
10254         changes.  Make locking region tighter.
10255         * class.c (inflate_generic_class): Update to changes.
10256         (get_shared_generic_class): Likewise.
10257         * metadata-internals.h: Likewise.
10258
10259         * reflection.c (mono_class_bind_generic_parameters): Take and
10260         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10261         (mono_reflection_bind_generic_parameters): Use
10262         'mono_class_bind_generic_parameters' rather than duplicate the code.
10263         * class.c (mono_bounded_array_class_get): Update to changes.
10264         * object-internals.h: Likewise.
10265
10266         * reflection.c (mono_class_bind_generic_parameters): Only support
10267         parameterizing generic type definitions.  Remove support for other
10268         open types.
10269
10270 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10271
10272         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10273
10274         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10275         in the dynamic case.
10276
10277 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10278
10279         * threads.c: When cleaning up thread, reset the Background bit.
10280         Fixes bug #81720.
10281
10282 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10283
10284        * metadata.c: Move variable declarations to top of scope.
10285        * verify.c: Move variable declarations to top of scope.
10286
10287        Code is contributed under MIT/X11 license.
10288
10289 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10290
10291         * reflection.c (mono_class_bind_generic_parameters): Replace
10292         open-coded loop with mono_metadata_inflate_generic_inst.
10293
10294         * class.c (get_shared_generic_class): Don't call
10295         mono_get_shared_generic_inst.  Use the container's own
10296         'class_inst'.
10297
10298         * metadata.c (mono_metadata_load_generic_params): Move
10299         initialization of 'context' field here from ...
10300         * class.c (mono_class_create_from_typedef): ... here, and ...
10301         * loader.c (mono_get_method_from_token): ... here.
10302
10303         * class.c (get_shared_generic_class): Rename from
10304         mono_get_shared_generic_class and make static.
10305         (mono_get_shared_generic_inst): Move to metadata.c.
10306         * loader.c (mono_get_shared_generic_method): Likewise.
10307         * class-internals.h, metadata-internals.h: Update to changes.
10308
10309         Fix #81830
10310         * class.c (mono_class_from_generic_parameter): Don't assume a
10311         generic container owner exists.  Generic containers from monodis
10312         don't have any.
10313
10314 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10315
10316         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10317         * verify.h: new typedefs to returns the non-verifiable status
10318         * verify.c: initial implementation of generics, stack merging and object compatibility check
10319
10320 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10321
10322         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10323         a MonoInternalHashTable again (fixed bug in internal hash table
10324         code).
10325
10326 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10327
10328         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10329         MonoInternalHashTable again (fixed bug in internal hash table
10330         code).
10331
10332 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10333
10334         * class.c, image.c, class-internals.h, domain.c,
10335         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
10336         changes.  Have to figure out what makes them break the SWF
10337         regression.
10338
10339 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10340
10341         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10342         a MonoInternalHashTable now.
10343
10344 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10345
10346         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10347         MonoInternalHashTable now.
10348
10349 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
10352         invoke_impl code.
10353
10354         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
10355
10356         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
10357         dependent trampoline.
10358
10359         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10360
10361         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
10362
10363 2007-05-29  Robert Jordan  <robertj@gmx.net>
10364
10365         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
10366
10367 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
10368
10369         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
10370
10371 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
10372
10373        * marshal.c: Fix interface lookup loops for
10374        cominterop_get_com_slot_for_method and 
10375        cominterop_get_method_interface. Only need to lookup
10376        if type is a class, else use interface type method is on.
10377
10378        Code is contributed under MIT/X11 license.
10379
10380 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
10381
10382         * reflection.c: HasSecurity can be present even if no specially 
10383         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
10384         SecurityAttribute). Fix CAS regression tests on buildbot.
10385
10386 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10387
10388        * appdomain.c: Add configure checks for header files.
10389        * image.c: Add configure checks for header files.
10390        * file-io.c: Add configure checks for header files.
10391        * debug-mono-symfile.c: Add configure checks for header files.
10392        * threadpool.c: Add configure checks for header files.
10393        * console-io.c: Add configure checks for header files.
10394        * profiler.c: Add configure checks for header files.
10395        * rawbuffer.c: Add configure checks for header files.
10396        * icall.c: Add configure checks for header files.
10397        * rand.c: Add configure checks for header files.
10398        * socket-io.c: Add configure checks for header files.
10399
10400        Code is contributed under MIT/X11 license.
10401
10402 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
10403
10404         * reflection.c (mono_custom_attrs_from_builders): Remove the 
10405         assertion as it breaks the build.
10406         
10407         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
10408
10409         * reflection.c (lookup_custom_attr): Make a copy here too.
10410
10411         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
10412         dynamic images.
10413
10414         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
10415         images.
10416
10417         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
10418         info.
10419
10420 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10421
10422         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
10423         (load_cattr_value): Ditto.
10424
10425 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
10428
10429 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
10430
10431         * threads.c: In "start_wrapper", set apartment_state to MTA if
10432         apartment_state is Unknown and we're running on 2.0 profile or
10433         higher.
10434         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
10435         to main method, then set apartment_state to Unknown on 1.0 profile,
10436         and MTA on 2.0 profile.
10437
10438 2007-05-16  Jb Evain  <jb@nurv.fr>
10439
10440         * class-internals.h (MonoDefaults): Add an attribute_class and
10441           customattribute_data_class.
10442         * domain.c (mono_init_internal): Populate them.
10443         * reflection.c: Use them to remove duplicates. Make a vew
10444         MonoClass variables `static'.
10445
10446 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10447
10448         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
10449         step in implementing IMT, so that all isinst checks now can go
10450         through the bitmap.
10451         This was needed because vtables for TransparentProxy need to look
10452         like the vtable of the "target" class, so they need to point to
10453         its interface bitmap directly.
10454
10455         * object.c: inside "mono_class_create_runtime_vtable" and
10456         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
10457
10458 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
10459
10460         * object-internals.h
10461           culture-info.h : added territory field in MonoCulture and
10462           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
10463         * locales.c : fill territory field above too.
10464         * culture-info-table.h : regenerated.
10465
10466 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10467
10468         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
10469         Fixes #81599.
10470
10471 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
10472
10473         * object.c: Always initialize apartment, even if 
10474         there is no custom attributes on entry point.
10475         
10476         Code is contributed under MIT/X11 license.
10477
10478 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
10479
10480         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
10481         * metadata.c: If no encoding is set, check for unicode
10482         on class.
10483         
10484         Code is contributed under MIT/X11 license.
10485
10486 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10487
10488         * threads.c: Handle if mono_thread_current returns NULL 
10489         
10490         Code is contributed under MIT/X11 license.
10491
10492 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10493
10494         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
10495         in start_wrapper. Added mono_thread_init_apartment_state and
10496         mono_thread_cleanup_apartment_state.
10497         * object.c: Initialize thread apartment state on main thread
10498         by checking for STAThreadAttribute on entry point.
10499         * object-internals.h: Add apartment_state field to MonoThread.
10500         * threads-types.h: Add unmanaged definition of 
10501         System.Threading.ApartmentState, MonoThreadApartmentState.
10502         
10503         Code is contributed under MIT/X11 license.
10504         
10505 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
10506
10507         * class.c: Fix windows build.
10508         * class-internals.h: Fix windows build.
10509         
10510         Code is contributed under MIT/X11 license.
10511
10512 2007-05-08  Robert Jordan  <robertj@gmx.net>
10513
10514         * process.c (CreateProcess_internal):
10515         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
10516         .CreateNoWindow was specified. Fixes #81496.
10517
10518 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10519
10520         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
10521         step in implementing IMT, replaced it with two compact arrays
10522         (interfaces_packed and interface_offsets_packed) and a bitmap that
10523         is used for isinst checks (interface_bitmap).
10524
10525         * class.c: (compare_interface_ids): compare function to pass to
10526         bsearch when looking for an interface with a given id.
10527         (mono_class_interface_offset): reimplemented using bsearch on
10528         interfaces_packed, getting the offset from interface_offsets_packed.
10529         (print_implemented_interfaces): utility debugging function.
10530         (setup_interface_offsets): reworked to initialize interfaces_packed,
10531         interface_offsets_packed and interface_bitmap.
10532
10533         * object.c: replaced all accesses to "MonoClass.interface_offsets"
10534         with uses of interfaces_packed and interface_offsets_packed.
10535
10536 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10537
10538         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
10539         mono_class_interface_offset prototype to wrap all accesses to
10540         "MonoClass.interface_offsets".
10541
10542         * class.c: Implemented mono_class_interface_offset, and wrapped all
10543         accesses to "MonoClass.interface_offsets".
10544
10545         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
10546         "MonoClass.interface_offsets".
10547
10548 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
10549
10550         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
10551         GetMethodFromHandle overloads (bug #78637).
10552
10553 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10554
10555         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
10556         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
10557
10558 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
10559
10560         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
10561         #81498.
10562
10563         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
10564         gracefully.
10565         (mono_custom_attrs_from_index): Ditto.
10566
10567         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
10568         Fixes #81501.
10569
10570 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10571
10572         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
10573         is now allocated from a mempool.
10574
10575 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
10576
10577         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
10578         caller holds threads_lock, leading to deadlocks. Fixes #81476.
10579
10580 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10581
10582         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
10583         mono_loader_clear_error () too late. Fixes #81463.
10584
10585 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
10586
10587         * culture-info-table.h : regenerated.
10588
10589 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10590
10591         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
10592         is missing.
10593
10594 2007-04-25  Dick Porter  <dick@ximian.com>
10595
10596         * Makefile.am: Put the mingw enforced-optimisation back into the
10597         PLATFORM_WIN32 section.
10598
10599 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
10602         patch.
10603
10604         * image.c (mono_image_load_module): New API function to load a module reference.
10605
10606         * image.c (load_modules): Load modules lazily. Fixes #80812.
10607
10608         * class.c (mono_class_from_typeref): Use mono_image_load_module.
10609         
10610         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
10611
10612         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
10613         to mono_image_load_module_dynamic.
10614
10615 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
10616
10617         * marshal.c: Fix calling convention for CCW on non-windows
10618         platforms. STDCALL on windows, CDECL everywhere else to work 
10619         with XPCOM and MainWin COM.
10620         
10621         Code is contributed under MIT/X11 license.
10622
10623 2007-04-23  Martin Baulig  <martin@ximian.com>
10624
10625         Fix #80969.
10626
10627         * loader.c
10628         (method_from_memberref): Added `gboolean *used_context' argument.
10629         (mono_get_method_from_token): Likewise.
10630         (mono_get_method_full): Don't insert the method in the cache when
10631         `used_context' is true.
10632
10633 2007-04-23  Raja R Harinath  <rharinath@novell.com>
10634
10635         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
10636
10637         * reflection.c (mono_reflection_bind_generic_parameters): Don't
10638         create new MonoTypes for returned types.
10639         * class.c (mono_generic_class_get_class): Export mono-internal.
10640         * class-internals.h: Update to changes.
10641
10642 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
10643
10644         * threadpool.c, threadpool.h, icall-def.h: patch from
10645         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
10646
10647 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
10648
10649         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
10650         
10651         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
10652
10653         * threads.c (mono_thread_get_stack_bounds): New helper function.
10654
10655         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
10656         Correctly compute stack bounds when attaching. Fixes #81394.
10657
10658 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
10659
10660         * reflection.c: fix handling of doubles in custom attributes
10661         for the arm-fpa format (bug #81368).
10662
10663 2007-04-18  Raja R Harinath  <rharinath@novell.com>
10664
10665         * reflection.c (assembly_add_win32_resources): Mildly relax an
10666         bounds check to let the end pointer point just past the end of the
10667         allocated buffer.  (may fix #81384)
10668
10669 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
10670
10671         * culture-info-table.h : regenerated.
10672
10673 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
10674
10675         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
10676         the thread is aborted early.
10677
10678 2007-04-05  Dick Porter  <dick@ximian.com>
10679
10680         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
10681         FindFirstFile()/FindNextFile() to find entries.  This lets the
10682         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
10683         81038.
10684
10685         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
10686         the parameters of
10687         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
10688
10689 2007-04-04  Martin Baulig  <martin@ximian.com>
10690
10691         * debug-helpers.c
10692         (mono_method_desc_full_match): Add support for nested classes.
10693
10694 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
10695
10696         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
10697
10698 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
10701         waiting for too many threads.
10702
10703 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
10704
10705         * environment.c: Fix return value check on uname so we can get the 
10706         executing version on Solaris operating systems.
10707
10708 2007-03-28  Jb Evain  <jbevain@gmail.com>
10709
10710         * class.c (mono_type_get_name_recurse): Complete the
10711         fix for the creation of assembly qualified names for
10712         pointer types. Fixes #81208.
10713
10714 2007-03-27  Dick Porter  <dick@ximian.com>
10715
10716         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
10717         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
10718         changed.
10719
10720         * threads.c
10721         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
10722         the value of ReleaseMutex().
10723
10724 2007-03-27  Dick Porter  <dick@ximian.com>
10725
10726         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
10727         in little-endian order, not network endian, so must be converted
10728         to host endian here.  Fixes bug 80593.
10729
10730 2007-03-22  Jb Evain  <jbevain@gmail.com>
10731
10732         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
10733         qualified names for pointer types. Fixes #81208.
10734
10735 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
10736
10737         * marshal.c: Add support for PreserveSigAttribute. 
10738         
10739         Code is contributed under MIT/X11 license.
10740
10741 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
10742
10743         * process.c: Fix endianness issues. Fixes #81126.
10744
10745         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
10746         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
10747
10748         * image.c (mono_image_lookup_resource): Make this work on big-endian
10749         machines.Change API contract so the caller needs to free the return value.
10750         
10751         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
10752         API change.
10753         
10754 2007-03-14  Martin Baulig  <martin@ximian.com>
10755
10756         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
10757         mono_type_get_desc() as well.
10758
10759 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10760
10761         * icall.c:  Fix environ access in VS.  
10762         
10763 2007-03-13  Alp Toker  <alp@atoker.com>
10764
10765         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
10766         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
10767         #63841.
10768
10769 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
10770
10771         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
10772         circular references among dynamic methods. Fixes #81091.
10773
10774         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
10775
10776 2007-03-09  Martin Baulig  <martin@ximian.com>
10777
10778         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
10779
10780 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
10781
10782         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
10783         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
10784         
10785         Code is contributed under MIT/X11 license.
10786         
10787 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
10788
10789         * loader.c: Reapply patch for bug #79424.
10790
10791 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * metadata.c (mono_type_to_unmanaged): Only convert object to
10794         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
10795
10796 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
10797
10798         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
10799         (and incorrectly set) is_reference field from MonoGenericInst.
10800
10801 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10802
10803         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
10804         a little earlier.
10805
10806         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
10807
10808         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
10809
10810 2007-03-05  Miguel de Icaza  <miguel@novell.com>
10811
10812         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
10813         FileOptions.1 value to mean "temporary", map that to
10814         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
10815
10816         Fixes 80688
10817
10818 2007-03-03  Marek Habersack  <mhabersack@novell.com>
10819
10820         * appdomain.c: implement MS .Net style shadow copying. Copies of
10821         the assemblies are made in a subdirectory of the dynamic base
10822         directory, the assembly names are preserved.
10823         Copy .mdb and .config files along with the assemblies being shadowed.
10824
10825 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
10826
10827         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
10828         (emit_marshal_handleref): Ditto.
10829
10830         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
10831         on Visual C++. Fixes #80671.
10832
10833 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10834
10835         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
10836         for clone operations.
10837
10838 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
10839
10840         * marshal.c: Fix warnings.
10841
10842 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
10843
10844         * loader.c: allow case-insensitive matching of the dll name
10845         in dllmap handling when prefixed with "i:".
10846
10847 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
10848
10849         * threads.c: Fix #ifdef for dummy_apc function for VS.
10850
10851 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10852
10853         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
10854
10855 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
10856         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
10857         giving precedence to the methods with a fully qualified name
10858         (InterfaceName.MethodName) when building the interface sections
10859         of the vtable.
10860
10861 2007-02-16  Dick Porter  <dick@ximian.com>
10862
10863         * threadpool.c (append_job): Fix fast-path array handling, so it's
10864         less likely the array will grow exponentially when the load is
10865         heavy.
10866
10867 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
10868
10869         * metadata-internals.h, loader.c: fix dllmap lookup order
10870         for non-function maps, too, and prepare for fallback code.
10871
10872 2007-02-12  Robert Jordan  <robertj@gmx.net>
10873
10874         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
10875         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
10876         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
10877         GlobalFree. Fixes a part of bug #77075.
10878
10879 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
10880
10881         * loader.c: implemented typedef parent in field memberref.
10882
10883 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
10884
10885         * marshal.c: Fix warnings and remember to call Release on
10886         IUnknown of RCW.
10887         
10888         Code is contributed under MIT/X11 license.
10889
10890 2007-02-10  Miguel de Icaza  <miguel@novell.com>
10891
10892         * class-internals.h: Add MonoHandleRef definition, and
10893         handleref_class to mono_defaults. 
10894
10895         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
10896         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
10897
10898         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
10899         (do nothing on this stage)
10900         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
10901         (emit_marshal_handleref): New method, used for argument handling
10902         of HandleRefs. 
10903
10904 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
10905
10906         * class.c (mono_class_setup_parent): Lazily init com types.
10907         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
10908         init com types.
10909         * object.c (mono_remote_class_vtable): Lazily init com types.
10910         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
10911         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
10912         * domain-internals.h: Expose mono_init_com_types.
10913         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
10914         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
10915         Add support for COM Callable Wrapper marshalling.
10916         * marshal.h: Add icall definitions.
10917         * gc.c: Handle freeing of CCWs in finalizer code.
10918         
10919         Code is contributed under MIT/X11 license.
10920
10921 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
10922
10923         * reflection.c: changed all the signature encoding code to use
10924         a variable-sized buffer.
10925
10926 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10927
10928         * marshal.c: locking fixes: never take the loader lock
10929         or other runtime locks when holding the marshal lock
10930         (fixes bug#80664).
10931
10932 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
10933
10934         * marshal.c: make the delegate function pointer mapping
10935         work for the moving GC.
10936
10937 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
10938
10939         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
10940         for bug #80618.
10941
10942 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10943
10944         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
10945         gmodule.
10946
10947 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10948
10949         * threadpool.c: made the code moving-GC safe.
10950
10951 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
10952
10953         * assembly.c, boehm-gc.c, class-internals.h, class.c,
10954         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
10955         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
10956         warning cleanup.
10957         * reflection.c: warning cleanup, some threading and moving GC fixes.
10958
10959 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
10960
10961         * class.c, loader.c: create the needed Set/Get/Address array methods
10962         as well as the .ctors in mono_class_init (), fixes bug #80567.
10963
10964 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
10967         we doesn't decrease its alignment. Should fix the sparc build.
10968
10969 2007-01-24  Dick Porter  <dick@ximian.com>
10970
10971         * socket-io.c
10972         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
10973         Create the returned object if we need to ignore an unsupported
10974         socket option.  Fixes a segfault reported by Atsushi.
10975
10976 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
10977
10978         * class.c, object.c: restrict GC-tracked fields to
10979         UIntPtr fields used inside corlib, so we provide better
10980         type info to the GC and also allow broken packing as in
10981         bug #80580.
10982
10983 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
10984
10985         * sgen-gc.c: removed duplicated function.
10986
10987 2007-01-19  Miguel de Icaza  <miguel@novell.com>
10988
10989         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
10990         value that means that the value is not supported, but that we
10991         should not return a failure, but instead report this as a
10992         successful operation.
10993
10994 2007-01-19  Raja R Harinath  <rharinath@novell.com>
10995
10996         Fix tests/bug79956.2.il
10997         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
10998         (mono_generic_class_get_class): If the generic definition in an
10999         enum, copy over other fields related to it.
11000
11001 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11002
11003         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11004         genericinst enums (bug #79215).
11005
11006 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11007         * class.c: Fix bug 80307.
11008
11009 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11010
11011         * image.c: if the file table is not present, try to load
11012         all the modules, since we don't have info about them
11013         having or not metadata (bug #80517).
11014         * assembly.c: allow mono_assembly_load_references () to
11015         work for netmodules.
11016
11017 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11018
11019         * image.c, metadata-internals.h, object.c: execute module
11020         cctors when running on the 2 runtime if present (bug #80487).
11021
11022 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11023
11024         * icall.c: optimized InitializeArray() on bigendian.
11025
11026 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11027
11028         * icall.c: fix for the broken ARM FPA double format.
11029
11030 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11031
11032         * icall.c: handle endian issues for r4 and r8 types, too, in
11033         the InitializeArray() icall.
11034
11035 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11036
11037         * loader.c (mono_loader_error_prepare_exception): Clear the error
11038         once we have extracted the information from it, do this before we
11039         call into the JIT's class loading mechanisms.
11040
11041         * object.c (mono_class_create_runtime_vtable): Do not clear the
11042         loader error before calling mono_class_get_exception_for_failure
11043         as the loader error is needed inside
11044         mono_class_get_exception_for_failure to throw the error (thinko).
11045
11046         Fixes #80521
11047         
11048 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11049
11050         * reflection.c: align fields rva data so it's faster to load at
11051         runtime.
11052
11053 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11054
11055         Prepare to simplify GenericMethod handling.
11056         * class-internals.h (mono_method_get_context): New accessor function.
11057         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11058         rather than directly accessing '->context' field.
11059
11060         * class-internals.h (_MonoGenericParam.method): Move ...
11061         (_MonoGenericContainer): ... here.  Add into union with klass field.
11062         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11063         Update to changes.
11064
11065 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11066
11067         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11068         the wrapper type enum and reduce relocations.
11069
11070 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11071
11072         * reflection.c (inflate_mono_method): Reuse method instantiation
11073         from the generic method, if available.
11074
11075 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11076
11077         * marshal.c (emit_marshal_variant): Fix conv_arg
11078         type in last commit, based on whether parameter is byref.
11079         
11080 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11081
11082         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11083         marshalling.
11084         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11085         MONO_TYPE_OBJECT back for VARIANT support.
11086
11087 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11088
11089         * marshal.c, marshal.h, icall-def.h: Implement 
11090         Marshal.ReAllocCoTaskMem.
11091
11092 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11093
11094         * marshal.c: memory retention fixes: use the proper
11095         image cache for runtime_invoke method lookups.
11096
11097 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11098
11099         * mempool.c: added code to help debug mempool allocations.
11100
11101 2007-01-11  Dick Porter  <dick@ximian.com>
11102
11103         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11104         support (experimenting with faking it with IP_MTU_DISCOVER for
11105         systems that don't have IP_DONTFRAGMENT.)
11106         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11107         icall.
11108
11109         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11110
11111         * socket-io.h: Add new fields to MonoSocketAsyncResult
11112         corresponding to the new ones in Socket.cs.
11113
11114 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11115
11116         Fix IronPython regression mentioned in #80249
11117         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11118         'cached_context' field, since it may have been initialized as a
11119         side-effect of metadata parsing.
11120
11121         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11122         (_MonoGenericClass.cached_class): Move here and rename from lone
11123         remaining field of ...
11124         (_MonoInflatedGenericClass): ... this.  Remove.
11125         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11126         to changes.
11127
11128         Fix mcs/tests/test-128.cs regression.
11129         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11130         2007-01-10 change below.
11131         [MONO_TYPE_OBJECT]: Recurse into array case.
11132
11133 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11134
11135         * class-internals.h (mono_get_inflated_generic_class): Remove.
11136         * class.c (mono_get_inflated_generic_class): Remove.
11137         (mono_generic_class_get_class): Rename from
11138         mono_class_create_generic.
11139         (mono_class_from_mono_type) [GENERICINST]: Use it.
11140         * reflection.c, metadata.c: Update to changes.  Use
11141         'mono_class_from_mono_type'.
11142
11143 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11144
11145         * reflection.c: use passed type when encoding an array element
11146         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11147
11148 2007-01-09  Robert Jordan  <robertj@gmx.net>
11149
11150         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11151         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11152         Fixes bug #80392.
11153
11154 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11155
11156         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11157
11158         * object.c (set_value): Avoid aliasing between type->data.klass
11159         and type->data.generic_class.
11160
11161         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11162
11163 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11164
11165         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11166         between type->data.klass and type->data.generic_class.
11167
11168 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11169
11170         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11171         value in out parameters.
11172
11173 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11174
11175         Simplify invariant for MonoGenericClass::klass field.
11176         * class.c (mono_class_create_generic): Verify 'klass' is null.
11177         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11178         initialize 'klass' field.
11179
11180 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11181
11182         Ongoing work to avoid redundant data and simplify invariants.
11183         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11184         'generic_class', and change type to a GenericInst.
11185         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11186         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11187
11188 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11189
11190         * class.c : skip io-layer under PLATFORM_WIN32.
11191
11192 2007-01-03  Tor Lillqvist  <tml@novell.com>
11193
11194         Fix #80305: In a bundled executable, look in the bundled exe
11195         assembly to determine the runtime version. Add the possibility to
11196         bundle also the machine.config file.
11197         
11198         * assembly.c (mono_assembly_open_from_bundle): Make
11199         non-static. Allow being called even if we have no bundled
11200         assemblies, and return NULL right away in that case.
11201
11202         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11203         here.
11204
11205         * domain.c (app_config_parse): Take an assembly exe file name as
11206         parameter instead of a config file name. Check for a bundled
11207         config file for that assembly by calling
11208         mono_config_string_for_assembly_file() (see below) before looking
11209         for one in the file system.
11210         (get_runtimes_from_exe): Corrsponding change to call of
11211         app_config_parse().
11212         (get_runtimes_from_exe): Check for bundled assembly exe file first
11213         by calling mono_assembly_open_from_bundle(). If no bundled
11214         assembly exe file is found, call mono_image_open() as before to
11215         look it up in the file system.
11216
11217         * mono-config.c: Add variable bundled_machinec_onfig.
11218         (mono_config_string_for_assembly_file): New function.
11219         (mono_config_for_assembly): Move code snippet that looks for a
11220         bundled assembly .config file into the above new function. Call
11221         it.
11222         (mono_register_machine_config, mono_get_machine_config): New
11223         functions to set and retrieve
11224
11225         * assembly.h: Declare mono_register_machine_config().
11226
11227         * mono-config.h: Declare mono_get_machine_config() and
11228         mono_config_string_for_assembly_file().
11229
11230         * icall.c: No declaration of environ necessary on Win32. It is
11231         declared (as a macro expanding to a function call) in stdlib.h.
11232         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11233         New internal mono function. Returns the value of
11234         mono_get_machine_config() as a Mono string.
11235
11236         * icall-def.h: Add get_bundled_machine_config().
11237
11238 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11239
11240         Remove redundant field
11241         * class-internals.h (_MonoGenericContext.container): Remove field.
11242         * loader.c (mono_method_get_signature_full): Don't parse a
11243         "container" for a signature parse when the signature is inflated
11244         immediately.
11245         (method_from_methodspec): Likewise, for a generic_inst.
11246         * class.c, metadata.c, reflection.c: Update to changes.
11247
11248 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11249
11250         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11251         'cached_context', and change semantics -- it starts off NULL, and
11252         is initialized on demand.
11253         * class.c (mono_generic_class_get_context): New accessor to
11254         replace 'context' field accesses.
11255         (mono_class_get_context): New helper.
11256         (*): Update to changes.
11257         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11258
11259 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11260
11261         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11262         before the memcpy.   Fixes Marshal2 regression.
11263
11264 2007-01-02  Jb Evain  <jbevain@gmail.com>
11265
11266         * blob.h: add a MONO_TYPE_ENUM definition
11267         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11268         fix the encoding of arrays of enums in custom attributes.
11269
11270         Fixes #79666.
11271
11272 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11273
11274         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11275         string is null terminated, but only cut the string short if it
11276         overflows the buffer.   
11277         
11278         (mono_string_to_byvalstr): Also fix this routine.   The code here
11279         was not properly terminating a string (it was only terminated
11280         because of the previous catch-all memset). 
11281
11282         I left the memset, because I do not know if applications expect
11283         the runtime to clear this region. 
11284
11285         Fixes #79944.
11286
11287         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11288         Clear the error before returning to unmanaged code to prevent the
11289         runtime from being confused later on (fixes  80420).
11290         (ves_icall_type_from_name): Always call mono_loader_clear_error
11291         after parsing a type that could have failed.
11292         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11293
11294         * loader.c (mono_loader_clear_error): Fix indentation.
11295
11296 2006-12-28  Martin Baulig  <martin@ximian.com>
11297
11298         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11299
11300 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11301
11302         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11303         getting a token for an EnumBuilder.
11304
11305 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11306
11307         * reflection.c: be more careful in case resource generation
11308         fails to create the data array.
11309
11310 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11311
11312         * sgen-gc.c: write barrier for clone and fix unregister handles.
11313
11314 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11315
11316         * reflection.c: some fixes needed in the generics code for the moving GC.
11317
11318 2006-12-22  Robert Jordan  <robertj@gmx.net>
11319
11320         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
11321         account. Fixes bug #80299.
11322
11323 2006-12-21  Raja R Harinath  <rharinath@novell.com>
11324
11325         Fix WaitHandle usage in delegates.
11326         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
11327         * object.c (mono_wait_handle_new): Use the property set method to
11328         initialize the handle.
11329         (mono_wait_handle_get_handle): New.
11330         * threadpool.c (mono_async_invoke): Use it.
11331         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
11332         Likewise.
11333         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
11334
11335 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
11336
11337         * marshal.c (emit_marshal): Call emit_marshal_variant and
11338         emit_marshal_com_interface when applicable.
11339         (emit_marshal_variant, emit_marshal_com_interface): Add
11340         methods for this case and remove if's from emit_marshal_object.
11341         
11342 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
11343
11344         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
11345
11346 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
11347
11348         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
11349         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
11350         and GlobalFree on Windows. Remove FIXME.
11351
11352 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11353
11354         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
11355         implementation for managed objects.
11356
11357 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11358
11359         * object.c: implemented code to be used for checking
11360         that no reference field overlaps with non-references.
11361
11362 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11363
11364         * threadpool.c: fix queue code to be compatible with the
11365         moving GC.
11366
11367 2006-12-18  Miguel de Icaza  <miguel@novell.com>
11368
11369         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
11370         in structures by throwing ArgumentNullException.
11371
11372         (emit_marshal_safehandle): Also when they are null parameters.
11373
11374         (emit_marshal_safehandle): Add support for ref
11375         SafeHandles parameters
11376
11377 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11378
11379         * profiler.c: updated to use the mono-dl API instead of
11380         gmodule.
11381
11382 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11383
11384         * profiler.c: updated to use the mono-dl dynamic loading
11385         API instead of gmodule.
11386
11387 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11388
11389         * profiler.c: use readlink, older versions of glib don't have
11390         g_file_read_link ().
11391
11392 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11393
11394         * profiler.c: try to detect the path to mono if libc fails to provide
11395         a useful name (bug #80286).
11396
11397 2006-12-16  Raja R Harinath  <rharinath@novell.com>
11398
11399         Fix #80242
11400         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
11401         instance, use the generic type definition instead.
11402         (ves_icall_Type_GetNestedTypes): Likewise.
11403         * class.c (mono_class_create_generic): Always set the
11404         nested_classes of a generic instance to NULL, even if the generic
11405         type definition has nested types.
11406
11407 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
11408
11409         * marshal.c (mono_string_from_bstr): Revert previous Windows change
11410         and fix on Linux.
11411         
11412 2006-12-15  Miguel de Icaza  <miguel@novell.com>
11413
11414         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
11415         my arguments were in the wrong order.   I also fixed the Windows
11416         version which seems to have had the same issue.
11417
11418         (mono_free_bstr): On Unix, this is g_free.
11419         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
11420         conversions (for the tests in corlib to pass).
11421
11422 2006-12-14  Miguel de Icaza  <miguel@novell.com>
11423
11424         * marshal.c (emit_ptr_to_object_conv): For now, ignore
11425         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
11426         exception if a ref SafeHandle in a struct has changed).
11427         
11428         (emit_struct_conv): Do not perform layout checks for classes
11429         derived from SafeHandle, as those are specially handled. 
11430
11431         (emit_object_to_ptr_conv): Add support for
11432         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
11433
11434         (emit_marshal_safehandle): Implement conversion of return values
11435         of safehandles (MARSHAL_ACTION_CONV_RESULT).
11436         
11437         * threads.c: WaitHandle now is compiled with two different handles
11438         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
11439         for 2.0.
11440         
11441         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
11442         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
11443         these routines to cope with both kinds of fields.
11444
11445 2006-12-12  Miguel de Icaza  <miguel@novell.com>
11446
11447         * metadata.c (mono_type_to_unmanaged): Handle the case where
11448         type->data.klass is a SafeHandle, and in that case, return the
11449         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
11450         MONO_MARSHAL_CONV_SAFEHANDLE. 
11451
11452 2006-12-11  Miguel de Icaza  <miguel@novell.com>
11453
11454         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
11455         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
11456         calling emit_marshal_object.
11457
11458         (emit_marshal_safehandle): Implement marshalling of
11459         SafeHandle parameters (no ref support yet).
11460
11461         (MarshalAction): Document the defines as I implement
11462         them for SafeHandle.
11463
11464         (emit_marshal_object): indentation police.
11465
11466         * class-internals.h: Define MonoSafeHandle.
11467         Add safehandle_class to MonoDefaults type.
11468
11469         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
11470         list of classes to check for fields. 
11471
11472         * domain.c (mono_init_internal): Add SafeHandle to the list of
11473         mono_defaults loaded.
11474
11475 2006-12-15  Raja R Harinath  <rharinath@novell.com>
11476
11477         Fix #80253
11478         * reflection.c (mono_reflection_bind_generic_parameters): If the
11479         generic type definition is a type builder, ensure that it is fully
11480         initialized before instantiating it.  Kill some dead code.
11481
11482 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11483
11484         * object.c: clear the loader_error () before loading
11485         more metadata stuff (bug #80258).
11486
11487 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
11488
11489         * icall.c, icall-defs.h: type modifiers icalls for
11490         parameters and properties.
11491
11492 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11493
11494         * object.c, icall.c: fixed warnings.
11495
11496 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11497
11498         * marshal.c: fixed a couple of leaks and coding style in a few places.
11499
11500 2006-12-08  Dick Porter  <dick@ximian.com>
11501
11502         * process.c: Cope with NULL ProcessStartInfo arguments on windows
11503         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
11504         80173.
11505
11506 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11507
11508         * process.c: ProcessStartInfo may have only filename set and
11509         arguments can be NULL.
11510
11511 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11512
11513         * icall.c: fix leak found by Robert Jordan.
11514
11515 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11516
11517         * marshal.c, marshal.h: generate managed method to access an element
11518         of a multi-dimensional array.
11519
11520 2006-11-30  Paolo Molaro (lupus@ximian.com)
11521
11522         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
11523
11524 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11525
11526         * icall.c: back out GetFields () fix until the serialization code is
11527         fixed to not depend on the incorrect behaviour.
11528
11529 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11530
11531         * profiler.c: provide defaults if none are set.
11532
11533 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11534
11535         * Makefile.am, attrdefs.h: new public header file with
11536         constants for attributes for use by embedders.
11537
11538 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11539
11540         * icall.c: GetFields () fix for bug #80064.
11541
11542 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
11543
11544         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
11545         removed long unused icalls.
11546
11547 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
11548   
11549         * marshal.c: 
11550                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
11551                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
11552                 can be generated without a delegate class.
11553                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
11554         
11555         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11556
11557 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11558
11559         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
11560         #80069.
11561
11562 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11563
11564         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
11565         icall-def.h: added icalls needed by System.GC.
11566
11567 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
11568
11569         * loader.c: ensure the class in catch clauses is handled
11570         correctly for generics methods (fixes bug#79980).
11571
11572 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11573
11574         * monitor.h, monitor.c: added mono_locks_dump () function
11575         to help debug deadlocks involving managed locks.
11576
11577 2006-11-13  Dick Porter  <dick@ximian.com>
11578
11579         * file-io.c (get_file_attributes): If the file is a symlink try
11580         and get the stat data for the target, but also add the
11581         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
11582         the specs for the windows symlink support, but will probably have
11583         to be reworked when I have test data from a vista machine.  Fixes
11584         bug 79887.
11585
11586 2006-11-13  Dick Porter  <dick@ximian.com>
11587
11588         * gc.c (mono_domain_finalize): 
11589         * marshal.c (mono_delegate_begin_invoke): 
11590         * threadpool.c (socket_io_init, mono_thread_pool_init)
11591         (mono_thread_pool_finish): 
11592         * monitor.c (mono_monitor_try_enter_internal): 
11593         * threads.c (mono_thread_resume, mono_thread_init)
11594         (mono_thread_suspend_all_other_threads)
11595         (mono_thread_execute_interruption): 
11596         * appdomain.c (mono_domain_unload): Check for NULL error returns
11597         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
11598         75733.
11599
11600 2006-11-11  Miguel de Icaza  <miguel@novell.com>
11601
11602         * process.c
11603         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
11604         Only close the handle if the value of the handle is not
11605         INVALID_HANDLE_VALUE.  This just makes the process a bit more
11606         robust.
11607
11608         Improvement for #75733, so that we do not run into this problem. 
11609
11610         
11611         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
11612         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
11613         internal variables.  Fixes #79462 
11614         
11615
11616 2006-11-09  Dick Porter  <dick@ximian.com>
11617
11618         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11619         Use poll() not select().  Fixes bug 79397.
11620
11621 2006-11-09  Raja R Harinath  <rharinath@novell.com>
11622
11623         Fix #79872
11624         * assembly.c (mono_assembly_load_from_full): Check that the given
11625         image has an assembly manifest.
11626
11627 2006-11-09  Ankit Jain  <jankit@novell.com>
11628
11629         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
11630         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
11631         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
11632
11633 2006-11-07  Dick Porter  <dick@ximian.com>
11634
11635         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11636         Put the old resolver behaviour back for pre-2.0 profiles.
11637
11638 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
11639
11640         * threadpool.c: precise GC and locking fixes.
11641
11642 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
11643
11644         * class.c: don't load types that have an explicit unaligned
11645         managed reference. Provide better info in the TypeLoad exception.
11646         Part of the fix for bug #79744.
11647         * object.c: use the correct check for class type load issues.
11648
11649 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11650
11651         * class.c: enforce alignment of fields with managed references
11652         even when Pack=1 is forced by the user (bug #77788).
11653
11654 2006-11-03  Dick Porter  <dick@ximian.com>
11655
11656         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11657         If the address reverse lookup fails, return it as the hostname
11658         anyway.  Fixes bug 79721.
11659
11660 2006-11-03  Dick Porter  <dick@ximian.com>
11661
11662         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
11663         Fix build on Windows.
11664
11665 2006-11-02  Dick Porter  <dick@ximian.com>
11666
11667         * icall-def.h: 
11668         * object-internals.h: 
11669         * exception.c (mono_get_exception_thread_interrupted): 
11670         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
11671         Fixes bug 74525.
11672
11673         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
11674         Check for pending Thread.Interrupt.
11675
11676 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
11677         * loader.c: Fixed bug 79684.
11678
11679 2006-10-27  Dick Porter  <dick@ximian.com>
11680
11681         * file-io.c (get_file_attributes): Force symlinks to directories
11682         to be returned as a regular file.  Fixes bug 79733.
11683 2006-10-26  Dick Porter  <dick@ximian.com>
11684
11685         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
11686         CreateFile to open a directory then we need to set the
11687         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
11688
11689 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11690
11691         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
11692         friends.
11693
11694 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11695
11696         * sgengc.c: small cleanup of timer code.
11697
11698 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11699
11700         * sgen-gc.c: fix some warnings and start adding support for
11701         complete object removal on domain unload.
11702
11703 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
11704
11705         * assembly.c: build_assembly_name should not consider a version
11706         number without build or revision number invalid. Fixes bug #79715.
11707
11708 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
11709
11710         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
11711         call kernel32 function OutputDebugString directly.
11712         
11713         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11714         
11715 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
11716
11717         * reflection.c: small cleanup, using a function to insert a MonoString
11718         in the string heap.
11719
11720 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
11721
11722         * reflection.c: moving GC fixes.
11723
11724 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11725
11726         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
11727         all the objects with finalizers belonging to an unloading appdomain.
11728
11729 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11730
11731         * sgen-gc.c: added ability to allocate even when the nursery is fully
11732         pinned and fixed a couple of bugs.
11733
11734 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11735
11736         * threads.h: Revert the last change for now.
11737
11738         * threads.h (mono_thread_get_pending_exception): Rename this to
11739         mono_thread_get_undeniable_exception ().
11740
11741 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
11742
11743         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
11744         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
11745         when fname does not refer to valid assembly. This result in a more
11746         meaningful error message.
11747         * exception.c: added mono_get_exception_bad_image_format2 which 
11748         constructs a BadImageFormatException using the ctor taking a custom
11749         message and the file name. Passing in a NULL msg results in a default
11750         message.
11751         * exception.h: define mono_get_exception_bad_image_format2 function.
11752         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
11753         when file name pointed to an invalid IL image. Use 
11754         mono_get_exception_file_not_found2 to construct FileNotFoundException,
11755         as this results in a more meaningful error message.
11756
11757 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11758
11759         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
11760         #79465.
11761
11762 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11763
11764         * metadata.c (mono_type_size): Change the align parameter to guint32 for
11765         consistency with the other _size functions.
11766         (mono_type_stack_size): Ditto.
11767
11768         * class.c object.c icall.c: Fix warnings caused by the above change.
11769
11770         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
11771
11772         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
11773
11774         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
11775
11776 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
11777
11778         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
11779         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
11780         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
11781         threadpool.h, threads-types.h: mark more internal functions.
11782
11783 2006-10-11  Dick Porter  <dick@ximian.com>
11784
11785         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11786         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
11787         reproduce the bug even before applying the fix.)
11788
11789 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
11790
11791         * reflection.c: allow retrieving attributes for arguments in generic
11792         methods (bug #79241).
11793
11794 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
11795
11796         * debug-mono-symfile.c: properly check fopen () result (found by
11797         coverity).
11798
11799 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
11800
11801         * reflection.c: make error message clearer and fixed two
11802         issuelets found by Coverity.
11803
11804 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
11805
11806         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
11807
11808 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
11809
11810         * object-internals.h, gc-internal.h, profiler-private.h:
11811         mark internal functions.
11812
11813 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11814
11815         * reflection.c: put data in the text section.
11816         * icall.c: recognize more types in type_from_typename ().
11817         * process.c, marshal.c: added some GC FIXMEs.
11818
11819 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11820
11821         * loader.c: check for NULL before initializing.
11822
11823 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
11824
11825         * gc.c (finalizer_thread): Use a non-alertable wait here.
11826
11827         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
11828         until the correct solution is found.
11829
11830 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
11831
11832         * reflection.c (mono_module_get_object): Avoid an assert when operating on
11833         modules with no metadata. Fixes #79596.
11834
11835         * image.c (load_metadata_ptrs): Put back the error message when
11836         the #- heap is encountered since the support is not complete yet.
11837
11838 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11839
11840         * gc.c: do not allow the user to SuppressFinalize () a
11841         delegate because it would leak the trampoline if present.
11842
11843 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
11844
11845         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
11846         PropertyPtr table.
11847
11848 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11849
11850         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
11851
11852         * metadata.c (mono_metadata_get_param_attrs): Ditto.
11853
11854         * row-indexes.h: Add definitions for *Ptr tables.
11855
11856         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
11857
11858         * metadata.c (mono_metadata_translate_token_index): New helper function to
11859         translate table indexes used in uncompressed metadata.
11860         (mono_metadata_decode_table_row): Ditto.
11861         (mono_metadata_decode_table_row_col): Ditto.
11862
11863         * metadata.c: Add table schema for *Ptr tables.
11864
11865         * class.c loader.c: Use the new helper function to access the affected metadata
11866         tables.
11867         
11868         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
11869         #38532.
11870         
11871 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
11872
11873         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
11874         sequences which can be unbounded in size. Fixes #79583.
11875
11876 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11877
11878         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
11879         static initialization.
11880
11881         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
11882
11883         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
11884
11885         * domain.c (mono_domain_free): Free up type_init_exception_hash.
11886
11887         * object.c (mono_runtime_class_init): Implement correct semantics when a static
11888         ctor fails, i.e. throw the same exception on subsequent accesses.
11889         
11890 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
11891
11892         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
11893         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
11894         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
11895         Handle marshalling of interfaces and VARIANTs contained in structs.
11896         
11897         Code is contributed under MIT/X11 license.
11898         
11899 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11900
11901         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
11902         
11903         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
11904         mempool.
11905
11906 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11907
11908         * console-io.c: ignore previous SIGINT handler.
11909
11910 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11911
11912         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
11913         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
11914         #79460, #79461, #79485.
11915
11916         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
11917
11918         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
11919         #79217.
11920
11921 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11922
11923         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
11924         could be generated from it.
11925
11926 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
11927
11928         * rand.c: fix read loop to correctly handle EINTR.
11929
11930 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11931
11932         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
11933         internal calls are defined to keep methods closer to the declaring
11934         type and allow a significant reduction in runtime relocations and
11935         memory usage.
11936
11937 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
11938
11939         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
11940         exception message to have FileNotFoundException use the default
11941         assembly load error message. Fixes bug #79426.
11942         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
11943
11944 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11945
11946         * threadpool.c: (start_thread_or_queue) use the root domain when
11947         creating the thread instead of the async object one.
11948
11949 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
11950
11951         * class.c, object.c, class-internals.h, reflection.c:
11952         for arrays, store element_size inside MonoClass (speedup
11953         for array object creation).
11954
11955 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
11956
11957         * icall.c: fixed CodeBase to use the file name and not the module
11958         name (bug #79365).
11959
11960 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
11961
11962         * mono-debug.c, mono-debug.h: export find_method as
11963         mono_debug_find_method ().
11964
11965 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11966
11967         * debug-helpers.c, class-internals.h: added a few functions useful
11968         when debugging under gdb.
11969
11970 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11971
11972         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
11973         characters that need special handling.
11974
11975 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11976
11977         * mono-config.c: make the os/cpu specification more flexible,
11978         allowing lists and negation.
11979
11980 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
11981
11982         * marshal.c: COM Interop fixes. Handle case where method->klass.
11983         is interface. Handle BSTR/MonoString when null. Use CDECL as 
11984         calling convention on non-windows platforms. This is for
11985         compatibility with XPCOM and MainWin COM.
11986         
11987         Code is contributed under MIT/X11 license.
11988         
11989
11990 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
11991
11992         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
11993         correctly. Fixes #79217.
11994
11995         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
11996
11997 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
11998
11999         * mono-config.c: allow both an os and cpu attribute for dllmap
12000         and dllentry elemnets to enable a single config file to be used
12001         for multiple architectures.
12002
12003 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12004
12005         * loader.c: MonoLoaderError was cleared too soon on load failure.
12006         Fixes bug #79424.
12007
12008 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12009
12010         * icall.c: use the defining class vtable when accessing a
12011         static field, not a pobblibly derived class.
12012
12013 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12014
12015         * icall.c string-icalls.c: Remove references to unicode.h.
12016
12017         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12018
12019         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12020
12021         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12022         indicating the image where custom marshaller types should be looked up.
12023         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12024         custom marshallers, instead of corlib. Fixes #79425.
12025
12026 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12027
12028         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12029
12030 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12031
12032         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12033         Implement Environment.ProcessorCount.
12034         
12035         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12036         Implement Environment.ProcessorCount.
12037         
12038         * icall.c: 
12039         Add Environment.ProcessorCount icall.
12040         
12041         Patch by Jason McFall.
12042
12043 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12044
12045         * assembly.c: don't append .exe/.dll when the filename already contains
12046         one of those extensions.
12047
12048 2006-09-12  Martin Baulig  <martin@ximian.com>
12049
12050         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12051         to array interfaces.
12052
12053 2006-09-11  Martin Baulig  <martin@ximian.com>
12054
12055         * reflection.c (mono_image_build_metadata): Create the
12056         MethodImpl's after emitting all types and methods, so we don't
12057         need another fixup pass for them.
12058
12059 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12060
12061         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12062         change.
12063
12064 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12065
12066         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12067         unload.
12068
12069 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12070
12071         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12072         args is not set. Fixes #78926.
12073
12074 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12075
12076         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12077
12078         * image.c (load_class_names): Move this to class.c, and rename it to 
12079         'mono_image_init_name_cache'.
12080         (load_modules): Fix a warning.
12081
12082         * class.c icall.c image.c: Initialize image->name_cache lazily.
12083
12084         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12085         on its name using information in the AOT file.
12086
12087         * class.c (mono_class_from_name): Use the new hook function.
12088
12089 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12092         correctly.
12093
12094         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12095         Fixes #79289.
12096         
12097 2006-09-06  Martin Baulig  <martin@ximian.com>
12098
12099         * icall.c (mono_lookup_internal_call): Small fix.
12100
12101 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12102
12103         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12104         double g_free.
12105
12106 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12107
12108         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12109         when --debug is specified.
12110
12111 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12112
12113         * class.c (setup_generic_array_ifaces): Fix a warning.
12114
12115 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12116
12117         * Temporarily remove the patch to assemly.c that checks the
12118         assembly versions as it breaks our gacutil.
12119
12120 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12121
12122         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12123
12124         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12125         a net 1.0 runtime.
12126
12127         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12128         created using the default ctor. Fixes #79152.
12129         (mono_string_builder_to_utf16): Ditto.
12130
12131 2006-09-01  Martin Baulig  <martin@ximian.com>
12132
12133         Fix handling of the generic array interfaces.
12134
12135         * class-internals.h
12136         (MonoDefaults): Removed `generic_array_class' and added
12137         `generic_ilist' class.
12138
12139         * class.c
12140         (mono_bounded_array_class_get): Add the new generic array interfaces.
12141         (setup_generic_array_ifaces): New static method; create vtable
12142         entries for each method in the generic array interfaces.
12143
12144         * metadata.c
12145         (select_container): Allow "parent-less" generic methods.
12146
12147         * marshal.c
12148         (mono_marshal_get_generic_array_helper): New public method.
12149
12150         * icall.c
12151         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12152         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12153         moved the interncall into System.Array.
12154
12155 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12156
12157         A few more cases of avoiding work on types with ->byref set.
12158         Has the real fix for #79238
12159         * icall.c (is_generic_parameter): New helper.
12160         (ves_icall_Type_GetGenericParameterPosition): Use it.
12161         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12162         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12163         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12164         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12165         reference types.
12166         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12167         reference types.
12168         (ves_icall_Type_get_IsGenericInstance): Likewise.
12169         (ves_icall_Type_get_IsGenericType): Likewise.
12170
12171 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12174         class if possible.
12175
12176         * mempool.h (mono_mempool_get_allocated): New helper function.
12177
12178         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12179         change.
12180
12181         * mempool.c: Fix warnings and the calculation of stats.
12182
12183         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12184
12185         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12186
12187         * loader.c (mono_get_method_from_token): Update method_count stat.
12188
12189         * class-internals.h (MonoStats): Add some stats.
12190
12191 2006-08-31 Robert Jordan  <robertj@gmx.net>
12192
12193         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12194         with managed variants.
12195         All code is contributed under the MIT/X11 license.
12196         
12197 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12198
12199         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12200         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12201
12202         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12203
12204         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12205         with cycles in classes.
12206
12207         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12208
12209         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12210         missing a [MarshalAs] directive. Fixes #79203.
12211
12212         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12213         klass->marshal_info. Fixes #79217.
12214
12215 2006-08-30  Martin Baulig  <martin@ximian.com>
12216
12217         Committing a patch from Joachim Ante <joe@otee.dk>:
12218         Add support for binary data symbol stores.
12219
12220         * debug-mono-symfile.c
12221         (mono_debug_open_mono_symbol_file): Renamed into
12222         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12223         arguments.
12224
12225         * mono-debug.c
12226         (mono_debug_open_image): Added `raw_contents' and `size' args.
12227         (mono_debug_init_2_memory): New public function.
12228
12229 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12230
12231         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12232
12233 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12234
12235         * appdomain.c: implement support for ShadowCopyFiles.
12236
12237 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12238
12239         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12240         when value is NULL (and should remove CID #51).
12241
12242 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12243
12244         * image.c: moved 2 functions to ../utils.
12245
12246 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12247
12248         * gc.c: cope with the target object of a GC handle being NULL
12249         (bug #78877).
12250
12251 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12252
12253         * class.c: recursively check parent's explicit implementations
12254         of interface methods (fixes bug #79125).
12255
12256 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12257
12258         * filewatcher.c: Avoid warnings when building, do not redefine
12259         constants that are defined.
12260
12261         Remove warnings.
12262
12263 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12264
12265         * image.c: don't fail when the link points to an absolute path.
12266
12267 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12268
12269         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12270         Fix CID #3.
12271
12272 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12273
12274         * image.c (full_path): A new method used to obtain the actual path
12275         of an assembly even in the presence of symbolic links.  
12276
12277         This is necessary for the case where we are running a binary that
12278         has been GACed, but we are using the "published" path name
12279         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12280         file in the GAC.
12281
12282         This was the source of the failure for the `xsp' command with the
12283         recent AppDomain changes, as far as the runtime was concerned,
12284         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12285         $prefix/mono/gac/blah/version/blah.exe.
12286
12287         (do_mono_image_open): use full path
12288
12289 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12292
12293 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12294
12295         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12296         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12297
12298 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12299
12300         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12301         small structures. Fixes #78990.
12302
12303 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12304
12305         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12306
12307         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12308
12309 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12310
12311         * appdomain.c:
12312         * marshal.c: don't load all the assemblies from a domain into newly
12313         created ones. The new domains might have different rules and load
12314         assemblies from different locations. Fixes bug #76757.
12315
12316         Patch by Lluis. Conflicts resolved by Brian Crowell.
12317
12318 2006-08-16  Alp Toker  <alp@atoker.com>
12319
12320         * socket-io.c: First half of the fix for #79084.
12321         Set sa_size to the length of the content, not that of the struct.
12322         Don't add NULL suffix to the content, this should be done in
12323         managed code if needed.
12324
12325 2006-08-14  Raja R Harinath  <rharinath@novell.com>
12326
12327         Fix part of #79012
12328         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
12329         mono_metadata_parse_type returns NULL.
12330
12331 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
12332
12333         * normalization-tables.h : new file for string normalization data.
12334         * locales.c, locales.h, icall.c :
12335           added load_normalization_resource() for string normalization,
12336           and icall as well.
12337         * Makefile.am : added normalization-tables.h to the sources.
12338
12339 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
12340
12341         * marshal.c: Add more helper functions to reduce code duplication and use them
12342         everywhere.
12343
12344 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
12345
12346         * marshal.c: Fix non-x86 stdcall warnings.
12347         
12348         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
12349         them everywhere.
12350
12351 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
12352
12353         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
12354         type check on multi-dimensional arrays. Fixes #79000.
12355
12356 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12357
12358         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
12359         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
12360         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
12361         * class-internals.h: add is_com_object to class structure.
12362         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
12363         null checks to COM object marshalling. Fix .ctor call on RCW.
12364         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
12365         
12366         All code is contributed under the MIT/X11 license.
12367
12368 2006-08-09  Dick Porter  <dick@ximian.com>
12369
12370         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
12371         racing mono_monitor_allocator_lock() somewhere, so don't delete
12372         the critical section for now.  Found by running and exiting
12373         monodevelop.
12374
12375 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
12376
12377         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
12378         (ves_icall_System_ComObject_FindInterface): Ditto.
12379         (ves_icall_System_ComObject_CacheInterface): Ditto.
12380
12381         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
12382         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
12383
12384 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12385
12386         * threadpool.c: treat pipes from process asynchronous reads as sockets
12387         when reading from them, so we get select/poll or epoll to wait for
12388         data.
12389
12390 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
12391
12392         * loader.c: Fix a typo (CID #233) in the null check.
12393
12394 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
12397         Hopefully fixes #78949.
12398         
12399         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
12400         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
12401         bytes. Fixes #78972.
12402
12403 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12404
12405         * filewatcher.c: we need to set errno here.
12406
12407 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12408
12409         * filewatcher.c: let Win32Exception get the error value.
12410
12411 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12412
12413         * filewatcher.c: translate errno into win32 errors for Win32Exception
12414         to know what happened.
12415
12416 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12417
12418         * threadpool.c: Fix more warnings.
12419
12420         * assembly.c (search_loaded): Fix warnings.
12421
12422         * threadpool.c (mono_thread_pool_finish): Fix warnings.
12423         (mono_async_invoke): Ditto.
12424
12425 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
12426
12427         * object.c (mono_remote_class_vtable): Need to create proxy vtable
12428         entries for __ComObject type in addition to ComImport types.
12429         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
12430         about hash table.
12431         
12432         All code is contributed under the MIT/X11 license.
12433
12434 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12435
12436         * image.c: avoid tentative loading of modulerefs that contain
12437         no metadata (P/Invoke library names).
12438
12439 2006-07-28  Dick Porter  <dick@ximian.com>
12440
12441         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
12442         mono_loader_lock() somewhere, so don't delete the critical section
12443         for now.  Found by running and exiting monodevelop.
12444
12445 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12446
12447         * filewatcher.c: define the inotify syscalls when we're building on
12448         linux and have sys/syscall.h. The build system might not have support
12449         for inotify but the target system might have it.
12450
12451 2006-07-26  Miguel de Icaza  <miguel@novell.com>
12452
12453         * domain.c: Documentation updates.
12454
12455         * loader.c (mono_free_method): Do not release the method
12456         information if we are being profiled, as profilers will use this
12457         information at shut down to present some data to the user.
12458
12459         This is needed so that the profiler does not crash, as the
12460         profiler tends to keep MonoMethods around, and they might become
12461         invalid if we free these.
12462
12463         (mono_get_method_constrained): Return the original CIL stream
12464         method as well, so verification can be performed against it.
12465
12466 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12467
12468         * filewatcher.[ch]: support for inotify file system watcher.
12469         * icall.c: add new internal calls for the inotify file system watcher.
12470
12471 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12472
12473         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
12474         #78888.
12475
12476 2006-07-20  Dick Porter  <dick@ximian.com>
12477
12478         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
12479         warning.
12480
12481 2006-07-20  Dick Porter  <dick@ximian.com>
12482
12483         * threads.c (start_wrapper): Do the thread cleanup while we still
12484         hold a reference to its object.  Fixes bug 78123.
12485
12486 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
12487
12488         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
12489         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
12490           "managed-to-managed".
12491         * icall.c: Redirect string constructors that take sbyte* to
12492           ves_icall_System_String_ctor_RedirectToCreateString.
12493         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
12494           to CreateString () methods with matching signature.
12495         * reflection.c: Use original security informations for
12496           MONO_WRAPPER_MANAGED_TO_MANAGED.
12497         * security-manager.c: Use original security informations for
12498           MONO_WRAPPER_MANAGED_TO_MANAGED.
12499         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
12500           that is a placeholder and only its address should be used.
12501         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
12502           that is a placeholder and only its address should be used.
12503
12504 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12505
12506         Begin implementing COM Interop.
12507         * appdomain.c: Increment corlib version.
12508         * class.c: Set ComImport classes' parent to __ComObject.
12509         * loader.c: Mark cominterop methods as such.
12510         * domain.c: Add __ComObject class to MonoDefaults structure.
12511         * image.c: Add 2 hashtables to the image for COM Interop related methods
12512         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
12513         using the mempool allocator
12514         
12515         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
12516         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
12517         declaration for mono_metadata_type_dup_mp.
12518         
12519         * debug-helpers.c: Added strings for two additional wrapper types
12520         * object.c: Create proxy objects for ComImport classes
12521         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
12522         and added __ComObject class to MonoDefaults structure.
12523         
12524         * object-internals.h: Finish MonoRealProxy definition, and add definition of
12525         MonoComInteropProxy and MonoComObject.
12526         
12527         * marshal.c: Added support for COM Interop
12528         (signature_cominterop): Converts managed signature to corresponding
12529         unmanaged COM signature.
12530         (cominterop_get_function_pointer): gets unmanaged function pointer via
12531         COM object vtable
12532         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
12533         (cominterop_get_method_interface): returns interface type that method is defined on
12534         (mono_mb_emit_cominterop_call): emits native call to function pointer
12535         gotten from vtable
12536         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
12537         that matches signature of unmanaged function.
12538         (cominterop_get_native_wrapper): wrapper around adjusted method call.
12539         (cominterop_get_invoke): forwards call from proxy to __ComObject
12540         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
12541         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
12542         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
12543         
12544         * marshal.h: Added Marshal icall declarations.
12545         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
12546         so we can access them in finalizer
12547         
12548 2006-07-14  Dick Porter  <dick@ximian.com>
12549
12550         * object.c (mono_type_initialization_cleanup): Fix a race
12551         condition by temporarily commenting out the critical section
12552         deletion.
12553
12554 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * reflection.c (create_custom_attr): Fix some warnings.
12557         (create_custom_attr_data): Ditto.
12558         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
12559         types. Fixes #78855.
12560
12561 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
12562
12563         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
12564
12565         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
12566
12567 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12568
12569         * reflection.c (resolve_object): Add support for DynamicMethod.
12570
12571         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
12572         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
12573
12574 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
12575
12576         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
12577         don't leak GPtrArray's pdata has we have no use (nor free) for it.
12578
12579 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
12580
12581         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
12582         Fixes #77888.
12583
12584 2006-06-30  Raja R Harinath  <rharinath@novell.com>
12585
12586         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
12587         slightly: remove a shadow local variable.
12588
12589 2006-06-29  Raja R Harinath  <rharinath@novell.com>
12590
12591         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
12592         definition that introduces the virtual function slot.
12593         Also fix Coverity #105.
12594
12595 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
12596
12597         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
12598         for dynamic assemblies. Fixes #78724.
12599
12600 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
12601
12602         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
12603         Fixes #78722.
12604
12605 2006-06-21  Martin Baulig  <martin@ximian.com>
12606
12607         * reflection.c
12608         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
12609         fixes #76484.
12610
12611 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12612
12613         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
12614
12615 2006-06-20  Raja R Harinath  <rharinath@novell.com>
12616
12617         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
12618         nor TYPEREFs.
12619         * class.c (mono_class_create_from_typespec): Add 'context' argument.
12620         Inflate result if necessary.
12621         (mono_class_get_full): Remove old version.  Rename from
12622         'mono_class_get' and add 'context' argument.  Pass it to
12623         ..._create_from_typespec.
12624         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
12625         (mono_ldtoken): Revert change below.
12626
12627 2006-06-20  Martin Baulig  <martin@ximian.com>
12628
12629         * class.c (mono_ldtoken): Don't pass the generic context to
12630         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
12631
12632 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
12633
12634         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
12635         and later freeing it. Fixes #78638.
12636
12637 2006-06-15  Miguel de Icaza  <miguel@novell.com>
12638
12639         * icall.c (mono_class_get_throw): Revert over-zealous error
12640         throwing, the caller for mono_class_get_throw will cope with
12641         errors when classes are not properly initialized already.
12642
12643         The code still copes with loader exceptions though.
12644
12645         Fixes the regression in reftype1 and reftype3 from the CAS tests.
12646         
12647 2006-06-14  Miguel de Icaza  <miguel@novell.com>
12648
12649         Fixes the `make run1' version of RuntimeAbort (to be commited,
12650         source is in Bugzilla).
12651         
12652         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
12653         FALSE on class loading failure instead of returning true.
12654
12655         * class.c (mono_class_create_from_typedef): It is possible for
12656         mono_metadata_interfaces_from_typedef_full to fail if a class is
12657         not found, cope with this.
12658         
12659
12660 2006-06-14  Dick Porter  <dick@ximian.com>
12661
12662         * socket-io.c: 
12663         * process.c: Fix a bunch of signed/unsigned warnings from gcc
12664         4.1.1
12665
12666 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
12667
12668         * culture-info-table.h : oops, forgot to make it nsync with r61548.
12669
12670 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12671
12672         * icall.c: Another fix for building mono in Visual Studio.
12673
12674 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12675
12676         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
12677         
12678 2006-06-09  Martin Baulig  <martin@ximian.com>
12679
12680         * debug-mono-symfile.c: Put this back and really fix it this
12681         time. Sorry for all the trouble.
12682
12683 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12684
12685         * icall.c (mono_class_get_throw): Fix a warning.
12686         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
12687         ReflectionTypeLoadException if needed. Fixes #78606.
12688
12689         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
12690         (mono_class_init): Ditto.
12691
12692         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
12693         ref_only exceptions.
12694         (mono_loader_clear_error): Make this work even if there is no error.
12695
12696 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
12697
12698         * object-internals.h marshal.c marshal.h icall.c: Implement method 
12699         Marshal.GetComSlotForMethodInfo using internal call.
12700
12701 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
12702
12703         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
12704         a function for signalling it.
12705
12706         * class.c (mono_class_from_typeref): Use the new kind of loader error when
12707         a referenced assembly is not found.
12708
12709         * loader.c (mono_loader_error_prepare_exception): Add support for 
12710         LOADER_ERROR_ASSEMBLY. Fix formatting.
12711
12712 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
12713
12714         * domain.c appdomain.c class-internals.h marshal.c: Add support 
12715         for VARIANT marshalling on windows and increment corlib version
12716         since Variant struct was added.
12717
12718 2006-06-03  Miguel de Icaza  <miguel@novell.com>
12719
12720         * debug-mono-symfile.c: Revert Martin's previous patch which broke
12721         stack trace line information:
12722
12723         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
12724         (Martin) when looking up B which is between A and C, return A not C.
12725
12726         Bug is #78573.
12727
12728         Thanks to Alexander Olk for tracking this down.
12729
12730 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12731
12732         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
12733         
12734         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
12735         avoid clobbering its value.
12736         (mono_string_to_lpstr): Fix a warning on windows.
12737
12738 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12739
12740         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
12741
12742         * reflection.c loader.c: Removed references to 'dummy' flag.
12743
12744         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
12745
12746         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
12747         it gets GC tracking.
12748
12749         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
12750         GC tracking.
12751         
12752         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
12753
12754         * marshal.c threadpool.c: Update callers of mono_async_result_new.
12755
12756         * appdomain.c: Bump corlib version.
12757
12758 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
12759
12760         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
12761         CEE_STIND_REF when working with object references.
12762
12763 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
12766         Fixes #78539.
12767
12768 2006-05-30  Miguel de Icaza  <miguel@novell.com>
12769
12770         * loader.c (method_from_memberref): Fix argument value for
12771         mono_loader_set_error_method_load (I was passing the MonoClass
12772         instead of the class name char *).
12773
12774 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
12775
12776         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
12777         CEE_STIND_REF when working with object references.
12778
12779 2006-05-30  Martin Baulig  <martin@ximian.com>
12780
12781         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
12782         mono_method_full_name() change and replace the ':' with a '.'
12783         here.
12784
12785 2006-05-30  Martin Baulig  <martin@ximian.com>
12786
12787         * debug-mono-symfile.c
12788         (mono_debug_symfile_lookup_location): Fix the algorithm:
12789         when looking up B which is between A and C, return A not C.
12790
12791 2006-05-29  Martin Baulig  <martin@ximian.com>
12792
12793         * mono-debug.h
12794         (MonoDebugMethodInfo): Make the typedef public.
12795         (MonoDebugSourceLocation): New public struct.
12796
12797         * mono-debug.c
12798         (mono_debug_source_location_from_address): Removed.
12799         (mono_debug_source_location_from_il_offset): Removed.
12800         (mono_debug_il_offset_from_address): Removed.
12801         (mono_debug_address_from_il_offset): Removed.
12802         (mono_debug_lookup_method): New public function.
12803         (mono_debug_lookup_source_location): New public function; replaces
12804         the old mono_debug_source_location_from_*() functions; see the
12805         inline documentation.
12806         (mono_debug_free_source_location): New public function.
12807         (mono_debug_print_stack_frame): New public function; see the
12808         inline documentation.
12809
12810         * debug-mono-symfile.c
12811         (mono_debug_find_source_location): Renamed into
12812         mono_debug_symfile_lookup_location(); only take a
12813         `MonoDebugMethodInfo *' and an `offset' argument; added inline
12814         documentation.
12815         (mono_debug_find_method): Renamed into
12816         mono_debug_symfile_lookup_method().
12817
12818 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12819
12820         * assembly.c (mono_assembly_open_full): Dont overwrite the status
12821         returned by mono_image_open_full ().
12822
12823         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
12824         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
12825         #78517.
12826
12827         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
12828         #78518.
12829
12830 2006-05-27  Miguel de Icaza  <miguel@novell.com>
12831
12832         * class.c (mono_class_from_typeref): handle missing images
12833         earlier, deals with bug #78418.   Refactor code; 
12834
12835         Fix a warning introduced in my previous commit (some stale code
12836         from before I revisited my patch).
12837
12838         * class.c (mono_class_create_from_typedef): On failure, remove the
12839         class from the MonoImage->class_cache as the class is not
12840         initialized;   Fixes the leak pointed out by Paolo.
12841
12842 2006-05-25  Dick Porter  <dick@ximian.com>
12843
12844         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
12845         DeleteCriticalSections until I figure out which one may still be
12846         sometimes locked when mono_thread_cleanup is called.
12847
12848 2006-05-24  Dick Porter  <dick@ximian.com>
12849
12850         * threads.c (mono_thread_cleanup): Move the threading cleanup out
12851         of mono_thread_manage and back into its own function, so it can be
12852         called after the finalizer thread has finished.
12853
12854         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
12855
12856 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
12859         Fixes #78495.
12860
12861         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
12862         with non-blittable elements.
12863         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
12864
12865 2006-05-24  Martin Baulig  <martin@ximian.com>
12866
12867         * mono-debug-debugger.h (MonoDebuggerEvent): Added
12868         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
12869
12870         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
12871         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
12872         `mono_debugger_event_handler' to NULL.
12873
12874 2006-05-24  Martin Baulig  <martin@ximian.com>
12875
12876         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
12877
12878 2006-05-24  Martin Baulig  <martin@ximian.com>
12879
12880         * mono-debug-debugger.h
12881         (mono_debugger_create_notification_function): Added
12882         `MonoCodeManager *' argument.
12883
12884 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
12885
12886         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
12887
12888 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
12889
12890         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
12891         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
12892         implementation.
12893
12894 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
12895
12896         * icall.c: precise GC support: objects can't be stored in unmanaged
12897         memory anymore, even if they are kept alive by other references: since
12898         they can move the GC needs to be able to always find them.
12899
12900 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12901
12902         * object.c: precise GC support for static fields. Support
12903         for moving GCs: write barriers and pinned allocation for interned
12904         strings.
12905
12906 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12907
12908         * domain.c, domain-internals.h: precise GC support for the MonoDomain
12909         structure.
12910
12911 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12912
12913         * class.c, gc.c: sgen and precise GC updates.
12914
12915 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12916
12917         * marshal.h, marshal.c: added write barrier wrapper and precise type
12918         fixes.
12919
12920 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
12921
12922         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
12923         support.
12924
12925 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12926
12927         * reflection.c: precise and sgen GC updates.
12928
12929 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12930
12931         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
12932
12933 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
12934
12935         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
12936
12937 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
12940         MONO_TYPE_OBJECT. Fixes #78462.
12941
12942 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12943
12944         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
12945         and blittable types.
12946
12947 2006-05-17  Miguel de Icaza  <miguel@novell.com>
12948
12949         * class.c (mono_class_get_exception_for_failure): Implement parts
12950         of a TODO: if the loader error is set (instead of the class
12951         error), we return a Loader exception that can be properly thrown
12952         elsewhere.
12953
12954         This was exposed by some Winforms 2.0 code that I tried to run
12955         (Atsushi pointed me to it).
12956
12957 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
12958
12959         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
12960         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
12961         
12962         * marshal.c (emit_marshal_vtype): Add limited support for 
12963         UnmanagedType.LPStruct. Fixes #78427.
12964
12965         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
12966         Applied a patch from kangaroo to fix #77523.
12967
12968 2006-05-17  Martin Baulig  <martin@ximian.com>
12969
12970         * threads.c
12971         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
12972         (debugger_thread_created): Removed.
12973         (debugger_thread_exited): Removed.
12974
12975 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
12976
12977         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12978
12979         * object-internals.h (MonoReflectionResource): Sync with managed version.
12980
12981 2006-05-12  Wade Berrier <wberrier@novell.com>
12982
12983         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
12984
12985 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
12986
12987         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
12988         functions try to allocate from the image mempool.
12989
12990 2006-05-12  Dick Porter  <dick@ximian.com>
12991
12992         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
12993
12994 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
12995
12996         * object.c: The FieldGetter and FieldSetter methods require the full
12997         name of the class, not only the name. Fixes bug #78277.
12998
12999 2006-05-11  Miguel de Icaza  <miguel@novell.com>
13000
13001         * loader.c (method_from_memberref): Do not pass the NULL klass to
13002         mono_loader_set_error_() methods.  Pass the non-NULL value
13003         (class). 
13004
13005 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13006
13007         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13008         (mono_assembly_close): Null out assembly->image->references after freeing it.
13009
13010         * image.c (mono_image_close): Free image->references.
13011         
13012         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13013
13014 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13015
13016         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13017         before checking if it's NULL (g_assert).
13018
13019 2006-05-10  Martin Baulig  <martin@ximian.com>
13020
13021         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13022         I thought I already killed that two months ago, but now it somehow reappeared.
13023
13024 2006-05-10  Martin Baulig  <martin@ximian.com>
13025
13026         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13027
13028 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * reflection.c: Allocate memory for dynamically created methods in the image
13031         mempools.
13032
13033 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13034
13035         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13036         don't use the ad pointer before checking if it's NULL (g_assert).
13037
13038 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13039
13040         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13041         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13042
13043         * marshal.c: Allocate all signatures from mempools.
13044
13045         * marshal.c: Allocate some more signatures from mempools.
13046
13047 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13048
13049         * object.c (mono_load_remote_field): The code used to provide a
13050         temporary variable for returning results if the user did not
13051         provide a result pointer.  But our temporary variable was allocted
13052         on the satck.
13053
13054         Fix calling code to always pass a result area.   Coverity ID 103.
13055
13056 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13057
13058         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13059         value, not the old. Fixes #78312.
13060         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13061
13062         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13063         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13064         per-image cache.
13065
13066         * assembly.c (mono_assembly_close): Free image->references.
13067
13068         * assembly.c (mono_assembly_names_equal): Fix a warning.
13069         (mono_assemblies_cleanup): Cleanup more global data.
13070
13071         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13072
13073         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13074         ptr_cache and image->modules.
13075
13076         * image.c (mono_image_init): Allocate array_cache lazily.
13077         
13078 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13079
13080         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13081         behavior was changed recently and has bad side effects.
13082
13083 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13084
13085         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13086         
13087         * assembly.c (mono_assembly_close): Remove a debug printf.
13088
13089         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13090
13091         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13092         to also allow for temporary references between mono_image_open ()/close ().
13093
13094         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13095
13096 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13097
13098         * marshal.c: Fix support for dynamic methods.
13099
13100         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13101
13102         * marshal.c (mono_marshal_cleanup): New cleanup function.
13103
13104         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13105         image mempools.
13106
13107         * class.c (mono_class_init): Fix leaking class->nested_classes.
13108
13109         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13110
13111         * image.c (mono_image_init): Initialize the new cashes.
13112
13113         * image.c (mono_image_close): Destroy the new cashes.
13114
13115         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13116
13117         * mempool.c (mono_mempool_strdup): New helper function.
13118
13119         * class-internals.h: Add prototype for mono_loader_unlock ().
13120
13121         * domain.c (mono_jit_info_table_find): Fix a warning.
13122         (mono_debugger_check_runtime_version): Ditto.
13123
13124         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13125         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13126         functions to these modules.
13127
13128         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13129         metadata modules.
13130         
13131         * marshal.c (mono_free_bstr): Fix a warning.
13132
13133         * assembly.c (mono_assembly_open_full): Fix another small leak.
13134
13135         * object.c: Fix some unload leaks in the remoting code.
13136
13137         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13138         function.
13139
13140         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13141
13142         * reflection.c: Fix some unload leaks in dynamic assemblies.
13143
13144 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13145
13146         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13147         * marshal.h: Add BSTR support on Win32
13148         * icall.c: Add BSTR icalls
13149         * metadata.h: Add BSTR enums
13150
13151 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13152
13153         Work to catch the crash from #76795 and turn it into an
13154         exception.   As I stubbed out pieces of the VisualBasic support,
13155         I found a number of places where the code was failing and I added
13156         checks to those places. 
13157         
13158         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13159         function return a status code.  If we fail to parse the signature
13160         from mono_metadata_parse_generic_inst, return FALSE.
13161
13162         * loader.c (mono_get_method_from_token): If we fail to load the
13163         method (mono_class_get) return NULL.   
13164
13165         * (method_from_memberref): Return NULL if we are unable to parse
13166         the method signature
13167
13168         (mono_loader_error_prepare_exception): Since we now use the
13169         loader_error flag internally to stop processing, and obtaining
13170         exceptions that might be thrown will walk this code path the
13171         proper way of going from a MonoLoaderError into a
13172         MonoException was convoluted.   This new routine encapsulates the
13173         process of turning the error into an exception and *clearing* the
13174         error afterwards.
13175         
13176 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13177
13178         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13179         with missing assemblies), and to cope with:
13180
13181                 * Missing fieldref from a non-existing assembly.
13182                 * Missing methodref from a non-existing assembly.
13183
13184         The first batch of work to address *some* of the issues from 76661.
13185         
13186         * object.c (mono_class_create_runtime_vtable): If we fail to
13187         initialize the class raise the exception here. 
13188
13189         * metadata.c (mono_class_get_overrides_full): If any methods fail
13190         to load return the failure to the caller.
13191
13192         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13193         flagging assemblies that failed to load.   
13194
13195         Do not crash if we are unable to load the assembly.
13196
13197         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13198         assemblies. 
13199
13200         * loader.c (mono_loader_set_error_type_load): Change the
13201         convention to always pass unallocated strings, so we make our own
13202         copies (I know our own code had duplicated strings before, but
13203         this keeps the normal conventions).
13204         (method_from_memberref): Call mono_loader_set_error_method_load
13205         for all possible failures of loading the class. 
13206         Remove assert, turn into a loader error.
13207
13208         (mono_loader_error_to_exception): Move this routine from mini
13209         (mini_loader_error_to_exception) there was no need to have that in
13210         mini. 
13211
13212         * class.c (mono_class_from_typeref): If we were not able to load
13213         the assembly with mono_assembly_load_reference, call the
13214         mono_loader_set_error_type_load to register the problem.
13215
13216         (mono_class_setup_fields): If we fail to load the type from
13217         mono_metadata_parse_type_full, call mono_class_set_failure and
13218         break from the loop.
13219
13220         If class->exception_type is set, we do not layout the fields as
13221         that might crash the runtime, and instead return (from breaking
13222         from the previous loop).
13223
13224         (mono_class_setup_vtable): This now returns a boolean indicating
13225         whether the table was properly setup.   The decision is driven by
13226         mono_class_get_overrides_full which might run into non-existing
13227         methods. 
13228         
13229         (mono_class_init): Returns TRUE on success or FALSE if there was a
13230         problem in loading the type (incorrect assemblies, missing
13231         assemblies, methods, etc).
13232
13233         When we call mono_class_setup_fields we also check for a potential
13234         error inside this call (either a class exception or a general
13235         loader exception).
13236
13237         (mono_class_create_from_typedef): If the parent fails to load
13238         (calling mono_class_get_full) return NULL.
13239         
13240         ** Important **
13241
13242         calls to mono_metadata_parse_type_full should be checked
13243         everywhere and set the mono_class_set_failure
13244         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13245
13246         The current patch checks the places where my manually constructed
13247         tests show the errors are showing up, but we should do it
13248         everywhere. 
13249
13250         ** Important2 **
13251
13252         mono_class_init return values should be tested everywhere, like
13253         the previous case this is something that we should audit
13254         everywhere and not only on the cases exposed by the tests I
13255         created. 
13256
13257 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13258
13259         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13260         boolean parameter and instead pass the information on `options'
13261         parameter (FileOptions).
13262
13263         * icall.c: Register the new signature for MonoIO.Open.
13264
13265         * debug-helpers.c (dis_one): Trying to understand how coverity
13266         works.  Fix Run 5, item 78.
13267
13268 2006-04-26  Dick Porter  <dick@ximian.com>
13269
13270         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13271         dereference.
13272
13273 2006-04-25  Martin Baulig  <martin@ximian.com>
13274
13275         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13276
13277         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13278         debugger_thread_created().
13279         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13280         special way.
13281         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13282         (mono_debugger_finalize_threads): New function; undo the effects
13283         of mono_debugger_init_threads().
13284         (mono_debugger_create_all_threads): Removed.
13285
13286 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13287
13288         * image.c (mono_image_close): Tidy up trace messages.
13289
13290         * assembly.c (mono_assembly_close): Ditto.
13291
13292         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13293         no longer references an already freed assembly. Fixes #78168.
13294
13295 2006-04-21  Dick Porter  <dick@ximian.com>
13296
13297         * threads.c (mono_thread_detach): Fix reference counting when
13298         detaching threads.
13299
13300 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13301
13302         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13303         #78155.
13304
13305 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13306
13307         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13308         (mono_type_to_stind): Ditto.
13309
13310         * marshal.c: Use the new helper functions to simplify code.
13311
13312         * image.c (mono_image_close): Add some code for help debug assembly unloading
13313         problems.
13314
13315         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13316         image mempool.
13317
13318         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
13319         assembly was already loaded in another appdomain. Fixes #78083.
13320
13321 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
13322
13323         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
13324         referenced assemblies.
13325         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
13326
13327         * domain.c (mono_domain_free): Add a trace message.
13328
13329         * appdomain.c (add_assemblies_to_domain): Ditto.        
13330
13331         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
13332         field.  
13333
13334 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13335
13336         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
13337
13338 2006-04-12  Martin Baulig  <martin@ximian.com>
13339
13340         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
13341         `USE_INCLUDED_LIBGC'.   
13342
13343 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13344
13345         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
13346         the patch contains ../ and a small directory name later. Hopefully fixes
13347         #78035.
13348
13349 2006-04-10  Martin Baulig  <martin@ximian.com>
13350
13351         Clean up the debugger's thread-handling code.
13352
13353         The debugger's thread-handling code has been moved from
13354         ../mini/debug-debugger.c to threads.c.  We now iterate directly
13355         over the `threads' hash, keep track of exiting threads and also
13356         use proper locking.
13357
13358         We can now debug XSP and XSP based applications with the debugger.
13359
13360         * object-internals.h (MonoThread): Added `gpointer end_stack'.
13361
13362         * threads.h
13363         (MonoThreadCallbacks): Removed; this was only used by the debugger.
13364         (mono_install_thread_callbacks): Likewise.      
13365
13366         * threads.c (mono_thread_callbacks): Removed.
13367         (debugger_thread_created, debugger_thread_exited): New static functions.
13368         (start_wrapper): Call debugger_thread_created().
13369         (thread_cleanup): Call debugger_thread_exited().
13370         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
13371         (mono_debugger_init_threads): New public function.
13372         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
13373         iterate directly over the `threads' hash and also use proper locking.
13374
13375         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
13376
13377         * mono-debug-debugger.h
13378         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
13379
13380 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13381
13382         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
13383         argument type=array. Fixes #78057.
13384
13385 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
13386
13387         * culture-info-table.h : regenerated. Fixed bug #69652.
13388
13389 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13390
13391         * loader.c metadata.c: Reapply a variant r59116.
13392         
13393         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
13394
13395         * class.c (mono_class_setup_interface_offsets): New internal function.
13396
13397         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
13398         interfaces too. Fixes #77398.
13399
13400         * reflection.c (encode_cattr_value): Add support for 
13401         parameter type=object, argument type=array.
13402         (load_cattr_value): Ditto. Fixes #77916.
13403
13404         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
13405         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
13406
13407         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
13408         a byval char array and CharSet is Ansi.
13409
13410         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
13411
13412 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * metadata.c: Add some locking comments.
13415         
13416         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
13417         mempool.
13418         (mono_metadata_free_method_signature): Don't free the signature itself.
13419
13420         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
13421
13422         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
13423         reference the same MonoImage.
13424         (mono_assembly_load_from_full): Add an assert.
13425
13426 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13427
13428         * image.c (mono_image_close): Don't put the image we are about to free into the
13429         loaded_images_guid_hash.
13430
13431         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
13432         to reduce code duplication.
13433
13434         * marshal.c: Register the native functions called by this module as icalls, to
13435         somewhat centralize the creation of MonoMethodSignature's.
13436
13437         * loader.c (mono_method_signature): Add a cache for method signatures.
13438
13439         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
13440         the parameter attributes of a method.
13441         (mono_metadata_parse_method_signature_full): Refactored the computation of
13442         parameter attributes into a separate function. Also avoid one allocation in
13443         most cases.
13444
13445         * assembly.c (mono_assembly_close): Ditto.
13446
13447         * image.c (mono_image_close): Log trace messages with INFO level.
13448
13449         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
13450
13451         * image.c reflection.c: Correct reference counting of image modules.
13452         
13453         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
13454         of this function from the image mempool.
13455         
13456         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
13457         to allow more cached types to be used.
13458
13459         * mono-debug.c (mono_debug_add_method): Appled patch from
13460         David S. Miller  <davem@sunset.davemloft.net>: Access 
13461         minfo->lexical_blocks[] entry elements using read32().
13462
13463 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13464
13465         * loader.c (mono_free_method): No longer free the method header for non-dynamic
13466         methods as it is allocated from the mempool.
13467
13468         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
13469         image mempool.
13470
13471         * metadata-internals.h: Add comments describing the reference counting scheme
13472         used for MonoImage and MonoAssembly.
13473
13474         * image.c assembly.c reflection.c: Rework reference counting of images and 
13475         assemblies so they are freed when the runtime is shut down. Free some 
13476         additional memory structures when an image is unloaded.
13477         
13478 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * class.c loader.c reflection.c: Allocate more data structures in
13481         the image mempool.
13482
13483 2006-03-31  Miguel de Icaza  <miguel@novell.com>
13484
13485         * icall.c
13486         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
13487         build on pre glib 2.4 systems.
13488
13489 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13490
13491         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
13492
13493         * icall.c: Fix some warnings.
13494
13495 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
13496
13497         * culture-info-table.h : regenerated.
13498
13499 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
13500
13501         * threads.c, object-internals.h, verify.c: changed the culture caching
13502         code to use a normal MonoArray for storage so the GC can keep track of
13503         them easily. Fixed bits of the cache logic, too and simplified the
13504         code.
13505
13506 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
13507
13508         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
13509         thread for non-Boehm GCs.
13510
13511 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
13512
13513         * domain.c, object.c, domain-internals.h: reduce the amount of memory
13514         needed to keep track of the data for static fields.
13515
13516 2006-03-29  Raja R Harinath  <rharinath@novell.com>
13517
13518         Fix #75172
13519         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
13520         for interface classes.  Use 'num_methods' instead.
13521         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
13522         before using '->vtable_size' field.
13523
13524 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13525
13526         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
13527         doesn't contain managed pointers, so use a normal hashtable.
13528
13529 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13530
13531         * reflection.c, class-internals.h, domain.c: fixed handling of types
13532         used as values for objects in custom attributes (bug #77915):
13533
13534 2006-03-24  Martin Baulig  <martin@ximian.com>
13535
13536         * class.c (mono_class_setup_fields): Added support for generic
13537         instances; fixes #77580.
13538
13539 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13540
13541         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
13542
13543 2006-03-24  Dick Porter  <dick@ximian.com>
13544
13545         * file-io.c (get_file_attributes): More stat macro breakage.
13546         Fixes bug 77759.
13547
13548 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
13549
13550         * profiler.c: added the file=filename option in the default profiler
13551         to output the profile data to filename.
13552
13553 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13554
13555         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
13556         bug #77877.
13557
13558 2006-03-22  Martin Baulig  <martin@ximian.com>
13559
13560         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
13561         allocated `MonoClassField *' in `fb->handle'.
13562
13563 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13564
13565         * class.c, image.c, metadata-internals.h: implemented new mechanism to
13566         allocate interface ID to save memory and allow better ID reuse on
13567         appdomain unload. setup_generic_vtable () removal from Martin.
13568
13569 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13570
13571         * object.h, appdomain.c, domain.c, exception.c, icall.c,
13572         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
13573         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
13574         write barriers for reference stores with managed objects accessed with
13575         C structures in the runtime and in embedding programs.
13576
13577 2006-03-20  Raja R Harinath  <rharinath@novell.com>
13578
13579         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
13580         'interface_id' and 'max_interface_id' fields of MonoClasses
13581         representing open generic types.
13582
13583 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
13584
13585         * object.h, object.c, icall.c: added functions to deal with
13586         storing valuetypes that contain references in managed objects.
13587         * reflection.c, string-icalls.c, threads.c, marshal.c: small
13588         fixes and comments around uses of mono_array_addr ().
13589
13590 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
13591
13592         * object.h, icall.c, monitor.c: object.GetHashCode ()
13593         implementation that supports the moving garbage collector.
13594
13595 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13596
13597         * icall.c, threads-types.h, threads.c: implemented finalizer for
13598         LocalDataStoreSlot.
13599
13600 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13601
13602         * metadata.c (mono_type_size): Add a fixme.
13603         (mono_type_stack_size): Ditto.
13604
13605         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
13606         'type_forwarders' field.
13607
13608         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
13609         attribute from net 2.0.
13610
13611         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
13612         from class.c.
13613
13614         * class.c (mono_class_setup_fields): Fix a warning.
13615         
13616         * class.c (mono_class_from_name): Add support for assemblyref entries
13617         in the EXPORTEDTYPE table.
13618
13619         * reflection.c: Add support for handling type forwarders under net 2.0.
13620
13621         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
13622         
13623 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
13626         overwriting entries in ModuleBuild->types, also clean up the code
13627         a little. Fixes #77774.
13628
13629 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13630
13631         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
13632         load friend assembly info when present.
13633
13634 2006-03-14  Raja R Harinath  <rharinath@novell.com>
13635
13636         Fix crasher on gtest-158.cs.
13637         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
13638         the return value if the MonoClass we want is yet in an
13639         inconsistent state.
13640         * class.c (mono_class_create_from_typedef): Add an comment
13641         explaining an order dependency between mono_class_setup_parent and
13642         mono_class_setup_mono_type.
13643
13644 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13645
13646         * class.c: documentation updates and events bug fix.
13647
13648 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
13649
13650         * class.c: some cleanup, locking fixes.
13651
13652 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13653
13654         * class.c: fix the generics code to setup nested
13655         type info to the instantiated type (bug #77770).
13656
13657 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13658
13659         * marshal.c: fixed a few type correctness issues.
13660
13661 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13662
13663         * loader.c: the Set/Get/Addrtess array methods should be public.
13664
13665 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13666
13667         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
13668         
13669         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
13670         info->wrapper.
13671
13672 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13673
13674         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
13675
13676         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
13677
13678         * mempool.c (mono_mempool_alloc): Speed this up a bit.
13679         (mono_mempool_alloc0): Ditto.
13680
13681 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13682
13683         * socket-io.c:
13684         (create_object_from_sockaddr): it was allocating 4 extra bytes
13685         for the AF_UNIX data. Fixes bug #77747.
13686
13687 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13688
13689         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
13690
13691 2006-03-09  Dick Porter  <dick@ximian.com>
13692
13693         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
13694         Fixes bug 76966 again.
13695
13696 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
13697
13698         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
13699         names from r57532
13700         * appdomain.c: Bumped corlib version to 48 (due to r57532)
13701
13702 2006-03-07  Martin Baulig  <martin@ximian.com>
13703
13704         * object.c
13705         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
13706
13707 2006-03-07  Martin Baulig  <martin@ximian.com>
13708
13709         * class.c
13710         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
13711         regression introduced in r56970; see gtest-252.cs.
13712
13713         * loader.c (mono_get_method_constrained): Correctly handle generic
13714         methods; see gtest-253.cs.
13715
13716 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13717
13718         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
13719
13720 2006-03-04  Martin Baulig  <martin@ximian.com>
13721
13722         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
13723         compute the parent type at runtime, just like we're already doing
13724         it for interfaces.
13725
13726         * reflection.c
13727         (mono_reflection_bind_generic_parameters): Don't compute the
13728         parent type anymore.
13729
13730         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
13731
13732 2006-03-04  Martin Baulig  <martin@ximian.com>
13733
13734         * mono-debug-debugger.h
13735         (mono_debugger_create_notification_function): Allocate memory at
13736         runtime and return a pointer to it.
13737
13738 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
13739
13740         * assembly.c: Fix windows build.
13741         
13742         * assembly.c: Fix build.
13743
13744         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
13745
13746         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
13747         
13748 2006-03-03  Dick Porter  <dick@ximian.com>
13749
13750         * process.c
13751         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
13752         Check parameters before dereferencing them.  Fixes Aaron's part of
13753         bug 77393.
13754
13755 2006-03-03  Raja R Harinath  <rharinath@novell.com>
13756
13757         Fix performance regression.
13758         * loader.c (find_method_in_class): Add 'from_class' argument.
13759         Rename 'klass' argument to 'in_class'.  The signature is compared
13760         against the method in 'in_class', and the corresponding method is
13761         returned from 'from_class'.
13762         (find_method): Walk both 'in_class' and 'from_class' in parallel.
13763         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
13764         type definition and generic instantiation in parallel.
13765         (mono_get_method_constrained): Update to changes.
13766
13767 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13768
13769         * threads.c: make sure the domain is correct, too when doing
13770         mono_thread_attach ().
13771
13772 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
13773
13774         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
13775         windows. Fixes #77683.
13776
13777 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13778
13779         * object.h, *: introduced specific way to set elements of an array
13780         of references to be used as write barrier. Still need to audit the
13781         uses of mono_array_addr.
13782
13783 2006-03-01  Miguel de Icaza  <miguel@novell.com>
13784
13785         * object-internals.h: New field to cache the assmebly name, patch
13786         from Tambet Ingo (tambet@ximian.com)
13787
13788 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13789
13790         * decimal.h, class-internals.h, metadata-internals.h,
13791         file-io.h: mark a few function declarations as internal, to
13792         reduce the number of PLT entries.
13793
13794 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13795
13796         * file-io.c: fix typo in warning message.
13797
13798 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
13799
13800         * loader.c: on unix, lookup the "*A" version of a function
13801         if charset is auto as a second option before failing.
13802
13803 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13804
13805         * class.h (mono_class_inflate_generic_method): Revert to two
13806         argument version.
13807         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
13808         (mono_class_inflate_generic_method_full): Add.
13809         * class.c (mono_class_inflate_generic_method_full): Rename from
13810         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
13811         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
13812         * loader.c, reflection.c: Update to changes.
13813
13814 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13815
13816         * icall.c: const fixes and small improvements.
13817
13818 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13819
13820         * threadpool.c: for asynchronous connect(), enable the same workaround
13821         for BSD 6 as for the Mac. Fixes bug #77637.
13822
13823 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13824
13825         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
13826         formatted classes. Fixes #77524.
13827
13828 2006-02-24  Raja R Harinath  <rharinath@novell.com>
13829
13830         * class.c (inflate_generic_type): Add a couple more
13831         micro-optimizations.
13832         (inflate_generic_context): Don't use the 'gmethod' from
13833         'inflate_with'.
13834         (mono_class_inflate_generic_method): If the method has generic
13835         parameters, but the passed-in context doesn't have a 'gmethod',
13836         create one.  Use the possibly simplified generic instantiation
13837         from the declaring class instead of the one passed in.
13838
13839 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13840
13841         Make generic method signature and method header handling lazy.
13842         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
13843         (inflate_generic_header): Likewise.
13844         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
13845         parameter to avoid inflating types.
13846         (mono_get_inflated_method): Empty out.
13847         * class.h (mono_class_inflate_generic_method): Update to changes.
13848         * loader.c (mono_get_method_from_token): Don't parse signature for
13849         generic methods, nor methods of generic classes.
13850         (mono_method_signature): Rename from 'mono_method_signature'.
13851         Inflate signature on demand.
13852         (mono_method_get_header): Inflate method header on demand.
13853         * reflection.c: Update to changes.
13854
13855 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13856
13857         * metadata.c (mono_metadata_inflate_generic_inst): If the
13858         instantiation is closed, don't bother expanding it in the new
13859         context.
13860         * class.c (inflate_generic_class): If the generic instantiation
13861         doesn't change after inflation, return the argument itself.
13862         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
13863         Add bounds checks.
13864         (inflate_generic_context): If neither the generic class nor the
13865         generic method instantiations change, return the original context.
13866         * reflection.c (mono_method_get_object): Do
13867         'mono_get_inflated_method' before accessing the ->klass field.
13868         (inflate_mono_method): Don't create a MonoGenericMethod unless
13869         necessary.
13870         (inflate_method): Don't pass a constructed type as the declaring
13871         type of a methodbuilder.
13872
13873 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
13874
13875         * object.c: fix memory overwrite.
13876
13877 2006-02-22  Dick Porter  <dick@ximian.com>
13878
13879         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
13880         it doesn't work any more.
13881         (mono_threads_request_thread_dump): Fix unused variable warnings.
13882
13883 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13884
13885         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
13886         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
13887         the public header file.
13888
13889 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
13890
13891         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
13892
13893 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13894
13895         * class-internals.h, object.c: reduce the size of MonoVTable
13896         and store the interface_offsets array at negative offsets.
13897
13898 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13899
13900         * metadata.c: tweak table descriptors data structures to reduce
13901         size and runtime relocations.
13902
13903 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13904
13905         * marshal.c: fix some types and opcodes to be type-safe
13906         in marshaling wrappers.
13907
13908 2006-02-21  Ankit Jain  <jankit@novell.com>
13909
13910         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
13911
13912 2006-02-21  Raja R Harinath  <rharinath@novell.com>
13913
13914         * metadata.c (get_constraints): Relax debugging checks for monodis.
13915
13916 2006-02-21  Ankit Jain  <jankit@novell.com>
13917
13918         * metadata.c (mono_metadata_load_generic_params): Move the code
13919         checking for ambiguous generic params from here to mono/dis/get.c
13920         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
13921
13922 2006-02-21  Raja R Harinath  <harinath@gmail.com>
13923
13924         Fix assertion triggered when compiling nemerle.
13925         * class.c (mono_get_shared_generic_inst): Rename from
13926         get_shared_inst and make non-static.
13927         * loader.c (mono_get_shared_generic_method): New.  Used to create
13928         the MonoGenericContext-equivalent of a MonoGenericContainer.
13929         (mono_get_method_from_token): Initialize the 'context' field of
13930         the created MonoGenericContainer.
13931         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
13932         * metadata.c (get_constraints): Add sanity check.
13933         * class-internals.h: Add new internal methods.
13934
13935         * reflection.c (verify_safe_for_managed_space): New sanity check.
13936         Currently checks that owner-less generic parameters aren't allowed
13937         in managed space.
13938         (mono_type_get_object): Use it.
13939         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
13940         that are now in mono_type_get_object.
13941         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
13942
13943 2006-02-19  Raja R Harinath  <harinath@gmail.com>
13944
13945         * metadata.c (mono_type_create_from_typespec): Rename from
13946         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
13947         argument and caching of types in the generic container.
13948         (unwrap_arrays, find_generic_param): Remove.
13949         * metadata-internals.h: Update.
13950         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
13951
13952 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
13953
13954         * class.c (mono_class_get_exception_for_failure): Fix a warning.
13955
13956         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
13957         return values. Fixes #77581.
13958
13959         * class.c (mono_fnptr_class_get): Switch name and name_space.
13960
13961         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
13962         classes and add support for [In, Out] attributes.
13963         (mono_marshal_free_asany): Ditto. Fixes #77524.
13964
13965 2006-02-18  Raja R Harinath  <harinath@gmail.com>
13966
13967         * class.c (mono_class_from_generic_parameter): Make more robust to
13968         incomplete MonoGenericContainers from monodis.
13969
13970 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
13971
13972         * class-internals.h: added some more exception types.
13973         * class.c, metadata.c: added a few checks to handle missing
13974         types.
13975
13976 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13977
13978         Use owner-less generic-params some more.
13979         * class.c (my_mono_class_from_generic_parameter): Remove.
13980         (mono_class_from_generic_parameter): Handle null image,
13981         param->name and param->owner.
13982         (mono_class_from_mono_type): Update.
13983         (mono_class_create_from_typespec): Remove 'container' parameter.
13984         If that parameter is non-null, the result is always inflated by
13985         'mono_class_get_full' anyway.
13986         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
13987         parameter.
13988         (mono_class_get_full): Update.
13989
13990         * class.c (inflate_generic_type) [GENERICINST]: If the generic
13991         instance is not open, don't bother inflating.
13992         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
13993         parse metadata for inflated classes.
13994         (_mono_class_get): Change GenericContext* parameter to
13995         GenericContainer*.
13996         (mono_class_create_from_typespec): Likewise.  Simplify, and
13997         implement trivially.  All the cases are handled in
13998         mono_class_from_mono_type.  Don't inflate returned class.
13999         (mono_class_get_full): Delegate GENERICINST optimization to
14000         inflate_generic_type.
14001         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
14002
14003 2006-02-16  Dick Porter  <dick@ximian.com>
14004
14005         * socket-io.c (create_object_from_sockaddr): Fix typo.
14006         (create_sockaddr_from_object): Check array lengths before
14007         potentially accessing items off the end.
14008         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14009         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14010         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14011         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14012         length checks to avoid wraparound overflows.
14013         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14014         contents of the array of sockets
14015         (hostent_to_IPHostEntry2)
14016         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14017         Check return value of inet_ntop ().
14018         (addrinfo_to_IPHostEntry): Fix typo
14019
14020 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14021
14022         Type metadata parsing doesn't use generic-instantiation information.
14023         * metadata.c (mono_metadata_parse_array_full): Change
14024         MonoGenericContext* parameter to MonoGenericContainer*.
14025         (mono_metadata_parse_type_full): Likewise.
14026         (mono_type_create_from_typespec_full): Likewise.
14027         (mono_metadata_parse_mh_full): Likewise.
14028         (mono_metadata_parse_generic_inst): Likewise.
14029         (do_mono_metadata_parse_generic_class): Likewise.
14030         (do_mono_metadata_parse_type): Likewise.
14031         * metadata-internals.h: Update to changes.
14032         * class.c (mono_class_find_enum_basetype): Likewise.
14033         (mono_class_setup_fields): Likewise.
14034         (mono_class_create_from_typespec): Likewise.
14035         * loader.c (method_from_methodspec): Likewise.
14036         (mono_get_method_from_token): Likewise.
14037         (mono_method_get_header): Likewise.
14038
14039 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14040
14041         * marshal.c: handle additional GENERICINST case (patch from
14042         Thong Nguyen <tum@veridicus.com>).
14043         Fix a few cases where LDIND_I/STIND_I was used for references.
14044
14045 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14046
14047         * reflection.c (mono_reflection_get_token): Remove unused variable.
14048
14049 2006-02-16  Martin Baulig  <martin@ximian.com>
14050
14051         * reflection.c (mono_reflection_get_token): Add support for fields
14052         in instantiated generic types.
14053
14054         * icall.c
14055         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14056
14057 2006-02-15  Martin Baulig  <martin@ximian.com>
14058
14059         * icall.c
14060         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14061         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14062         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14063         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14064
14065 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14066
14067         * class.c, metadata.c, metadata.h, object.c, icall.c,
14068         marshal.c: changed mono_type_get_underlying_type () to do
14069         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14070         Fixed handling of instantiated generic valuetypes (bug #75479).
14071
14072 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14073
14074         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14075         Delegate to mono_metadata_decode_value, and work on the returned value.
14076
14077         * icall.c (ves_icall_MonoType_GetGenericArguments):
14078         Add consistency check here too.
14079         
14080 2006-02-15  Ankit Jain  <jankit@novell.com>
14081
14082         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14083         char/short etc.
14084
14085 2006-02-15  Ankit Jain  <jankit@novell.com>
14086
14087         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14088         signed values, used only for representing lower bounds of arrays.
14089         (mono_metadata_parse_array_full): Use new
14090         mono_metadata_decode_signed_value to decode lower bounds.
14091
14092 2006-02-14  Martin Baulig  <martin@ximian.com>
14093
14094         * reflection.c
14095         (mono_reflection_get_token): Support "MonoGenericMethod" and
14096         "MonoGenericCMethod" and allow generic instances / methods.
14097
14098 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14099
14100         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14101         to obtain the terminal size using an ioctl.
14102
14103         * object.c (mono_nullable_init): Revert this as nullable reference
14104         types are not valid.
14105         (mono_nullable_box): Ditto.
14106
14107 2006-02-09  Dick Porter  <dick@ximian.com>
14108
14109         * threads.c (mono_thread_detach): Drop a reference to the thread
14110         we're detaching.
14111
14112 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * object.c (mono_nullable_init): Handle nullable reference types.
14115         (mono_nullable_box): Ditto. Fixes #77446.
14116
14117 2006-02-07  Martin Baulig  <martin@ximian.com>
14118
14119         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14120
14121 2006-02-07  Ankit Jain  <jankit@novell.com>
14122
14123         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14124         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14125         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14126         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14127         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14128         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14129
14130 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14131
14132         * class.c (mono_class_create_generic): Set type_token as well.
14133
14134         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14135         compatible with MS.
14136
14137 2006-02-02  Martin Baulig  <martin@ximian.com>
14138
14139         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14140         has never been used so far.
14141
14142 2006-02-02  Martin Baulig  <martin@ximian.com>
14143
14144         * mono-debug-debugger.h: Changed comment at the top of this file;
14145         the header is not installed, but it's safe to #include it from
14146         within the JIT.
14147
14148         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14149         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14150
14151 2006-02-02  Martin Baulig  <martin@ximian.com>
14152
14153         * mono-debug.h
14154         (MonoSymbolTable): Removed the `metadata_info' field.
14155
14156         * mono-debug.c
14157         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14158
14159         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14160         (mono_debugger_add_builtin_types): Removed.
14161         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14162         (mono_debugger_create_notification_function): We now operate on a
14163         pre-allocated area; take a `gpointer' and return `void'.
14164
14165         * mono-debug-debugger.c
14166         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14167         (mono_debugger_add_builtin_types): Removed.
14168
14169 2006-02-02  Martin Baulig  <martin@ximian.com>
14170
14171         * threads.c (mono_debugger_create_all_threads): New public method.
14172
14173 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14174
14175         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14176         breaks on several platforms.
14177
14178 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14179
14180         * assembly.c: the VS.NET build doesn't supply default values for
14181         MONO_ASSEMBLIES and MONO_CFG_DIR.
14182
14183 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14186         helper function.
14187
14188         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14189
14190         * loader.c (method_from_memberref): Fix a warning.
14191
14192         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14193
14194         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14195         with explicit layout. Fixes #77433.
14196
14197 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14198
14199         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14200         max_interface_id is initialized before using it. Fixes #77398.
14201         (ves_icall_Type_GetInterfaces): Ditto.
14202
14203 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14204
14205         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14206         allocate memory for parameter attributes when parsing memberref
14207         signatures.
14208         * loader.c (mono_loader_set_error_method_load): Don't warn.
14209         (method_from_memberref): Ensure MissingMethodException gets thrown
14210         if method is not found.  Make warning more informative.
14211
14212 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14213
14214         Fix #77397
14215         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14216         return true if is byref.
14217         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14218         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14219         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14220
14221 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14222
14223         Fix tests/find-method.2.il
14224         * loader.c (find_method, find_method_in_class): Remove is_inflated
14225         argument.  Revert 2006-01-18 change.
14226         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14227         is generic, search for method in its generic definition.
14228         * class.c (mono_class_setup_vtable_general): Print generic
14229         arguments of generic types in debugging printf.
14230
14231 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14232
14233         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14234
14235         * threads.c (mono_threads_request_thread_dump): New helper function.
14236
14237 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14238
14239         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14240
14241 2006-01-25  Ankit Jain  <jankit@novell.com>
14242
14243         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14244         move definition to ..
14245         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14246         
14247 2006-01-25  Ankit Jain  <jankit@novell.com>
14248             Raja R Harinath  <rharinath@novell.com>
14249
14250         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14251         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14252         as necessary.
14253
14254 2006-01-25  Martin Baulig  <martin@ximian.com>
14255
14256         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14257         `MonoDebuggerThread' into debug-debugger.c.
14258
14259 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14260
14261         * profiler.c: fix printing of data.
14262
14263 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14264
14265         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14266           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14267
14268 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14269
14270         * object.c: fix deadlock related to string interning.
14271
14272 2006-01-23  Martin Baulig  <martin@ximian.com>
14273
14274         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14275
14276         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14277
14278 2006-01-23  Martin Baulig  <martin@ximian.com>
14279
14280         * mono-debug.h: Moved the prototypes of some functions which are
14281         used by the JIT here from mono-debug-debugger.h.
14282
14283 2006-01-21  Martin Baulig  <martin@ximian.com>
14284
14285         * Makefile.am: Don't install mono-debug-debugger.h.
14286
14287 2006-01-21  Martin Baulig  <martin@ximian.com>
14288
14289         * mono-debug-debugger.h: Enforce the private status of this header
14290         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14291         Moved some stuff from mono-debugger-jit-wrapper.h here.
14292
14293 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14294
14295         * class.c (mono_class_from_typeref): Add a sanity test to help
14296         catch lack of assembly load/search hooks.
14297
14298 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14299
14300         * marshal.c (emit_struct_conv): Relax the fields with same offset
14301         check even more. Fixes #77230.
14302
14303 2006-01-18  Martin Baulig  <martin@ximian.com>
14304
14305         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14306         argument; if false, we compare the uninstantiated signatures.
14307         (method_from_memberref): Compare the uninstantiated signatures;
14308         fixes #76417.
14309
14310 2006-01-18  Robert Jordan  <robertj@gmx.net>
14311
14312         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14313         Clear the weak link. Fixes bug #77170.
14314
14315         * gc.c (mono_gchandle_free):
14316         Reflect *-gc.c changes (tiny optimization).
14317
14318 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
14319
14320         * metadata.c (mono_metadata_signature_dup): Applied patch from
14321         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
14322         Fixes #77288.
14323
14324 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14325
14326         * marshal.c (emit_struct_conv): Allow fields with the same offset when
14327         marshalling from native to managed code. Fixes #77230.
14328
14329 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14330
14331         * threadpool.c: fix problem (Mac only) when more than one asynchronous
14332         connect. Fixes bug #77020.
14333
14334 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14335
14336         * class.c: fixed id assignement for nested interfaces (bug #77275).
14337         Added also better info for --print-vtable debugging.
14338
14339 2006-01-12  Martin Baulig  <martin@ximian.com>
14340
14341         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
14342         interfaces on-the-fly; fixes #76625.
14343
14344         * class-internals.h
14345         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
14346         don't need that anymore.
14347
14348 2006-01-12  Miguel de Icaza  <miguel@novell.com>
14349
14350         * socket-io.c
14351         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14352         To avoid initing the nested_classes when not needed I turned the
14353         PeerCredData as a toplevel internal class, as it has to be shared
14354         anyways. 
14355
14356         Fixes the CASA issue.
14357
14358 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14359
14360         * domain.c: Accessors for MonoJitInfo
14361
14362         * profiler-private.h: Add jitinfo to the end jit hook
14363
14364         * profiler.[ch]: Define new hooks, called after jitting which give
14365         the MonoJitInfo that was compiled
14366
14367 2006-01-10  Martin Baulig  <martin@ximian.com>
14368
14369         * class.c (mono_class_setup_events): Add support for generic
14370         classes; fixes #76440.
14371
14372 2006-01-06  Raja R Harinath  <rharinath@novell.com>
14373
14374         Fix #77160.
14375         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
14376         on passed-in method.
14377
14378 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14379
14380         * object.c (mono_runtime_invoke_array): Add Nullable support.
14381
14382         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
14383
14384 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
14385
14386         * file-io.c: Don't consider sockets as directory and avoid an endless
14387         loop. Fix bug #76966.
14388
14389 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14390
14391         * object.c (mono_nullable_init): New helper function.
14392         (mono_nullable_box): Ditto.
14393
14394         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
14395
14396         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
14397
14398         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
14399         
14400 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
14401
14402         * class.c (mono_class_is_assignable_from): Make T assignable to 
14403         Nullable<T>.
14404
14405 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
14406
14407         * appdomain.c: Bump corlib version to 46.
14408         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
14409         serialization purpose) and changed ves_icall_System_Reflection_
14410         Assembly_get_code_base signature to accept a boolean (to escape, or 
14411         not, the assembly code base).
14412
14413 2005-12-23  Dick Porter  <dick@ximian.com>
14414
14415         * icall.c: 
14416         * threads-types.h: 
14417         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
14418         CreateEvent icall now returns "created" boolean parameter.
14419
14420 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14421
14422         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
14423         #76967.
14424
14425         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
14426         when attr_klass is an interface. Fixes #77045.
14427
14428 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
14429
14430         * marshal.c (emit_struct_conv): Fix previous patch.
14431         
14432         * marshal.c (emit_struct_conv): Add a check for fields with the same
14433         offset.
14434
14435 2005-12-20  Raja R Harinath  <rharinath@novell.com>
14436
14437         Fix regression in Mono.C5.
14438         * class.c (mono_class_create_generic): If 'klass' is an interface
14439         set up the interface offsets.
14440         (mono_class_is_assignable_from): Don't throw away generic arguments.
14441
14442 2005-12-19  Raja R Harinath  <rharinath@novell.com>
14443
14444         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
14445         type parameters.
14446
14447 2005-12-15  Raja R Harinath  <rharinath@novell.com>
14448
14449         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
14450         dead store.
14451         (do_mono_metadata_parse_generic_class): Don't pass the current
14452         generic context when parsing the type being instantiated: it
14453         cannot use it, anyway.
14454
14455         * loader.c (method_from_memberref): Don't inflate a signature if
14456         it doesn't contain any type parameters.
14457
14458 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14459
14460         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
14461
14462 2005-12-14  Martin Baulig  <martin@ximian.com>
14463
14464         * class.c
14465         (mono_type_get_name_recurse): Don't return null for type
14466         parameters and open generic classes.
14467         (mono_class_setup_methods): Don't exclude generic instances.
14468         (mono_get_unique_iid): Use different IDs for different
14469         instantiations of the same generic type.
14470         (mono_class_setup_vtable): Only use setup_generic_vtable() for
14471         open generic instances; create a normal vtable for closed generic
14472         instances.
14473         (mono_class_setup_vtable_general): We're now also called for
14474         closed generic instances.
14475
14476         * reflection.c
14477         (mono_reflection_bind_generic_parameters): Correctly use
14478         mono_metadata_lookup_generic_inst() everywhere.
14479
14480 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
14481
14482         * object.c (mono_class_create_runtime_vtable): Call 
14483         mono_class_setup_vtable ().
14484
14485         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
14486         function.
14487         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
14488         #76959.
14489
14490         * loader.c (mono_loader_set_error_type_load): Print the type load
14491         warnings to the console so they are more visible to the user.
14492         (mono_loader_set_error_method_load): Ditto.
14493
14494         * reflection.c (ensure_runtime_vtable): Revert the last change as it
14495         is still broken.
14496         
14497         * reflection.c (ensure_runtime_vtable): Fix build.
14498
14499         * reflection.c (ensure_runtime_vtable): Disable an optimization which
14500         doesn't work in all cases.
14501
14502 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
14503
14504         * object.c (mono_array_new_full): Treat a single dimensional array
14505         with 0 lower bounds as an szarray. Fixes #76973.
14506
14507         * reflection.c (custom_attr_visible): Really fix this.
14508
14509 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
14510
14511         * reflection.c (custom_attr_visible): Allow nested public attributes
14512         as well.
14513
14514         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
14515         interface check.
14516
14517 2005-12-12  Raja R Harinath  <harinath@gmail.com>
14518
14519         * class.c (set_generic_param_owner): Delete.
14520         (mono_class_create_from_typedef): Don't set ->owner field of
14521         generic parameters to "param containers" of enclosing classes.
14522         * reflection.c (mono_reflection_initialize_generic_parameter):
14523         Likewise.
14524
14525 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
14526
14527         * reflection.c (custom_attr_visible): Fix build.
14528
14529 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
14530
14531         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
14532         private attributes.
14533         
14534         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
14535         handling of null parameter defaults.
14536
14537 2005-12-09  Raja R Harinath  <rharinath@novell.com>
14538
14539         * class.c (mono_class_from_generic_parameter): Don't set
14540         klass->generic_container.
14541         (my_mono_class_from_generic_parameter): Likewise.
14542
14543 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14544
14545         * reflection.c (load_public_key): Fix a warning.
14546         (method_encode_code): Fix unaligned accesses.
14547
14548 2005-12-07  Martin Baulig  <martin@ximian.com>
14549
14550         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
14551
14552         * reflection.c
14553         (write_generic_param_entry): Encode our custom attrs.
14554
14555         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
14556
14557 2005-12-07  Martin Baulig  <martin@ximian.com>
14558
14559         * reflection.c (encode_new_constraint): Removed; we don't use the
14560         `NewConstraintAttribute' anymore.
14561
14562 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14563
14564         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
14565         not fire a TypeResolve event when Assembly.GetType () is called.
14566
14567 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14568
14569         Beginning of support for nullable types in the runtime. Parts of
14570         this patch are from Martin.
14571
14572         * appdomain.c (MONO_CORLIB_VERSION): Bump
14573
14574         * domain.c (mono_init_internal): get the nullable type
14575
14576         * class.c (mono_class_is_nullable): New method
14577         (mono_class_get_nullable_param): New mehod
14578         (mono_class_create_generic): In types T? set cast_class to T
14579
14580         * class-internals.h (MonoDefaults): new nullable default class
14581         (mono_class_get_nullable_param, mono_class_get_nullable_param):
14582         new methods.
14583
14584 2005-12-05  Raja R Harinath  <rharinath@novell.com>
14585
14586         * metadata.c (select_container): New.  Refactor code to select the
14587         appropriate GenericContainer given the type of generic parameter
14588         we are looking for.
14589         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
14590         not a MonoGenericContext.  Use select_container.  Update parameters.
14591         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
14592         and MONO_TYPE_MVAR.
14593         (unwrap_arrays): Remove duplicate tests.
14594         (find_generic_param): Rename from 'has_same_context'.  Now walks a
14595         generic instantiated class to find any arguments that are generic
14596         parameters.
14597         (mono_type_create_from_typespec_full): Use find_generic_param to
14598         avoid evicting some generic instantiations from the typespec
14599         cache.
14600
14601 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
14602
14603         * reflection.c: fixed writing of doubles on ARM FPA.
14604
14605 2005-12-02  Robert Jordan  <robertj@gmx.net>
14606
14607         * icall.c: Fixed EventInfo.ReflectedType (#76829).
14608
14609 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14610
14611         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
14612         least on SUSE 10 they are not the same (on debian, they are just the
14613         same thing).
14614
14615 2005-12-01  Raja R Harinath  <rharinath@novell.com>
14616
14617         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
14618         DeclaringType for VARs and MVARs.
14619         * class.c (set_generic_param_owner): Fix initialization of owner
14620         fields.
14621
14622 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
14623
14624         * icall.c: fixed Enum.ToObject() to correctly convert the values.
14625
14626 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14627
14628         * threadpool.c: workaround for a bug that shows up on the Mac:
14629         select()+connect() on a blocking socket is not like it should
14630         be, so we proceed to connect() in that case, wasting the I/O
14631         threadpool thread until connect succeedes. Fixes bug #75436.
14632
14633 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14634
14635         * threadpool.c: fix typo when setting file descriptor states.
14636
14637 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14638
14639         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
14640         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14641         create a temporary signature container.
14642         (mono_metadata_parse_generic_param): Update to changes.
14643         (mono_type_create_from_typespec_full): Update to changes.
14644         * loader.c (method_from_memberref): Don't use a
14645         MonoGenericContainer while parsing a memberref signature.
14646         (method_from_methodspec): Remove dead-store of the 'container'
14647         variable.  It's overwritten before use.
14648
14649         * metadata.c (mono_type_create_from_typespec_full): Make debugging
14650         checks tighter.
14651         (mono_metadata_parse_generic_param): Likewise.
14652         * loader.c (find_method_in_class): Does not need a
14653         MonoGenericContainer.  Use 'mono_method_signature' rather than
14654         'mono_method_signature_full'.
14655         (find_method, mono_get_method_constrained, method_from_memberref):
14656         Update to changes.
14657
14658         * metadata.c (mono_type_create_from_typespec_full): Ensure that
14659         owner-less generic-parameters are never evicted from the typespec
14660         cache.
14661
14662         * loader.c (method_from_memberref): Don't use the current context
14663         when parsing signatures.
14664         (method_from_methodspec, mono_get_method_from_token): Update to changes.
14665
14666         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
14667         side-effects in g_assert.
14668         * loader.c (mono_get_method_from_token): Resolve klass earlier so
14669         that we don't potentially lose information.
14670
14671 2005-11-26  Dick Porter  <dick@ximian.com>
14672
14673         * icall.c:
14674         * threads.c: icalls to implement basic (ie, not named)
14675         System.Threading.Semaphore.
14676
14677 2005-11-24  Dick Porter  <dick@ximian.com>
14678
14679         * process.c
14680         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14681         Use GetProcessId() if it's available.
14682
14683 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
14684
14685         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
14686
14687 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14688             Ankit Jain  <jankit@novell.com>
14689
14690         * loader.c (mono_get_method_from_token): Initialize 'method' field
14691         of all generic parameters before parsing the signature.  Remove
14692         code that "fixed"-up MVAR references.
14693
14694 2005-11-23  Ankit Jain  <jankit@novell.com>
14695
14696         * metadata.c (mono_metadata_has_generic_params):
14697         (mono_metadata_load_generic_param_constraints):
14698         (mono_metadata_load_generic_params): Move duplicate code ...
14699         (mono_metadata_get_generic_param_row): ... here. Returns the
14700         first row-id in GenericParam table for a given owner (token).
14701         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
14702         prototype.
14703
14704 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14705             Ankit Jain  <jankit@novell.com>
14706
14707         * metadata.c (mono_metadata_class_equal): Pass signature_only when
14708         comparing VARs too.
14709         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
14710         type->data.generic_param only if the type is an MVAR.
14711         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
14712         leak owner-less VARs and MVARs into managed space.
14713
14714 2005-11-21  Martin Baulig  <martin@ximian.com>
14715
14716         * class-internals.h
14717         (MonoMethod): Moved the `generic_container' here from
14718         `MonoMethodNormal' since we now also need it for
14719         `MonoMethodPInvoke';
14720         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
14721         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
14722         an union containing both `MonoMethodNormal' and
14723         `MonoMethodPInvoke'.
14724
14725         * loader.c
14726         (mono_get_method_from_token): Allow implementing generic methods
14727         as interncalls.
14728
14729         * threads.c
14730         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
14731         icall.
14732
14733 2005-11-17  Dick Porter  <dick@ximian.com>
14734
14735         * icall.c: 
14736         * process.h: 
14737         * process.c: Split the Process Start_internal icall into
14738         ShellExecuteEx_internal and CreateProcess_internal, which are
14739         called depending on whether UseShellExecute is true.  Fixes bug
14740         76670.
14741
14742         * appdomain.c (MONO_CORLIB_VERSION): Incremented
14743
14744 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14745
14746         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
14747         'msize' parameters, use the information in 'mspec' instead.
14748         (emit_object_to_ptr_conv): Ditto.
14749
14750         * marshal.c (emit_struct_conv): Handle explicit layout structs with
14751         fields out of order. Fixes #76733.
14752
14753 2005-11-17  Ankit Jain  <jankit@novell.com>
14754
14755         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
14756
14757 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
14758
14759         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
14760           bug #76575.
14761
14762 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
14763
14764         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
14765         for types with non-auto layout. Fixes #76717.
14766
14767 2005-11-16  Ankit Jain  <jankit@novell.com>
14768
14769         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
14770         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
14771         if generic_context is null.
14772           (mono_metadata_generic_param_equal): param->owner can be null.
14773           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
14774         null.
14775
14776 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
14777
14778         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
14779         the correct value.
14780
14781 2005-11-15  Martin Baulig  <martin@ximian.com>
14782
14783         * object.c (set_value): Use mono_class_from_mono_type() instead of
14784         the hack for generic instances; fixes #76136.
14785
14786 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
14787
14788         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
14789         fields.
14790
14791         * image.c (load_metadata_ptrs): Initialize the new fields.
14792
14793         * reflection.c (create_dynamic_mono_image): Ditto.
14794
14795         * reflection.c (build_compressed_metadata): Use the new fields.
14796
14797         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
14798         icall.
14799
14800         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
14801         icall.
14802         
14803 2005-11-15  Ankit Jain  <jankit@novell.com>
14804             Raja R Harinath  <harinath@gmail.com>
14805
14806         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
14807         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
14808         new per-generic_container cache if the cached MonoType's context matches
14809         the current context.
14810           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
14811         to the expected context.
14812           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
14813
14814 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14815
14816         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
14817         we changed the signature of an icall.
14818         * icall.c: Modify to mono_double_ParseImpl return true/false 
14819         depending on the success, instead of throwing the exception. This will
14820         help us in Double.TryParse methods.
14821         
14822 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
14823
14824         * marshal.c (emit_marshal_object): Throw an exception when
14825         marshalling 'object' instead of crashing. Fixes #76696.
14826
14827 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14828
14829         * class-internals.h: Add prototype for mono_type_get_full_name ().
14830
14831 2005-11-11  Dick Porter  <dick@ximian.com>
14832
14833         * threads.c (mono_thread_manage): Make sure the main thread has
14834         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
14835
14836 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14837
14838         * loader.c (mono_loader_set_error_type_load): Log a warning to the
14839         console about the missing type.
14840         (mono_loader_set_error_method_load): Ditto.
14841
14842 2005-11-09  Miguel de Icaza  <miguel@novell.com>
14843
14844         * mono-config.c (mono_get_config_dir): Set the system defaults if
14845         none is specified.
14846
14847         * assembly.c (mono_set_dirs): New API entry point to set the
14848         assembly and the config directory in one call
14849
14850 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
14851
14852         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
14853         the ftnptr was created from a delegate in a domain other than the
14854         current domain. Fixes #75377.
14855
14856         * exception.h exception.c: Add mono_get_exception_not_supported ().
14857
14858 2005-11-08  Martin Baulig  <martin@ximian.com>
14859
14860         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
14861
14862 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
14863
14864         * security-manager.h: Added definitions to deal with strongname key 
14865         pairs bigger (and smaller) than 1024 bits.
14866         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
14867         adjust wrt the public key length being used.
14868
14869 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14870
14871         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
14872           Windows build (r51396-51397).
14873
14874 2005-11-03  Martin Baulig  <martin@ximian.com>
14875
14876         * class.c (mono_class_setup_vtable_general): Also add generic
14877         methods to the vtable; fixes #76581.
14878
14879 2005-11-01  Miguel de Icaza  <miguel@novell.com>
14880
14881         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
14882         sure that we lookup GetString method from the System.Text.Encoding
14883         class, not the derived class or we get an empty method.
14884
14885         Fixed class #76612.
14886
14887 2005-10-25  Miguel de Icaza  <miguel@novell.com>
14888
14889         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
14890         if it has been previously set (embedders). 
14891
14892         Make mono_set_rootdir available also on Unix.
14893
14894 005-10-24  Robert Jordan  <robertj@gmx.net>
14895
14896         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
14897
14898 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14899
14900         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
14901         only calls which are made to native code use this flag.
14902
14903         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
14904
14905 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14906
14907         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
14908         Add support for FieldBuilders.
14909
14910 2005-10-29  Martin Baulig  <martin@ximian.com>
14911
14912         * mono-debug.c
14913         (mono_debug_using_mono_debugger): New public method; returns
14914         whether we're running inside the debugger.
14915
14916 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
14917
14918         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
14919         for Method/Constructor/FieldBuilders.
14920
14921 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14922
14923         * reflection.c (module_add_cattrs): Save custom attributes for global methods
14924         and fields as well.
14925
14926 2005-10-26  Martin Baulig  <martin@ximian.com>
14927
14928         * mono-debug-debugger.c
14929         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
14930
14931 2005-10-24  Raja R Harinath  <harinath@gmail.com>
14932
14933         * icall.c (base64_to_byte_array): Don't pass an out-of-range
14934         integer to isspace.
14935
14936 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14937
14938         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
14939         when passing valuetypes byref. Fixes #76502.
14940
14941 2005-10-19  Jackson Harper  <jackson@ximian.com>
14942
14943         * profiler.c: Don't put a . in front of types that are not in a
14944         namespace.
14945
14946 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
14947
14948         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
14949
14950 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
14951
14952         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
14953         #76436.
14954         (mono_marshal_get_ldflda_wrapper): Fix a warning.
14955
14956 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14957
14958         * assembly.c metadata-internals.h icall.c: Define an additional
14959         parameter for mono_assembly_name_parse_full, so we can avoid creating
14960         S.R.AssemblyName.Version when no version info wasn't passed.
14961         
14962 2005-10-09  Miguel de Icaza  <miguel@novell.com>
14963
14964         * class.c (mono_type_get_full_name): Reimplement method that was
14965         removed. 
14966
14967         * image.c: Some docs
14968
14969 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
14970
14971         * profiler.c (output_newobj_profile): Fix printing of Total memory
14972         on x86.
14973
14974 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14975
14976         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
14977
14978 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
14979
14980         * threads.c: remove debug output.
14981
14982 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14983
14984         * threads.c (mono_thread_manage): Fix crashes if more than 64
14985         threads need to be aborted. Hopefully fixes #75899.
14986
14987         * assembly.c (mono_stringify_assembly_name): New helper function.
14988
14989         * class.c: Use mono_stringify_assembly_name instead of the similar
14990         static function.
14991
14992         * assembly.h assembly.c: Add support for calling a postload search 
14993         hook if an assembly cannot be loaded.
14994
14995         * appdomain.c: Register new search hooks which call the AssemblyResolve
14996         events in AppDomain. Fixes #75231
14997
14998 2005-10-07  Martin Baulig  <martin@ximian.com>
14999
15000         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
15001         methods without debug info.
15002
15003 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15004
15005         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15006         wrappers.
15007
15008 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15009
15010         * file-io.c: now that we return symlinks, use lstat and, when the file
15011         is a symbolic link, stat, to get the file attributes. Also avoid the
15012         conversion to/from utf16/external.
15013
15014 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15015
15016         * class.c (mono_class_layout_fields): Compute klass->has_references
15017         correctly if an embedded valuetype is not yet initialized. Fixes
15018         #76331.
15019
15020 2005-10-04  Martin Baulig  <martin@ximian.com>
15021
15022         * metadata.c
15023         (mono_metadata_load_generic_param_constraints): New public
15024         function; splitted the constraints loading out from
15025         mono_metadata_load_generic_params().
15026
15027         * class.c (mono_class_create_from_typedef): Call
15028         mono_metadata_load_generic_param_constraints() after setting up
15029         the type and creating our parent; fixes #75329.
15030
15031 2005-10-04  Martin Baulig  <martin@ximian.com>
15032
15033         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15034         non-dynamic parent classes.
15035
15036 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15037
15038         * file-io.c : win32 build fix (ETXTBSY seems not found).
15039
15040 2005-10-04  Martin Baulig  <martin@ximian.com>
15041
15042         * reflection.c
15043         (mono_image_get_methodspec_token): Make the cache actually work;
15044         fixes #75974.
15045
15046 2005-10-04  Martin Baulig  <martin@ximian.com>
15047
15048         * class.c (mono_class_name_from_token): Removed the unneccessary
15049         `MonoGenericContext *' argument.
15050
15051 2005-10-04  Martin Baulig  <martin@ximian.com>
15052
15053         * loader.c
15054         (method_from_methodspec): Make the caching work again; fixes the
15055         performance regression from #76262.
15056
15057 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15058
15059         * file-io.c:
15060         * file-io.h:
15061         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15062         GetFileSystemEntries that performs the same work but without going
15063         into io-layer, locking, etc.
15064
15065 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15066
15067         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15068         ThreadState_Stopped as well. Fixes #76047.
15069
15070 2005-09-29  Martin Baulig  <martin@ximian.com>
15071
15072         * class.c
15073         (inflate_generic_context): If the new context has a `gmethod', set
15074         its `container' that that gmethod's `container'.
15075
15076         * metadata.c
15077         (mono_metadata_parse_generic_param): Simplify things;
15078         `generic_container = generic_context->container;' is just fine.
15079
15080         * loader.c (method_from_methodspec): Code cleanups.
15081
15082 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15083
15084         * decimal.c: fix warning (and let gcc generate correct
15085         code on ARM with optimizations).
15086
15087 2005-09-28  Martin Baulig  <martin@ximian.com>
15088
15089         * loader.c
15090         (method_from_memberref): Added `MonoGenericContext *class_context'
15091         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15092         (method_from_methodspec): If we're a memberref, use the enclosing
15093         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15094
15095 2005-09-28  Martin Baulig  <martin@ximian.com>
15096
15097         * object.c (mono_runtime_invoke_array): Added support for
15098         MONO_TYPE_GENERICINST; fixes #75917.
15099
15100 2005-09-27  Martin Baulig  <martin@ximian.com>
15101
15102         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15103         `k->byval_arg.type' to determine the actual type.
15104
15105         * loader.c (method_from_methodspec): Removed some hacks.
15106
15107 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15108
15109         * class-internals.h (mono_field_is_deleted): Do the test for
15110         rtspecialname before we check the actual name of the field. This
15111         prevents us from dereferencing a pointer into the string table,
15112         saving us from accessing a few pages
15113
15114         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15115         macros. This will allow a deadlock debugger to easily be plugged
15116         in.
15117
15118 2005-09-27  Martin Baulig  <martin@ximian.com>
15119
15120         * loader.c (method_from_methodspec): Create a "signature"
15121         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15122
15123 2005-09-27  Martin Baulig  <martin@ximian.com>
15124
15125         * class.c
15126         (inflate_generic_class): Correctly set the new context's
15127         container.
15128
15129         * loader.c
15130         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15131         instead of a `MonoGenericContext *'.
15132         (mono_method_signature_full): Take a `MonoGenericContainer *'
15133         instead of a `MonoGenericContext *'.
15134
15135         * metadata.c
15136         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15137         instead of a `MonoGenericContext *'.
15138         (mono_metadata_parse_method_signature_full): Likewise.
15139
15140 2005-09-26  Martin Baulig  <martin@ximian.com>
15141
15142         * class.c
15143         (mono_class_from_generic_parameter): Set `klass->generic_container'
15144         (mono_class_from_generic_parameter): Likewise.
15145         (mono_bounded_array_class_get): We inherit the generic container
15146         from the element class.
15147
15148         * loader.c
15149         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15150         argument rather than computing it here.
15151         (method_from_memberref): Correctly set the generic context before
15152         parsing the signature.  Fixes #75681.
15153
15154 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15155
15156         * object.c (mono_class_has_special_static_fields): Fix warnings.
15157
15158 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15159
15160         * assembly.c: Add parse_public_key function, to
15161         par the public keys. Also added mono_assembly_name_parse_full,
15162         to define it the parsed key should be freed or not.
15163         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15164         to parse a long format assembly name.
15165         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15166         private, since calling it to preserve the key requires
15167         freeing it manually.
15168         
15169 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15170
15171         * locales.c : removed HAVE_ICU part.
15172
15173 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15174
15175         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15176         field_is_special_static if the klass has no special static fields.
15177
15178         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15179         (MonoCachedClassInfo): Likewise.
15180
15181         * object.c (mono_class_has_special_static_fields): New helper function.
15182
15183 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15184
15185         * class.c (mono_class_create_from_typedef): Don't call 
15186         interfaces_from_typedef_full for enums.
15187         (mono_class_create_from_typedef): Compute the base types of enums directly
15188         without calling mono_class_setup_fields ().
15189         (mono_class_find_enum_basetype): New helper function.
15190
15191         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15192         one place inside the string heap.
15193         
15194 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15195
15196         * class.c: locking fixes, code cleanups, some docs added.
15197         Allocate some data structures in the image mempool.
15198
15199 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15200
15201         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15202         the example code.
15203         
15204 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15205
15206         * class-internals.h, class.c, reflection.c: reduce memory taken by
15207         MonoClass.
15208
15209 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15210
15211         * metadata.c, metadata.h, loader.h: documentation updates, code and
15212         API cleanups.
15213
15214 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15215
15216         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15217         the example code.
15218
15219         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15220         page faults caused by the runtime while reading metadata.
15221
15222 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15223
15224         * socket-io.c: the field names were changed 3 months ago and no one
15225         realized until bug #76077 got filed!
15226
15227 2005-09-20  Martin Baulig  <martin@ximian.com>
15228
15229         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15230
15231 2005-09-20  Martin Baulig  <martin@ximian.com>
15232
15233         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15234         write the rank into the class entry.
15235
15236 2005-09-20  Martin Baulig  <martin@ximian.com>
15237
15238         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15239
15240 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15241
15242         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15243
15244         * icall.c (custom_attrs_defined_internal): New icall.
15245
15246         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15247         function.
15248         (mono_custom_attrs_construct_by_type): New helper function.
15249
15250 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15251
15252         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15253         terminate the resulting string. Fixes #76123.
15254
15255 2005-09-16  Martin Baulig  <martin@ximian.com>
15256
15257         * mono-debug.c
15258         (mono_debug_add_method): Ignore inflated methods for the moment.
15259
15260 2005-09-14  Martin Baulig  <martin@ximian.com>
15261
15262         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15263
15264 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15265
15266         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15267         return a success/failure indication.
15268         (mono_metadata_interfaces_from_typedef_full): Ditto.
15269         (get_constraints): Ditto.
15270
15271 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15272
15273         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15274         
15275         * marshal.c (emit_marshal_array): Add support for returning string
15276         arrays from delegates. Fixes #76063.
15277
15278         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15279
15280 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15281
15282         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15283         icall.
15284
15285 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15286
15287         * reflection.c icall.c: Fix after mono_get_exception_type_load
15288         signature change.
15289
15290         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15291         (mono_assembly_load_reference): Use the new helper.
15292
15293         * class-internals.h (MonoLoaderError): New structure containing 
15294         information about type loading errors.
15295
15296         * class-internals.h loader.c: Add APIs to store per-thread loader
15297         error information.
15298
15299         * loader.c class.c: Set the loader error if needed.
15300
15301         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15302
15303 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15304
15305         * decimal.c: fixed to handle the broken ARM fp format.
15306
15307 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15308
15309         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15310         broken.
15311
15312 2005-09-06  Martin Baulig  <martin@ximian.com>
15313
15314         * domain.c (supported_runtimes): Added v2.0.50727.
15315
15316 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15317
15318         * culture-info.h: reduce the size of some structures.
15319
15320 2005-09-05  Martin Baulig  <martin@ximian.com>
15321
15322         Reflect latest API changes in the August CTP.
15323
15324         * icall.c
15325         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
15326         ("MonoType.HasGenericArguments"): Removed.
15327         ("MonoMethod.BindGenericParameters"): Renamed to
15328         "MakeGenericMethod".
15329         ("MethodBuilder.BindGenericParameters"): Renamed to
15330         "MakeGenericMethod".    
15331
15332 2005-09-05  Martin Baulig  <martin@ximian.com>
15333
15334         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
15335
15336 2005-09-05  Martin Baulig  <martin@ximian.com>
15337
15338         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15339
15340         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
15341         generic_container is non-NULL.
15342
15343 2005-09-05  Martin Baulig  <martin@ximian.com>
15344
15345         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15346
15347         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
15348
15349 2005-08-29  Michal Moskal  <malekith@nemerle.org>
15350
15351         * reflection.c (encode_locals,
15352         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
15353         for large generic types.
15354
15355 2005-09-05  Martin Baulig  <martin@ximian.com>
15356
15357         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15358
15359         * class.c (mono_dup_array_type): New public method.
15360         (mono_metadata_signature_deep_dup): New public method.
15361         (dup_type): Correctly duplicate array and function types.
15362
15363 2005-09-05  Martin Baulig  <martin@ximian.com>
15364
15365         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15366
15367         * reflection.c (get_default_param_value_blobs): Handle generic types
15368         and generic methods.
15369
15370 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
15371
15372         * class.c: Fixed error reporting (method/class were inversed) for 
15373         inheritance demands.
15374         * security-manager.c|h: Added the AppDomain when calling the managed
15375         System.Security.SecurityManager.InheritanceDemand method.
15376
15377 2005-09-01  Raja R Harinath  <rharinath@novell.com>
15378
15379         * reflection.c (encode_marshal_blob): 'marshaltype' and
15380         'marshaltyperef' are alternate sources for the custom marshaler
15381         name.
15382
15383 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
15384
15385         * class.c: fix creation of array classes with rank == 1
15386         (patch by Ankit Jain <jankit@novell.com>).
15387
15388 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
15389
15390         * object.c: fix check for creating the bound data for arrays vs
15391         szarrays.
15392
15393 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15394
15395         * object.c: configuration file name is now based on the executable name,
15396         not the image name. Fixes bug #75931.
15397
15398 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15399
15400         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
15401         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
15402
15403 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15404
15405         * rand.c: Use wincrypt.h instead of WinCrypt.h.
15406
15407 2005-08-24  Ankit Jain  <jankit@novell.com>
15408             Raja R Harinath  <rharinath@novell.com>
15409
15410         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
15411           called by it recursively.
15412           (mono_class_init): Remove special case in pending_init handling, since it's
15413           superseded by the fix to mono_class_from_typeref.
15414
15415 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15416
15417         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
15418         BROKEN_THREAD_START stuff.
15419
15420 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15421
15422         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
15423         trampoline.
15424
15425         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
15426         
15427         * object.c (mono_delegate_ctor): Replace the original function address with
15428         a delegate trampoline.
15429
15430 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
15431
15432         * icall.c: add boolean argument to base64_to_byte_array and 
15433         InternalFromBase64String to control whether a whitespace-only string
15434         is allowed (or should casue a FormatException to be thrown). We need
15435         this as the behavior has changed between MS.NET 1.x and 2.0, and we
15436         to match the MS behaviour in both profiles.
15437         * appdomain.c: Bump corlib version.
15438
15439 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15440
15441         This patch implements a big portion of publisher policy
15442         support, used to bind assembly versions and redirect
15443         one assembly from version A to version B.
15444
15445         * assembly.c:
15446         New GSList loaded_assembly_bindings, for storing the cached
15447         assembly bindings.
15448         (assembly_binding_maps_name): New static function for checking if a 
15449         assembly binding information maps an assembly name.
15450         (mono_assembly_binding_info_free): New function for freeing
15451         assembly binding information resources.
15452         (get_publisher_policy_info): New static function for retrieving 
15453         assembly binding information from a MonoImage.
15454         (compare_versions): New static function for comparing an assembly
15455         binding information data and the version of an assembly name.
15456         (check_policy_versions): New static function for checking if an
15457         assembly binding info mapping an assembly name is valid for it.
15458         (mono_assembly_load_publisher_policy): New static function for
15459         loading the 'policy.major.minor.MyAssembly' image for an assembly
15460         with an assembly name 'aname'.
15461         (mono_assembly_bind_version): New static function for updating
15462         assembly redirection.
15463         (mono_assembly_apply_binding): New static function for applying
15464         assembly binding.
15465         (search_binding_loaded): New static function for searching 
15466         loaded assembly binding infos in the cache domain.
15467         (mono_assembly_load_full): Don't apply assembly binding for
15468         reflection only assemblies.
15469
15470         * metadata-internals.h: Add MonoAssemblyBindingInfo,
15471         which contains information about assembly binding. Also
15472         declare signature for mono_config_parse_publisher_policy ()
15473         function, used to retrieve pub policy info.
15474         
15475         * mono-config.c:
15476         (publisher_policy_start): New static function used to parse publisher 
15477         policy config files.
15478         (publisher_policy_parser): New static MonoParseHandler containing 
15479         the functions used when parsing config files.
15480         (mono_config_parse_publisher_policy): New function for parsing
15481         publisher policy files.
15482         
15483 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15484
15485         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
15486
15487         * marshal.c (mono_delegate_free_ftnptr): Ditto.
15488
15489         * object.c (mono_get_addr_from_ftnptr): New helper function.
15490
15491         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
15492
15493         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15494
15495 2005-08-19  Dick Porter  <dick@ximian.com>
15496
15497         * threads.c, threads.h, appdomain.c, appdomain.h,
15498         profiler-private.h, monitor.c, object.c, object-internals.h,
15499         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
15500         store the thread ID, so it can hold a 64 bit value if needed.
15501
15502 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15503
15504         * reflection.c (mono_reflection_create_dynamic_method): Store the
15505         handle class into the method references as well so ldtoken works in
15506         dynamic methods.
15507
15508         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
15509         types.
15510
15511 2005-08-19  Ankit Jain <jankit@novell.com>
15512
15513         Fix #75847.
15514         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
15515           here rather than using the method signature of a arbitrary function
15516           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
15517           two arguments.
15518           Hack done with Harinath.
15519
15520 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15521
15522         * threadpool.c: disable printing stack traces when we get a exception
15523         in a threadpool thread. I need to do more testing to figure out which
15524         cases actually print this. Fixes bug #75828.
15525
15526 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15527
15528         * icall.c: there might be ignored whitespace after the last '='. This
15529         fixes length computation and bug #75840.
15530
15531 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
15532
15533         * assembly.c (mono_assembly_load_full): Consider .exe extension as
15534         well. Fixes #75809.
15535
15536         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
15537         #75784.
15538         
15539         * reflection.c (create_custom_attr_data): Ditto.
15540
15541 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
15542
15543         * locales.c, culture-info.h : removed RegionLCIDMap.
15544         * culture-info-tables.h : regenerated.
15545
15546 2005-08-16  Martin Baulig  <martin@ximian.com>
15547
15548         * class.c (mono_type_get_name_recurse): Small fix.
15549
15550 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
15551
15552         * locales.c : indentation fixie.
15553
15554 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
15555
15556         * object-internals.h,
15557           locales.h,
15558           locales.c,
15559           culture-info.h,
15560           icall.c : added RegionInfo table support.
15561         * culture-info-table.h : regenerated for region support.
15562
15563 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
15564
15565         * reflection.c (resolve_object): handle all kinds of MonoMethod
15566         including generic ones
15567
15568 2005-08-12  Ankit Jain <jankit@novell.com>
15569
15570         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
15571           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
15572
15573 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
15574
15575         * process.c: Don't close a thread handle when it's NULL. This is a
15576         workaround for bug #75733.
15577
15578 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15579
15580         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
15581
15582 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
15583
15584         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
15585
15586 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15587
15588         * threadpool.c: if a work item in the thread pool has a callback that
15589         catches a exception, don't propagate it after invoking the callback.
15590         Fixes bug #75336.
15591
15592 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15593
15594         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
15595
15596         * class-internals.h (MonoCachedClassInfo): Add some new fields.
15597
15598         * class.c (mono_class_init): Load field info lazily in the AOT case.    
15599
15600         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
15601
15602 2005-08-03  Ankit Jain  <jankit@novell.com>
15603
15604         Fix #75683.
15605         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
15606           PInvoke calling convention is 0.
15607
15608 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
15609
15610         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
15611         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
15612
15613 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
15614
15615         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
15616         to handle threads not started by the GC (patch by Michael Meeks
15617         <michael.meeks@novell.com>).
15618
15619 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
15620
15621         * reflection.c: Make buffer used in emitting types larger for some
15622         big generic types (patch by Michal Moskal).
15623
15624 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15625
15626         * mono-debug.c: Fix some (not all) alignment problems.
15627
15628 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15629
15630         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
15631         Invoke mono_image_load_from_data_full passing the refonly
15632         parameter.
15633
15634         * assembly.c
15635         (mono_assembly_open_from_bundle): Add the refonly argument, 
15636         in order to pass it to other methods it calls to.
15637         (do_mono_assembly_open): Add the refonly argument, in order 
15638         to pass it to other methods it calls to.
15639         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
15640         the refonly parameter to it.
15641
15642         * image.c: Add loaded_images_refonly_hash and
15643         loaded_images_refonly_guid_hash to cache the reflection
15644         only loaded images.
15645         (mono_images_init): Initialize the hash tables used for
15646         caching the reflection only images.
15647         (load_modules): Invoke mono_image_open_full passing the refonly
15648         parameter to load the modules the correct way.
15649         (build_guid_table): Add the refonly argument, to re-build the 
15650         correct hash table.
15651         (do_mono_image_open): Added the refonly argument, in order to
15652         define it for the loaded image.
15653         (mono_image_loaded_full): New function, which receives an
15654         additional parameter to look for the image in the refonly or
15655         non-refonly section.
15656         (mono_image_loaded): Updated, using mono_image_loaded_full.
15657         (mono_image_loaded_by_guid_full): The same case that happens
15658         with mono_image_loaded_full.
15659         (mono_image_loaded_by_guid): Likewise.
15660         (register_image): Use the ref_only variable inside MonoImage
15661         to decide in which hash table store the current image.
15662         (mono_image_open_from_data_full): Rename
15663         mono_image_open_from_data to mono_image_open_from_data_full,
15664         adding the refonly argument, to define the ref_only variable 
15665         inside MonoImage.
15666         (mono_image_open_from_data): Return 
15667         mono_image_open_from_data_full.
15668         (mono_image_open_full): Rename mono_image_open to
15669         mono_image_open_full, receiving the new refonly argument,
15670         to pass it to inner methods.
15671         (mono_pe_file_open): Update this function, to open
15672         a MonoImage as a non-refonly image.
15673         (mono_image_close): Use the refonly variable inside
15674         MonoImage to remove the image from the correct caches.
15675
15676         * image.h: Add the signatures of mono_image_open_full,
15677         mono_image_open_from_data_full, mono_image_loaded_full,
15678         mono_image_loaded_by_guid_full.
15679
15680         * metadata-internals.h: Add the ref_only field to 
15681         MonoImage.
15682         
15683 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15684
15685         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
15686         Fix the last behavior, which used to load the assemblies and
15687         extract MonoReflectionAssemblyName information, instead of
15688         extract it from the metadata tables. Needed for Reflection
15689         Only assemblies.
15690         
15691 2005-07-29  Martin Baulig  <martin@ximian.com>
15692
15693         * mono-debug-debugger.c
15694         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
15695         not initialized.
15696
15697         * mono-debug.c
15698         (mono_debug_address_from_il_offset): Check whether we have
15699         debugging support before attempting to take the lock.
15700         (mono_debug_source_location_from_address): Likewise.
15701         (mono_debug_source_location_from_il_offset): Likewise.
15702         (mono_debug_il_offset_from_address): Likewise.
15703         (mono_debug_address_from_il_offset): Likewise.
15704
15705 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
15706
15707         * class.c (mono_class_from_name_case): Add support for dynamic images.
15708         Fixes #75650.
15709
15710         * object.c (mono_class_compute_gc_descriptor): Add a workaround
15711         for #75479.
15712
15713 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15714         
15715         * reflection.c (mono_method_get_object): Fix warning.
15716
15717 2005-07-28  Martin Baulig  <martin@ximian.com>
15718
15719         * mono-debug.c
15720         (mono_debug_add_wrapper): Also write the wrapper type.
15721
15722 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15723
15724         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
15725         
15726         * class.c (mono_class_init): Avoid reading nested classes if the AOT
15727         data indicates the class has none.
15728
15729 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
15730
15731         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
15732         loader lock with the debugger lock. Prevents deadlocks for beagle.
15733
15734         Beagle can now run on an smp box for a weekend without any
15735         issues. Woohoo!
15736
15737 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
15738
15739         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
15740         in a module. Fixes #75629.
15741
15742 2005-07-26  Martin Baulig  <martin@ximian.com>
15743
15744         * mono-debug.c (mono_debug_add_wrapper): New static method.
15745         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
15746         interncall or a wrapper.
15747
15748         * mono-debug.h (MonoDebugWrapperData): New public typedef.
15749         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
15750         (MONO_DEBUGGER_VERSION): Bump to 51.
15751
15752         * mono-debug-debugger.c
15753         (mono_debugger_add_type): Removed this empty function.
15754         (mono_debugger_add_method): Likewise.
15755
15756 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
15757
15758         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
15759         before accessing method->slot.
15760
15761 2005-07-21  Jb Evain  <jbevain@gmail.com>
15762
15763         * reflection.c (method_encode_clauses/class): Handle filters clauses.
15764         Fixes #75010.
15765
15766 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
15767
15768         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
15769         #75587.
15770
15771 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15772
15773         * image.h image.c: Add mono_image_get_guid () API function.
15774
15775 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
15776
15777         There were issues when multiple threads tried to load
15778         assemblies. A deadlock was created between assemblies_mutex and
15779         mono_domain_assemblies_lock. This fixes the issue by making the
15780         assembly ref counting be lock free. See bug 75586.
15781         
15782         * image.c (mono_image_close): The add ref function here was using
15783         Interlocked operations while the unref was using a mutex and a
15784         --. I don't think this was ever a bug that would be exposed in a
15785         non-pendantic way (ie, by an embedder doing a ref on one thread
15786         and an unref on another), but for the sake of correctness, this is
15787         now Interlocked.
15788
15789         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
15790         (mono_assembly_load_reference): Call mono_assembly_addref rather
15791         than touching the refcount ourselves.
15792         (mono_assembly_close): Use InterlockedDecrement to unref the
15793         assembly. Don't acquire the lock unless it is actually needed.
15794
15795 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
15796
15797         * class.c (mono_class_layout_fields): Fix calculation of has_references
15798         for generic types.
15799
15800 2005-07-12  Martin Baulig  <martin@ximian.com>
15801
15802         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15803
15804         * metadata.c
15805         (mono_type_hash): Provide better hashing for generic instances.
15806         (mono_generic_inst_hash): Improve hashing.
15807         (mono_generic_class_hash): Likewise.
15808
15809         * reflection.c (mymono_metadata_type_hash): Improve hashing for
15810         generic instances.
15811
15812 2005-07-12  Martin Baulig  <martin@ximian.com>
15813
15814         * reflection.c (mono_reflection_create_runtime_class): Remove the
15815         hack for generic type definitions and non-`Run' assemblies.
15816         (mono_reflection_bind_generic_parameters): Also use
15817         `klass->wastypebuilder' to check for TypeBuilders.
15818
15819 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
15820
15821         * class.c (mono_class_layout_fields): Fix calculation of has_references
15822         for generic types.
15823
15824         * class.c (inflate_generic_class): Fix a leak.
15825         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
15826         for generic types.
15827
15828 2005-07-11  Martin Baulig  <martin@ximian.com>
15829
15830         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
15831         on error.
15832
15833 2005-07-11  Martin Baulig  <martin@ximian.com>
15834
15835         * loader.c (find_method): Also lookup in
15836         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
15837
15838 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15839
15840         * appdomain.c (mono_domain_unload): Don't free the error message
15841         before passing it to mono_get_exception_...
15842
15843         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
15844         
15845 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
15846
15847         * threads.c: try to better guess an available RT signal (bug #75387).
15848
15849 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15850
15851         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
15852         and CACHE_OBJECT.
15853
15854 2005-07-07  Martin Baulig  <martin@ximian.com>
15855
15856         * class.c (mono_type_get_name_full): Return NULL for
15857         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
15858         fixes #75408.
15859
15860 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15861
15862         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
15863         exit the appdomain as well being aborted.
15864
15865         * threadpool.c: Create all threadpool threads inside the root appdomain, and
15866         change back to the root domain after calling managed code. This enables
15867         appdomains using threadpools to be unloaded.
15868
15869 2005-07-07  Martin Baulig  <martin@ximian.com>
15870
15871         * class-internals.h
15872         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
15873         into `MonoDynamicGenericClass' since we only need it for dynamic
15874         types.
15875
15876         * reflection.c (mono_class_bind_generic_parameters): We don't need
15877         to compute the `parent' here.
15878
15879 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
15880
15881         * culture-info-table.h : regenerated.
15882
15883 2005-07-06  Martin Baulig  <martin@ximian.com>
15884
15885         * icall.c
15886         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
15887
15888         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
15889
15890 2005-07-06  Martin Baulig  <martin@ximian.com>
15891
15892         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
15893         we're doing a signature-only comparision; fixes #74945.
15894
15895 2005-07-06  Martin Baulig  <martin@ximian.com>
15896
15897         * class-internals.h (MonoGenericClass): Moved some things out into
15898         a new `MonoInflatedGenericClass' type.  
15899         (MonoInflatedGenericClass): New type; the `klass' of a
15900         `MonoGenericClass' is now computed lazyly in
15901         mono_get_inflated_generic_class().      
15902
15903         * class.c (mono_get_inflated_generic_class): New public function.
15904         (mono_class_inflate_generic_method): Removed the unused
15905         `MonoClass *' argument.
15906         (setup_generic_vtable): Don't call mono_get_inflated_method() on
15907         all the methods.
15908         (mono_class_create_generic): Make this static and merge it with
15909         mono_class_create_generic_2(); we're now called automatically from
15910         mono_get_inflated_generic_class().
15911
15912         * loader.c (mono_method_signature): Call
15913         mono_get_inflated_method() here.
15914
15915 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
15916
15917         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
15918         type of fields with RVA.
15919
15920         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
15921         for this pseudo class.
15922         (my_mono_class_from_generic_parameter): Likewise.
15923         (mono_class_init): Allow interfaces to have cctors.
15924
15925 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15926
15927         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
15928         lazily for AOT methods.
15929
15930 2005-07-05  Martin Baulig  <martin@ximian.com>
15931
15932         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
15933         returns FALSE for a successful match, not TRUE.
15934
15935 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15936
15937         * loader.c (mono_method_get_index): Optimize this a bit.
15938
15939 2005-07-04  Martin Baulig  <martin@ximian.com>
15940
15941         * class.c
15942         (class_compute_field_layout): Move the check for generic type
15943         definitions into mono_class_layout_fields().  Fixes #74684.
15944         (mono_class_from_generic_parameter): Correctly compute
15945         `klass->parent'; fixes #75457.
15946
15947         * reflection.c (register_assembly, register_module): Make sure
15948         `domain->rejobject_hash' is already created.
15949
15950 2005-07-02  Martin Baulig  <martin@ximian.com>
15951
15952         * class-internals.h
15953         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
15954         `MonoDynamicGenericClass'.      
15955
15956 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
15957
15958         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
15959         returned by a field getter is null, since null is a valid value.
15960
15961 2005-07-01  Martin Baulig  <martin@ximian.com>
15962
15963         * reflection.c (mono_reflection_generic_class_initialize): Update
15964         the `dgclass->fields [i].parent' to the correct class.
15965         (mono_image_get_fieldref_token): Use the declaring type, not the
15966         reflected type.
15967
15968 2005-07-01  Martin Baulig  <martin@ximian.com>
15969
15970         * loader.c (find_method): Also look in the interfaces; fixes #75429.
15971
15972 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
15973
15974         * threads.c (thread_cleanup): assert that thread != NULL
15975         (wait_for_tids_or_state_change): We were using the wrong variable
15976         when accessing wait->threads. `i' was always out of the bounds of
15977         the array.
15978
15979 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15980
15981         * loader.c: map user32 and kernel32 to libMonoSupportW
15982
15983 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15984
15985         * appdomain.c (unload_thread_main): Mark this as WINAPI.
15986
15987 2005-06-28  Martin Baulig  <martin@ximian.com>
15988
15989         * loader.c (method_from_methodspec): Fix #75334.
15990
15991 2005-06-28  Martin Baulig  <martin@ximian.com>
15992
15993         Fix #74953 - Arrays now implement the generic IList<T> interface
15994         on the 2.0 platform.
15995
15996         * class-internals.h (MonoDefaults): Added `generic_array_class'.
15997
15998         * reflection.c (mono_class_bind_generic_parameters): New public
15999         function; similar to mono_reflection_bind_generic_parameters(),
16000         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
16001
16002         * domain.c (mono_init_internal): Try to initialize.
16003         `mono_defaults.generic_array_class' here; this'll only succeed if
16004         we're using the 2.0 corlib.
16005
16006         * icall.c
16007         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16008         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16009         (mono_lookup_internal_call): Added support for nested classes.
16010
16011         * loader.c
16012         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16013         we're an interncall and have generic arguments.
16014
16015         * class.c
16016         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16017         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16018         instance of System.Array.InternalArray<T> for arrays, so they
16019         implement the generic IList<T> interface.
16020
16021 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16022
16023         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16024         (chastamar@yahoo.com). Fixes #75374.    
16025
16026 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16027
16028         * culture-info-table.h: regenerated.
16029
16030 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16031
16032         * icall.c: handle spaces correctly for base64 strings.
16033
16034 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16035
16036         * *.c: Kill some warnings.
16037
16038 2005-06-23  Duncan Mak  <duncan@novell.com>
16039
16040         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16041         that this builds on Solaris 10 (x86).
16042
16043 2005-06-23  Martin Baulig  <martin@ximian.com>
16044
16045         * class.c
16046         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16047         generic type definitions.
16048
16049 2005-06-23  Martin Baulig  <martin@ximian.com>
16050
16051         Fix #75331.
16052
16053         * metadata.c (mono_class_get_overrides): Renamed to
16054         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16055         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16056         pass it to mono_get_method_full().
16057
16058 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16059
16060         * reflection.c (mono_reflection_create_runtime_class): take the
16061         mono_domain_lock in this method. Prevents deadlocks
16062
16063 2005-06-22  Martin Baulig  <martin@ximian.com>
16064
16065         * loader.c (method_from_methodspec): Fix #75330.
16066
16067 2005-06-22  Martin Baulig  <martin@ximian.com>
16068
16069         * reflection.c (type_get_qualified_name): Use
16070         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16071         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16072         argument; use it if we don't have an assembly name.
16073
16074 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16075
16076         * object.c: In mono_message_init, set "copy out" flag for in
16077         parameters with the [Out] flag.
16078
16079 2005-06-21  Martin Baulig  <martin@ximian.com>
16080
16081         * class.c
16082         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16083         and MONO_TYPE_PTR.
16084
16085 2005-06-21  Martin Baulig  <martin@ximian.com>
16086
16087         * class.c (mono_class_init): Don't initialize `class->fields' for
16088         generic instances since they're initialized again in
16089         compute_field_layout(). 
16090         (compute_field_layout): Set the field's `generic_info' here; fix
16091         #75320. 
16092
16093 2005-06-21  Martin Baulig  <martin@ximian.com>
16094
16095         * class-internals.h
16096         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16097
16098         * metadata.c (mono_metadata_generic_method_equal): Also
16099         distinguish the `generic_class'; fixes #75334.
16100
16101 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16102
16103         * domain.c:
16104         * appdomain.c:
16105         * domain-internals.h:
16106         * reflection.c: 'domain_assemblies' field is now protected by its own
16107         lock. Don't call into managed code to run the AssemblyLoad event if we
16108         now there are no registered delegates for it.
16109
16110 2005-06-20  Martin Baulig  <martin@ximian.com>
16111
16112         * class.c (mono_class_is_assignable_from): Use a custom version of
16113         mono_class_has_parent() to make things work for generic instances;
16114         fix #75300.
16115
16116 2005-06-20  Martin Baulig  <martin@ximian.com>
16117
16118         * loader.c (method_from_methodspec): Apply a patch from
16119         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16120
16121 2005-06-20  Martin Baulig  <martin@ximian.com>
16122
16123         * class.c (mono_class_init): Reverted Zoltan's last change; it
16124         breaks generics.
16125
16126 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16127
16128         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16129
16130 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16131
16132         * socket-io.c: fix the index in the socket array for writable/error
16133         sockets. Fixes bug #75306.
16134
16135 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16136
16137         * class.c (mono_class_init): Allow interfaces to have static ctors.
16138
16139 2005-06-17  Martin Baulig  <martin@ximian.com>
16140
16141         * loader.c (method_from_methodspec): Use `context->container' when
16142         parsing the `gmethod->inst'.
16143
16144 2005-06-17  Martin Baulig  <martin@ximian.com>
16145
16146         * class.c (mono_type_get_name_recurse): Don't add the assembly
16147         name for type arguments.
16148
16149 2005-06-15  Martin Baulig  <martin@ximian.com>
16150
16151         * reflection.c (mono_image_get_inflated_method_token): Encode
16152         correct klass; fixes #75260.
16153
16154 2005-06-13 Michal Moskal <malekith@nemerle.org>
16155
16156         * icall.c: Make GetCorrespondingMethod/Constructor take
16157         MonoReflectionMethod method not MonoMethod. Removed
16158         MonoType.GetCorrespondingField, and make
16159         MonoGenericType.GetCorrespondingField take name not
16160         MonoClassField.
16161
16162 2005-06-13  Michal Moskal <malekith@nemerle.org>
16163
16164         * reflection.c (field_encode_signature, encode_locals):
16165          Make sizes of buffers for types larger (for big generic types).
16166          (create_generic_typespec,
16167          mono_reflection_sighelper_get_signature_local,
16168          mono_reflection_sighelper_get_signature_field):
16169          Add asserts for too small buffers.
16170
16171 2005-06-15  Martin Baulig  <martin@ximian.com>
16172
16173         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16174         if our parent is not a dynamic type.
16175
16176 2005-06-15  Martin Baulig  <martin@ximian.com>
16177
16178         * class-internals.h (MonoTypeNameFormat): New enum.
16179
16180         * class.c
16181         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16182         (mono_type_get_full_name): Removed.
16183         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16184         argument instead of the boolean's.
16185
16186         * icall.c (ves_icall_System_MonoType_getFullName):
16187         Added `gboolean assembly_qualified'.    
16188
16189         * reflection.h
16190         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16191
16192         * reflection.c (mono_reflection_parse_type): Parse the new type
16193         name format.
16194
16195 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16196
16197         * icall.c: no need to convert from utf16 to utf8 and then back again
16198         after the call to GetLogicalDrives.
16199
16200 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16201
16202         * icall.c: frombase64. Fix problems exposed by new tests.
16203
16204 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16205
16206         * icall.c: added internal calls for converting char [] and strings in
16207         base64 into byte [].
16208
16209 2005-06-10  Martin Baulig  <martin@ximian.com>
16210
16211         * class.c (mono_class_create_generic_2): Read the nested classes
16212         from the metadata rather than from `gklass->nested_classes' since
16213         `gklass' might not be initialized yet.
16214
16215 2005-06-09  Duncan Mak  <duncan@novell.com>
16216
16217         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16218         all public headers. Fixes #74919.
16219
16220 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16221
16222         * domain.c: The key for proxy_vtable_hash is now a pointer
16223         array. Added new GHashFunc and GCompareFunc functions for this.
16224
16225         * class.h: The list of interfaces in MonoRemoteClass is known in
16226         advance and can't grow (we create a new MonoRemoteClass if needed),
16227         so now the interface array can be allocated together with
16228         MonoRemoteClass.
16229         
16230         * object.c: Added a new method create_remote_class_key.
16231         Fixed mono_remote_class so it does not depend on
16232         mono_upgrade_remote_class.
16233         Removed extend_interface_array.
16234         Added new method clone_remote_class(), which makes a copy of a remote
16235         class and adds a new interface or class to it.
16236         mono_upgrade_remote_class() now creates a new remote class (or gets
16237         it from the cache) if an vtable upgrade is needed. In this way
16238         we make sure that other objects sharing the same remote class
16239         don't get the new vtable with unwanted interfaces.
16240         
16241         * object-internals.h:
16242         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16243         
16244         * marshal.c: Track changes in mono_upgrade_remote_class().
16245
16246 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16247         * icall.c: Add runtime methods for obtaining members of inflated
16248         class, which were created from supplied non-inflated members. It
16249         is used in internal Get{Method,Constructor,Field} methods in
16250         System.Type
16251
16252 2005-06-09  Martin Baulig  <martin@ximian.com>
16253
16254         * reflection.c
16255         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16256
16257 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16258         * reflection.c (mono_image_basic_init): Define
16259         Version in MonoDynamicAssembly. 
16260         
16261 2005-06-08  Martin Baulig  <martin@ximian.com>
16262
16263         Fix #75136.
16264
16265         * loader.c
16266         (mono_method_signature_full): New public method; takes a
16267         `MonoGenericContext *'.
16268         (find_method): Use mono_method_signature_full() and pass the
16269         klass'es context to it.
16270
16271         * class.c (mono_class_is_inflated_method): Use
16272         mono_method_signature_full() and pass the context to it.
16273
16274 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16275
16276         * object.c: add proper locking in mono_remote_class_vtable(),
16277         fixes possible memory corruption.
16278
16279 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16280
16281         * marshal.c (mono_remoting_marshal_init): set
16282         initialized after initialization.
16283
16284 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16285
16286         * locales.c : hush.
16287
16288 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16289
16290         * object.c (extend_interface_array): fix really silly
16291         memory corrupting / comparison bug.
16292
16293 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16294
16295         * reflection.c: Functions added to support the creation
16296         of CustomAttributeData, which includes Attribute data
16297         used by ReflectionOnly methods.
16298
16299         * reflection.h:  mono_reflection_get_custom_attrs_data and
16300          mono_custom_attrs_data_construct added (functions exposed).
16301
16302          * icall.c: Added mono_reflection_get_custom_attrs_data
16303          as icall.
16304         
16305 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16306
16307         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16308         lupus's request.
16309
16310 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16311
16312         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16313
16314         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16315         dynamic DllImportAttribute.
16316
16317         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16318         dynamic DllImportAttribute.
16319
16320         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
16321         Fixes #75162.
16322
16323 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16324
16325         * threads.c: avoid segfault when an unstarted thread is aborted.
16326
16327 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
16328
16329         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
16330         Returns the name and version of the runtime for reporting.
16331
16332 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16333
16334         * appdomain.c: bump corlib version.
16335         * object-internals.h: new field in MonoReflectionAssembly.
16336
16337 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16338
16339         * object-internals.h: Carlos forgot to add this field.
16340
16341 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16342
16343         * icall.c: Added create_version to create instances
16344         of Version of MonoReflectionAssemblyName. This change helps
16345         the AssemblyName tests to keep running fine.
16346         
16347 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
16348   
16349         * object.c (mono_method_return_message_restore): A somehow less
16350         intrusive fix for #75138.
16351
16352 2005-06-03  Raja R Harinath  <rharinath@novell.com>
16353
16354         * object.c (mono_method_return_message_restore): Fix computation
16355         of expected number of out args.
16356
16357 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16358
16359         * reflection.c (mono_image_get_method_info): Fix the case when the
16360         charset is empty.
16361
16362 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
16363
16364         * object.c: Added missing null check in
16365           mono_method_return_message_restore.
16366
16367 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16368
16369         * reflection.c (mono_image_get_method_info): Handle the case when
16370         dllentry is empty.
16371
16372 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
16373
16374         * object.c: When creating the vtable for a proxy, take into account
16375         all inherited interfaces, not only the ones registered in
16376         iclass->interfaces. This fixs bug #74996.
16377         Also, in mono_method_return_message_restore, verify that the array
16378         of out args has the expected lengh.
16379
16380 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16381
16382         * socket-io.c: update the timeout in Poll when the call is interrupte.
16383
16384 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16385
16386         * socket-io.c: support abort/suspend in Select_internal after last
16387         change.
16388
16389 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16390
16391         * threadpool.c: remove warning.
16392
16393 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16394
16395         * icall.c:
16396         * socket-io.[ch]: Select_internal uses poll() now when available, thus
16397         removing the 1024 limit from select(). Runtime part of the fix for
16398         bug #71203.
16399
16400 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16401
16402         * socket-io.c: when resolving the addresses for the same
16403         host returned by gethostname(), get the local IPs from the interface
16404         list. Loopback addresses are discarded if the are interfaces up with
16405         non-loopback ones. Fixes bug #63265.
16406
16407 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
16408
16409         * appdomain.c, verify.c, object-internals.h, reflection.c:
16410         bumped corlib number to 36, and added new extra_flags field
16411         to ReflectionMethodBuilder and friends.  Fixes #75060.
16412
16413 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
16414
16415         * gc.c: register a new weak link only if the object is non-null
16416         (fixes bug#75047).
16417
16418 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16419
16420         * culture-info.h : short time pattern too.
16421
16422 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16423
16424         * culture-info.h : expand long time pattern string length.
16425
16426 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16427
16428         * culture-info-table.h : update (more French date format; #72788).
16429
16430 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
16431
16432         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
16433         the method is static. Fixes #75029.
16434
16435 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
16436
16437         * reflection.c: Update the table_idx field of method builders after
16438         saving the module, since it can change. This is a workaround for
16439         bug #74914. 
16440
16441 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16442
16443         * culture-info-table.h : update (additional French date format).
16444
16445 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16446
16447         * icall.c (ves_icall_type_Equals): Revert last change.
16448         
16449         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
16450
16451         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
16452
16453 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
16454
16455         * class-internals.h: Added executioncontext_class field to 
16456         MonoDefaults structure.
16457         * domain.c: Cache System.Threading.ExecutionContext class in 
16458         mono_defaults.
16459         * object.c: Capture the ExecutionContext for asynchroneous calls in
16460          mono_async_result_new.
16461         * object-internals.h: Added execution_context and original_context 
16462         fields to MonoAsyncResult. Added execution_context to MonoThread.
16463         * security-manager.c|.h: Added mono_get_context_capture_method to 
16464         return the capture method (if required by the security manager or by
16465         the framework version used).
16466         * threadpool.c: Apply capture (if present) ExecutionContext in 
16467         mono_async_invoke and revert to original context after it completes.
16468
16469 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
16470
16471         * culture-info-table.h : updated (real hacky solution for zh-CHT).
16472
16473 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
16474
16475         * culture-info-table.h : zh-CHT related workaround.
16476
16477 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16478
16479         * marshal.c (emit_marshal_custom): Add some error checking and call the
16480         methods in the ICustomMarshaler interface. Fixes #74875.
16481         
16482         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
16483         native->managed wrappers.
16484
16485 2005-05-12  Martin Baulig  <martin@ximian.com>
16486
16487         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
16488         here and use the loader lock.
16489
16490         * mono-debug.c: Properly lock when the debugger is not attached.
16491         (mono_debug_init): Release the initial lock if we're not running
16492         in the debugger.
16493
16494 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16495
16496         * marshal.c (emit_marshal_custom): Pass through NULL values without
16497         calling the custom marshalling routines.
16498
16499         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
16500         conversion in structures. Fixes #74882.
16501
16502 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
16503
16504         * culture-info-table.h : zh-* cultures were missing.
16505
16506 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
16507
16508         * threads.c: Added a new event background_change_event which is signaled
16509         when a thread changes its background mode.
16510         Moved here several checks previously done in managed code. The checks
16511         require the thread lock, and using the thread lock in managed code
16512         can result in deadlocks.
16513         Merged Start_internal and Thread_internal into a single method. Now 
16514         Thread_internal does all work of creating and starting a thread.
16515         Added icalls for setting and getting the state of the object. Moved from
16516         managed code to avoid locking there.
16517         Added wait_for_tids_or_state_change() which is called instad of
16518         wait_for_tids when waiting for non-backround threads to end. This method
16519         will return if one of the threads ends or the background_change_event
16520         is signaled.
16521         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
16522         the background mode. This method signals the background_change_event
16523         event.
16524         * icall.c:
16525         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
16526         removed Start_internal.
16527         
16528 2005-05-11  Martin Baulig  <martin@ximian.com>
16529
16530         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
16531         to order of some fields to get proper alignment on 64-bit machines.
16532
16533 2005-05-11  Martin Baulig  <martin@ximian.com>
16534
16535         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
16536         changes as they're broken and completely fuck up the debugger.
16537
16538         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
16539
16540 2005-05-10  Martin Baulig  <martin@ximian.com>
16541
16542         * reflection.c (mono_reflection_generic_class_initialize): Don't
16543         call mono_class_setup_parent() here.
16544
16545 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16546
16547         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
16548         send/receive timeout use an integer in milliseconds. We were using a
16549         struct timeval.
16550
16551 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16552
16553         * locales.c:
16554         (internal_get_cultures): reserve the first slot of the array for the
16555         InvariantCulture, which will be filled in managed code.
16556
16557 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
16558
16559         * reflection.c (mono_image_fill_module_table): Initialize the
16560         GENERATION field as well.
16561
16562 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16563
16564         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
16565         Monitor.Enter on the object.
16566
16567 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16568
16569         * threads.c: Enable the wait for running threads when exiting.
16570         * icall.c: Suspend all threads before exiting.
16571
16572 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16573
16574         * assembly.c (mono_assembly_load_reference): Fix warning.
16575
16576 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16577
16578         * threadpool.c: changed the default number of threads per cpu. From now
16579         on, the default will be 20 + (5 * number of cpus) instead of 50.
16580
16581 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
16582
16583         * loader.c (mono_method_get_signature_full): Add locking here.
16584
16585 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
16586
16587         * appdomain.c: Moved methods for parsing and freeing assembly
16588         names to assembly.c.
16589         * assembly.c, domain-internals.h: Created public methods for parsing
16590         assembly names. Fixed mono_assembly_load_with_partial_name:
16591         it now finds the best match, taking into account the version,
16592         token and culture specified in the partial name. Also return
16593         the latest version if no version information is specified.
16594
16595 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
16596
16597         * threadpool.c: replace check for SocketAsyncCall class.
16598
16599 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16600
16601         * threadpool-internals.h:
16602         * Makefile.am: added threadpool-internals.h
16603
16604         * threadpool.c: call mono_unhandled_exception on exceptions not handled
16605         that happen in threadpool threads (tested on MS).
16606         (mono_thread_pool_remove_socket): new function that dispatch any pending
16607         AIO call on a socket that is closing. By now only epoll really needs it,
16608         as select/poll wake up when the socket closes.
16609
16610
16611         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
16612
16613 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
16614
16615         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
16616
16617 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
16618
16619         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
16620
16621 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
16622
16623         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
16624         has an abort request, convert it into a suspend request.
16625
16626 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
16627
16628         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
16629         warning for the usage of `UnmanagedFunctionPointerAttribute' which
16630         is not supported yet.
16631
16632 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16633
16634         * image.c: register assemblies loaded from data (bundles) in the loaded
16635         assemblies hash. Fixes bug #74772.
16636
16637 2005-04-29  Martin Baulig  <martin@ximian.com>
16638
16639         * class.c (mono_type_get_name_recurse): Update to the new naming
16640         schema from the latest .NET 2.x beta2.
16641         (mono_class_setup_vtable_general): If we're a generic instance,
16642         copy the vtable from our generic type definition and inflate all
16643         the methods in it.
16644
16645         * loader.c (find_method): Update to the new naming schema from the
16646         latest .NET 2.x beta2.
16647
16648 2005-04-29  Raja R Harinath  <harinath@gmail.com>
16649
16650         * class.c (mono_class_init): Add a mono_loader_unlock to the
16651         #74734 fix.
16652
16653 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16654
16655         * icall.c (ves_icall_System_Environment_Exit): Remove the 
16656         suspend_all_other_threads () call for the time being, since it can hang.
16657
16658         * threads.c (mono_thread_manage): Similarly, disable the waiting for
16659         the background threads to exit, since it can also hang.
16660
16661         * class.c (mono_class_init): Applied patch from Ankit Jain 
16662         (radical@gmail.com). Avoid pending init errors when a field refers
16663         to a nested class using a typeref. Fixes #74734.
16664
16665         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
16666         this for dynamic modules.
16667
16668 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16669
16670         * threads.c: don't wait for threads that are in the process of aborting
16671         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
16672         and waiting for background threads to finish. This makes xsp and
16673         mod-mono-server exit without random length delays and/or hangs.
16674
16675 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16676
16677         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
16678
16679 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
16680
16681         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
16682         dynamic types to prevent infinite loops. Fixes #74727.
16683
16684         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
16685         ..._is_assignable_to.
16686
16687 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
16688
16689         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
16690
16691 2005-04-25  Martin Baulig  <martin@ximian.com>
16692
16693         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
16694
16695         * domain.c
16696         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
16697
16698         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
16699
16700         * reflection.c (build_compressed_metadata): Set metadata header
16701         version to 2.0.
16702
16703 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16704
16705         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
16706         number into an integral and a decimal part. Fixes #70473.
16707
16708         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
16709
16710 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
16711
16712         * culture-info-table.h : reflected the latest locale-builder output.
16713
16714 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16715
16716         * threadpool.c: check for SuspendRequested too when deciding if
16717         mono_thread_interruption_checkpoint should be called.
16718
16719 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16720
16721         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
16722         * threads.c: remove interruption_mutex and use Interlocked instead. When
16723         suspending all the threads, wait for all the suspended events at once.
16724         If we're shutting down and get an APC that is going to be queued,
16725         call mono_thread_execute_interruption immediately, as the thread might
16726         be sleeping on a pthread condition or mutex.
16727
16728         * icall.c: call mono_runtime_set_shutting_down before suspending the
16729         threads.
16730
16731         Fixes bug #74693. And now xsp is happier when exiting.
16732
16733 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16734
16735         * loader.c (mono_stack_walk): Fix #74690.
16736
16737 2005-04-22  Martin Baulig  <martin@ximian.com>
16738
16739         * mono-debug.h (MonoDebugMethodJitInfo): Added
16740         `MonoDebugMethodJitInfo *jit'.
16741
16742         * mono-debug.c (mono_debug_read_method): Cache the
16743         MonoDebugMethodJitInfo in `address->jit'.
16744         (mono_debug_free_method_jit_info): New public method.
16745
16746 2005-04-22  Martin Baulig  <martin@ximian.com>
16747
16748         * class.c (mono_class_is_assignable_from): Disallow
16749         type parameter -> interface.
16750
16751 2005-04-21  Dick Porter  <dick@ximian.com>
16752
16753         * threads.c (mono_thread_create): Turn an assertion into an error.
16754
16755 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16756
16757         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
16758         
16759         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
16760         Fix some gcc 4.0 warnings.
16761
16762 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
16763
16764         * file-io.c: fix alt dir separator char on unix systems
16765         and cleanup (fixes bug #71214).
16766
16767 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
16768
16769         * marshal.c: Use CALLVIRT instead of CALL when dispatching
16770         a call to a remote domain, since the method may be an
16771         interface method in the client domain. This fixes bug #74192.
16772
16773 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16774
16775         * threadpool.c: recv/send are now performed before going back to managed
16776         code to save one transition.
16777
16778 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16779
16780         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
16781
16782         * metadata/threadpool.c: removed hack to workaround the bug above.
16783
16784         Fixes bug #74618.
16785
16786 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16787
16788         * reflection.c reflection.h: Fix handling of parameter defaults in
16789         dynamic methods. Also fixes handling of parameter attributes.
16790         Fixes #74609.
16791
16792         * mono-debug.c (mono_debug_close_image): Fix warning.
16793
16794 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16795
16796         * socket-io.h: replaced old unused field with new 'blocking'.
16797         * threadpool.c: restore socket blocking state on windows(tm).
16798
16799 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
16800
16801         * icall.c: don't return the codebase in the AssemblyName[] returned by
16802         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
16803         * object-internals.h: Removed FIXME (fields were presents) and fixed
16804         versioncompat declaration.
16805
16806 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16807
16808         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
16809         not closed, so don't cleanup when it happens.
16810
16811 2005-04-13  Chris Toshok  <toshok@ximian.com>
16812
16813         * mono-debug-debugger.h: change prototype for
16814         mono_debugger_lookup_type.
16815
16816         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
16817         this function, although it should probably be named
16818         mono_debugger_init_type.
16819
16820 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16821
16822         * threadpool.c: fix non-AIO case.
16823
16824 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16825
16826         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
16827         the built-in profiler to measure just JIT compilation times.
16828
16829 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16830
16831         * threadpool.c: the epollfd might be closed by another thread at
16832         any time, so ignore EBADF at treat it as a "we're closing" sign.
16833
16834 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16835
16836         * threadpool.c: release the semaphores with a count equals to the number
16837         of working threads in both IO and regular pools. Fixed typo that messed
16838         up the count of IO pool threads. Don't initialize the pipe handles if
16839         we're using epoll.
16840
16841 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16842
16843         * threadpool.c: some systems don't like a NULL when deleting the socket
16844         from epoll.
16845
16846 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16847
16848         * threadpool.c: fix semaphore allocation.
16849
16850 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16851
16852         * threadpool.c: added epoll() based implementation for asynchronous IO
16853         that is used instead of the default poll() when available.
16854         It can be disabled by setting MONO_DISABLE_AIO.
16855
16856 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16857
16858         * threadpool.c: windows needs 'closesocket' and instead of returning
16859         0 when the stream is closed while in select, it returns -1. Fixes bug
16860         #74573.
16861
16862 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
16863
16864         * class.c (class_compute_field_layout): Fix the regression caused by
16865         the previous try.
16866
16867 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16868
16869         * threadpool.c: separate pool for socket async. IO.
16870         * threadpool.h: mono_max_worker_threads is not a global any more.
16871
16872 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16873
16874         * class.c (class_compute_field_layout): Fix #74549.
16875
16876 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16877
16878         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
16879         use 2 connected sockets instead.
16880
16881 2005-04-08  Miguel de Icaza  <miguel@novell.com>
16882
16883         * mono-config.c: Add new entry point for mkbundle
16884         mono_config_parse_memory. 
16885
16886 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16887
16888         * threadpool.c: removed another unused function.
16889
16890 2005-04-08  Ankit Jain  <radical@corewars.org>
16891
16892         * reflection.c (get_default_param_value_blobs): Add 'types'
16893         parameter to get the types encoded in the constant table.
16894         (mono_param_get_objects): Use the type from the constant table,
16895         not the type of the parameter, when creating default values.
16896         Handle null default values correctly.
16897
16898 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16899
16900         * file-io.c:
16901         * file-io.h:
16902         * threadpool.c:
16903         * threadpool.h:
16904         * icall.c:
16905         * socket-io.c: removed dead code for async IO.
16906
16907 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16908
16909         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
16910
16911         * threadpool.c: intercept socket async. calls and pass them to a thread
16912         that is polling and dispatching the job items to the threadpool as
16913         socket become ready. Fixes bugs #71217, #71933.
16914
16915         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
16916         between char and short/ushort arrays.
16917
16918         * socket-io.c: remove dead code.
16919
16920 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
16921
16922         * locales.c,
16923           icall.c : removed InternalToUpper_Comp() and
16924           InternalToLower_Comp().
16925
16926 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
16927
16928         * char-conversions.h : The tables were incorrectly generated. Should
16929           be generated against invariant culture.
16930
16931 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16932
16933         * object.c (mono_runtime_invoke_array): Fix return value when 
16934         passing pre-created valuetype objects to ctors.
16935
16936         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
16937         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
16938         Fixes #74338.
16939
16940 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
16941
16942         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
16943         only used with --security and hides the wrong corlib version error.
16944
16945 2005-03-30  Joshua Tauberer  <tauberer@for.net>
16946
16947         * class.c: Changed mono_class_name_from_token so that types
16948         outside of a namespace don't have an initial period.  Improved
16949         the g_warning message used in _mono_class_get when loading
16950         fails.
16951         * assembly.c: In mono_assembly_load_reference, when an assembly
16952         can't be found, "No such file or directory" is misleading and
16953         unhelpful because a few paths were checked for the presence of
16954         the assembly.  When that happens (ENOENT), display a nicer
16955         message indicating the directories that were searched.  In all
16956         cases, the warning is made easier to read for non-hackers.
16957
16958 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16959
16960         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
16961         project/solution.
16962         * appdomain.h|domain.c: Removed inline from functions.
16963         * appdomain.c: Reduced warnings when compiling on windows.
16964         * icall.c: Fixed output_debug declaration to gunichar2*.
16965         * mono-config.c: Reduced warnings when compiling on windows.
16966         * rand.c: Added missing "windows.h". Added missing return value.
16967         * rawbuffer.c: Added missing winsock2.h for windows.
16968         * sysmath.h: Added mono-compiler.h header to allow/ease 
16969         compilation with non-GCC compilers.
16970         * threads.c: Fixed declarations to compile with VS.NET C compiler.
16971         Removed cast warnings.
16972
16973         Adapted from the work of J Lothian (for VC6).
16974
16975 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16976
16977         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
16978         from default_path.
16979
16980 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16981
16982         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
16983         the 2.0 profile.
16984
16985 2005-03-27  Raja R Harinath  <harinath@gmail.com>
16986
16987         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
16988         has to be in $(exec_prefix).  $(prefix) is for arch-independent
16989         stuff, and it would probably use $(prefix)/share rather than
16990         $(prefix)/lib.
16991
16992 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16993
16994         * console-io.c: added 2 includes that might be missing.
16995
16996 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16997
16998         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
16999         profile.
17000
17001         * reflection.c (create_custom_attr): Allocate the params array using
17002         alloca so it gets GC tracking.
17003
17004 2005-03-23  Chris Toshok  <toshok@ximian.com>
17005
17006         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17007         out some spew.
17008
17009 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17010
17011         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17012         changes to pick up any changes in prefix, etc.
17013
17014 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17015
17016         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17017         
17018         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17019         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17020
17021 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17022
17023         * class-internals.h object-internals.h class.c reflection.c: Extend the
17024         mono_lookup_dynamic_token () function to return the class of the
17025         token as well. 
17026
17027         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17028         well. Fixes #73848.
17029
17030 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17031
17032         * security-manager.c: Skip inheritance checks for intra-corlib
17033         class inheritance and method overrides. This skips a lot of checks
17034         and (anyway) permissions cannot work until corlib is loaded.
17035
17036 2005-03-23  Martin Baulig  <martin@ximian.com>
17037
17038         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17039         MONO_TYPE_GENERICINST.  
17040
17041 2005-03-23  Martin Baulig  <martin@ximian.com>
17042
17043         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17044
17045 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17046
17047         * class.c: added locking comments to some functions.
17048         Cache the interface offsets arrays (saves about 20 KB
17049         of runtime memory in a typical app).
17050         Reduce the time overhead in mono_class_setup_supertypes ().
17051
17052 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17053
17054         * icall.c: speedup and fix leaks in GetMethodsByName and
17055         GetPropertiesByName.
17056
17057 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17058
17059         * reflection.c: some locking fixes.
17060
17061 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17062
17063         * metadata.c: added missing break in case statement.
17064
17065 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17066
17067         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17068         typedbyref return values. Fixes #73941.
17069
17070 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17071
17072         * security-manager.c|h: Added demandunmanaged method and 
17073         suppressunmanagedcodesecurity class to MonoSecurityManager.
17074         Renamed aptc class to allowpartiallytrustedcallers.
17075
17076 2005-03-17  Martin Baulig  <martin@ximian.com>
17077
17078         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17079
17080 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17081
17082         * file-io.c: disabled file async. IO using aio_*. It uses the
17083         threadpool now. Workaround for bug #73718.
17084
17085 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17086
17087         * assembly.h, mono-config.c: added code to deal with bundled configs
17088         for bundled assemblies.
17089
17090 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17091
17092         * *.c, private.h: cleanup, removing old private.h header file.
17093
17094 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17095
17096         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17097         and throw_on_unmappable_char attributes.
17098
17099 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17100
17101         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17102         _ProcessName_internal.
17103
17104 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17105
17106         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17107         #73631.
17108
17109         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17110         are no longer used.
17111
17112 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17113
17114         * object.c (compute_class_bitmap): Add support for generics. Fixes
17115         #73527.
17116
17117 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17118
17119         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17120
17121 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17122
17123         * filewatcher.c: commented out the code for windows watcher, as we don't
17124         use it (we use the managed implementation instead).
17125
17126 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17127
17128         * object-internals.h (MonoThread): Remove 'unused1' field.
17129
17130         * appdomain.c: Bump corlib version.
17131
17132         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17133
17134         * reflection.c (mono_reflection_create_runtime_class): Remove the
17135         AssemblyBuilder.Save optimization since it causes too many problems.
17136
17137 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17138
17139         * exception.c|h: Added mono_get_exception_reflection_type_load to
17140         create a ReflectionTypeLoadException object.
17141         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17142         to return NULL is a InheritanceDemand fails during reflection. Updated
17143         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17144         ReflectionTypeLoadException if an InheritanceDemand fails during 
17145         reflection. Added icall mapping for GetLinkDemandSecurity.
17146         * security-manager.c|h: Added ves_icall_System_Security_
17147         SecurityManager_GetLinkDemandSecurity internal call to return the
17148         class and methods permissions set for a LinkDemand. Removed unused
17149         fields in MonoSecurityManager.
17150
17151 2005-03-10  Martin Baulig  <martin@ximian.com>
17152
17153         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17154         it's a generic instance.
17155
17156 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17157
17158         * reflection.c (mono_get_object_from_blob): Applied patch from
17159         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17160
17161         * class.c (mono_class_is_assignable_from): Another try at fixing 
17162         #73469 without breaking anything.
17163
17164 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17165
17166         * class.c: (mono_class_is_assignable_from): Revert the last changes
17167         since they don't work with generics.
17168         
17169         * class.c (mono_class_is_assignable_from): Fix build bustage.
17170
17171         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17172         the managed IsAssignableFrom method. Fixes #73469.
17173
17174         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17175         function.
17176
17177 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17178
17179         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17180         memory when the remoting callback does not sets the out arguments.
17181         Fixes #73007.
17182
17183         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17184         by mistake.
17185
17186         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17187
17188         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17189
17190         * appdomain.c: Bump corlib version.
17191
17192 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17193
17194         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17195         function.
17196
17197         * threads.c (mono_thread_attach): Detect threads which are not started
17198         by the GC pthread wrappers.
17199
17200 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17201
17202         * icall.c: Added new icall for RNG.
17203         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17204         single handle on Linux to access /dev/urandom and fix #73183.
17205
17206 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17207
17208         * object.c: setting the new vtable in a transparent proxy object must
17209         not change the GC descriptor.
17210
17211 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17212
17213         * object.c: fixed compilation without GCJ support.
17214         * reflection.c: for runtime-created types ensure klass->has_references
17215         is correct (bug #73215).
17216
17217 2005-03-02  Martin Baulig  <martin@ximian.com>
17218
17219         * class.c (mono_class_is_assignable_from): Make this work if
17220         `oklass' is a generic instance; fixes #72831.
17221
17222 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17223
17224         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17225         with hasthis set.
17226         
17227         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17228
17229         * marshal.c: Reorganize native->managed marshalling code to also use
17230         the emit_marshal_... functions.
17231
17232 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17233
17234         * object.c: typed allocs have issues with bitmap sizes > 30,
17235         so check for max_set >= 30.
17236
17237 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17238
17239         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17240         managed code. Fixes #73012.
17241
17242         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17243
17244         * metadata.c reflection.c: Load/Emit elem_mult as well.
17245         
17246         * metadata.h (MonoMarshalSpec): Add comment.
17247
17248         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17249
17250         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17251         num_elem to -1 if not given.
17252
17253         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17254
17255         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17256         given values.
17257
17258 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17259
17260         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17261
17262 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17263
17264         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17265
17266         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17267
17268 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17269
17270         * object.c: generalized the reference bitmap creation
17271         and added hooks for the new GC.
17272         * class-internals.c: removed the gc_bitmap field from MonoClass.
17273
17274 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17275
17276         * domain.c: help the compiler to produce better code
17277         in mono_jit_info_table_find ().
17278
17279 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17280
17281         * object.c: make all allocations look typed.
17282
17283 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17284
17285         * socket-io.c: load Mono.Posix if it's not loaded already
17286         (fixes bug#73033).
17287
17288 2005-02-24  Martin Baulig  <martin@ximian.com>
17289
17290         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17291         * reflection.c (dup_type): Likewise.
17292
17293 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17294
17295         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17296         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17297
17298 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17299
17300         * domain.c, threads.c, object-internals.h: make the critical thread
17301         local vars use the fast access mode (even when we're compiled in
17302         a lib). Provide accessors to be used by the jit during codegen.
17303
17304 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17305
17306         * appdomain.c: Changed hook functios behavior to include
17307         support for the reflection only assemblies. Some icalls were changed
17308         to support the mentioned assemblies too. Signatures of static methods
17309         try_assembly_resolve and real_load now have an additional parameter:
17310         refonly.
17311
17312         * assembly.c: General changes to mono_assembly_ methods to support
17313         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17314         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17315         suffix, to support an additional gbool parameter to specify whether
17316         the assembli is reflection only or not. Created some new hook functions 
17317         to add support for reflection only assemblies. Signatures of static 
17318         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
17319         have now an additional parameter: refonly.
17320
17321         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
17322         indicating whether the assembly is reflection only or not.
17323
17324         * exception.c: Add mono_get_exception_invalid_operation.
17325
17326         * icall.c: Throw an InvalidOperationException when trying to invoke
17327         a property/method/event, or trying to set/get the value of a field.
17328         Also add an icall to retrieve the ref_only flag to the
17329         MonoReflectionAssembly.
17330
17331 2005-02-23  Chris Toshok  <toshok@ximian.com>
17332
17333         Part of fix for #72827.
17334         * mono-debug.c (mono_debug_add_method): add lexical block data to
17335         the info we write.  Kind of a hack at the moment - we copy the
17336         lexical block info from the MonoDebugMethodInfo to the
17337         MonoDebugMethodJitInfo here, before writing it.
17338         (mono_debug_read_method): read the lexical block info.
17339
17340         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
17341
17342         * debug-mono-symfile.h: add lexical block support.
17343
17344         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
17345         support.
17346
17347 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17348
17349         * loader.c (mono_lookup_pinvoke_call): Fix warning.
17350
17351         * object.c (mono_runtime_free_method): Call mono_free_method () and
17352         put the TODOs there.
17353
17354         * loader.c (mono_free_method): Free up most memory allocated for 
17355         dynamic methods.
17356
17357 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17358
17359         * reflection.c: properly flag a Type argument to a
17360         named custom attr value (bug #72248).
17361
17362 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17363
17364         * reflection.c: reduce code duplication in named custom
17365         attribute encoding.
17366
17367 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
17368
17369         * reflection.c: properly encode custom attrs of type object
17370         (bug #72649).
17371
17372 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17373
17374         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
17375
17376 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
17377
17378         * socket-io.c: load System.dll if it's not loaded already
17379         (bug #72850 and #70477).
17380
17381 2005-02-21  Martin Baulig  <martin@ximian.com>
17382
17383         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17384         generic instances.
17385
17386 2005-02-21  Martin Baulig  <martin@ximian.com>
17387
17388         * reflection.c (mono_image_build_metadata): We also need to
17389         "fixup" the MethodImpl table after we computed the final method
17390         indices.  Call fixup_methodimpl() to do that.
17391         (fixup_methodimpl): New private method.
17392
17393 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17394
17395         * assembly.c: special case mscorlib.dll (bug#72536),
17396         patch from Carlos Alberto Cortez.
17397
17398 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17399
17400         * threads-types.h threads.c: Fix build bustage.
17401
17402         * threads.c: Use a union for long<->double conversions.
17403
17404         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
17405         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
17406
17407         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
17408         containing the checkpoint call with NOT_TAKEN.
17409         
17410         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
17411         checkpoint before pushing the arguments, so they won't have to be
17412         spilled to stack.
17413
17414 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17415
17416         * domain.c, assembly.c, domain-internals.h: make some data
17417         const and relocation-free.
17418
17419 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17420
17421         * object.c, appdomain.c, class-internals.h: introduce the
17422         MonoClassRuntimeInfo structure to hold the info needed to
17423         use a class at runtime. Made mono_class_vtable() lock-free
17424         for all the appdomains.
17425
17426 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
17427
17428         * metadata-internals.h, image.c: introduce a per-image mempool to
17429         be used for memory that has the same lifetime as the image.
17430
17431 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
17432
17433         * domain.c: In mono_init_internal(), instead of selecting the first
17434         runtime version supported by an executable, get a list of all
17435         supported versions and select the one for which an mscorlib exists
17436         (since even if the runtime supports a given version, it doesn't mean
17437         that the framework for that version is installed).
17438         Modified get_runtimes_from_exe to support this behavior.
17439         In supported_runtimes, added information about additional system
17440         assembly versions.
17441         
17442         * assembly.c: Added support for more than one system assembly version
17443         per runtime version. Updated the assembly list.
17444         In mono_assembly_remap_version, removed the initial version check,
17445         since we don't know to which version we need to compare until we
17446         get the version set on which the assembly is based.
17447         Moved the code for loading corlib into the new method
17448         mono_assembly_load_corlib(), so it can be used by the initialization
17449         code.
17450         
17451         * domain-internals.h: Updated data structures and added declaration
17452         for mono_assembly_load_corlib.
17453
17454 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17455
17456         * reflection.c (resolve_object): Fix the creation of the signature in 
17457         the SignatureHelper case.
17458
17459         * assembly.c (mono_assembly_remap_version): Fix binary search.
17460         
17461 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
17462  
17463         * class.c: Added inheritance check when a method is overloaded (from a
17464         virtual method or when implementing an interface) and when a class is
17465         inherited. Added functions to set a failure for a class and to 
17466         retreive the exception from a failure.
17467         * class-internals.h: Added fields to MonoClass to keep the exception
17468         information status for inheritance (or other exceptions) to be thrown
17469         later (i.e. not at load time).
17470         * object.c: Throw the inheritance SecurityException when a type is to 
17471         be created with either class or method inheritance violations.
17472         * reflection.c|h: Fix when getting declsec from a class. Removed 
17473         unrequired code for class. Improved sanity in parameter naming.
17474         * security-manager.c|h: Added functions to check for class and method
17475         inheritance.
17476
17477 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17478
17479         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
17480         and has_finalize in dynamic types as well.
17481
17482 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
17483
17484         * culture-info-table.h : fixed currency format for en-GB (and so on).
17485
17486 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
17487
17488         * gc.c: ensure the GC handles never have 0 as a value.
17489
17490 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17491
17492         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
17493         a pointer to a struct to unmanaged code. Fixes #72625.
17494
17495 2005-02-16  Martin Baulig  <martin@ximian.com>
17496
17497         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
17498
17499 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17500
17501         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
17502
17503 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17504
17505         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
17506
17507         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
17508         UnmanagedFunctionPointerAttribute, use it for determining calling convention
17509         etc. Fixes #71471.
17510
17511         * reflection.c (mono_custom_attrs_get_attr): New helper function.
17512
17513         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
17514
17515 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
17516
17517         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
17518         changes to make the current context a field in MonoThread.
17519
17520 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17521
17522         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
17523         the last change.
17524         
17525         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
17526         extracted from mono_marshal_get_native_wrapper.
17527
17528         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
17529         to create wrappers around native functions.
17530
17531         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
17532         delegates for arbitrary function pointers. Fixes #71472.
17533
17534 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17535
17536         * threads.c: cleaned up the code a little.
17537
17538 2005-02-15  Martin Baulig  <martin@ximian.com>
17539
17540         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
17541         the data table.
17542
17543         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
17544         allocate larger chunks if needed.
17545
17546 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17547
17548         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
17549         in by mistake.
17550
17551 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
17552
17553         * domain.c: keep the domains in an array and ensure the domain ids
17554         are kept small, so they can be used as indexes to domain-specific data
17555         with a small memory overhead.
17556
17557 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17558
17559         * icall.c: Handle byref types in Type icalls. Fixes #72544.
17560
17561 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
17562
17563         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
17564
17565 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17566
17567         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
17568
17569         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
17570         values.
17571
17572         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
17573         
17574 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17575
17576         * domain-internals.h: add the hashtable here.
17577
17578         * class-internals.h: Remove `info' from MonoMethod
17579
17580         * domain.c: Add a new hashtable, jit_trampoline_hash
17581
17582 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17583
17584         * object.c: don't set the value of static fields
17585         (fixes bug#72494).
17586
17587 2005-02-11  Martin Baulig  <martin@ximian.com>
17588
17589         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
17590         (mono_debug_add_method): Silently ignore the method if it's too big.
17591         (mono_debug_add_type): Likewise.
17592
17593 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
17594
17595         * threads.c, appdomain.c: remove #ifdefs from the code.
17596
17597 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17598
17599         * metadata-internals.h: Added flags to MonoAssembly to cache the most
17600         common security informations. This allows us to stay in unmanaged code
17601         when doing LinkDemand and it's special cases (except for the first 
17602         time for initialization). The flags a very much used with --security.
17603         * reflection.c|h: Added code to get declarative security attributes 
17604         for LinkDemand and InheritanceDemand. This required to refactor the
17605         existing code for Demand.
17606         * security-manager.c|h: Added new method fields for the special cases
17607         of LinkDemand.
17608
17609 2005-02-10  Martin Baulig  <martin@ximian.com>
17610
17611         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
17612         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
17613
17614 2005-02-10  Martin Baulig  <martin@ximian.com>
17615
17616         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
17617         debugging code; this is almost a complete rewrite.
17618
17619         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
17620
17621 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17622
17623         * domain.c, object.h: expose mono_string_equal () and 
17624         mono_string_hash ().
17625         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
17626         it's implemented in managed code.
17627
17628 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17629
17630         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
17631         lo leak objects between appdomains.
17632
17633 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17634
17635         * assembly.c: old compilers compilation fix from 
17636         robertj@gmx.net (Robert Jordan).
17637
17638 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
17639
17640         * class-internals.h: Little reminder for the future.
17641
17642         * debug-helpers.c: Fix up wrapper_type_names
17643
17644 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17645
17646         * image.c, metadata-internals.h: when loading an image from a file,
17647         mmap all of it and use the same codepaths as when using a
17648         in-memory image: the code is simpler and we use less memory
17649         (both writable and readonly).
17650
17651 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17652
17653         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
17654         API to alloc runtime data structures that need to be tracked by the
17655         GC and contain pointers.
17656         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
17657         make the code more readable and eventually use a different GC.
17658
17659 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
17660
17661         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
17662         for out arguments.
17663         
17664 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
17665
17666         * object.c: In release_type_locks(), don't release the cctor lock
17667         if it has already been released. This fixes a crash in the
17668         thread5 test.
17669
17670 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17671
17672         * gc.c, marshal.c, icall.c: register a delegate for finalization
17673         only when the native function pointer has been allocated for it.
17674
17675 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17676
17677         * object.c: cleaned up some code, allocate objects that are
17678         pointer free with the atomic malloc variant. Allocate memory
17679         for static data from the mempool if it's pointer-free.
17680         Allocate the bounds array at the end of the array data, when needed.
17681         * object-internals.h, object.h: move a private function in a private
17682         header.
17683         * class.c: handle missing case in tracking references in fields.
17684
17685 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17686
17687         * class.c, class-internals.h: keep track if a type has
17688         reference fields in either the instance or static fields.
17689
17690 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
17691
17692         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
17693         and renamed to MonoRuntimeInfo. Added fields to store the expected
17694         framework assembly version. Changed mono_get_framework_version and
17695         mono_get_runtime_version for a single mono_get_runtime_info method.
17696         
17697         * assembly.c: Added method to remap system assembly versions to the
17698         current executing runtime version. Removed old mapping code.
17699         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
17700         
17701         * icall.c, reflection.c: Track api changes.
17702
17703 2005-02-06  Miguel de Icaza  <miguel@novell.com>
17704
17705         * loader.c (method_from_memberref): Improve error reporting,
17706         produce the class name instead of the typeref/typedef index. 
17707
17708 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
17709
17710         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
17711
17712 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17713
17714         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
17715         stdcall and charset name mangling.  Reorganize the code and add
17716         some tracing stuff.
17717
17718 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17719
17720         * monodiet.c: More iters!
17721
17722         * marshal.c: Iter usage.
17723
17724         * icall.c: Iter usage.
17725
17726         * object.c: Use iters.
17727
17728         * debug-helpers.c: More iters
17729
17730 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17731
17732         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
17733         under win32.
17734
17735 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17736
17737         * mono-debug-debugger.c: use iters
17738
17739         * class.c, class-internals.h: mono_class_setup_events is static
17740         now
17741
17742         * All callers: use iters
17743
17744 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17745
17746         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
17747         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17748
17749 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17750
17751         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
17752
17753         * marshal.h: Add prototypes for ldfld/stfld_remote.
17754
17755         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
17756         this is called during startup.
17757         
17758 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17759
17760         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
17761         MonoThreadsSync struct private in monitor.c. Changed the way
17762         MonoThreadsSync is allocated so it's faster and there is no
17763         need to keep track of it with a finalizer and it uses less memory.
17764         This also finally allows us to allocate mono objects as ptrfree when
17765         there are no reference fields.
17766
17767 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
17768
17769         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
17770         disappearing link to the GC interface and use them to simplify
17771         the gchandles code.
17772
17773 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17774
17775         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
17776         stfld_remote which call mono_load/store_field_new. This allows methods
17777         calling ldfld/stfld wrappers to be AOTed.
17778
17779         * console-io.c: Include sys/filio.h under solaris.
17780         
17781         * console-io.c: Include curses.h if needed correctly.
17782
17783 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17784         
17785         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
17786         method->klass as well.
17787
17788         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
17789
17790         * class.c (mono_class_init): Switch on lazy initialization of 
17791         methods.
17792
17793         * class.c (mono_class_get_finalizer): Handle the case when the 
17794         finalizer is inherited.
17795
17796 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17797
17798         * console-io.c: <curses.h> is needed by term.h on solaris.
17799
17800 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
17801
17802         * icall.c, class-internals.h, monodiet.c, class.c: Remove
17803         mono_class_setup_properties where possible. Remove this ftn from
17804         the header file, and make it static.
17805
17806 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17807
17808         * loader.c: Add missing setup_... call.
17809
17810         * class.c: Add missing setup_... calls.
17811
17812         * class.c (mono_class_init): Switch on lazy initialization of 
17813         the generic vtable.
17814         
17815         * class.c (mono_class_init): Fix generics broken by the recent changes.
17816
17817         * monodiet.c (handle_type): Add missing setup_... calls.
17818
17819         * class.c: Back out garbage in previous patch.
17820         
17821         * class.c: Add missing setup_... calls.
17822
17823         * class.c (mono_class_get_method_from_name_flags): Avoid calling
17824         mono_class_setup_methods () if possible.
17825
17826         * class-internals.h (MonoClass): Add 'has_cctor' flag.
17827
17828         * class-internals.h (MonoCachedClassInfo): New structure.
17829
17830         * class.c: Initialize properties and events fields of MonoClass lazily.
17831
17832         * class.c: Add infrastructure for lazily initializing the methods and
17833         vtable fields of MonoClass. Not yet used.
17834
17835         * class.c (mono_class_get_finalizer): New helper function.
17836
17837         * class.c: Add infrastructure for loading some class related data from
17838         an AOT file.
17839
17840         * object.c: Add infrastructure for initializing the vtable from data
17841         in the AOT file.
17842
17843         * gc.c (run_finalize): Use mono_class_get_finalizer ().
17844
17845         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
17846         appropriate initialization function before accessing parts of the
17847         MonoClass structure.
17848
17849         * marshal.c: Fix warnings.
17850         
17851         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
17852
17853         * mono-debug-debugger.c (get_exception_message): Use 
17854         mono_class_get_method_from_name_flags ().
17855
17856 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
17857
17858         * reflection.c, appdomain.c: Replace a few manual searches that
17859         Zoltan missed. (Paolo approved this part of my initial patch).
17860
17861 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
17862
17863         * profiler.c: disable recording statistical events at report time.
17864
17865 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17866
17867         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
17868         to byteswap arrays of enum values, too (bug #72080).
17869
17870 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17871
17872         * appdomain.c (set_domain_search_path): Allow this to be called if
17873         domain->setup is not yet set.
17874
17875         * loader.c (mono_method_get_index): New helper function.
17876
17877         * loader.c reflection.c: Use mono_method_get_index ().
17878
17879         * class.c (mono_class_get_method_from_name_flags): New helper method.
17880
17881         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
17882         this.
17883
17884         * class.c (mono_class_get_cctor): New helper method.
17885
17886         * string-icalls.c object.c class.c marshal.c reflection.c: Use
17887         mono_class_get_method () to look up methods.
17888
17889 2005-02-01  Miguel de Icaza  <miguel@novell.com>
17890
17891         * console-io.c: Fix the build, this should work on Windows.
17892
17893 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
17894
17895         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
17896         be set to null to keep things valid
17897
17898 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17899
17900         * icall.c: added Console 2.0 icalls.
17901         * Makefile.am: added console-io.[ch]
17902         * console-io.[ch]: internal calls for Console 2.0 API.
17903
17904 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17905
17906         * class.c: make sure we consider all the interfaces
17907         when calculating max_interface_id (bug found by
17908         Jeroen Frijters running ikvm).
17909
17910 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17911
17912         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
17913         valuetype fields to null.
17914
17915         * object.c (set_value): Ditto. Fixes #71669.    
17916
17917 2005-01-31  Martin Baulig  <martin@ximian.com>
17918
17919         * metadata.c (mono_metadata_has_generic_params): New public
17920         function; checks whether something is a generic method.
17921
17922 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17923
17924         * appdomain.c: fix infinite recursion when adding assemblies.
17925
17926 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
17927
17928         * object.c: Fix small typo to return all items for Environment.
17929         GetCommandLineArgs.
17930
17931 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17932
17933         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
17934         reflection.c: more domain and assembly-unload related fixes
17935         and memory leaks plugs.
17936
17937 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17938
17939         * 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.
17940
17941 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17942
17943         * loader.c (mono_method_signature): Make this method lazy
17944         (mono_get_method_from_token): Don't computate the signature here.
17945
17946         Doing this saves quite a bit of memory. I got 90 kb on starting up
17947         monodoc. It should also save some disk reads on startup.
17948
17949         * *: MonoMethod->signature might be NULL now. You *MUST* use
17950         mono_method_signature.
17951
17952 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
17953
17954         * object.c (mono_runtime_get_main_args): Return an array from the
17955         current domain here. Fixes #71938.
17956
17957 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17958
17959         * monitor.c: formatting changes to comply with the
17960         mono coding style and remove #ifdefs from the code.
17961
17962 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17963
17964         * metadata.c, private.h: remove some unneeded data
17965         and use a more compact representation for table schemas.
17966
17967 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17968
17969         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
17970         to get a better distribution in hash tables.
17971         * *.c: use mono_aligned_addr_hash() where appropriate.
17972         * assembly.c: make var static.
17973
17974 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17975
17976         * domain-internals.h: Put MonoJitInfo on a diet.
17977
17978         * domain.c: Fix a warning.
17979
17980 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17981
17982         * gc.c: rework the gc handles code to reuse handles
17983         when freed.
17984
17985 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17986
17987         * domain.c: fixed long standing bug in mono_string_equal() which
17988         was brought to light with the ldstr changes.
17989
17990 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17991
17992         * reflection.c: Remove warning by adding missing include for marshal.h
17993
17994 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17995
17996         * domain.c, object.c: change the ldstr_table to hold
17997         MonoString* as keys: makes the runtime isinterned lookup
17998         faster and simplifies memory management.
17999
18000 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
18001  
18002         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
18003         possible to add imperative security checks before calling the icall.
18004         * reflection.c: Return security attributes on the original MonoMethod
18005         (and not the wrapped one). This fix permissions on icalls.
18006
18007 2005-01-25  Dick Porter  <dick@ximian.com>
18008
18009         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18010         the check for mktime() support actually test the mktime() return
18011         value.  "Fixes" bug 71682, though the output is still different to
18012         MS.
18013
18014 2005-01-25  Martin Baulig  <martin@ximian.com>
18015
18016         * class.c (mono_class_is_assignable_from): Make this work for
18017         generic instances.
18018
18019 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18020
18021         * marshal.c (mono_string_utf8_to_builder)
18022         (mono_string_builder_to_utf16): We might not have ownership of the
18023         string. In thise case, we need to create a new buffer.
18024
18025         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18026         be null, in which case, use the default capacity.
18027
18028 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18029
18030         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18031         GC events to the profiler.
18032
18033 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18034
18035         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18036         if you don't want the GC to run.
18037
18038 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18039
18040         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18041         start providing a GC API and keeping different implementations in
18042         their own file.
18043         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18044
18045 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18046
18047         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18048         mmap rather than allocating a huge buffer.
18049         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18050         above.
18051
18052 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18053
18054         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18055         and CheckExecutionRights.
18056         * reflection.c|h: Keep the index of the declarative security to be 
18057         used, instead of the pointer, when AOT compiler is used. Also add 
18058         class initialization when requesting demands.
18059         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18060         CheckExecutionRights. Both properties are now FALSE by default, and
18061         unmodifiable, unless the --security option is used.
18062
18063 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18064
18065         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18066         reflection.c: properly refcount images and assemblies, many leaks fixed.
18067
18068 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18069
18070         * threadpool.c: increase the timeout for threads in the thread pool to
18071         10s.  Fixes bug #67159.
18072
18073 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18074
18075         * class-internals.h: Sun's compiler insists on explicit
18076         signed on bit fields to handle then correctly.
18077
18078 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18079
18080         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18081         Make the size of the array fit only the number of invalid path
18082         chars that we have.
18083
18084         * class.c (_mono_class_get): Improve the error reporting when a
18085         class referenced is not found, to assist debugging. 
18086
18087 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18088
18089         * threads.c: fix off-by-one error.
18090         * domain.c: free data allocated in the domain.
18091
18092 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18093
18094         * reflection.c (mono_method_body_get_object): Fill out exception info
18095         as well.
18096
18097         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18098         structure.
18099         
18100 2005-01-19  Martin Baulig  <martin@ximian.com>
18101
18102         * loader.c (mono_get_method_constrained): Make this work again.
18103
18104 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18105
18106         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18107         guint16 to match the managed side.
18108
18109         * reflection.c (mono_reflection_body_get_object): Fill out local
18110         variables array.
18111
18112         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18113         as well.
18114
18115         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18116         'local_var_sig_token'.
18117
18118 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18119
18120         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18121         System.Drawing.
18122
18123         * reflection.c (mono_method_body_get_object): Handle abstract and
18124         runtime methods.
18125
18126 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18127
18128         * marshal.c, loader.c, class-internals.h, reflection.c:
18129         store the emthod data for a wrapper in an array instead of a list.
18130
18131 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18132
18133         * marshal.c: change the code to allocate memory more
18134         conservatively for method wrappers.
18135
18136 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18137
18138         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18139         fields from MonoClass to the marshal info structure where they belong.
18140
18141 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18142
18143         * class.c, object.c, class-internals.h, marshal.c: rearrange
18144         some fields and tweak some types to lower memory usage.
18145
18146 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18147
18148         * threads.c (signal_thread_state_change): Handle the case when the
18149         target thread is the current thread.
18150
18151         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18152
18153         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18154         emit_ptr_to_object_conv. 
18155
18156         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18157         marshalling. Fixes #71352.
18158
18159 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18160
18161         * metadata.h, blob.h: move table enum to blob.h so it can be included
18162         in any header.
18163         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18164         cut the size of MonoImage/MonoDynamicImage.
18165
18166 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18167
18168         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18169
18170 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18171
18172         * reflection.c, reflection.h, icall.c: add a function to check
18173         if an attribute type is defined for a metadata object.
18174
18175 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18176
18177         * object-internals.h: Added some needed fields from StringBuilder class.
18178         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18179
18180 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18183         threads before shutting down the runtime.
18184
18185         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18186
18187 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18188
18189         * object-internal.h, threads.c: implement stacksize and 
18190         parameterized thread start functionality (requires
18191         matching corlib). Marked broken code for later removal.
18192
18193 2005-01-12  Martin Baulig  <martin@ximian.com>
18194
18195         * class-internals.h (MonoGenericClass): Moved the `initialized'
18196         flag to MonoDynamicGenericClass, removed `init_pending'.
18197         (MonoGenericInst): Added `is_reference' flag.
18198
18199 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18200
18201         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18202         inside the MSDOS header. Fixes #71201.
18203
18204         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18205         gc thread.
18206         (mono_domain_finalize): Ditto.
18207
18208 2005-01-12  Martin Baulig  <martin@ximian.com>
18209
18210         * class.c (mono_get_shared_generic_class): Use the cache for
18211         non-dynamic generic classes.
18212
18213         * class-internals.h (mono_class_create_generic_2): Removed
18214         function prototype, this function is now static inside class.c.
18215
18216         * class.c (mono_class_create_generic_2): Made this static, only
18217         call it from mono_class_init() and mono_class_setup_parent().
18218         (collect_implemented_interfaces_aux): Call mono_class_init() on
18219         the interfaces we collect.
18220         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18221
18222 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18223
18224         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18225         it a real thread handle.
18226
18227         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18228         MonoJitExceptionInfo, since each catch clause needs its own variable.
18229         
18230 2005-01-11  Dick Porter  <dick@ximian.com>
18231
18232         * image.c (mono_pe_file_open): New variant on mono_image_open()
18233         that does not set up the CLI metadata; used for FileVersionInfo so
18234         it can get the data for windows binaries too.
18235         
18236         * process.c (process_read_string_block): Don't read off the end of
18237         the StringTable block.
18238
18239         These both fix bug 70766.
18240
18241 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18242
18243         * gc.c: set some fields to NULL at GC cleanup time.
18244         * threads.c: if we quit the main thread, call exit ().
18245
18246 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18247
18248         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18249
18250 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18251
18252         * threads.h, threads.c, object.c: added accessor and settor for
18253         main_thread. Handle it specially when exiting from it: wait
18254         for other foreground threads to exit.
18255
18256 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18257
18258         * process.c, verify.c: remove some bloat.
18259
18260 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18261
18262         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18263         the calling convention to cdecl under win32.
18264
18265 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18266
18267         * object.c (mono_object_get_size): New function to get the size of
18268         an object instance.
18269
18270         * profiler.c (simple_allocation): Use above.
18271
18272 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18273
18274         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18275         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18276         get an appdomain by it's id and we can't assume the root's id is 0).
18277         * domain-internals.h: Change the function prototype to match.
18278         * icall.c: Change the icall table for AppDomain.
18279
18280 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18281
18282         * locales.c (string_invariant_compare_char): Only compute
18283         GUnicodeTypes in the case where we need them.  Test for ordinality
18284         first and return if so.
18285
18286         From the commit:
18287
18288                 /*
18289                  * FIXME: here we must use the information from c1type and c2type
18290                  * to find out the proper collation, even on the InvariantCulture, the
18291                  * sorting is not done by computing the unicode values, but their
18292                  * actual sort order.
18293                  */
18294
18295 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18296
18297         * loader.c: for P/Invoke methods, allow the "Internal" shared
18298         library name to refer to the calling process symbol namespace.
18299
18300 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18301
18302         * Makefile.am: Add the security manager to the build.
18303         * security-manager.c|h: New. Initialization of the security manager.
18304
18305 2005-01-07  Dick Porter  <dick@ximian.com>
18306
18307         * threads.c: 
18308         * monitor.c: Update thread state during Monitor and WaitHandle
18309         waits.  Fixes bug 71031.
18310
18311 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18312
18313         * reflection.c (property_encode_signature): Correctly handle when the
18314         property has no methods.
18315
18316 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18317
18318         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
18319         
18320         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
18321         fields from mb, not rmb. Fixes #71017.
18322
18323         * marshal.c (emit_ptr_to_str_conv): Add support for 
18324         ByValTStr -> string conversion. Fixes #71015.
18325
18326         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
18327
18328         * mempool.c (mono_mempool_contains_addr): New helper function.
18329
18330 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18331
18332         * metadata.c (mono_metadata_compute_size): Fix size calculation of
18333         HasSematics encoded fields.
18334         
18335         * metadata.c (mono_type_to_unmanaged): Improve error message for 
18336         invalid string marshalling.
18337
18338         * metadata.c: Fix warnings.
18339         
18340 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18341
18342         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
18343         profiler support.
18344
18345 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18346
18347         * domain.c object.c domain-internals.h: Revert part of r38077 since the
18348         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
18349         tests.
18350
18351 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18352
18353         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
18354         so methods containing these can be AOTed.
18355
18356 2005-01-03  Martin Baulig  <martin@ximian.com>
18357
18358         * loader.c (find_method): Removed the hack for generic instances.
18359         (method_from_memberref): If our parent is a generic instance, pass
18360         its generic type definition to find_method() and then inflate the
18361         method.
18362         (mono_get_method_constrained): Pass the generic type definition to
18363         find_method() and inflate the method later.
18364
18365         * class-internals.h (MonoStats): Added `generic_class_count'.
18366
18367         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
18368         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
18369
18370         * reflection.c (mono_custom_attrs_from_params): Don't ignore
18371         generic type definitions.
18372
18373 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18374
18375         * loader.c icall.c: Fix warnings.
18376
18377 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
18378
18379         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
18380         blittable types. Fixes #70864.
18381
18382 2004-12-29  Martin Baulig  <martin@ximian.com>
18383
18384         * icall.c
18385         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
18386
18387         * reflection.c (mono_method_get_object): Create a
18388         "System.Reflection.MonoGenericMethod" for inflated methods; don't
18389         call mono_get_inflated_method().
18390
18391         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
18392
18393 2004-12-27  Martin Baulig  <martin@ximian.com>
18394
18395         * class-internals.h (MonoMethod): Added `is_inflated' flag.
18396         (MonoMethodInflated): Added `inflated' field.
18397
18398         * class.c (mono_class_inflate_generic_method): Don't really
18399         inflate the method here; just set the `is_inflated' flag in the
18400         MonoMethod.
18401         (mono_class_get_inflated_method): Actually inflate the method here
18402         if it's not already inflated; we use the MonoMethodInflated's new
18403         `inflated' field as a cache.
18404
18405 2004-12-26  Martin Baulig  <martin@ximian.com>
18406
18407         * class.c
18408         (inflate_generic_class): Moved some code out of inflate_generic_type().
18409         (mono_class_inflate_generic_method): If we're already inflated,
18410         inflate the context and use the declaring method; ie. make sure
18411         the declaring method of an inflated method is always the generic
18412         method definition.
18413         (mono_class_create_from_typedef): Create
18414         `class->generic_container->context->gclass'.
18415
18416 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18417
18418         * metadata-internals.h, marshal.c, reflection.c: More
18419         MonoGHashTable->GHashTable.
18420
18421         * domain-internals.h, class.c: Change MonoGHashTable's into
18422         GHashTables for some cases where no gc stuff is used
18423
18424         All users: update apis
18425
18426 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
18427
18428         * metadata.c (builtin_types): Make this `const'. Makes this get
18429         put into the shareable section.
18430         (mono_metadata_init): Casts to make gcc happy.
18431
18432 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
18433
18434         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
18435
18436 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
18437
18438         * icall.c: Added an internal call to retrieve the position and length
18439         of assembly-level declarative security attributes (RequestMinimum, 
18440         RequestOptional and RequestRefuse). This is used by the Assembly class
18441         to re-create the corresponding permission sets.
18442
18443 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18444
18445         * marshal.c: fix the stelemref wrapper to be type correct
18446         (and faster).
18447
18448 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18449
18450         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
18451         to do key & 0x7fffffff. Hashtable already does this. It just
18452         results in longer code.
18453
18454 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18455
18456         * appdomain.c: Bump corlib version.
18457         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
18458         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
18459         * reflection.c|h: Add functions to get declarative security infos
18460         (blob position and length) for assemblies, classes and methods.
18461
18462 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
18463
18464         * reflection.c: sort the constant table (bug #70693).
18465
18466 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
18467
18468         * object-internals.h, threads.c, domain.c: add accessors for
18469         the MonoThread and MonoDomain tls keys.
18470
18471 2004-12-18  Martin Baulig  <martin@ximian.com>
18472
18473         * class.c (inflate_generic_type): If we're inflating a generic
18474         instance, set `ngclass->context->container = context->container';
18475         ie. the container we inflated into.
18476
18477         * metadata.c (mono_metadata_parse_generic_param): Reflect above
18478         inflate_generic_type() changes.
18479
18480 2004-12-17  Martin Baulig  <martin@ximian.com>
18481
18482         * class-internals.h
18483         (MonoGenericClass): Replaced `MonoType *generic_type' with
18484         `MonoClass *generic_class'.  Removed `dynamic_info'; if
18485         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
18486         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
18487
18488 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18489
18490         * exception.c (mono_exception_from_token): New helper function.
18491
18492 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18493
18494         * assembly.c (mono_assembly_load_with_partial_name): Call 
18495         mono_assembly_loaded before invoking the preload hooks. Fixes
18496         #70564.
18497
18498         * object-internals.h (MonoThread): Change culture_info and 
18499         ui_culture_info into an array.
18500
18501         * threads.c: Cache culture info objects from more than one appdomain.
18502
18503         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
18504         current UI culture.
18505
18506 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18507
18508         * threads.h threads.c appdomain.c: Clear the culture_info field of
18509         all threads during unloading if they point to an object in the dying
18510         appdomain.
18511
18512 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
18513
18514         * culture-info.h (TextInfoEntry): New struct
18515         * object-internals.h: sync with managed
18516         * locales.c: fill the `text_info_data' field
18517         * culture-info-tables.h: update
18518
18519 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18520
18521         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
18522         collector.
18523
18524 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
18525
18526         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
18527         (ves_icall_ModuleBuilder_getMethodToken): Ditto
18528
18529 2004-12-12  Martin Baulig  <martin@ximian.com>
18530
18531         * mono-debug-debugger.c (write_type): If we're an enum and the
18532         builtin types have already been initialized, call mono_class_init().
18533
18534 2004-12-11  Martin Baulig  <martin@ximian.com>
18535
18536         * metadata.c (mono_metadata_load_generic_params): Added
18537         `MonoGenericContainer *parent_container' argument; automatically
18538         compute `container->is_method'; pass the correct owner to
18539         get_constraints().      
18540
18541         * reflection.c (compare_genericparam): Sort the GenericParam table
18542         according to increasing owners. 
18543
18544 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18545
18546         * profiler.c: allow disabling the default profiler.
18547
18548 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
18549
18550         * decimal.c, icall.c: allow disabling System.Decimal support.
18551
18552 2004-12-09  Marek Safar <marek.safar@seznam.cz>
18553
18554         * reflection.c: Add support for null attribute arguments.
18555
18556 2004-12-09  Martin Baulig  <martin@ximian.com>
18557
18558         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
18559         names to get rid of compiler warnings.
18560
18561 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18562
18563         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
18564         mono_marshal_load_type_info (). Fixes #69625.
18565         (mono_marshal_get_ptr_to_struct): Likewise.
18566
18567 2004-12-08  Martin Baulig  <martin@ximian.com>
18568
18569         * mono-debug.h: Bumped version number to 47.
18570
18571         * mono-debug-debugger.c
18572         (mono_debugger_event_handler, mono_debugger_event): Take two
18573         guint64 arguments insteed of a gpointer and a guint32.  
18574
18575 2004-12-08  Martin Baulig  <martin@ximian.com>
18576
18577         * debug-mono-symfile.h
18578         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
18579         `address' to `native_offset'.
18580
18581 2004-12-08  Martin Baulig  <martin@ximian.com>
18582
18583         * class.c (mono_class_create_from_typespec): Only inflate if we
18584         either have `context->gclass' or `context->gmethod'.
18585
18586 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18587
18588         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
18589
18590         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
18591
18592         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
18593
18594         * reflection.c (mono_assembly_get_object): Remove the workaround put
18595         in for the release.
18596         
18597         * appdomain.c: Use the corlib_internal field from MonoAssembly.
18598
18599         * appdomain.c: Bump corlib version.
18600
18601         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
18602         be visible in other appdomains.
18603
18604 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
18605
18606         * threads.c: Interlocked inc and dec for longs were messed up,
18607         use a KISS based impl for this. Fixes 70234
18608
18609 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18610
18611         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
18612
18613 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18614
18615         * icall.c: fix to follow policy not to allow struct
18616         arguments in icalls.
18617
18618 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18619
18620         * process.c: make the patch that handles spaces in file paths work
18621         on mono/windows too.
18622
18623 2004-12-06  Martin Baulig  <martin@ximian.com>
18624
18625         * class.c (mono_class_create_generic): Call
18626         mono_class_setup_supertypes() if we're dynamic.
18627         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
18628
18629 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18630
18631         * object-internals.h: Add new fields to MonoThread.
18632
18633         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18634
18635         * icall.c threads-types.h threads.c: Add new icalls.
18636
18637         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
18638
18639         * object-internals.h (MonoReflectionAssembly): Sync object layout with
18640         managed side.
18641
18642         * appdomain.c: Bump corlib version.
18643
18644         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
18645         internal assemblies. Fixes #69181.
18646
18647 2004-12-05  Martin Baulig  <martin@ximian.com>
18648
18649         * class.c (mono_class_inflate_generic_signature): Make this a
18650         no-op if `context' is NULL or we don't have any type parameters;
18651         also copy `sentinelpos'.        
18652
18653 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * image.c: Add unbox_wrapper_cache.
18656
18657         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
18658
18659         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
18660         function generator.
18661         
18662         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
18663         Fixes #70173.
18664
18665         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
18666         
18667 2004-12-04  Martin Baulig  <martin@ximian.com>
18668
18669         * loader.c (mono_method_get_signature_full): New public function;
18670         like mono_method_get_signature(), but with an additional
18671         `MonoGenericContext *' argument.
18672
18673         * class.c (mono_class_inflate_generic_signature): Formerly known
18674         as inflate_generic_signature(); make this public.
18675
18676 2004-12-04  Martin Baulig  <martin@ximian.com>
18677
18678         * metadata.c
18679         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
18680         instead of a `MonoGenericContainer *'.  
18681         (mono_metadata_parse_array_full): Likewise.
18682         (mono_metadata_parse_signature_full): Likewise.
18683         (mono_metadata_parse_method_signature_full): Likewise.
18684         (mono_metadata_parse_generic_inst): Likewise.
18685         (mono_metadata_parse_generic_param): Likewise.
18686         (mono_metadata_parse_mh_full): Likewise.
18687         (mono_type_create_from_typespec_full): Likewise.
18688
18689 2004-12-03  Martin Baulig  <martin@ximian.com>
18690
18691         * class-internals.h (MonoGenericContainer): Replaced the
18692         `MonoGenericContext * pointer with a `MonoGenericContext'
18693         structure and made it the first element.
18694
18695 2004-12-03  Martin Baulig  <martin@ximian.com>
18696
18697         * class.c
18698         (inflate_generic_type): Set the `context->container' when creating
18699         a new MonoGenericContext.
18700         (mono_class_inflate_generic_method): Likewise.
18701         (mono_class_create_from_typespec): Just use `context->container'
18702         to get the container.
18703
18704         * loader.c (method_from_methodspec): Set `context->parent' from
18705         `context->container' - and if that's a method container, use its
18706         parent.  Also set the `context->container' when creating a new
18707         MonoGenericContext.
18708         (mono_get_method_from_token): Use just `context->container' to get
18709         the container.
18710
18711         * metadata.c (do_mono_metadata_parse_generic_class): Also set
18712         `gclass->context->container'.
18713
18714         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
18715         the `context->container' when creating a new MonoGenericContext.
18716
18717 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
18718
18719         * reflection.c (compare_genericparam): Sort params with identical
18720         owner by their number. Fixes gen-111 on sparc.
18721
18722 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18723
18724         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
18725         around the domain changes.
18726
18727         * appdomain.c (mono_domain_unload): Handle the case when the thread
18728         calling Unload is itself being aborted during unloading. Fixes #70022.
18729
18730         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
18731
18732         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
18733         checkpoint_func as an icall so it gets a wrapper.
18734         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
18735         in the cross-appdomain wrappers too.
18736
18737         * threads.c (mono_thread_has_appdomain_ref): Make this public.
18738
18739         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
18740
18741         * reflection.c: Fix some memory leaks.
18742         
18743 2004-12-02  Martin Baulig  <martin@ximian.com>
18744
18745         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
18746
18747         * metadata.c (generic_class_cache): New static hashtable.
18748         (mono_metadata_lookup_generic_class): New public method.
18749
18750 2004-12-02  Martin Baulig  <martin@ximian.com>
18751
18752         * class.c (mono_class_create_from_typedef): Call
18753         mono_class_setup_parent() and mono_class_create_mono_type() before
18754         parsing the interfaces.
18755
18756 2004-12-02  Martin Baulig  <martin@ximian.com>
18757
18758         * metadata.c (generic_inst_cache): New static hashtable.
18759         (mono_metadata_lookup_generic_inst): New public function.
18760         (mono_metadata_inflate_generic_inst): New public function.
18761         (mono_metadata_parse_generic_inst): New public function.
18762         (do_mono_metadata_parse_generic_class): Use the new
18763         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
18764         since this'll also use the cache.
18765
18766         * reflection.c (mono_reflection_bind_generic_method_parameters):
18767         Use mono_metadata_lookup_generic_inst() to use the new cache.
18768
18769         * class.c (inflate_mono_type): Use
18770         mono_metadata_inflate_generic_inst() to inflate a generic
18771         instance; this'll also use the new cache.
18772
18773         * loader.c (method_from_methodspec): Use
18774         mono_metadata_parse_generic_inst() and
18775         mono_metadata_inflate_generic_inst() rather than parsing it
18776         manually, so we can use the new cache.
18777
18778 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18779
18780         * threads.c (wait_for_tids): Do not incorrectly free threads when 
18781         the wait times out.
18782
18783 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18784
18785         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
18786         iter->args based on whether parameters are passed in registers (i.e.
18787         MONO_ARCH_REGPARMS is defined)
18788
18789 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
18790
18791         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
18792         the exception message. Fixes #70070.
18793         (method_from_methodspec): Fix warnings.
18794
18795 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18796
18797         * process.c: (complete_path) return the path quoted
18798
18799 2004-12-01  Martin Baulig  <martin@ximian.com>
18800
18801         * class-internals.h (MonoGenericInst): New structure.
18802         (MonoGenericClass): Replaced `type_argc', `type_argv' and
18803         `is_open' with `MonoGenericInst *inst'.
18804         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
18805         `is_open' with `MonoGenericInst *inst'.
18806
18807 2004-11-30  Martin Baulig  <martin@ximian.com>
18808
18809         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
18810
18811         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
18812         to `generic_class_cache'.
18813
18814         * metadata.c
18815         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
18816         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
18817         (mono_generic_inst_is_valuetype): Renamed to
18818         mono_generic_class_is_valuetype().
18819
18820         * class-internals.h
18821         (MonoGenericInst): Renamed to MonoGenericClass.
18822         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
18823         (MonoClass): Renamed `generic_inst' to `generic_class'.
18824         (MonoGenericContext): Renamed `ginst' to `gclass'.
18825
18826         * object-internals.h
18827         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
18828
18829         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
18830         mono_reflection_generic_class_initialize().
18831
18832         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
18833         now known as "System.Reflection.MonoGenericClass".
18834         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
18835
18836 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
18837
18838         * class-internals.h: Added a flag field to MonoClass to cache the
18839         declarative security attributes actions associated with the class.
18840         * domain-internals.h: Added booleans to MonoJitInfo to cache the
18841         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
18842         applicable to the JITted method.
18843         * reflection.c|h: Added functions to extract (as flags) which security
18844         actions are available (declaratively) for a method, class or assembly.
18845         * metadata.c|h: Added functions to search the declarative security
18846         table in the metadata.
18847         
18848 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
18849
18850         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
18851         EXPORTEDTYPES are already in the class name cache, so there is no
18852         need to add extra code here to look at them. Just removes a bit of
18853         cruft.
18854
18855         (ves_icall_System_Environment_get_TickCount): No need for #if
18856         WINDOWS. We already have the code in io-layer.
18857
18858 2004-11-28  Martin Baulig  <martin@ximian.com>
18859
18860         * loader.c
18861         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
18862         Fixes gen-112.cs.
18863
18864 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
18865
18866         * assembly.c (do_mono_assembly_open): Instead of having a
18867         conditional WITH_BUNDLE, incorporate support for bundles here, by
18868         having a global `bundles' variable holding a pointer to the actual
18869         bundles. 
18870
18871         (mono_register_bundled_assemblies): New API call used by the
18872         bundle code. 
18873
18874         See mkbundle.1 for details.
18875         
18876 2004-11-27  Martin Baulig  <martin@ximian.com>
18877
18878         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
18879         the vtable for generic methods.
18880
18881 2004-11-26  Martin Baulig  <martin@ximian.com>
18882
18883         * metadata.c
18884         (mono_metadata_generic_method_hash): New public function.
18885         (mono_metadata_generic_method_equal): Likewise.
18886
18887         * class-internals.h
18888         (MonoGenericContainer): Added `GHashTable *method_hash'.
18889
18890         * reflection.c (ReflectionMethodBuilder): Added
18891         `MonoGenericContainer *generic_container'.
18892         (reflection_methodbuilder_to_mono_method): Don't create a new
18893         MonoGenericContainer each time we're called.
18894         (mono_reflection_bind_generic_method_parameters): Use
18895         `container->method_hash' to cache the results so we don't create a
18896         different method if we're called several times with the same
18897         arguments.
18898
18899         * loader.c (method_from_methodspec): Use the new
18900         `container->method_hash' here, too.
18901
18902 2004-11-26  Martin Baulig  <martin@ximian.com>
18903
18904         * class.c (inflate_generic_signature): Correctly compute
18905         `res->has_type_parameters'.
18906         (mono_class_vtable): Use the `has_type_parameters' flag to
18907         determine whether we're a generic method.
18908
18909         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
18910
18911 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18912
18913         * object.c (mono_runtime_run_main): Fix a small memory leak.
18914
18915 2004-11-25  Martin Baulig  <martin@ximian.com>
18916
18917         * class.c (set_generic_param_owner): Fixed the loop.
18918
18919 2004-11-25  Martin Baulig  <martin@ximian.com>
18920
18921         * object.c (mono_class_vtable): Don't create any JIT wrappers for
18922         generic methods.
18923
18924 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18925
18926         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
18927         names. Fixes #69787.
18928
18929 2004-11-24  Martin Baulig  <martin@ximian.com>
18930
18931         * class.c (mono_class_create_generic_2): If we don't have a
18932         `ginst->parent', inflate `gklass->parent' to get our parent.
18933
18934 2004-11-24  Martin Baulig  <martin@ximian.com>
18935
18936         * reflection.c (compare_genericparam): Correctly sort the
18937         GenericParam table; fixes #69779.
18938
18939 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
18940
18941         * reflection.c: When writing a PE file, don't create a huge
18942         buffer in memory. Just write the arrays we have to the file.
18943         This reduces memory usage.
18944
18945         * metadata-internals.h: MonoDynamicStream pefile is no longer used
18946         globally.
18947
18948 2004-11-17  Martin Baulig  <martin@ximian.com>
18949
18950         * class.c (mono_class_init): Don't setup `class->parent' for
18951         dynamic instances; moved this to mono_class_generic_2().
18952         (mono_class_create_generic): Also set `klass->inited' for dynamic
18953         generic instances.
18954         (mono_class_create_generic_2): Don't do anything for dynamic
18955         generic instances.  Set `klass->parent' here and also call
18956         mono_class_setup_parent() here. 
18957
18958         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
18959         `MonoType *parent' argument; set `ginst->parent' before calling
18960         mono_class_create_generic_2(), so we set the correct parent.
18961
18962 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
18963
18964         * reflection.c: allow getting attributes from ModuleBuilder
18965         (used by ikvm).
18966
18967 2004-11-17  Martin Baulig  <martin@ximian.com>
18968
18969         * class.c (mono_class_create_from_typedef): If a type parameter is
18970         inherited from an outer class, set its owner to that class.
18971
18972 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
18973
18974         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
18975           for (int*) written size. This fixes bug #69592.
18976
18977 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18978
18979         * icall.c: Added IsAuthenticodePresnet internal call.
18980         * image.c|h: New function that check a MonoImage for an Authenticode
18981         signature in the certificate PE data directory.
18982         * security.c|h: New internal call to ask the runtime if an 
18983         Authenticode signature seems referenced in the PE header.
18984
18985 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
18986
18987         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
18988
18989         * reflection.c (mono_image_create_pefile): Free the assembly streams
18990         after writing out the assembly file.
18991
18992         * object.c (mono_runtime_run_main): Fix small memory leak.
18993
18994         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
18995         property access modifiers. Fixes #69389.
18996
18997 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18998
18999         * domain.c, object.c, object-internals.h, domain-internals.h,
19000         object.h, marshal.c: keep dynamic code info per domain.
19001
19002 2004-11-15  Martin Baulig  <martin@ximian.com>
19003
19004         * class.c (mono_type_get_name_recurse): Put type arguments in
19005         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19006         see bug #68387.
19007
19008 2004-11-15  Martin Baulig  <martin@ximian.com>
19009
19010         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19011         (mono_class_setup_vtable): When computing `the_cname' for a
19012         generic instance, don't include the namespace since we'd otherwise
19013         add it twice.
19014
19015 2004-11-15  Martin Baulig  <martin@ximian.com>
19016
19017         * class.c (mono_class_create_generic): Changed return type to void.
19018         (mono_class_create_generic_2): New public function; setup
19019         `class->method', `class->field' and `class->interfaces' here
19020         instead of in mono_class_init().
19021
19022         * class.h (mono_class_create_generic): Moved to class-internals.h.
19023
19024 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19025
19026         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19027         rather than writing to memory, write to this file. Right now,
19028         we are just writting into a buffer, and copying that. However
19029         we can avoid the buffer later.
19030
19031         (mono_dynamic_stream_reset): new function
19032
19033         * icall.c, object-internals.h: update for the above.
19034
19035 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19036
19037         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19038         have been using gc'd memory. First it is slower, unlikely
19039         the comment in the source code said, secondly, it increases
19040         our footprint to do it in the gc.
19041
19042         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19043         the method so that it does not have to copy to managed code.
19044
19045 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19046
19047         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19048
19049 2004-11-12  Martin Baulig  <martin@localhost>
19050
19051         * reflection.c (mono_image_create_token): Allow generic method
19052         definitions here, since they may appear in an `.override'; see
19053         gen-98/gen-99 for an example.
19054
19055 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19056
19057         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19058         #69365.
19059
19060         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19061         descriptive.
19062
19063 2004-11-11  Martin Baulig  <martin@ximian.com>
19064
19065         * class.c (mono_class_setup_vtable): In an explicit interface
19066         implementation, the method name now includes the arity.
19067
19068 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19069
19070         * object.c (mono_array_full_copy): Fix warning.
19071
19072 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19073
19074         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19075         mono_class_get_method_from_name() instead.
19076         
19077         * class-internals.h: Added two new types of wrappers. 
19078         Added MonoRemotingTarget enum. Added new trampoline function type, which
19079         takes an additional MonoRemotingTarget value as parameter, so it is
19080         possible to request a trampoline for a specific target.
19081         
19082         * class.c: Added new mono_class_get_method_from_name() method.
19083         
19084         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19085         general remoting sinks and one specific for cross domain calls.
19086         
19087         * debug-helpers.c: Added new wrapper names.
19088         
19089         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19090         of a remote class.
19091         
19092         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19093         
19094         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19095         with several other methods (mono_marshal_get_xappdomain_dispatch,
19096         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19097         and others) can generate a fast remoting wrapper for cross domain calls.
19098         More information can be found in docs/remoting.
19099         Other changes: Removed mono_find_method_by_name, and used
19100         mono_class_get_method_from_name instead.
19101         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19102         is stored in the remoting invoke hashtable.
19103         
19104         * marshal.h: published the new method for getting the xdomain wrapper,
19105         and also added a method for getting the adequate wrapper for a given
19106         method and target.
19107         
19108         * object-internals.h, object.c: Added a couple of methods for capying and
19109         cloning arrays.
19110         Modified mono_install_remoting_trampoline, which takes the new remoting
19111         trampoline that has a remoting target as parameter.
19112         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19113         will return the most suitable vtable for the target.
19114         Added mono_remote_class_vtable, which returns the vtable of a remote class
19115         (which can be the normal remoting vtable or the xdomain vtable).
19116         
19117         * threads.c: the xdomain invoke and dispatch wrappers must also be
19118         protected against interruptions.
19119
19120 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19121
19122         * icall.c: use memmove in BlockCopyInternal when the source and
19123         destination arrays are the same.
19124
19125 2004-11-09  Martin Baulig  <martin@ximian.com>
19126
19127         * class-internals.h (MonoGenericContainer): Removed `method' and
19128         `signature', replaced them with `is_method' and `is_signature'
19129         flags.  Added `context'.
19130
19131         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19132         instead of a `MonoGenericContainer *'.
19133
19134         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19135         for dynamic type parameters.
19136         (mono_metadata_load_generic_params): Setup `container->context'.
19137
19138         * reflection.c (mono_reflection_setup_generic_class): Setup
19139         `tb->generic_container->context'.
19140         (do_mono_reflection_bind_generic_parameters): Use
19141         mono_class_inflate_generic_type() to correctly inflate types,
19142         rather than using our own hack just for MONO_TYPE_VAR.
19143
19144 2004-11-09  Martin Baulig  <martin@ximian.com>
19145
19146         * class.c (mono_class_inflate_generic_method): Small fix; don't
19147         crash here.
19148
19149         * icall.c
19150         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19151         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19152         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19153         (ves_icall_Type_BindGenericParameters): Likewise.
19154         (ves_icall_Type_get_IsGenericInstance): Likewise.
19155         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19156         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19157         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19158         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19159
19160 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19161
19162         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19163         assembly versions and public key tokens. Fixes #69113.
19164
19165 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19166
19167         * metadata.c: fix bug introduced with the type cache changes
19168         on 2004-11-06.
19169
19170 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19171
19172         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19173         the MonoClass pointer instead of the token in exception clauses.
19174         * reflection.c: updates for the above and make the code not depend
19175         on the structure of MonoExceptionClause.
19176
19177 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19178
19179         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19180         Add support for dynamic assemblies. Fixes #69114.
19181
19182         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19183
19184 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19185
19186         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19187         since most only those methods use it. the code member of
19188         MonoMethodPInvoke was dead, so that can be removed too. Also,
19189         remove inline_count (again, not used), and move slot so that it
19190         can share bits with some other flags. This saves 8 bytes in the
19191         structure and gives us about 50 kb back for mcs helloworld.cs
19192
19193         * *.[ch]: Do naming changes for the above.
19194
19195         * loader.c (mono_method_get_header): Lazily init the header
19196         on first access.
19197         (mono_get_method_from_token): don't init the header here
19198         (mono_free_method): the header may never be allocated
19199
19200         Overall, this saves 150 kb of unmanaged allocations
19201         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19202         memory at runtime.
19203         
19204         * loader.c, loader.h (mono_method_get_header): new accessor.
19205
19206         * *.[ch]: use the above method. Prepares us to lazily load
19207         the header.
19208
19209         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19210         three warnings, which are actual bugs (see 69206).
19211
19212         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19213         unused. Saves a cool 4 bytes / method.
19214
19215 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19216
19217         * metadata.c (builtin_types): Add types for System.Object here.
19218         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19219         for a class or valuetype from klass->this_arg or klass->byval_arg.
19220
19221         On mcs for a hello world, this gets us down from 21836 MonoType's
19222         to 14560.
19223
19224         (mono_metadata_free_type): Account for the above change.
19225
19226 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19227
19228         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19229         exception instead of asserting if name is null.
19230         (ves_icall_System_AppDomain_GetData): Ditto.
19231
19232 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19233
19234         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19235         EnumBuilder.
19236
19237         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19238         Return NULL when the domain does not have entry_assembly set.
19239
19240         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19241         Add a 'resource_modules' argument.
19242         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19243
19244         * reflection.c (mono_reflection_create_runtime_class): Move setting
19245         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19246         for enums too.
19247
19248         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19249         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19250         Throw an ArgumentNullException if 'ptr' is null.
19251
19252         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19253         assemblies here. Fixes #69020.
19254
19255 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19256
19257         * reflection.c (build_compressed_metadata): Fix the previous patch for
19258         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19259         the stack.
19260
19261 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19262
19263         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19264         the cultures is false. Fixes #69090.
19265
19266         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19267         detected by valgrind.
19268         
19269         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19270         TypeResolve multiple times for the same type. Fixes #65577.
19271
19272 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19273
19274         * marshal.c: Avoid using ldftn to call managed functions. It is
19275         much slower than just a call.
19276
19277         * reflection.c (mono_module_get_object): free the basename we
19278         allocate here from glib.
19279         
19280         * reflection.c (ensure_runtime_vtable): make sure to free
19281         overrides.  Also, we were allocating an array of MonoMethod not an
19282         array of MonoMethod*.
19283
19284         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19285
19286         * image.c (mono_image_close): free image->guid here.
19287
19288 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19289
19290         * reflection.c: Fix some spec conformance issues with the PE file
19291         structures so mcs compiled apps run on the Net 2.0 beta.
19292
19293 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19294
19295         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19296         Implement this. Fixes #67264.
19297
19298         * debug-helpers.h debug-helpers.c marshal.c: Move 
19299         mono_find_method_by_name to debug-helpers.c.
19300
19301 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * object.c (mono_release_type_locks): type_initialization_hash is
19304         a GHashTable.
19305
19306         * reflection.c object.c object-internals.h: Fix warnings.
19307
19308         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19309         without accessors. Fixes #61561.
19310
19311         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19312         application base from the root domain if not set. Fixes #65641.
19313         (mono_runtime_init): Fix warning.
19314
19315 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19316
19317         * appdomain.c: call mono_thread_pool_init.
19318         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
19319         of worker threads based on the number of CPUs and the environment
19320         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
19321         for non-windows (windows) systems.
19322
19323 2004-10-27  Chris Toshok  <toshok@ximian.com>
19324
19325         * mono-debug-debugger.c (write_class): don't call mono_class_init
19326         here, as even with the check for (!klass->init_pending), we get
19327         into a situation where we're hitting cycles in class
19328         initialization.  Fixes #68816.
19329
19330 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19331
19332         * image.c: Avoid overwriting values in the loaded_images_hash when an
19333         assembly is loaded multiple times. Fixes #61152.
19334
19335         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
19336         so multiple satellite assemblies for the same name can be loaded.
19337         Fixes #68259.
19338
19339         * mono_domain_assembly_preload: Actually return the loaded assembly, 
19340         not NULL.
19341
19342         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
19343         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
19344
19345         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
19346         pending finalizers are not invoked after the appdomain has been 
19347         unloaded. Fixes #67862.
19348
19349 2004-10-22  Martin Baulig  <martin@ximian.com>
19350
19351         * mono-debug-debugger.c
19352         (mono_debugger_runtime_invoke): Don't box valuetypes.
19353
19354 2004-10-22  Chris Toshok  <toshok@ximian.com>
19355
19356         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
19357         don't hide private methods.
19358
19359 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
19360
19361         * icall.c: Allows the runtime to "share" (when known) the public key
19362         token of an assembly. This avoid the need to recalculate the token 
19363         (from the public key) in managed code.
19364
19365 2004-10-21  Chris Toshok  <toshok@ximian.com>
19366
19367         * debug-helpers.c (append_class_name): argh, revert last patch.
19368         
19369 2004-10-21  Chris Toshok  <toshok@ximian.com>
19370
19371         * debug-helpers.c (append_class_name): use '+' as the delimiter,
19372         not '/', so that it matches what the debugger uses to look up
19373         methods.
19374
19375 2004-10-21  Martin Baulig  <martin@ximian.com>
19376
19377         * mono-debug-debugger.c (mono_debugger_throw_exception): New
19378         public method; this is called each time an exception is thrown and
19379         allows the debugger to use exception catch points.
19380
19381 2004-10-21  Martin Baulig  <martin@ximian.com>
19382
19383         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
19384         the stack pointer and the exception object in some struct and pass
19385         that to the debugger.
19386
19387 2004-10-21  Chris Toshok  <toshok@ximian.com>
19388
19389         * mono-debug-debugger.c (do_write_class): add instance/static
19390         event support.  We don't expose "raise" or "other" yet.
19391         (event_is_static): new method.
19392
19393 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
19394
19395         * mono-debug-debugger.c
19396         (mono_debugger_handle_exception): Remove
19397         bogus return value for fussy compilers.
19398
19399 2004-10-20  Martin Baulig  <martin@ximian.com>
19400
19401         * mono-debug-debugger.c
19402         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
19403         (mono_debugger_handled_exception): Likewise.
19404
19405 2004-10-20  Martin Baulig  <martin@ximian.com>
19406
19407         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19408         MONO_DEBUGGER_EVENT_EXCEPTION.
19409
19410         * mono-debug-debugger.c (mono_debugger_handle_exception): New
19411         public function to send the debugger a notification for an
19412         exception and inform it about a catch/finally clause.
19413
19414 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
19415
19416         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
19417         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
19418         fix 2.95 build. 
19419
19420         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
19421
19422 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19423
19424         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
19425         marshalled as [In,Out]. Fixes #58325.
19426
19427 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
19428
19429         * reflection.c (mono_method_body_get_object): Implement some fields.
19430
19431 2004-10-12  Martin Baulig  <martin@ximian.com>
19432
19433         * reflection.c (mono_reflection_bind_generic_parameters): Small
19434         fix, correctly retrieve our parent from a generic instance.
19435
19436 2004-10-12  Martin Baulig  <martin@ximian.com>
19437
19438         * metadata.c (mono_metadata_generic_param_equal): We always have
19439         an owner.
19440
19441         * class.c
19442         (mono_class_from_generic_parameter): We need to have an owner.
19443         (my_mono_class_from_generic_parameter): Likewise.
19444
19445         * reflection.c (mono_reflection_setup_generic_class): Renamed to
19446         mono_reflection_create_generic_class() and added a new
19447         mono_reflection_setup_generic_class().  
19448         (mono_reflection_initialize_generic_param): If we're a nested
19449         generic type and inherited from the containing class, set our
19450         owner to the outer class.
19451
19452 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
19453
19454         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
19455
19456         * reflection.c (mono_method_body_get_object): New function to create
19457         a MethodBody object.
19458
19459         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
19460
19461 2004-10-11  Martin Baulig  <martin@ximian.com>
19462
19463         * metadata.c (_mono_metadata_type_equal): Renamed to
19464         do_mono_metadata_type_equal() and made static.
19465
19466 2004-10-11  Martin Baulig  <martin@ximian.com>
19467
19468         * appdomain.c: Bump corlib version number to 28.
19469
19470 2004-10-10  Martin Baulig  <martin@ximian.com>
19471
19472         * class-internals.h
19473         (MonoGenericInst): Added `MonoGenericContainer *container'.
19474         (MonoGenericMethod): Likewise.
19475         (MonoGenericContext): Likewise.
19476         (MonoGenericParam): Added `MonoGenericContainer *owner'.
19477
19478         * metadata.c
19479         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
19480         (do_mono_metadata_parse_generic_inst): Likewise.
19481         (mono_metadata_parse_type_full): New public method.  This is the actual
19482         mono_metadata_parse_type() implementation - with an additional
19483         `MonoGenericContainer *' argument.
19484         (mono_metadata_parse_array_full): Likewise.
19485         (mono_metadata_parse_signature_full): Likewise.
19486         (mono_metadata_parse_method_signature_full): Likewise.
19487         (mono_metadata_parse_mh_full): Likewise.
19488         (mono_type_create_from_typespec): Likewise.
19489         (mono_metadata_interfaces_from_typedef_full): New public method;
19490         this is similar to the other _full() methods, but we take a
19491         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
19492         (mono_metadata_parse_generic_param): Take an additional
19493         `MonoGenericContainer *' argument and lookup the MonoGenericParam
19494         from that container.
19495         (mono_metadata_generic_param_equal): New static method to compare
19496         two type parameters.
19497         (_mono_metadata_type_equal): New static method; takes an
19498         additional `gboolean signature_only' argument - if true, we don't
19499         compare the owners of generic parameters.
19500         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
19501         with a TRUE argument - do a signature-only comparision.
19502
19503         * loader.c: Use the new _full() methods and pass the
19504         MonoGenericContainer to them.
19505
19506         * object-internals.h (MonoReflectionTypeBuilder): Added
19507         `MonoGenericContainer *generic_container' field.
19508         (MonoReflectionMethodBuilder): Likewise.
19509
19510 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19511
19512         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
19513         case initial images of dynamic assemblies.
19514
19515         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
19516
19517         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
19518
19519         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
19520         length of event->other array.
19521         (typebuilder_setup_events): Ditto.
19522
19523         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
19524         'assembly_by_name' and add an 'assemblies' list.
19525
19526         * assembly.h assembly.c: Add a new search hook for determining whenever
19527         an assembly is already loaded. Use this instead of searching in the
19528         loaded_assemblies list.
19529
19530         * domain.c appdomain.c: Implement the new search hook so loaded 
19531         assemblies are now scoped by appdomain. Fixes #67727.
19532
19533 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
19534
19535         * threads.c (mono_thread_attach): Initialize synch_lock field so
19536         mono_thread_detach works again.
19537
19538         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
19539         'lib' too. Fixes #63130.
19540
19541 2004-10-06  Jackson Harper  <jackson@ximian.com>
19542
19543         * culture-info-tables.h: regenerated.
19544
19545 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
19546
19547         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
19548         implemented by other interfaces in the result. Fixes #65764.
19549         
19550         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19551         Handle unloadable modules without crashing.
19552
19553         * image.c (load_modules): Revert the previous patch since modules must
19554         have a fixed index inside the array.
19555         
19556         * image.c (load_modules): Don't include native modules in the modules
19557         array.
19558
19559 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19560
19561         * reflection.h: Add param_defaults field.
19562
19563         * reflection.c: Add support for parameter defaults in dynamic methods.
19564         Fixes #64595.
19565
19566         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
19567         an empty string when a type has no namespace. Fixes #64230.
19568
19569 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
19570
19571         * tabledefs.h: Added "internal" security actions to support non-CAS
19572         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
19573         Note: they do not seems to be used anymore in 2.0 (new metadata format)
19574
19575 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
19578         constructor of abstract class. Fixes #61689.
19579
19580 2004-10-04  Martin Baulig  <martin@ximian.com>
19581
19582         * class-internals.h (MonoGenericContainer): New type.
19583         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
19584         `MonoGenericContainer *generic_container'.
19585         (MonoClass): Replaced `gen_params' and `num_gen_params' with
19586         `MonoGenericContainer *generic_container'.
19587
19588         * metadata.c (mono_metadata_load_generic_params): Return a
19589         `MonoGenericContainer *' instead of a `MonoGenericParam *';
19590         removed the `num' argument.
19591
19592 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
19595         for dynamic images.
19596
19597         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
19598         machine fields.
19599
19600         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
19601
19602         * reflection.c: Save pe_kind and machine values into the generated
19603         image file.
19604
19605         * appdomain.c: Bump corlib version number.
19606
19607         * object-internals.h: Reorganize layout of LocalBuilder.
19608
19609         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
19610         New helper function.
19611
19612         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
19613         created MonoType for dynamic types. Fixes #66180.
19614
19615 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
19616
19617         * threadpool.c: the ares hashtable needs a critical section around it.
19618         this prevents some nasty segfaults
19619
19620 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19621
19622         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
19623         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
19624         bug 67324).
19625         
19626 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19627
19628         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
19629         
19630 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19631
19632         * image.c: Always canonicalize image file names, to avoid loading
19633         the same assembly twice when referenced using a relative path.
19634
19635 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19636
19637         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
19638
19639         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
19640
19641         * marshal.c: Fix warnings.
19642
19643 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
19644
19645         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
19646         attempting to marshal the delegate_trampoline as the method_addr.
19647         This patch has a static hashtable of marshalled delegates so that 
19648         we can map delegate_trampoline addresses back to delegates.  This
19649         allows a delegate passed to managed code to be passed back into native
19650         code.  Fixes #67039
19651
19652 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19653
19654         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
19655
19656         * reflection.c (method_encode_code): Align method headers properly.
19657         Fixes #66025.
19658
19659 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19660
19661         * marshal.c: In the runtime invoke wrapper, reset the abort
19662         exception if it is cached. This avoids the automatic rethrowal of 
19663         the exception after the catch of the wrapper. Also check for pending
19664         interruptions before calling the managed method. This is done using
19665         the new method emit_thread_force_interrupt_checkpoint, since the
19666         normal checkpoint method is ignored when running the invoke wrapper.
19667         * object.c: If the abort exception is rethrown, set the abort_exc
19668         field of the thread, so it will be rethrown aftere every catch.
19669         * threadpool.c: Only run an interruption checkpoint if what has been
19670         requested is a stop of the thread (aborts will be ignored).
19671         * threads.c: By default, a thread will now never be interrumped while
19672         running the runtime invoke wrapper (this ensures that runtime_invoke
19673         will always return to the caller if an exception pointer is provided).
19674         There is a new special method mono_thread_force_interruption_checkpoint()
19675         to force an interruption checkpoint even if running a protected
19676         wrapper, which is used by the same runtime invoke wrapper to do a check
19677         at a safe point.
19678
19679 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19680
19681         * object.c, object-internals.h: Implemented mono_release_type_locks,
19682         which releases the cctor locks held by a thread.
19683         * threads.c, threads.h: In thread_cleanup, release cctor locks held
19684         by a thread. Added mono_thread_exit() method to be used to safely stop
19685         a thread.
19686
19687 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19688
19689         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19690         Move null check before dereference.  Avoid indexing beyond the end
19691         of the 'modules' array.
19692
19693 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19694
19695         * metadata-internals.h (MonoImage): Add module_count field.
19696         * image.c (load_modules): Set image->module_count.
19697         (mono_image_load_file_for_image): Use image->module_count.
19698         * reflection.c (mono_image_load_module): Append to image->modules array 
19699         of dynamic assembly.
19700         (mono_module_get_object): Fix loop to actually increment index.
19701         Use image->module_count.
19702         * assembly.c (mono_assembly_load_references): Use image->module_count.
19703         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
19704         Likewise.
19705
19706 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19707
19708         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
19709         Avoid assert on generic types.
19710
19711 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
19712
19713         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
19714
19715         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
19716
19717         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
19718         function to convert a MarshalSpec structure to its managed counterpart.
19719
19720         * reflection.c: Fix warnings.
19721         
19722         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
19723         field.
19724
19725         * icall.c (mono_create_icall_signature): Fix build.
19726
19727 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19728
19729         * icall.c: Add MakePointType icall.
19730
19731         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
19732         warnings.
19733
19734 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19735
19736         * threadpool.c: reuse allocated slots in the queue.
19737
19738 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
19741
19742         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
19743
19744         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
19745         previous change.
19746
19747         * tabledefs.h: Add constants for pinvoke attributes BestFit and
19748         ThrowOnUnmappableChar.
19749
19750         * icall.c (ves_icall_Type_GetPacking): New icall.
19751
19752 2004-09-24  Martin Baulig  <martin@ximian.com>
19753
19754         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
19755
19756 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19757
19758         * appdomain.c:
19759         (mono_domain_set): allow setting a domain that is being unloaded.
19760         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
19761         being unloaded.
19762
19763 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
19766         the GetCustomAttributes icall.
19767
19768 2004-09-23  Martin Baulig  <martin@ximian.com>
19769
19770         * object-internals.h (MonoReflectionGenericParam): Replaced
19771         'has_ctor_constraint', `has_reference_type' and `has_value_type'
19772         with `guint32 attrs'.
19773
19774 2004-09-23  Martin Baulig  <martin@ximian.com>
19775
19776         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
19777
19778 2004-09-23  Martin Baulig  <martin@ximian.com>
19779
19780         * object-internals.h (GenericParameterAttributes): New enum.
19781
19782 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19783
19784         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
19785         
19786         * class.c (init_events): Fill out event->other field.
19787
19788         * class.c: Fix warnings.
19789
19790         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
19791
19792 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
19793
19794         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
19795         walk which doesn't supply the IL offset.
19796
19797 2004-09-22  Martin Baulig  <martin@ximian.com>
19798
19799         * reflection.c (mono_reflection_setup_internal_class): If we're
19800         System.ValueType, System.Object or System.Enum, set
19801         `klass->instance_size' and create the vtable.
19802         (mono_reflection_create_internal_class): If we're an enum type,
19803         get the base class from our current corlib.
19804
19805 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
19806
19807         * reflection.h (MonoResolveTokenError): New type.
19808
19809         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
19810         icall.
19811
19812         * icall.c: Add an 'error' argument to the ResolveToken icalls.
19813
19814 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
19815
19816         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
19817         Support also calling constructors, but only for already allocated objects.
19818
19819 2004-09-17  Geoff Norton <gnorton@customerdna.com>
19820
19821         * reflection.c (type_get_qualified_name): If the klass is null
19822         return the typename to avoid a NullRefEx.
19823         (encode_cattr_value): Get the qualified name of the boxed type,
19824         not the underlying enumtype.  Fixes #62984.
19825
19826 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
19827
19828         * marshal.c: Fix problems with previous checkin.
19829
19830 2004-09-21    <vargaz@freemail.hu>
19831
19832         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
19833         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
19834
19835         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
19836
19837 2004-09-21  Geoff Norton <gnorton@customerdna.com>
19838
19839         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
19840         should only return a type for pointers, arrays, and passbyref types.
19841         Fixes bug #63841.
19842
19843 2004-09-21  Martin Baulig  <martin@ximian.com>
19844
19845         * domain.c (mono_debugger_check_runtime_version): New public
19846         function.
19847
19848         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
19849
19850 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
19851
19852         * reflection.c: Added missing sort to the declarative security 
19853         attributes table. MS implementation stops seeing the attributes if the
19854         token number regress in the table (as shown by ildasm and permview).
19855
19856 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
19857
19858         * object-internals.h (MonoReflectionModule): Add 'token' field.
19859         
19860         * reflection.c (mono_reflection_get_token): Add support for Module
19861         and Assembly.
19862         (mono_module_get_object): Set 'token' field.
19863         (mono_module_file_get_object): Set 'token' field.
19864
19865         * icall.c: Add new Assembly and Module icalls.
19866
19867         * appdomain.c: Bump corlib version.
19868
19869 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
19870
19871         * loader.h loader.c class.h class.c: Add helper functions for obtaining
19872         tokens of metadata objects.
19873
19874         * reflection.h reflection.c (mono_reflection_get_token): New function
19875         to obtain the token of a metadata object.
19876
19877         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
19878
19879 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19880
19881         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
19882         
19883         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
19884
19885 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
19886
19887         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
19888         * object-internals.h: Added 3 MonoArray* members to MonoReflection
19889         AssemblyBuilder to access the permissions set in the class lib.
19890         * reflection.c: Added security attributes encoding step in 
19891         mono_image_build_metadata.
19892         * tabledefs.h: Added new security actions defined in 2.0:
19893         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
19894
19895 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
19896
19897         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
19898         macro parameter.
19899
19900 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
19901  
19902         * locales.c: nullify the ICU_collator member of CompareInfo when it is
19903           finalized. There where random SIGSEVs at program termination, when
19904           an object being finalized was trying to do a string comparison and
19905           the current culture was already finalized.
19906  
19907 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19908
19909         * threads.c: call thread_cleanup before finishing the thread if we get
19910         there.
19911
19912 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
19915         assemblies from the parent. Fixes #65665.
19916
19917 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
19920         modifiers.
19921
19922 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
19923
19924         * reflection.h: add prototype for mono_get_dbnull_object
19925         * reflection.c: add prototypes for get_default_param_value_blobs 
19926         and mono_get_object_from_blob for fussier compilers
19927
19928 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
19929  
19930         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
19931         false deadlock checks in class initialization.
19932  
19933 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19934
19935         * image.c (mono_image_addref): Fix comment.
19936
19937         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
19938         possible.
19939
19940 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
19941
19942         * reflection.c (mono_param_get_objects): Modified to return
19943         ParameterInfo.DefaultValue object.
19944
19945         (get_default_param_value_blobs):
19946         (mono_get_object_from_blob):
19947         (mono_get_dbnull_object): New helper routines. 
19948
19949         * object.c (mono_get_constant_value_from_blob): New helper routine
19950         carved out from get_default_field_value ()
19951
19952         * object-internals.h (mono_get_constant_value_from_blob): Added
19953         function declaration.
19954
19955 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
19958         referenced assemblies. Fixes #62135.
19959
19960         * exception.h exception.c (mono_get_exception_file_not_found2): New
19961         helper function.
19962
19963 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * class.h class.c: Add mono_type_get_underlying_type ().
19966
19967 2004-09-09  Geoff Norton <gnorton@customerndna.com>
19968
19969         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
19970         Fix GetTypes() to support dynamically created assemblies.
19971
19972 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
19973
19974         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
19975         
19976         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
19977         previous patch.
19978
19979         * reflection.h reflection.c loader.c: Allow dynamic construction of
19980         pinvoke methods. Fixes #65571.
19981         
19982         * reflection.c (mono_reflection_get_type): Revert previous change since
19983         it causes regressions.
19984
19985 2004-09-08  Martin Baulig  <martin@ximian.com>
19986
19987         * class.c (class_compute_field_layout): Don't call
19988         mono_class_layout_fields() for open generic instances.
19989
19990 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
19991         * threads.c appdomain.c: fix typo in GC macro
19992
19993 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19994
19995         * threads.c: don't call mono_thread_detach() in start_wrapper(),
19996         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
19997
19998 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
19999
20000         * image.c (mono_image_close): Applied patch from 
20001         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
20002         assembly is loaded multiple times from data.
20003         
20004         * image.c (mono_image_open): Fix warning.
20005
20006 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20007
20008         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20009         once. Fixes #58334.
20010         
20011         * reflection.c (mono_reflection_create_runtime_class): Initialize
20012         klass->nested_classes. Fixes #61224.
20013
20014 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20015
20016         * threads.c: sched_yield() on exit, to allow threads to quit.
20017
20018 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20019
20020         * object.c (mono_unhandled_exception): Remove leftover debug code.
20021
20022 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20023
20024         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20025
20026 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20027
20028         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20029         
20030         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20031
20032 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20033
20034         * marshal.c (emit_marshal_array): Null terminate string arrays.
20035         
20036         * marshal.c (raise_auto_layout_exception): Fix warning.
20037
20038         * reflection.c (mono_param_get_objects): Initialize the default value
20039         with DBNull.Value, not null. Fixes #62123.
20040
20041 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20042
20043         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20044         throw an exception with a cute explanation.
20045
20046 2004-09-06  Dick Porter  <dick@ximian.com>
20047
20048         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20049         Close the new process's thread handle, as we don't use it.  The
20050         handle stays around forever otherwise.
20051
20052 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20053
20054         * object.c (arith_overflow): Fix warning.
20055
20056         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20057         calling conventions in method refs. Fixes #65352.
20058
20059         * reflection.c: Fix warnings.
20060
20061 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20062
20063         * icall.c: Add a new icall for Array.Clear
20064
20065 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20066
20067         * object.c: When allocating an array, we have to throw
20068         an overflow exception if any of the lengths are < 0.
20069
20070 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20071
20072         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20073         properly. Also move implementation of string array marshalling to 
20074         managed code. Fixes #42316.
20075
20076 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20077
20078         * assembly.c: provide more information when loading an assembly fails.
20079
20080 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20081
20082         * filewatcher.c: don't expect the development fam package to be
20083         installed.
20084
20085 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20086
20087         * marshal.c: Make a copy of the signature cookie since it will be
20088         freed by the caller.
20089         
20090         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20091
20092         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20093
20094         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20095         marshal specs.
20096
20097         * marshal.c: More refactoring.
20098         
20099         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20100         smaller functions.
20101
20102 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20103
20104         * object.c: In mono_message_invoke, fill the output parameter array after
20105           calling the managed method (it was done before the call). This fixes
20106           bug #59299.
20107
20108 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20109
20110         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20111         as well.
20112
20113 2004-09-02  Martin Baulig  <martin@ximian.com>
20114
20115         * class.c (mono_class_instance_size): Don't allow generic type
20116         definitions or open generic instances.
20117         (mono_class_array_element_size): If we're a value type, call
20118         mono_class_instance_size() on the original class.
20119
20120         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20121         handle generic instances.
20122
20123         * mono-debug-debugger.c (write_type): Handle generic instances
20124         like classes.
20125
20126 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20129         the allocation request fails. Fixes #65089.
20130
20131         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20132         
20133         * object.c (mono_runtime_free_method): New function to free a dynamic
20134         method.
20135
20136         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20137         delegate trampoline.
20138
20139         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20140         with hasthis as dynamic,
20141
20142         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20143
20144         * domain.c (mono_jit_info_table_remove): New function to remove an
20145         entry from the jit info table.
20146
20147         * class-internals.h (MonoMethod): Add 'dynamic' field.
20148
20149         * loader.c: Fix warnings.
20150
20151 2004-09-01  Martin Baulig  <martin@ximian.com>
20152
20153         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20154         instead of mono_debugger_lock() because the latter one is a no-op
20155         unless running in the debugger.
20156
20157 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20158
20159         * class.c (class_compute_field_layout): Classes with auto-layout or
20160         reference fields are not blittable.
20161         
20162 2004-09-01  Dick Porter  <dick@ximian.com>
20163
20164         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20165         mono_image_get_filename() to get the assembly location.
20166
20167         * icall.c:
20168         * metadata.h: Fix compile warnings
20169
20170 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20171
20172         * class.c (class_compute_field_layout): System.Object is blittable.
20173
20174         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20175         as in/out. Fixes #59909.
20176
20177 2004-09-01  Martin Baulig  <martin@ximian.com>
20178
20179         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20180         mono_metadata_generic_inst_is_valuetype() if we're a generic
20181         instance to check whether our underlying type is a reference type.
20182
20183 2004-09-01  Martin Baulig  <martin@ximian.com>
20184
20185         * metadata.c (mono_type_size): If we're a generic instance, call
20186         mono_class_value_size() for value types.
20187
20188 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20189
20190         * marshal.c: Implement more custom marshalling functionality. Fixes
20191         #64915.
20192
20193 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20194
20195         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20196
20197 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20198
20199         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20200
20201         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20202
20203         * icall.c: Fix some warnings.
20204
20205         * threads.c (abort_appdomain_thread): Fix unref errors.
20206         (mono_thread_current): Fix THREAD_DEBUG define.
20207
20208 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20209
20210         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20211
20212         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20213
20214 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20217         string arrays.
20218
20219 2004-08-28  Martin Baulig  <martin@ximian.com>
20220
20221         * metadata.c
20222         (mono_metadata_generic_inst_is_valuetype): New public function.
20223
20224         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20225         mono_metadata_generic_inst_is_valuetype() if we're a generic
20226         instance to check whether our underlying type is a valuetype.
20227
20228 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20229
20230         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20231         #63768.
20232
20233 2004-08-25  Martin Baulig  <martin@ximian.com>
20234
20235         * loader.c (mono_get_method_from_token): Abstract methods can also
20236         be generic and thus have type parameters.
20237
20238         * metadata-internals.h
20239         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20240
20241         * reflection.c (mono_image_get_generic_param_info): Don't create a
20242         metadata row, just add an entry to the `gen_params' array.
20243         (build_compressed_metadata): Sort the `gen_params' array and then
20244         actually create the metadata.
20245
20246 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20247
20248         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20249
20250 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20251
20252         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20253
20254 2004-08-24  Martin Baulig  <martin@ximian.com>
20255
20256         * class.cs (mono_class_is_subclass_of): Like an interface, a
20257         generic instance also derives from System.Object.
20258
20259 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20260
20261         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20262         custom modifiers to be in any order. Fixes #61990.
20263
20264 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20265
20266         * object.c: Register mono_object_new_fast icall.
20267         
20268         * object.c (mono_class_get_allocation_ftn): Return to calling
20269         mono_object_new_fast, since it seems faster to compute the object 
20270         size in unmanaged code than passing it as a parameter.
20271
20272         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20273
20274         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20275         this function with Boehm as the oom handler, so we don't have to check
20276         the result of GC_malloc.
20277
20278         * object.c: Remove checks for oom.
20279
20280         * object.h object.c (mono_class_get_allocation_ftn): New function to
20281         return the icall which can be used to allocate an instance of a given
20282         class. 
20283
20284         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20285
20286         * class-internals.h: Add 'enabled' field.
20287
20288 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20291
20292 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20293         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20294         value 0x0010.
20295
20296 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20297
20298         * appdomain.c: use the Tls function for appdomain too,
20299         at Zoltan's request. Actually return in mono_context_get
20300
20301         * appdomain.c, profiler.c, threads.c: use __thread
20302
20303 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20304
20305         * appdomain.c threads.c: Call GC_CreateThread on windows.
20306
20307         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20308         multiple libraries since this don't work on windows.
20309
20310 2004-08-18  Martin Baulig  <martin@ximian.com>
20311
20312         * class-internals.h
20313         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20314         MonoMethodHeader.
20315
20316         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20317         MonoMethodNormal since we also need it for abstract and interface
20318         methods.
20319
20320         * reflection.c
20321         (build_compressed_metadata): Sort the GenericParam table.
20322         (mono_image_create_token): Added `gboolean create_methodspec'
20323         argument; this is false when generating a MethodImpl token.
20324         (reflection_methodbuilder_to_mono_method): Abstract and interface
20325         methods may also have generic parameters.
20326
20327 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20328
20329         * appdomain.c: thread local alloc
20330
20331 2004-08-17  Martin Baulig  <martin@ximian.com>
20332
20333         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
20334
20335         * icall.c
20336         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
20337         argument.
20338
20339         * class.c (mono_type_get_full_name): New public function.
20340         (mono_type_get_name): Don't include the type arguments.
20341
20342 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20343
20344         * Makefile.am: Build static versions of libmetadata and libmonoruntime
20345         for inclusion into the mono executable.
20346
20347 2004-08-16  Martin Baulig  <martin@ximian.com>
20348
20349         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
20350         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
20351
20352 2004-08-14  Martin Baulig  <martin@ximian.com>
20353
20354         * class.c (dup_type): Also copy the `byref' field.
20355
20356 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20357
20358         * reflection.c (create_dynamic_mono_image): Revert the last change 
20359         since it breaks bootstrap.
20360
20361 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20362
20363         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
20364
20365         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
20366         not free them with g_free.
20367
20368 2004-08-11  Martin Baulig  <martin@ximian.com>
20369
20370         * reflection.c (mono_reflection_setup_internal_class): Also call
20371         mono_class_setup_mono_type() if we already have a `tb->type.type'.
20372
20373 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
20374
20375         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
20376         called during default (first) AppDomain creation. Keep track of
20377         Evidence when loading assemblies.
20378
20379 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20380
20381         * opcodes.c, opcodes.h: reduce runtime relocations.
20382
20383 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20384
20385         * culture-info.h, locales.c: fixes and chages to sue the new
20386         optimized format of the locale data.
20387         * culture-info-tables.h: regenerated.
20388
20389 2004-08-06  Geoff Norton <gnorton@customerdna.com>
20390         
20391         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
20392
20393 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
20394
20395         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
20396         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
20397         * domain-internals.h: icall declaration.
20398         * icall.c: icall registration.
20399         * object-internals.h: New fields in MonoAssembly for CAS.
20400
20401 2004-08-05  Duncan Mak  <duncan@ximian.com>
20402
20403         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20404         CEE_LDELEM_ANY.
20405
20406 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20407
20408         * reflection.c: fix to deal with object[] arrays in custom ctors
20409         (bug #62550).
20410
20411 2004-08-05  Martin Baulig  <martin@ximian.com>
20412
20413         * class.c (mono_class_array_element_size): Added support for
20414         generic instances and correctly handle "recursive" types.
20415
20416 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20417
20418         * assembly.c: Fix warnings.
20419
20420 2004-08-04  Martin Baulig  <martin@ximian.com>
20421
20422         * class.c
20423         (mono_type_get_name_recurse): Added `gboolean include_arity'
20424         argument specifying whether or not we should include the generic
20425         arity in the type name.
20426         (_mono_type_get_name): New static function.
20427         (mono_class_setup_vtable): If we're a generic instance, don't
20428         include the generic arity in the names of explicit method
20429         implementations.        
20430
20431 2004-08-03  Martin Baulig  <martin@ximian.com>
20432
20433         * class.c (mono_type_get_name_recurse): Enclose the generic type
20434         arguments in `<', '>'.
20435
20436 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20437
20438         * gc.c: make GC warning messages use the trace API, they are just
20439         noise to most of the users.
20440
20441 2004-08-03  Martin Baulig  <martin@ximian.com>
20442
20443         * debug-mono-symfile.c (read_string): Correctly read the string.
20444
20445 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20446
20447         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
20448         
20449         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
20450         icalls.
20451         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
20452
20453 2004-07-30  Martin Baulig  <martin@ximian.com>
20454
20455         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
20456         Reflect latest symbol writer changes.   
20457
20458 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20459
20460         * object.c: always create an object if null is passed
20461         to Invoke() where a valuetype is expected.
20462
20463 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20464
20465         * marshal.c (mono_marshal_init): make managed
20466         signatures match native ones better for 64bits.
20467
20468 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20469
20470         * appdomain.c: hack to build correctly the private bin path on windows.
20471         Fixes bug #61991.
20472
20473 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20474
20475         * assembly.c: Load mscorlib from the correct framework directory
20476           (mono/<version>/mscorlib.dll).
20477         * appdomain.h: Added prototypes for new functions.
20478         * internals.h: Added some prototypes.
20479         * domain.c: When initializing the runtime, get from the executable and
20480           the configuration files the runtime version that the app supports.
20481           Added support methods for reading app.exe.config. Added list of versions
20482           supported by the JIT. Added two new methods: mono_init_from_assembly,
20483           which initializes the runtime and determines the required version from
20484           the provided exe file, and mono_init_version, which initializes
20485           the runtime using the provided version.
20486         * icall.c: Get machine.config from version-specific directory.
20487         * reflection.c: When generating an image, embed the version number
20488           of the current runtime.
20489
20490 2004-07-28  Dick Porter  <dick@ximian.com>
20491
20492         * socket-io.c
20493         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
20494         returned sockaddr size before creating the remote address object.
20495         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
20496         61608.
20497
20498 2004-07-28  Dick Porter  <dick@ximian.com>
20499
20500         * locales.c (string_invariant_compare_char): Fix invariant char
20501         compares between upper and lower cases.  Fixes bug 61458.
20502
20503 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
20504         
20505         * marshal.c: actually cache stelem.ref wrappers.
20506         
20507 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20508
20509         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
20510         sections and remove the mono_cli_rva_map () function.
20511
20512 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20513
20514         * debug-mono-symfile.c: fix one more endianess issue, from a patch
20515         by Geoff Norton (<gnorton@customerdna.com>).
20516
20517 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20518
20519         * class.c: fix class loads for pointer types (typeof(int) !=
20520         typeof(int*)).
20521
20522 2004-07-27  Martin Baulig  <martin@ximian.com>
20523
20524         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
20525         reading the debugging information from an external ".mdb" file.
20526
20527 2004-07-24  Martin Baulig  <martin@ximian.com>
20528
20529         * reflection.c (mono_image_get_type_info): Only write a class
20530         layout entry if we actually have a size or a packing size.
20531
20532 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20533
20534         * reflection.c (type_get_fully_qualified_name): 
20535         insert cast to get type checking of ?: with non-gcc compilers
20536
20537 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20538
20539         * rand.c: use g_getenv for both lookups of
20540         MONO_EGD_SOCKET
20541
20542 2004-07-17  Martin Baulig  <martin@ximian.com>
20543
20544         * reflection.c (mono_reflection_bind_generic_method_parameters):
20545         Set `gmethod->reflection_info'.
20546
20547 2004-07-17  Martin Baulig  <martin@ximian.com>
20548
20549         * class.c (mono_class_create_from_typedef): Insert the newly
20550         created class into the hash table before computing the interfaces
20551         since we could be called recursively.
20552
20553 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20554
20555         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
20556         function to implement stelem.ref in managed code
20557         * class-internals.h, debug-helpers.c: a new wrapper type
20558         for the above.
20559
20560 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20561
20562         * gc.c: allow GC handles to work even when no GC is compiled in.
20563         Fix part of bug #61134 (GetAddrOfPinnedObject).
20564
20565 2004-07-13  Peter Williams  <peter@newton.cx>
20566  
20567         * process.c (complete_path): Make sure we don't attempt to execute
20568         directories.
20569  
20570 2004-07-12  Geoff Norton <gnorton@customerdna.com>
20571
20572         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
20573           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
20574           and will add/subtract the hour if needed
20575
20576 2004-07-12  Martin Baulig  <martin@ximian.com>
20577
20578         * reflection.c (mono_field_get_object): If we have
20579         `field->generic_info', take the attributes from
20580         `field->generic_info->generic_type'.    
20581
20582 2004-07-12  Martin Baulig  <martin@ximian.com>
20583
20584         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
20585         This function must be called before initializing the runtime.
20586         (mono_debug_init_1): New function; call this after initializing
20587         the runtime, but before loading the assembly.  It tells the
20588         debugger to load corlib and the builtin types.
20589
20590         * mono-debug-debugger.c: Did some larger changes in the debugging
20591         code; support recursive class declarations, make sure we actually
20592         add all classes.
20593
20594 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20595
20596         * debug-helpers.c: undo my previous patch and fixed the real issue in
20597         ../mini/exceptions-x86.c
20598
20599 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20600
20601         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
20602         when no HOME env. variable was set and a NullRef was thrown in a .cctor
20603         called from other .cctors.
20604
20605 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
20606
20607         * loader.c: Removed the mono_loader_wine_init hack now that we are
20608         doing a managed version of Windows.Forms.
20609
20610 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20611
20612         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
20613         threadpool.c, threads.c: remove static data from rootset.
20614
20615 2004-07-09  Dick Porter  <dick@ximian.com>
20616
20617         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
20618         Don't do any more processing if the matched length was 0.  It was
20619         increasing the size of the string before.  Fixes bug 61167.
20620
20621 2004-07-09  Dick Porter  <dick@ximian.com>
20622
20623         * socket-io.h:
20624         * socket-io.c
20625         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20626         Add support for SO_PEERCRED if its available.
20627
20628 2004-07-09  Peter Bartok <pbartok@novell.com>
20629         * loader.c: winelib.exe.so error message is now only displayed if
20630         MONO_DEBUG is set. To help us avoid questions when people are trying
20631         out the new Managed.Windows.Forms.
20632
20633 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20634
20635         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
20636         for isinst and castclass wrappers.
20637
20638         * class-internals.h icall.c: Move registration and lookup of JIT icalls
20639         to libmetadata from the JIT, so they could be used by the marshalling
20640         code and the interpreter.
20641
20642         * marshal.c: Register marshalling related JIT icalls here instead of
20643         in mini.c. Use CEE_MONO_ICALL instead of the family of 
20644         CEE_MONO_PROC<x> opcodes to call marshalling functions.
20645
20646         * metadata.h: Remove unneeded marshalling conversions.
20647
20648         * opcodes.c: Update for new opcodes.
20649         
20650 2004-07-08  Martin Baulig  <martin@ximian.com>
20651
20652         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
20653         (mono_debug_get_domain_data): Make this function static.
20654
20655 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20656
20657         * gc.c, object.h: add nice GC handle API for embedders.
20658
20659 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20660
20661         * reflection.c: more changes for the new api
20662
20663         * object.c: When we reflect on a field w/ a constant value, it
20664         will not have a memory location, so we must access metadata. Also,
20665         allow easier reading of strings so that we can read them from
20666         the constant data.
20667
20668         * class.c (mono_class_layout_fields): no need for literal fields here.
20669
20670         * class-internals.h: api changes for const fields
20671
20672         * icall.c (ves_icall_get_enum_info): use new apis for const fields
20673
20674 2004-07-06  Martin Baulig  <martin@ximian.com>
20675
20676         * mono-debug.h: Increment version number to 44.
20677
20678         * mono-debug.c (mono_debug_add_wrapper): The second argument is
20679         now a gpointer, rewrote this whole method.
20680
20681         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
20682         function.  Add information about the wrapper in a new "misc table".
20683
20684         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
20685         for the new misc table.
20686
20687 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * metadata-internals.h image.c: Add a cache for helper signatures.
20690
20691         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
20692
20693 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20694
20695         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
20696         delegates from a delegate. Fixes #61033.
20697         
20698         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
20699         marshalling of stringbuilder arrays. Fixes #59900.
20700
20701 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20702
20703         * icall.c: Add EnumBuilder:setup_enum_type icall.
20704
20705 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20706
20707         * icall.c: Added a new icall for the property version of
20708         OffsetOfStringData.
20709
20710 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20711
20712         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
20713         it has a constant size across platforms.
20714
20715         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
20716         stack trace.
20717
20718 2004-06-29  Martin Baulig  <martin@ximian.com>
20719
20720         * mono-debug.c (mono_debug_add_method): Protect the whole function
20721         in mono_debugger_lock(), not just parts of it.
20722
20723 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20724
20725         * reflection.c: make sure padding bytes in heaps are zeroed.
20726
20727 2004-06-24  David Waite  <mass@akuma.org>
20728
20729         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
20730         image.c, loader.c, locales.c, marshal.c, metadata.c,
20731         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
20732         string-icalls.c, threads.c: change to C90-style comments from C99 /
20733         C++ -style
20734
20735 2004-06-24  Dick Porter  <dick@ximian.com>
20736
20737         * threads.c
20738         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
20739         return createdNew.  Fixes bug 60412.
20740
20741         * threads-types.h: 
20742         * icall.c: Add createdNew parameter to CreateMutex icall
20743
20744 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20745
20746         * reflection.c, object-internals.h: save default value in params.
20747
20748 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20749
20750         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
20751         no need to build a new path combining that with the application base.
20752         Fixes bug #60442.
20753
20754 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20755
20756         * reflection.c: fixed minor standard compliance issues.
20757
20758 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20759
20760         * reflection.c: fixed issue with encoding some custom attributes
20761         (arrays in properties and fields, bug #60411).
20762
20763 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20764
20765         * reflection.c: fix start address when copying the public key token.
20766
20767 2004-06-23  Martin Baulig  <martin@ximian.com>
20768
20769         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
20770         the `exc' object in a static object to put it into the GC's root set.
20771
20772 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20773
20774         * reflection.c: make mono_reflection_setup_internal_class ()
20775         callable a second time to setup a new parent class.
20776
20777 2004-06-23  Dick Porter  <dick@ximian.com>
20778
20779         * threads.c: Check for WAIT_IO_COMPLETION return values.
20780
20781 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
20782
20783         * appdomain.c: Removed the g_free on the public key token. Now copy 
20784         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
20785         * assembly.c: Added public key token string value when loading 
20786         assemblies. Fix bug #60439.
20787         * icall.c: Added missing informations (like public key) in 
20788         GetReferencedAssemblies. Fix #60519.
20789         * image.h: Changed definition for public key token from const char*
20790         public_tok_value to guchar public_key_token [17];
20791         * reflection.c: Updated for changes to public key token.
20792
20793 2004-06-22  Lluis Sanchez Gual
20794
20795         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
20796         for the field in base classes.
20797
20798 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
20799
20800         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
20801         mark headers as not supported, they are installed only for use by the
20802         debugger.
20803
20804 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
20805
20806         * *.c, *.h: avoid namespace pollution in public headers.
20807
20808 2004-06-21  Martin Baulig  <martin@ximian.com>
20809
20810         * exception.c (mono_get_exception_security): It's in
20811         "System.Security", not in "System".
20812
20813         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
20814         the exception classes.
20815
20816 2004-06-21  Martin Baulig  <martin@ximian.com>
20817
20818         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
20819         Protect the exception object from being finalized.
20820
20821 2004-06-21  Martin Baulig  <martin@ximian.com>
20822
20823         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
20824         public function.
20825
20826 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
20827
20828         * reflection.c: Load the assembly in mono_reflection_type_from_name,
20829         if it was not loaded before. Fix parts of #60439.
20830
20831 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
20832
20833         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
20834         code that was broken since Ben's change: wrappers are now
20835         dependent on the method signature only again.
20836
20837 2004-06-21  Martin Baulig  <martin@ximian.com>
20838
20839         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
20840         added interface support.
20841
20842 2004-06-21  Martin Baulig  <martin@ximian.com>
20843
20844         * class.c (mono_vtable_get_static_field_data): New public method.
20845
20846 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
20847
20848         * filewatcher.c : Windows build fix to be compliant with API changes.
20849
20850 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20851
20852         * class.h, class.c: more accessors.
20853         * metadata.h, metadata.c: prepare for hiding MonoType and
20854         MonoMethodSignature: people should use the accessors from now on
20855         outside of the tree.
20856
20857 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20858
20859         * *.c, *.h: more API cleanups.
20860
20861 2004-06-18  Jackson Harper  <jackson@ximian.com>
20862
20863         * assembly.c: Trace loading assemblies.
20864         * loader.c: Trace loading native libraries.
20865         * mono-config.c: Trace loading config files.
20866         
20867 2004-06-18  Dick Porter  <dick@ximian.com>
20868
20869         * locales.c: Tell ICU the lengths of strings, it can cope with
20870         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
20871
20872 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20873
20874         * image.c: swapped name/filename;
20875
20876 2004-06-18  Martin Baulig  <martin@ximian.com>
20877
20878         * mono-debug-debugger.c (write_class): Write the parent class at
20879         the end of the header.
20880
20881 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20882
20883         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
20884
20885 2004-06-17  Raja R Harinath  <rharinath@novell.com>
20886
20887         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
20888         (bundle_obj): New conditional define.
20889         (BUILT_SOURCES): Remove.
20890         ($(bundle_srcs)): Make parallel-make safe.
20891         (libmonoruntime_la_LIBADD): Make unconditional.
20892         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
20893         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
20894
20895 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
20896
20897         * culture-info-tables.h: It was inconsistent with the latest
20898           supp info files.
20899
20900 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
20901
20902         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
20903         be loaded.
20904
20905         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
20906         with gcc 2.95.
20907
20908 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20909
20910         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
20911         cleaned up public header threads.h.
20912
20913 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20914
20915         * Makefile.am, *.c, *.h: more API cleanups.
20916
20917 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20918
20919         * Makefile.am: removed monosn from compilation.
20920         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
20921         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
20922         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
20923         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
20924         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
20925         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
20926
20927 2004-06-15  Jackson Harper  <jackson@ximian.com>
20928
20929         * assembly.c: Make locales lower case when searching the GAC for
20930         assemblies. gacutil will always make locales lowercase when
20931         installing so this effectively makes them case insensitive.
20932         
20933 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
20934
20935         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
20936         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
20937           parameter which allows to choose whether the wait can be interrupted or 
20938           not. Also added the method mono_monitor_enter(), which locks the monitor
20939           using an infinite wait and without allowing interruption.
20940           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
20941           interrupted.
20942         * object.h: Added new fields in MonoThread. suspend_event holds the event
20943           used to susped/resume the thread. synch_lock is the lock object to use for
20944           modifying the thread state.
20945         * threads.c: Use the new synch_lock object for locking, instead of "this",
20946           which can generate deadlocks.
20947           Moved thread state change in Thread.Sleep and Thread.Join from managed
20948           to unmanaged code. This avoids a deadlock when the thread was suspended
20949           just after acquiring the thread lock.
20950           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
20951           Implemented Thread.Suspend using an event instead of ThreadSuspend,
20952           which is not fully implemented in the io-layer.
20953         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
20954
20955 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
20956
20957         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
20958         threads-types.h: more API cleanups.
20959
20960 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20961
20962         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
20963         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
20964         threadpool.c, threads.c: first pass at the exported API cleanup.
20965
20966 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20967
20968         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
20969
20970 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20971
20972         * icall.c: added internalGetHome.
20973
20974 2004-06-14  Dick Porter  <dick@ximian.com>
20975
20976         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
20977         possible to return successfully when '.' or '..' were the only
20978         entries in a directory, but were skipped.  The MonoIOStat was not
20979         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
20980         Fixes bug 59574.
20981
20982 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20983
20984         * reflection.c: make binaries run on .Net 1.1 by default.
20985
20986 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20987
20988         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
20989
20990 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
20991
20992         * marshal.c: keep track of struct size with explicit layout
20993         (bug #59979).
20994
20995 2004-06-12  Martin Baulig  <martin@ximian.com>
20996
20997         * mono-debug-debugger.c: Comment out a debugging g_message().
20998
20999 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21000
21001         * reflection.c, reflection.h: do not free custom attrs that are cached.
21002         * icall.c: use braces to make code clearer.
21003
21004 2004-06-11  Martin Baulig  <martin@ximian.com>
21005
21006         * class.h (MonoInflatedField): New type.
21007         (MonoClassField): Replaced `MonoType *generic_type' with
21008         `MonoInflatedField *generic_info'.
21009
21010         * icall.c
21011         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21012
21013 2004-06-11  Martin Baulig  <martin@ximian.com>
21014
21015         * reflection.c (mono_image_create_method_token): Correctly encode
21016         varargs methods.
21017
21018 2004-06-11  Martin Baulig  <martin@ximian.com>
21019
21020         * metadata.c (mono_metadata_parse_method_signature): When parsing
21021         a MethodDef which has VarArgs, also set sentinelpos if we don't
21022         have any parameters.
21023
21024 2004-06-11  Martin Baulig  <martin@ximian.com>
21025
21026         * verify.c (mono_method_verify): In CEE_CALL, use
21027         mono_method_get_signature() to get the method's signature, unless
21028         we're a PInvoke method.
21029
21030 2004-06-10  Jackson Harper  <jackson@ximian.com>
21031
21032         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21033         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21034         logical name as the supplied path is just a prefix to the gac not
21035         the direct path to it.
21036         
21037 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21038
21039         * reflection.c: make the token for a created method match
21040         the token of the MethodBuilder it was created from
21041         (IKVM requires this behaviour now).
21042
21043 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21044
21045         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21046         reflection.c, socket-io.c: leak fixes.
21047
21048 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21049
21050         * icall.c: handle sentinel pos in vararg methods in position different
21051         from 0.
21052
21053 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21054
21055         * culture-info-tables.h: freshly generated.
21056
21057 2004-06-09  Martin Baulig  <martin@ximian.com>
21058
21059         * loader.c (mono_get_method_constrained): Call `mono_class_init
21060         (constrained_class)'.   
21061
21062 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21063
21064         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21065         any methods. Fixes #59629.
21066
21067 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21068
21069         * culture-info-tables.h: reflecting locale-builder updates.
21070
21071 2004-06-08  Dick Porter  <dick@ximian.com>
21072
21073         * object.h:
21074         * locales.c: Fixed compile warnings, including a real bug in
21075         CompareInfo_internal_compare.
21076         
21077 2004-06-08  Dick Porter  <dick@ximian.com>
21078
21079         * locales.c
21080         (ves_icall_System_Globalization_CompareInfo_internal_index):
21081         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21082         Double-check the resuls of usearches, because ICU currently
21083         ignores most of the collator settings here.  Fixes bug 59720.
21084         
21085 2004-06-08  Dick Porter  <dick@ximian.com>
21086
21087         * locales.c
21088         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21089         Fix memory leak and segfault-causing typo.  No idea how this one
21090         lasted so long without being noticed.
21091
21092 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21093
21094         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21095         any methods. Fixes #59629.
21096
21097 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21098
21099         * assembly.c:
21100         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21101         own the critical section before). Removed dead code (that's done
21102         in the preload hook).
21103
21104         (mono_assembly_load_with_partial_name): call the preload hook.
21105
21106 2004-06-08  Martin Baulig  <martin@ximian.com>
21107
21108         * metadata.c (mono_metadata_signature_alloc): Default
21109         `sentinelpos' to -1.
21110
21111         * reflection.c (mono_image_get_array_token): Likewise.
21112
21113 2004-06-08  Martin Baulig  <martin@ximian.com>
21114
21115         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21116
21117         * metadata.c (mono_metadata_parse_method_signature): When parsing
21118         a MethodDef which has VarArgs, set sentinelpos.
21119
21120         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21121         `gint16' since we're using -1 for non-varargs methods.
21122
21123         * reflection.c
21124         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21125         (method_encode_signature): Added varargs support.
21126         (method_builder_encode_signature): Likewise.
21127         (mono_image_get_varargs_method_token): New static method.
21128         (mono_image_create_method_token): New public method; this is
21129         called via an icall instead of mono_image_create_token() when
21130         calling a varargs method.       
21131
21132 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21133
21134         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21135
21136 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21137
21138         * culture-info-tables.h : Reflecting the latest locale-builder that
21139           fixed empty array representation ({} to {0}).
21140
21141 2004-06-07  Jackson Harper  <jackson@ximian.com>
21142
21143         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21144         looking up extra gac paths. This allows MONO_GAC_PATH to act
21145         exactly like a prefix.
21146         
21147 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21148
21149         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21150         type name before modifying it. Fixes #59405.
21151
21152 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21153
21154         * culture-info.h: added fields for "all datetime patterns".
21155         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21156           _construct_datetime_format ()): fill xxx_patterns fields.
21157         * object.h: added fields for "all datetime patterns" to
21158           MonoDateTimeFormatInfo.
21159         * culture-info-tables.h: reflecting locale-builder updates.
21160
21161 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21162
21163         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21164         the event has no add and remove methods. Fixes #59629.
21165
21166 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21167
21168         * object.c: Fixed possible integer overflow when allocating large
21169         strings.
21170
21171 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21172
21173         * culture-info-tables.h: reflecting locale-builder updates.
21174
21175 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21176
21177         * culture-info-tables.h: reflecting locale-builder updates.
21178
21179 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21180
21181         * culture-info-tables.h: reflecting locale-builder updates.
21182
21183 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21184
21185         * threads.c: Made Thread.Sleep abortable.
21186
21187 2004-06-02  Martin Baulig  <martin@ximian.com>
21188
21189         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21190
21191         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21192
21193 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21194
21195         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21196
21197 2004-05-30  Jackson Harper  <jackson@ximian.com>
21198
21199         * reflection.c: Do not hardcode assembly versions or public key
21200         tokens anymore. All of this except the corlib section was dead
21201         code anyways.
21202         
21203 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21204
21205         * object.c (mono_runtime_invoke_array): Automatically create boxed
21206         objects for byref valuetypes if needed. Fixes #59300.
21207         
21208         * object.c (mono_method_return_message_restore): Handle 
21209         MONO_TYPE_OBJECT as well.
21210
21211 2004-05-28  Jackson Harper  <jackson@ximian.com>
21212
21213         * reflection.c: The modified type encoding was causing build
21214         problems. Reverted for now.
21215         
21216 2004-05-28  Jackson Harper  <jackson@ximian.com>
21217
21218         * reflection.c/h: Take an assembly ref so that we dont create
21219         fully qualified names when encoding types in the same assembly as
21220         the custom attribute being emitted.
21221         * appdomain.c: Increment version number.
21222         
21223 2004-05-26  Duncan Mak  <duncan@ximian.com>
21224
21225         * icall.c
21226         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21227         Set the full version number (major, minor, build, revision).
21228
21229 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21230
21231         * marshal.c (emit_struct_conv): increment src/dst after blit
21232         (mono_marshal_get_managed_wrapper,
21233         mono_marshal_get_native_wrapper): make sure we have marshalling
21234         info before marshalling params (info computation affects
21235         blittable)
21236
21237         * class.c (class_compute_field_layout): correctly deal with
21238         blittable
21239         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21240         value types (as per what windows dows by default)
21241         (mono_class_setup_mono_type): System.ValueType is blittable
21242         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21243         blittable
21244
21245         * marshal.c (mono_marshal_load_type_info): flag types  as
21246         non-blittable if the native layout doesn't match the managed
21247         layout
21248
21249 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21250
21251         * appdomain.c: don't add stuff in the private search path that is
21252         above the application base. If application base is not set, there's
21253         no private search path.
21254
21255 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21256
21257         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21258         byref struct arguments in native->managed marshalling.
21259
21260 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21261
21262         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21263         cache methods using signature (special case for methods
21264         that are value type or string class)
21265         
21266         * image.c (mono_image_close): clean up allocated GSList's
21267         in runtime_invoke_cache.
21268
21269 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21270
21271         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21272         there's no MONO_CFG_DIR environment variable defined.
21273
21274 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21275
21276         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21277
21278 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21279
21280         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21281           is interrumped.
21282         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21283           before waiting for it, and call CloseHandle after the wait to unref it.
21284           This will make sure that handles are not disposed too early.
21285
21286 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21287
21288         * appdomain.c:
21289         * appdomain.h:
21290         * icall.c: removed
21291         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21292         needed now.
21293
21294         * object.c: se the application_base only for the domain that runs
21295         Main. Fixes bug #59216,
21296
21297 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21298
21299         * appdomain.c:
21300         * object.c: only the domain in which Main is run have
21301         SetupInformation.ConfigurationFile set, so moved a few lines from
21302         appdomain.c to object.c.
21303
21304 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21305
21306         * appdomain.c: we tried to load [name].(dll|exe), but according
21307         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21308         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21309         There's a test case attached to bug #58922.
21310
21311 2004-05-27  Dick Porter  <dick@ximian.com>
21312
21313         * icall.c:
21314         * file-io.c: Implemented icalls for locking and unlocking regions
21315         in a file.
21316         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21317         FALSE on error (fixes both compiler warning and real bug.)
21318
21319 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
21320
21321         * culture-info-tables.h: reflecting locale-builder updates.
21322
21323           (Added missing ChangeLog entry for 05/26)
21324
21325 2004-05-27  Jackson Harper  <jackson@ximian.com>
21326
21327         * locales.c: Fix some cut and paste errors.
21328         
21329 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21330
21331         * mono-config.c: set the correct path for config. directory on windows.
21332
21333 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21334
21335         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
21336           on win32.
21337
21338 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21339
21340         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
21341         from pinvoke functions.
21342         
21343         * marshal.c (mono_ftnptr_to_delegate): Implement this.
21344
21345 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21346
21347         * culture-info-tables.h: reflecting locale-builder updates.
21348
21349 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21350
21351         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
21352         #59086.
21353
21354 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
21355
21356         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
21357         * icall.c: Modified icalls for RNG.
21358         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
21359         Windows (CryptoAPI).
21360
21361 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21362
21363         * locales.c: Fix build.
21364
21365 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
21366
21367         * culture-info-tables.h: reflecting locale-builder updates.
21368
21369 2004-05-25  Jackson Harper  <jackson@ximian.com>
21370
21371         * locales.c: When creating the current culture use the $LANGs
21372         specific culture. So DateTimeFormat and NumberFormat entries are created.
21373         
21374 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21375
21376         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
21377         a char array as parameter.
21378
21379 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
21380
21381         * image.c: In mono_image_open(), always use an absolute path name to
21382           look for already loaded images.
21383
21384 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
21385
21386         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
21387         missing in the windows build (like older cygwin include files).
21388
21389 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
21390
21391         * icall.c: Fixed check for possible integer overflow in Buffer_
21392         BlockCopy icall. Replaced comments style // by /* */.
21393
21394 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21395
21396         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
21397         
21398         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
21399         check after MONO_VTADDR. Fixes pinvoke2.exe.
21400
21401         * marshal.h marshal.c metadata.h: Add beginnings of support for
21402         ftnptr -> delegate marshalling.
21403
21404 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21405
21406         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
21407         * threads.c: Fix warnings.
21408
21409 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21410
21411         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
21412         * icall.c: Registered icalls for Suspend and Resume.
21413         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
21414           Thread.Abort.
21415         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
21416         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
21417         * process.c: Use WaitForSingleObjectEx.
21418         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
21419           checkpoints.
21420         * threads.c, threads.h: Make use of new Ex wait methods. Improved
21421           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
21422           for Suspend and Resume. Added new mono_thread_stop, used for stoping
21423           background threads. Added basic support for Abort in Windows.
21424           Start new threads using a managed delegate invoke wrapper. This wrapper
21425           has an interruption checkpoint that is needed since an interruption
21426           can be requested before the thread leaves the unmanaged code that starts 
21427           the thread.
21428         * marshal.c: Added interruption checkpoint after every native call, and
21429           also before managed calls for wrappers called from unmanaged code to
21430           go into managed code.
21431         * object.h: Added new field in MonoThread to keep track of interruption
21432           requests.
21433
21434 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21435
21436         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
21437         calls.
21438
21439 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21440
21441         * appdomain.c:
21442         * assembly.c:
21443         * gc.c:
21444         * locales.c:
21445         * mono-config.c:
21446         * rand.c: getenv -> g_getenv (windows!)
21447
21448         * process.c: complete_path is also used on non-windows platforms.
21449
21450 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21451
21452         * icall.c: new signature for Process_Start.
21453
21454         * process.[ch]: new signature for Process_Start. If we're on windows
21455         and UseShellExecute is false, we have to search for the program by
21456         ourselves if we don't get a full path.
21457
21458 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21459
21460         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
21461         marshalling and call CleanUpNativeData if needed. Fixes #58646.
21462
21463 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21464
21465         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
21466         Fixes bug #58373.
21467
21468 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21469
21470         * process.c: use double quotes to quote program name and arguments on
21471         windows. Fixes bug #58575.
21472
21473 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21474
21475         * file-io.c: don't return "." and ".." when using windows Find*File.
21476
21477 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
21478
21479         * marshal.c: Don't pass wrappers to message init because method 
21480         addressed used to lookup metadata. part of remoting[2|3] fix.
21481
21482 2004-05-15  Jackson Harper  <jackson@ximian.com>
21483
21484         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
21485         path is essentially the same as MONO_PATH except that it points to
21486         GACs instead of lib directories.
21487         * loader.h: The user gac is gone so we dont need function to
21488         enable/disable it.
21489         * mono-config.c: user gac option is now gone.
21490         
21491 2004-05-15  Jackson Harper  <jackson@ximian.com>
21492
21493         * culture-info.h: Make defines more consistent, add calendar data
21494         to the culture info table.
21495         * culture-info-tables.h: Add basic calendar data. Basically
21496         everyone gets default gregorian until all the data is
21497         updated.
21498         * locales.c: Use the new consistent defines. Set calendar data for
21499         culture info objects.
21500         * object.h: add a field for calendar data to CultureInfo
21501         
21502 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21503
21504         * image.c: image->runtime_invoke_cache is keyed on signatures now.
21505         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
21506         a signature.
21507         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
21508         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
21509         an extra param that is the pointer of the method to invoke. The IL for
21510         the invoke method is no longer specific to the method, but to the
21511         signature of the method. Thus, we can share the same code for multiple
21512         methods. This reduces the number of methods that have to be compiled.
21513
21514 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21515
21516         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
21517
21518         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21519
21520         * icall.c: Optimize Buffer.BlockCopy.
21521
21522 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21523
21524         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
21525         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
21526         quote). Changed them to "MMMM yyyy".
21527
21528 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
21529
21530         * rand.c
21531         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
21532
21533 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
21534
21535         * reflection.h: Updated after changes to managed structures.
21536
21537         * appdomain.c: Bump corlib version.
21538
21539 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21540
21541         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
21542         windows.
21543
21544 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21545
21546         * Makefile.am: link to ../os/libmonoos.la on windows.
21547
21548         * assembly.c:
21549                 -If MONO_DEBUG, warn about non-existing directories in
21550                 MONO_PATH.
21551                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
21552                 compile time variable.
21553                 -Removed init_default_path and call mono_set_rootdir from
21554                 libmonoos.a instead (windows only).
21555
21556         * assembly.h: declare mono_assembly_getrootdir().
21557
21558         * domain.c:
21559         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
21560
21561         * loader.c: s/getenv/g_getenv/
21562
21563 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21564
21565         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
21566
21567         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
21568
21569         * metadata.h: Add new marshalling conversions.
21570
21571         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
21572         function.
21573
21574         * reflection.c (mono_reflection_get_type): Lookup the type in all
21575         modules of a multi-module assembly. Fixes #58291.
21576
21577 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21578
21579         * threads.c: Before aborting a background, set the StopRequested
21580         state.  This avoids throwing the Abort exception.
21581         In mono_thread_manage, don't continue with the shutdown until all
21582         aborted threads have actually stopped.
21583
21584 2004-05-10  Jackson Harper  <jackson@ximian.com>
21585
21586         * locales.c: Remove the modifier from culture names.
21587         
21588 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21589
21590         * Makefile.am: monosn is not installed any more. It has been deprecated
21591         in favor of sn.
21592
21593 2004-05-07  Jackson Harper  <jackson@ximian.com>
21594
21595         * locales.c
21596         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
21597         Fix array construction, add bailout if the length is 0.
21598
21599 2004-05-07  Dick Porter  <dick@ximian.com>
21600
21601         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
21602         machine doesn't have a DNS entry.  Patch by Urs Muff
21603         (umuff@quark.com), fixes bug 57928.
21604
21605 2004-05-06  Jackson Harper  <jackson@ximian.com>
21606
21607         * reflection.c: Handle null PublicTokens properly. alloc mem for
21608         assembly names culture so we dont crash when freeing it.
21609         
21610 2004-05-06  Jackson Harper  <jackson@ximian.com>
21611
21612         * assembly.c: Check the usergac when loading with partial names.
21613         
21614 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21615
21616         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
21617         does nothing for now (not required for Linux/Windows) but the class
21618         library can call it (and a newer or modified runtime could need it).
21619         * icall.c: Registred icall.
21620
21621 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21622
21623         * loader.c: prints a message on module loading error we set MONO_DEBUG
21624         environment variable.
21625
21626 2004-05-05  Jackson Harper  <jackson@ximian.com>
21627
21628         * appdomain.c: Handle PublicKeyToken=null properly.
21629         
21630 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21631
21632         * environment.c|h: Added icall ves_icall_System_Environment_
21633         GetOSVersionString to get the current OS version as a string.
21634         * icall.c: Registred icall.
21635
21636 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
21637
21638         * object.c: in mono_object_get_virtual_method(), take into account that
21639         non-virtual methods don't have a slot in the vtable. Check needed when
21640         the object is a proxy.
21641
21642 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21643
21644         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
21645         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
21646
21647         * object.c (mono_class_compute_gc_descriptor): Fix warning.
21648
21649         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
21650         passed when a valuetype is expected.
21651
21652         * object.c (mono_unhandled_exception): Only set the exit code if the
21653         exception happens in the main thread. Fixes thread5.exe.
21654
21655         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
21656         invalid names. Fixes #58047.
21657
21658 2004-05-03  Jackson Harper  <jackson@ximian.com>
21659
21660         * assembly.c: This line was committed accidently and is unneeded.
21661         
21662 2004-05-03  Jackson Harper  <jackson@ximian.com>
21663
21664         * icall.c: Add new icall for Assembly::LoadWithPartialName
21665         * assembly.c/.h: new function that probes the GAC to load partial
21666         assembly names by Paolo Molaro.
21667         
21668 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21669
21670         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
21671         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
21672         (type_get_fully_qualified_name): Added PublicKeyToken when building a
21673         full type name.
21674
21675 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21676
21677         * appdomain.c: fixed check for 'neutral' culture and removed warning.
21678         * reflection.c: fix bug when parsing a full type name and Version is not
21679         the last thing in the string.
21680
21681 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
21682
21683         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
21684         crashes when it is freed.
21685
21686 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21687
21688         * assembly.c: print the compat warning to stderr.
21689
21690 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
21691
21692         * assembly.c (mono_assembly_load_references): Add a compatibility
21693         hack to run old applications that might be still referencing the
21694         3300-based assemblies, only do this for System.xxx.
21695
21696 2004-05-01  Jackson Harper  <jackson@ximian.com>
21697
21698         * appdomain.c: If the culture is neutral we set it to "".
21699         
21700 2004-04-29  Jackson Harper  <jackson@ximian.com>
21701
21702         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
21703
21704 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
21705  
21706         * string-icalls.c: added low overhead function for copying chars
21707         * icall.c: added needed icall for the above function
21708  
21709 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21710
21711         * icall.c: fix return value of get_global_assembly_cache.  Implemented
21712         Environment.GetLogicalDrives.
21713
21714 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
21715
21716         * rand.c: try and talk to egd or prngd
21717         for random bytes if opening devices fail.
21718
21719 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21720
21721         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
21722         alignment for the type using the native alignment of its members 
21723         instead of using klass->min_align.
21724
21725         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
21726
21727 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21728
21729         * file-io.c:
21730         * socket-io.c: added check for sys/aio.h.
21731
21732 2004-04-28  Dick Porter  <dick@ximian.com>
21733
21734         * threads.c: Don't abort a thread thats already aborting, when
21735         terminating everything.
21736
21737 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21738
21739         * icall.c: added 2 new async calls for Socket.
21740
21741         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
21742         IO on *nix systems.
21743
21744         * threadpool.c: removed unused variable.
21745
21746 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
21747
21748         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
21749
21750 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21751
21752         * locales.c: put back string_invariant_tolower () and
21753         string_invariant_toupper ().
21754
21755 2004-04-26 David Waite <mass@akuma.org>
21756
21757         * file-io.h:
21758         * socket-io.h:
21759         * threads.h:
21760         * unicode.h: remove comma from end of enumeration declarations
21761
21762 2004-04-26 David Waite <mass@akuma.org>
21763
21764         * debug-mono-symfile.h:
21765         * decimal.c:
21766         * mono_debug.h:
21767         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
21768
21769
21770 2004-04-26  Jackson Harper  <jackson@ximian.com>
21771
21772         * appdomain.c: Increment version number.
21773         
21774 2004-04-26  Jackson Harper  <jackson@ximian.com>
21775
21776         * appdomain.c: Set assembly references public token value when
21777         PublicKeyToken is specified, not the hash_value. Free public token
21778         values when free assembly name data. Previously the public key
21779         token was hex decoded, however we are using hex encoded public key
21780         tokens, so this is not neccasary.
21781         * assembly.c: Lookup assemblies in the gac if their public token
21782         value is set. Add function to allow enabling user gac
21783         lookups. Specify whether or not the assembly was loaded from the
21784         GAC. Compare full assembly names when checking the cache for
21785         assemblies (Temporarily disabled see comment in code). Remove
21786         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
21787         specifies trace-loader they get extra info to stdout on the
21788         loading of assemblies.
21789         * image.h: Add a field for an assembly references public token
21790         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
21791         whether an assembly has been loaded from the GAC.
21792         * image.c: Remove a corlib -> mscorlib name mapping.
21793         * loader.h: Add function to enable/disable the user gac.
21794         * mono-config.c: Check if the usergac is enabled in the config
21795         file.
21796         * icall.c: New icall to determine whether or not an assembly has
21797         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
21798         * tabldefs.h: Add constant for assemblyref flag that specifies a
21799         full public key is used instead of a public token.
21800         * reflection.c: Remove mscorlib -> corlib mappings. Set
21801         PublicTokenValue instead of hash value. This value is a hex
21802         string so it does not need to be expanded.
21803
21804 2004-04-26  Martin Baulig  <martin@ximian.com>
21805
21806         * mono-debug-debugger.c (mono_debugger_initialize): Set
21807         `mono_debugger_initialized' before calling mono_debug_lock().
21808
21809 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
21810
21811         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
21812           InternalToUpper/InternalToLower.
21813         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
21814           removed invariant culture shortcut.  This is now done in managed code.
21815         * locales.c: (string_invariant_toupper/tolower) removed.
21816
21817 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21818
21819         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
21820         Added Poll internal call.
21821
21822         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
21823         call for Poll. Select was too heavy for polling a single socket.
21824
21825         * threadpool.[ch]: added mono_threadpool_cleanup.
21826         * threads.c: use it. Don't use Thread_Abort on windows.
21827
21828 2004-04-23  Martin Baulig  <martin@ximian.com>
21829
21830         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
21831
21832 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
21833
21834         * icall.c: Registred new icalls for key pair protection and added an
21835         icall for Environment.GetFolderPath on Windows.
21836         * security.c|h: Added new icalls for key pair protection.
21837
21838 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21839
21840         * socket-io.c: don't display the non-supported family warning for known
21841         families. Now this is not displayed on windows when checking support
21842         for IPv4/IPv6.
21843
21844 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21845
21846         * class.c: don't display the layout warning for static fields.
21847
21848 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
21849
21850         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
21851         * locales.c, locales.h: Added new icalls for culture-specific
21852         Char.ToLower and Char.ToUpper.
21853
21854 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21855
21856         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
21857         by David Waite.
21858
21859 2004-04-20  Martin Baulig  <martin@ximian.com>
21860
21861         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
21862         of the type name before passing it to mono_reflection_type_from_name().
21863
21864 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21865
21866         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
21867         encodings here. Fixes #56965.
21868
21869 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
21870
21871         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
21872         fix test on strstr result not that I can see anything that
21873         relies on the result.
21874
21875 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21876
21877         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
21878         Fixes #57081.
21879
21880         * marshal.c (mono_marshal_get_string_encoding): New helper function.
21881
21882         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
21883         function to determine which marshalling to use for strings. Fixes
21884         #56965.
21885
21886         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
21887
21888         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
21889
21890 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
21891
21892         * icall.c: #include mono-config.h
21893
21894 2004-04-15  Jackson Harper  <jackson@ximian.com>
21895
21896         * culture-info-tables.h: Fix date formats for en-US culture.
21897         
21898 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
21899
21900         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
21901         ThreadPool.SetMinThreads.
21902         * threadpool.c: Implemented ThreadPool.GetMinThreads and
21903         ThreadPool.SetMinThreads.
21904
21905 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21906
21907         * mono-config.c: also load the .config file in the directory
21908         where the assembly was found.
21909
21910 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21911
21912         * assembly.c: load per-assembly config files.
21913         * icall.c: decrapified code to get the config dir and moved to
21914         mono-config.c.
21915         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
21916         per-assembly config files. When doing a dll map lookup give precedence
21917         to the per-assembly data.
21918
21919 2004-04-14  Martin Baulig  <martin@ximian.com>
21920
21921         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
21922         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
21923         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
21924
21925         * mono-debugger-debugger.c: While the debugger is locked, remember
21926         whether the symbol tables have changes and send one single
21927         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
21928
21929 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21930
21931         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
21932
21933         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
21934         function.
21935
21936         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
21937         account when marshalling string arrays. Fixes #56965.
21938
21939 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
21940
21941         * icall.c: Add new icalls mapping for security.
21942         * security.c|h: Add internal calls for WindowsIdentity,
21943         WindowsImpersonationContext and WindowsPrincipal.
21944
21945 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
21946
21947         * class.c: Added comment to ensure the System.MonoDummy class
21948         is removed when no longer necessary
21949
21950 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21951
21952         * appdomain.c: Pass arguments to the bootstraping exceptions to
21953         minimize JITed methods at boot
21954
21955         * metadata.c (mono_exception_from_name_two_strings): Allow for the
21956         second string to be null.
21957
21958         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
21959         Change the protocol to minimize the JIT methods at startup.  Now
21960         it Returns the internal codepage, if the value of "int_code_page"
21961         is 1 at entry, and we can not compute a suitable code page
21962         number, returns the code page as a string.
21963
21964 2004-04-13  Jackson Harper  <jackson@ximian.com>
21965
21966         * culture-info-tables.h: Fix number of decimal digits for all
21967         english locales.
21968
21969 2004-04-13  Jackson Harper  <jackson@ximian.com>
21970
21971         * icall.c: Clairfy out of sync error message. It is not always
21972         your corlib that is out of sync.
21973
21974 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
21975
21976         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
21977         properties when only the set accessor is overriden. Fixes #55874.
21978
21979 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
21980
21981         * assembly.c (mono_assembly_load_references): Make this thread safe.
21982         Fixes #56327.
21983
21984 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21985
21986         * monosn.c: Add missing initialization calls.
21987
21988 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
21989
21990         * locales.c:
21991         ves_icall_System_Globalization_CultureInfo_construct_number_format
21992         Fix g_assert so it compiles on fussier compilers re int/ptr
21993         mismatch
21994
21995 2004-04-08  Dick Porter  <dick@ximian.com>
21996
21997         * socket-io.h:
21998         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
21999         53992.  Also rearrange the code so that the internal calls return
22000         an error value and exceptions are thrown from managed code.
22001
22002         * icall.c: Add type info to the socket icalls.
22003
22004 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22005
22006         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22007         owes me a beer.
22008
22009 2004-04-07  Martin Baulig  <martin@ximian.com>
22010
22011         * class.c (mono_class_from_generic_parameter): Don't default
22012         `klass->parent' to `mono_defaults.object_type'.
22013
22014 2004-04-07  Martin Baulig  <martin@ximian.com>
22015
22016         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22017         `param->pklass->reflection_info'.       
22018
22019 2004-04-07  Jackson Harper  <jackson@ximian.com>
22020
22021         * culture-info-tables.h: Fix date separator symbol.
22022         
22023 2004-04-07  Martin Baulig  <martin@ximian.com>
22024
22025         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22026         from System.Type to System.MonoType.
22027
22028 2004-04-07  Martin Baulig  <martin@ximian.com>
22029
22030         * reflection.h
22031         (MonoReflectionGenericParam): Added `has_reference_type' and
22032         `has_value_type' fields.
22033
22034         * reflection.c (mono_image_get_generic_param_info): Encode the
22035         correct flags if we have the `class' or `struct' constraint.
22036
22037 2004-04-07  Martin Baulig  <martin@ximian.com>
22038
22039         * reflection.h
22040         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22041
22042 2004-04-07  Jackson Harper  <jackson@ximian.com>
22043
22044         * appdomain.c: Revert extra patches, just wanted to bump the
22045         version number.
22046         
22047 2004-04-07  Jackson Harper  <jackson@ximian.com>
22048
22049         * Makefile.am: Add culture-info private headers.
22050         * icall.c: Add new icalls for contructing locales.
22051         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22052         * locales.h: Declare new culture info construction methods.
22053         * object.h: Add new fields used to avoid the CultureMap to
22054         MonoCultureInfo.
22055         * culture-info.h: Definition of structs used in the culture info
22056         tables.
22057         * culture-info-tables.h: Autogenerated tables that contain culture
22058         info data. This file was generated with the locale-builder tool.
22059         * appdomain.c: Incement corlib version number.
22060         
22061 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22062
22063         * appdomain.c: (mono_runtime_init) move mono_thread_init
22064         to before mono_object_new calls so critical sections
22065         are initialized before use.
22066
22067 2004-04-07  Martin Baulig  <martin@ximian.com>
22068
22069         * icall.c
22070         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22071         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22072         (ves_icall_MonoGenericParam_initialize): Removed.
22073         (monogenericparam_icalls): Removed.
22074         (generictypeparambuilder_icalls): Added new table for
22075         System.Reflection.Emit.GenericTypeParameterBuilder.
22076
22077         * reflection.c
22078         (mono_reflection_define_generic_parameter): Removed.
22079         (mono_reflection_initialize_generic_parameter): This is now called
22080         from GenericTypeParameterBuilder's .ctor.
22081
22082 2004-04-06  Martin Baulig  <martin@ximian.com>
22083
22084         * class.c (mono_class_init): Don't inflate nested classes in a
22085         generic instance.
22086         (mono_type_get_name_recurse): Include the generic arguments for
22087         generic instances and generic type declarations.
22088         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22089         (_mono_class_get_instantiation_name): Removed.
22090         (mono_class_create_generic): Always use `gklass->name' as our name.
22091
22092         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22093
22094         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22095         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22096         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22097         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22098         closed generic methods here.
22099
22100         * reflection.c
22101         (mono_reflection_generic_inst_get_nested_types): Removed.
22102         (inflate_mono_method): Copy the generic parameters from the
22103         MonoMethodHeader into out MonoGenericMethod.
22104
22105 2004-04-06  Martin Baulig  <martin@ximian.com>
22106
22107         * row-indexes.h
22108         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22109
22110         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22111
22112         * reflection.c (build_compressed_metadata): If we have any entries
22113         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22114         set the header version to 1.1.
22115
22116 2004-04-06  Martin Baulig  <martin@ximian.com>
22117
22118         * class.c (mono_class_init): If we're a generic instance,
22119         initialize our nested classes, too.
22120         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22121         suffix. 
22122
22123 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22124
22125         * process.c: quote the argument passed to the shell on windows.
22126
22127 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22128
22129         * threads.c (mono_alloc_special_static_data): Allow this to be
22130         called during startup.
22131
22132 2004-04-02  Martin Baulig  <martin@ximian.com>
22133
22134         * icall.c
22135         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22136
22137 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22138
22139         * icall.c: Fix build.
22140
22141 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22142
22143         * Makefile.am: Added security.c|h.
22144         * icall.c: Added icall for get_UserName;
22145         * security.c: New file for security related icalls. Added function
22146         get_UserName for System.Environment (fix #56144).
22147         * security.h: New. Header file for security.c
22148
22149 2004-04-02  Dick Porter  <dick@ximian.com>
22150
22151         * icall.c: Deleted the icalls that were obsoleted some time ago
22152         by the ICU string code, and which were mixed into the icall
22153         rearranging.  Fixes bug 55969.
22154
22155         * string-icalls.h: 
22156         * string-icalls.c: Deleted the code that those icalls reference.
22157
22158 2004-04-01  Martin Baulig  <martin@ximian.com>
22159
22160         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22161
22162         * class.c (mono_class_from_generic_parameter): Don't set 
22163         TYPE_ATTRIBUTE_INTERFACE.
22164         (my_mono_class_from_generic_parameter): Likewise.
22165
22166 2004-04-01  Martin Baulig  <martin@ximian.com>
22167
22168         * loader.c (find_method): Added an optional `MonoClass *ic'
22169         argument to search in a specific interface.
22170         (mono_get_method_constrained): New public function.
22171
22172 2004-04-01  Martin Baulig  <martin@ximian.com>
22173
22174         * reflection.c (mono_image_get_generic_field_token): Use the
22175         `handleref' cache here.
22176
22177 2004-04-01  Martin Baulig  <martin@ximian.com>
22178
22179         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22180
22181         * reflection.c (create_generic_typespec): Use the `typespec' hash
22182         here, not the `typeref' one.    
22183
22184 2004-04-01  Martin Baulig  <martin@ximian.com>
22185
22186         * class.c (mono_class_inflate_generic_type): Moved the
22187         functionality into a new static inflate_generic_type() which
22188         returns NULL if it didn't do anything.  Only increment the
22189         `mono_stats.inflated_type_count' if we actually inflated
22190         something.
22191         (mono_class_get_full): Check the classes type to see whether we
22192         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22193
22194 2004-04-01  Jackson Harper  <jackson@ximian.com>
22195
22196         * reflection.c: Set culture for assembly references.
22197         
22198 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22199
22200         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22201
22202 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22203
22204         * assembly.c:
22205         (do_mono_assembly_open): the critical section also covers
22206         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22207
22208 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22209
22210         * threads.c:
22211         (mono_manage_threads): abort the background threads when finishing.
22212         Fixes bug #47232.
22213
22214 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22215
22216         * gc.c: only close the done_event handle if there was no timeout.
22217         C-ified comments.
22218
22219 2004-03-30  Martin Baulig  <martin@ximian.com>
22220
22221         * icall.c (icall_entries): It's called "System.Activator", not
22222         "System.Activation".    
22223
22224 2004-03-30  Martin Baulig  <martin@ximian.com>
22225
22226         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22227         (mono_class_create_from_typespec): Likewise.
22228
22229 2004-03-30  Martin Baulig  <martin@ximian.com>
22230
22231         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22232         `has_ctor_constraint' and `initialized'.
22233
22234 2004-03-30  Martin Baulig  <martin@ximian.com>
22235
22236         * reflection.c (encode_new_constraint): New static function to add
22237         the constructor constraint attribute to a type parameter.
22238         (encode_constraints): Call encode_new_constraint() if necessary.
22239
22240         * reflection.h
22241         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22242
22243         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22244         
22245 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22246
22247         * reflection.c, icall.c: add support for pinning variables. 
22248
22249 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22250
22251         * marshal.c (mono_marshal_get_managed_wrapper):
22252         init bool local with zero rather than null.
22253
22254 2004-03-29  Martin Baulig  <martin@ximian.com>
22255
22256         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22257         the "official" behavior here.
22258         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22259
22260 2004-03-29  Martin Baulig  <martin@ximian.com>
22261
22262         * icall.c: Reflect latest API changes.
22263
22264 2004-03-29  Martin Baulig  <martin@ximian.com>
22265
22266         * loader.c (mono_get_method_from_token): Also call
22267         mono_metadata_load_generic_params () for abstract and interface
22268         methods; replace the type arguments in the method signature with
22269         the ones which are loaded from the metadata.
22270
22271 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22272
22273         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22274         of the lock is not the current thread. MS.NET don't do it, in spite of
22275         what the documentation says. See bug #56157.
22276
22277 2004-03-28  Martin Baulig  <martin@ximian.com>
22278
22279         * class.c (mono_class_init): Don't call init_properties() and
22280         init_events() for generic instances; set `prop->parent' when
22281         inflating properties.
22282
22283         * reflection.c (mono_generic_inst_get_object): Call
22284         `mono_class_init (ginst->klass)'.
22285         (mono_type_get_object): Only create a MonoGenericInst if your
22286         generic type is a TypeBuilder.
22287         (do_mono_reflection_bind_generic_parameters): Only set
22288         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22289
22290 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22291
22292         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22293         Fixes #56091.
22294
22295 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22296
22297         * icall.c: added Kill_internal icall.
22298         * process.[ch]: added Kill_internal icall.
22299
22300 2004-03-25  Martin Baulig  <martin@ximian.com>
22301
22302         * class.h (MonoStats): Added `generic_instance_count',
22303         `inflated_method_count', `inflated_type_count' and
22304         `generics_metadata_size'.       
22305
22306 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22307
22308         * reflection.c: no warnings now.
22309
22310 2004-03-25  Martin Baulig  <martin@ximian.com>
22311
22312         * class.c (mono_class_get_full): New public function; does a
22313         mono_class_get(), but also takes a `MonoGenericContext *'.
22314
22315         * loader.c (mono_field_from_memberref): Renamed to
22316         `field_from_memberref', made static and added `MonoGenericContext *'
22317         argument.
22318         (mono_field_from_token): Added `MonoGenericInst *' argument.
22319         (method_from_memberef): Likewise.
22320         (mono_get_method_from_token): Likewise.
22321         (mono_get_method_full): New public function; does a
22322         mono_get_method(), but also takes a `MonoGenericContext *'.
22323
22324         * verify.c (mono_method_verify): Get the method's generic context
22325         and pass it to mono_field_from_token(), mono_get_method_full() and
22326         mono_class_get_full().
22327
22328 2004-03-25  Martin Baulig  <martin@ximian.com>
22329
22330         * class.c (mono_class_inflate_generic_type): Take a
22331         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
22332         `MonoGenericMethod *'.
22333
22334 2004-03-25  Martin Baulig  <martin@ximian.com>
22335
22336         * loader.h (MonoMethodInflated): Store the MonoGenericContext
22337         instead of the MonoGenericMethod here.
22338
22339 2004-03-25  Martin Baulig  <martin@ximian.com>
22340
22341         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
22342         each time we create a new MonoGenericInst, we also create a new
22343         context which points back to us.
22344
22345         * class.c (inflate_method): Use `ginst->context' instead of
22346         creating a new context.
22347
22348         * loader.c (method_from_memberref): Use
22349         `klass->generic_inst->context' instead of creating a new context.
22350
22351 2004-03-25  Martin Baulig  <martin@ximian.com>
22352
22353         * class.h (MonoGenericContext): New struct.
22354         (MonoGenericMethod): Removed `generic_inst'.
22355
22356         * class.c (mono_class_inflate_generic_method): Take a
22357         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
22358
22359 2004-03-25  Martin Baulig  <martin@ximian.com>
22360
22361         * loader.h (MonoMethodInflated): New typedef.
22362
22363         * metadata.h (MonoMethodSignature): Removed `gen_method', make
22364         `generic_param_count' consume just 30 bits, added `is_inflated'
22365         and `has_type_parameters' flags (one bit each).
22366
22367         * class.c (mono_class_inflate_generic_method): Create a
22368         MonoMethodInflated instead of a MonoMethodNormal and set
22369         `is_inflated' in the method signature.
22370
22371         * class.h (MonoGenericMethod): Removed `generic_method'.
22372
22373 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
22374
22375         * image.c: Make sure the name of a MonoImage is always an absolute path.
22376           This fixes bug #54415.
22377
22378 2004-03-24  Martin Baulig  <martin@ximian.com>
22379
22380         * class.c (mono_class_setup_vtable): If we're a generic instance,
22381         use our generic type's vtable size.
22382
22383 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22384
22385         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
22386         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
22387         problems.
22388
22389 2004-03-23  Martin Baulig  <martin@ximian.com>
22390
22391         * class.h (MonoDynamicGenericInst): Added `int count_events' and
22392         `MonoEvent *events'.
22393
22394         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
22395         (typebuilder_icalls): Added "get_event_info"; calls
22396         mono_reflection_event_builder_get_event_info(). 
22397
22398         * reflection.c (mono_reflection_generic_inst_initialize): Added
22399         `MonoArray *events'.
22400         (mono_reflection_event_builder_get_event_info): New function.
22401
22402 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
22403
22404         * object.h: add mono_type_initialization_init
22405
22406         * object.c (mono_runtime_class_init): 
22407         implement class constructor synchronization rules
22408         to cope with threading issues.  
22409         add mono_type_initialization_init
22410
22411         * appdomain.c (mono_runtime_init): call 
22412         mono_type_initialization_init
22413
22414         * class.h: removing initializing field from MonoVTable
22415
22416 2004-03-23  Martin Baulig  <martin@ximian.com>
22417
22418         * class.c (my_mono_class_from_generic_parameter): Use
22419         `param->name' if it's not NULL. 
22420
22421 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
22422
22423         * class.c: do not insert non-virtual methods in the vtable.
22424         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
22425         that means the method is non-virtual. This never would have
22426         happened before.
22427
22428 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22429
22430         * profiler.c: Added lock for accessing coverage_hash.
22431
22432 2004-03-22  Martin Baulig  <martin@ximian.com>
22433
22434         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
22435         `method->method->signature->generic_param_count != 0' to make it
22436         work for interface methods.
22437
22438 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22439
22440         * process.c: quote the string passed to the shell using g_shell_quote.
22441
22442 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22443
22444         * threads.c:
22445         (mono_threads_manage): don't remove the finalizer thread and self
22446         from the threads hash table so that mono_thread_manage can be called
22447         more than once.
22448
22449 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22450
22451         * process.c: quote the arguments when UseShellExecute is true. Fixes
22452         bug #55790.
22453
22454 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22455
22456         * threads.c: set mono_thread_detach as a cleanup routine for every
22457         thread. This way it's always executed upon thread termination, either
22458         aborted or finished normally. No more xsp hangs!
22459
22460 2004-03-17  Martin Baulig  <martin@ximian.com>
22461
22462         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
22463         `int count_nested' and a `MonoType **nested'.
22464
22465         * reflection.c (mono_reflection_bind_generic_parameters): Moved
22466         most of the functionality into a new static
22467         do_mono_reflection_bind_generic_parameters() and don't take a
22468         `MonoType *nested_in' argument any more.  Don't compute nested
22469         types here.
22470         (mono_reflection_generic_inst_get_nested_types): New public method
22471         to get nested types.
22472
22473         * class.c (mono_class_create_generic): Set `klass->nested_in' if
22474         we're a nested class.
22475
22476         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
22477         mono_reflection_generic_inst_get_nested_types() to compute the
22478         nested types.
22479
22480 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22481
22482         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
22483         descriptive error message under windows.
22484         
22485 2004-03-17  Martin Baulig  <martin@ximian.com>
22486
22487         * class.c (dup_type): Added `const MonoType *original' argument;
22488         copy the attrs from the original type.
22489
22490 2004-03-17  Martin Baulig  <martin@ximian.com>
22491
22492         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
22493         `m->generic_inst_cache' here.
22494
22495 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * exception.h exception.c: Add stack_overflow_exception.
22498
22499 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22500
22501         * threadpool.c:
22502         (overlapped_callback): call SetEvent *after* invoking the callback.
22503         No need to call CloseHandle.
22504
22505 2004-03-16  Martin Baulig  <martin@ximian.com>
22506
22507         * reflection.c (mono_image_get_fieldref_token): Take a
22508         `MonoReflectionField *' instead of a `MonoClassField *' and a
22509         `MonoClass *'; store the `MonoReflectionField *' in the hash.
22510
22511 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22512
22513         * appdomain.c: don't add the culture to the filename we're looking for
22514         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
22515
22516 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22517
22518         * locales.c: don't ignore symbols when doing case insensitive compares.
22519         Thanks Dick! Fixes bug #54046.
22520
22521         * threads.c: surround 'threads' usage with enter/leave in
22522         mono_thread_manage.
22523
22524 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22525
22526         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
22527         implicitly marshalled as [Out]. Fixes #55450.
22528
22529         (mono_marshal_get_runtime_invoke): Zero out the result if there is
22530         an exception.
22531
22532 2004-03-16  Martin Baulig  <martin@ximian.com>
22533
22534         * class.c (mono_class_from_generic_parameter): Use the actual
22535         parameter name. 
22536
22537 2004-03-16  Martin Baulig  <martin@ximian.com>
22538
22539         * reflection.c (type_get_signature_size): New static function.
22540         Compues the size of the type in a method signature.
22541         (method_get_signature_size): New static function; calls
22542         type_get_signature_size() to compute the actual size of the
22543         method's signature.
22544         (method_encode_signature): Use method_get_signature_size() to get
22545         the signature's size rather than using `nparams * 10'.
22546
22547 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22548
22549         * file-io.h: define here WapiOverlapped on windows. I don't want the
22550         regular OVERLAPPED one.
22551
22552         * file-io.c:
22553         * threadpool.c: somehow, BindIoCompletionCallback is not found.
22554         Disabling AIO on windows.
22555
22556 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22557
22558         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
22559         bug #55385.
22560
22561 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22562
22563         * appdomain.c: upgraded corlib version.
22564
22565         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
22566         and BeginWrite. Allow opening files for asynchrnous operations.
22567
22568         * file-io.h: new struct that maps FileStreamAsyncResult.
22569         * icall.c: added new icalls.
22570         * process.[ch]: support setting child process environment variables
22571         and use the SHELL or COMSPEC when UseShellExecute is true.
22572
22573         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
22574         callback for async. IO is here and also BindHandle.
22575
22576         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
22577         from here.
22578
22579 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22580
22581         * reflection.c (create_custom_attr): Allow len == 0.
22582
22583         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
22584         computation on big-endian machines.
22585
22586 2004-03-13  Martin Baulig  <martin@ximian.com>
22587
22588         * class.h (MonoGenericInst): Added `int count_ifaces'.
22589
22590         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
22591         `ginst->count_ifaces' instead `klass->interface_count' since we
22592         may get called before the vtable is created.
22593
22594         * loader.c (mono_method_get_param_names): If we're a generic
22595         instance, return and don't initialize the class.
22596
22597         * reflection.c (mono_reflection_setup_generic_class): Don't call
22598         ensure_runtime_vtable().
22599         (mono_reflection_bind_generic_parameters): Set
22600         `ginst->count_ifaces'.
22601
22602 2004-03-11  Jackson Harper <jackson@ximian.com>
22603
22604         * icall.c:
22605         * unicode.c:
22606         * unicode.h: Remove unused System.Char icalls.
22607         
22608 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
22609
22610         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
22611         code when we P/Invoke the first library in Windows.Forms, instead
22612         of when we first open the assembly.
22613
22614         * assembly.c: Drop the lookup from here.
22615
22616 2004-03-10  Martin Baulig  <martin@ximian.com>
22617
22618         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
22619         class for properties, fields and events.  Finally fixes #54945.
22620
22621 2004-03-10  Martin Baulig  <martin@ximian.com>
22622
22623         * metadata.c (mono_metadata_class_equal): New static function;
22624         checks whether two generic instances or two generic parameters are
22625         equal.
22626         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
22627         compare classes.        
22628
22629 2004-03-10  Martin Baulig  <martin@ximian.com>
22630
22631         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
22632
22633         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
22634         argument and write it into the `reflection_info' field.
22635
22636         * icall.c
22637         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
22638         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
22639
22640 2004-03-09  Jackson Harper  <jackson@ximian.com>
22641
22642         * char-conversions.h: use 8 bits for numeric data its all we need
22643         * icall.c: numeric data is only 8 bits now.
22644
22645 2004-03-09  Martin Baulig  <martin@ximian.com>
22646
22647         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
22648
22649         * class.c (init_properties, init_events): Initialize the new
22650         `parent' field.
22651
22652         * reflection.c (typebuilder_setup_properties): Likewise.
22653         (typebuilder_setup_events): Likewise.
22654
22655         * reflection.h (MonoEventInfo): Replaced `parent with
22656         `declaring_type' and `reflected_type'.
22657
22658         * icall.c (ves_icall_get_property_info): Distinguish between
22659         declaring and reflected type.
22660         (ves_icall_get_event_info): Likewise.
22661
22662 2004-03-09  Martin Baulig  <martin@ximian.com>
22663
22664         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
22665         (ves_icall_Type_GetField): Correctly set field->klass.
22666
22667 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22668
22669         * loader.h: Fix warning.
22670
22671 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
22672
22673         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
22674         library routine if present.  Notice that it will still continue
22675         executing even if its missing, for those working on the Gtk#
22676         edition of Windows.Forms.
22677
22678         * assembly.c (do_mono_assembly_open): If loading the
22679         System.Windows.Forms call mono_loader_wini_init.
22680
22681 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22682
22683         * class.h: Added MonoRemoteClass struct.
22684         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
22685         function for MonoStrings.
22686         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
22687         Added internal call for getting the proxy type.
22688         * marshal.c: Get the type of transparent proxies from its remote_class.
22689         Added methods that generate the IL for type checks and casts:
22690         mono_marshal_get_isinst, mono_marshal_get_castclass, 
22691         mono_marshal_get_proxy_cancast.
22692         * marshal.h: Declaration of the previous new methods.
22693         * object.c: Added new moethods for creating and updating MonoRemoteClass
22694         instances: mono_remote_class, mono_upgrade_remote_class, 
22695         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
22696         * verify.c: FIx transparent_proxy_fields layout.
22697         * appdomain.c: Bump corlib version.
22698
22699 2004-03-04  Jackson Harper  <jackson@ximian.com>
22700
22701         * icall.c: Add icall to access char conversion tables.
22702         * char-conversions.h: Character conversion tables.
22703         * Makefile.am: Add char-conversions.h private header file.
22704         
22705 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
22706
22707         * appdomain.c (unload_thread_main): Increase unloading timeout to
22708         10 sec as a temporary workaround for Nant problems.
22709
22710 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
22711
22712         * gc.c: Add checks for GC_enable and GC_disable.
22713
22714         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
22715         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
22716         (bug #54988).
22717         
22718 2004-02-27  Martin Baulig  <martin@ximian.com>
22719
22720         * reflection.c (mono_reflection_bind_generic_parameters): Take a
22721         `MonoReflectionType *' instead of a `MonoType *'.
22722
22723 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22724
22725         * gc.c (run_finalize): Avoid finalizing the object representing the
22726         finalizer thread.
22727         (finalizer_thread): Fix warning.
22728
22729 2004-02-25  Martin Baulig  <martin@ximian.com>
22730
22731         * class.c (_mono_class_get_instantiation_name): Added `int offset'
22732         argument for nested types.
22733         (mono_class_create_generic): Added support for nested generictypes.
22734
22735         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
22736         `GList *nested'.
22737
22738         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
22739
22740         * reflection.c (method_encode_signature): Increase the minimum
22741         value of `size' from 10 to 11.
22742         (mono_reflection_bind_generic_parameters): Take `int type_argc'
22743         and `MonoType **types' arguments instead of the `MonoArray
22744         *types'; added `MonoType *nested_in'.  Recursively instantiate
22745         nested classes. 
22746
22747 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22748
22749         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
22750         stack_overflow_ex members which are used by exception handling.
22751
22752         * appdomain.c (mono_runtime_init): Initialize the new members.
22753
22754         * gc.c (mono_gc_enable): New helper function.
22755         * gc.c (mono_gc_disable): New helper function.
22756
22757 2004-02-23  Martin Baulig  <martin@ximian.com>
22758
22759         * icall.c: I must have been really stupid - make it actually work
22760         this time ;-)
22761
22762 2004-02-23  Martin Baulig  <martin@ximian.com>
22763
22764         * loader.c (method_from_memberref): Only inflate the method if
22765         it's in another klass.
22766
22767 2004-02-23  Martin Baulig  <martin@ximian.com>
22768
22769         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
22770         (mono_class_init): If we're a generic instance and an interface,
22771         compute `class->interface_id'; also create `class->interfaces'
22772         here and inflate them.
22773
22774         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
22775         `ginst->is_open'.
22776         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
22777
22778         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
22779
22780 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
22781
22782         * reflection.c (method_encode_code): Improved the error message
22783         generated by the exception.
22784
22785 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22786
22787         * icall.c: Martin did not do what he said in the ChangeLog for
22788         2004-02-18, but put back the changes for properties and events.
22789         Commenting those changes out again and adding comment to bug #54518.
22790         
22791         * process.c: removed warning.
22792
22793 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
22794
22795         * marshal.c (emit_struct_conv): Print an error message instead of
22796         asserting when a type does not have the StructLayout attribute.
22797
22798 2004-02-20  Martin Baulig  <martin@ximian.com>
22799
22800         * reflection.c (mono_type_get_object): Also use the cache for
22801         generic instances.
22802         (mono_reflection_bind_generic_parameters): Always compute
22803         `ginst->ifaces'.        
22804
22805 2004-02-20  Martin Baulig  <martin@ximian.com>
22806
22807         * class.h (MonoGenericMethod): Removed `klass'.
22808
22809         * class.c (mono_class_inflate_generic_method): Added `MonoClass
22810         *klass' argument.
22811
22812 2004-02-20  Martin Baulig  <martin@ximian.com>
22813
22814         * reflection.c (method_encode_methodspec): Actually use the
22815         uninflated signature for the memberref.
22816
22817 2004-02-20  Martin Baulig  <martin@ximian.com>
22818
22819         * class.h (MonoGenericMethod): Removed `declaring'.
22820
22821         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
22822         is NULL, compute it here.
22823
22824 2004-02-20  Martin Baulig  <martin@ximian.com>
22825
22826         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
22827
22828         * metadata.c (mono_metadata_generic_inst_hash): New method.
22829         (mono_metadata_generic_inst_equal): New method.
22830
22831         * reflection.c (mono_reflection_bind_generic_parameters): Use the
22832         `klass->image->generic_inst_cache' cache to avoid creating
22833         duplicate MonoGenericInst's.
22834
22835         * class.c (mono_class_inflate_generic_type): Use the cache.
22836
22837 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
22838
22839         * object.c: fixed gc descriptor calculation for embedded valuetypes.
22840
22841 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22842
22843         * icall.c: added Socket.WSAIoctl icall.
22844
22845         * socket-io.[ch]: implemented
22846         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
22847
22848 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
22849
22850         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
22851
22852 2004-02-18  Urs C Muff  <umuff@quark.com>
22853
22854         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
22855         this work on PPC and other big-endian architectures.
22856
22857         * debug-mono-symfile.h: Prepended the names of all the `guint32'
22858         fields with an underscore to make sure they're only accessed by
22859         the read32() macro.
22860
22861 2004-02-18  Martin Baulig  <martin@ximian.com>
22862
22863         * icall.c: Put the klass->refclass changes back for methods and
22864         fields, but not for properties and events.  We're currently not
22865         distinguishing between DeclaringType and ReflectedType for
22866         properties and events, that's what caused the regressions.
22867
22868 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22869
22870         * object.c:
22871         (mono_async_result_new): the handle can be NULL.
22872
22873         * threadpool.c: Use an event instead of a semaphore, don't initialize
22874         it until needed. This saves quite a few semaphores from being created
22875         when using the threadpool.
22876
22877 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
22878
22879         * object.c (mono_string_is_interned_lookup): Fix interning of long
22880         strings. Fixes #54473.
22881
22882         * domain.c (ldstr_equal): Optimize if the two strings are equal.
22883
22884         * icall.c: Revert the klass->refclass changes since they introduce
22885         regressions (bug #54518).
22886
22887 2004-02-18  Martin Baulig  <martin@ximian.com>
22888
22889         * class.c (mono_class_init): If we're a generic instance and don't
22890         come from a TypeBuilder, inflate our members here.
22891         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
22892         (mono_class_create_generic): New public method.
22893         (mono_class_initialize_generic): Removed.
22894         (get_instantiation_name): Renamed to
22895         _mono_class_get_instantiation_name() and made it public.
22896
22897 2004-02-18  Martin Baulig  <martin@ximian.com>
22898
22899         * class.c (mono_class_inflate_generic_type): Clear the new
22900         instance's `nginst->klass' when inflating a generic instance.
22901         (mono_class_is_subclass_of): Added (basic) support for generic
22902         instances.
22903
22904 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
22905
22906         * appdomain.h, domain.c: use a MonoCodeManager instead of a
22907         MonoMempool to hold compiled native code.
22908
22909 2004-02-17  Martin Baulig  <martin@ximian.com>
22910
22911         * class.h (MonoDynamicGenericInst): Added `count_properties' and
22912         `properties'.
22913
22914         * reflection.c (mono_reflection_generic_inst_initialize): Added
22915         `MonoArray *properties' argument.
22916
22917         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
22918
22919 2004-02-17  Martin Baulig  <martin@ximian.com>
22920
22921         * icall.c (ves_icall_Type_GetFields): Renamed to
22922         ves_icall_Type_GetFields_internal() and added a
22923         `MonoReflectionType *rtype' argument; pass it to
22924         mono_field_get_object() to set the field's "reflected" type.
22925         (ves_icall_Type_GetConstructors): Likewise.
22926         (ves_icall_Type_GetEvents): Likewise.
22927         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
22928         argument; pass it to mono_method_get_object() to set the method's
22929         "reflected" type.       
22930
22931 2004-02-17  Martin Baulig  <martin@ximian.com>
22932
22933         * class.h (MonoDynamicGenericInst): New type.
22934         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
22935
22936         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
22937         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
22938         (ves_icall_MonoGenericInst_GetFields): New interncall.
22939
22940         * class.c (mono_class_from_generic): Don't call
22941         mono_class_initialize_generic() if this is a dynamic instance;
22942         ie. it's being created from a TypeBuilder.
22943         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
22944         `class->byval_arg.type'.
22945
22946         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
22947         to `inflate_method' and made static.
22948         (mono_reflection_inflate_field): Removed.
22949         (mono_reflection_generic_inst_initialize): New public method.
22950
22951         * reflection.h (MonoReflectionGenericInst): Removed `methods',
22952         `ctors' and `fields'; added `initialized'.
22953
22954 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22955
22956         * debug-helpers.c (mono_method_full_name): Fix output for empty
22957         namespaces.
22958
22959 2004-02-12  Martin Baulig  <martin@ximian.com>
22960
22961         * class.h (MonoClassField): Added `MonoType *generic_type'.
22962
22963         * reflection.c (mono_image_get_fieldref_token): Added support for
22964         instantiated generic types.
22965         (field_encode_inflated_field): Removed.
22966         (mono_image_get_inflated_field_token): Removed.
22967         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
22968
22969         * reflection.h (MonoReflectionInflatedField): Removed.
22970
22971 2004-02-12  Martin Baulig  <martin@ximian.com>
22972
22973         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
22974         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
22975
22976         * reflection.c (mono_image_get_methodspec_token): Take a
22977         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
22978         (mono_image_create_token): Check whether we have a
22979         `method->signature->gen_method' and call
22980         mono_image_get_methodspec_token() if appropriate.
22981         (inflated_method_get_object): Removed.
22982         (mono_reflection_bind_generic_method_parameters): Return a
22983         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
22984         (mono_reflection_inflate_method_or_ctor): Likewise.
22985
22986         * reflection.h (MonoReflectionInflatedMethod): Removed.
22987
22988 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
22989
22990         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
22991         for custom valuetype marshalling.
22992
22993         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
22994
22995 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22996
22997         * icall.c: fixed WSAGetLastError_internal name.
22998
22999 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23000
23001         * threads.c (mono_thread_attach): Allow this to be called multiple
23002         times for a thread.
23003         
23004         * threads.c (build_wait_tids): Do not wait for ourselves.
23005
23006         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23007         appdomain list is empty.
23008
23009         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23010         memory returned by mono_string_builder_to_utf16, since it points into
23011         managed memory. Thanks to Bernie Solomon for noticing this.
23012
23013         * icall.c: Add AppDomainSetup icalls.
23014
23015         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23016
23017         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23018         types.
23019
23020         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23021         custom attributes to the method_aux struct. Also fix array indexes etc.
23022
23023         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23024         
23025 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23026
23027         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23028         (both static and runtime) and reduce startup time.
23029
23030 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23031
23032         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23033         AsAny marshalling conversion instead of crashing.
23034
23035         * marshal.c: Fix warnings.
23036
23037 2004-02-09  Martin Baulig  <martin@ximian.com>
23038
23039         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23040
23041         * reflection.h (MonoReflectionInflatedMethod): Removed the
23042         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23043
23044         * reflection.c (method_encode_methodspec): Removed the `method'
23045         argument; we get it from `gmethod->declaring'.
23046         (inflated_method_get_object): Removed the `declaring' argument.
23047
23048 2004-02-09  Martin Baulig  <martin@ximian.com>
23049
23050         * class.h (MonoGenericMethod): New type.
23051         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23052         `generic_method'.
23053
23054         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23055         a `MonoGenericMethod *gen_method' one.
23056
23057         * class.c (mono_class_inflate_generic_type): Take an additional
23058         `MonoGenericMethod * argument.  This is only non-NULL if we're
23059         inflating types for a generic method.   
23060         (mono_class_inflate_generic_signature): Renamed to
23061         inflate_generic_signature() and made static; take a
23062         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23063         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23064         instead of a `MonoGenericInst *' one.
23065         (mono_class_inflate_generic_method): Likewise.
23066
23067         * reflection.c (encode_generic_method_sig): Take a
23068         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23069         (method_encode_methodspec): Likewise.
23070         (inflated_method_get_object): Likewise. 
23071
23072         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23073         field with a `MonoGenericMethod *gmethod' one.  
23074
23075 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23076
23077         * class.h (mono_class_has_parent): add parens to expansion
23078         so you can ! this.
23079
23080 2004-02-08  Martin Baulig  <martin@ximian.com>
23081
23082         * image.h (MonoImage): Removed `generics_cache'.
23083
23084         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23085         instead of a `MonoType *' argument; removed the `inflate_methods'
23086         argument.  Don't inflate methods here.
23087
23088         * loader.c (find_method): If it's a generic instance, call
23089         mono_class_init() on the `sclass->generic_inst->generic_type'.
23090
23091         * metadata.c (mono_type_size): Make this work on uninitialized
23092         generic instances; call it on the `ginst->generic_type's class.
23093
23094         * reflection.c (mono_reflection_bind_generic_parameters): Call
23095         mono_class_from_generic() to create the `ginst->klass'.
23096
23097 2004-02-08  Martin Baulig  <martin@ximian.com>
23098
23099         * class.h (MonoClass): Changed type of `generic_inst' from
23100         `MonoType *' to `MonoGenericInst *'.
23101
23102 2004-02-08  Martin Baulig  <martin@ximian.com>
23103
23104         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23105         mono_type_get_object(), this is now creating a `MonoGenericInst'
23106         for MONO_TYPE_GENERICINST.
23107         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23108         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23109
23110         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23111         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23112         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23113         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23114         and reflected type.
23115
23116         * reflection.h (MonoReflectionInflatedMethod): Removed
23117         `declaring_type' and `reflected_type'.
23118
23119 2004-02-08  Martin Baulig  <martin@ximian.com>
23120
23121         * class.h (MonoGenericInst): Added `MonoType *parent' and
23122         `MonoType **ifaces'.
23123
23124         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23125         `parent' and `interfaces'.
23126
23127         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23128         `MonoType *' argument and return a `MonoType *'.
23129
23130         * icall.c
23131         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23132         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23133
23134 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23135
23136         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23137         valuetype marshalling.
23138
23139 2004-02-06  Martin Baulig  <martin@ximian.com>
23140
23141         * class.c
23142         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23143         (my_mono_class_from_generic_parameter): Likewise.
23144
23145 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23146
23147         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23148         contents of the symbol files lazily.
23149
23150         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23151
23152         * threads.h threads.c icall.c: New icalls for getting and setting the
23153         threads name.
23154
23155 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23156
23157         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23158         Raise an exception when the domain is not found.
23159
23160 2004-02-03  Martin Baulig  <martin@ximian.com>
23161
23162         * reflection.c (mono_image_get_methodspec_token): Use the
23163         uninflated signature; fixes gen-33.
23164
23165 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23166
23167         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23168         the finalizer code can use thread functionality.
23169
23170         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23171         the finalizer thread.
23172
23173         * threads.c: Make some functions more robust.
23174
23175         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23176
23177         * metadata.h: Add new marshalling conventions.
23178
23179         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23180         stringbuilder marshalling. Fixes #53700.
23181
23182         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23183
23184         * reflection.c (mono_image_get_type_info): Save declarative security
23185         info.
23186
23187         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23188         unmanaged fields as well.
23189
23190         * appdomain.c: Bump corlib version.
23191
23192 2004-02-01  Martin Baulig  <martin@ximian.com>
23193
23194         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23195         method type arguments.  
23196
23197 2004-01-30  Duncan Mak  <duncan@ximian.com>
23198
23199         * marshal.h: Add prototype for
23200         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23201         and
23202         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23203         fix the build.
23204
23205 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23206
23207         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23208         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23209
23210 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23211
23212         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23213         custom marshalling of valuetypes.
23214
23215         * marshal.c: Fix some warnings.
23216
23217 2004-01-29  Martin Baulig  <martin@ximian.com>
23218
23219         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23220         for generic method parameters.
23221
23222         * reflection.c (method_encode_methodspec): Write the uninflated
23223         signature into the methodspec table.
23224         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23225         is always the uninflated method.
23226         (reflection_methodbuilder_to_mono_method): Copy the generic
23227         parameters from the MethodBuilder into `header->gen_params'.
23228
23229 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23230
23231         * class.c (mono_class_from_generic_parameter): Fix warning.
23232
23233 2004-01-27  Martin Baulig  <martin@ximian.com>
23234
23235         * class.c (mono_class_from_generic_parameter): Don't create
23236         `klass->methods' here.  
23237
23238 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23239
23240         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23241         extension since it does not work with libraries named lib<FOO>.dll.so.
23242
23243 2004-01-25  Martin Baulig  <martin@ximian.com>
23244
23245         * class.c (mono_class_inflate_generic_type): Added support for
23246         MONO_TYPE_GENERICINST.
23247
23248         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23249         inflate methods on open constructed types.      
23250
23251 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23252
23253         * object.c: fire ProcessExit event in the root AppDomain after running
23254         Main. Fixes bug #53299.
23255
23256 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23257
23258         * socket-io.c: include the new socket-wrappers.h header.
23259         Use the wrappers instead of the unix socket functions to make the code
23260         more clear.
23261
23262 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23263
23264         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23265
23266         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23267         Fixes #22532.
23268
23269 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23270
23271         * reflection.c (mono_image_create_pefile): Handle the case when the
23272         entry point is not a MethodBuilder.
23273
23274         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23275         field to ReflectionMethod since it is not allways a builder.
23276
23277         * reflection.c (type_get_fully_qualified_name): New helper function to
23278         return the fully qualified name of a type.
23279
23280         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23281         type name for custom marshallers.
23282
23283         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23284
23285         * class.c (mono_class_setup_vtable): If a parent class already 
23286         implements an interface, use the implementing methods from that class.
23287         Fixes #53148.
23288
23289 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23290
23291         * threadpool.c: just return instead of ExitThread to allow for thread
23292         clean up earlier.
23293
23294 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23295
23296         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23297         when closing resource modules.
23298
23299         * reflection.c (mono_image_create_pefile): Handle the case when the
23300         entry point is not a MethodBuilder.
23301
23302         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23303         field to ReflectionMethod since it is not allways a builder.
23304
23305 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23306
23307         * marshal.c (mono_marshal_get_managed_wrapper): 
23308         mono_marshal_alloc takes native int so CONV_I
23309         the arg for 64bits.
23310
23311 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23312
23313         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23314         tokens in the cattr table. Fixes #53108.
23315
23316 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23317
23318         * loader.c: don't trim ".dll" before looking up in the config file.
23319         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
23320
23321 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23322
23323         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
23324         Return the module which contains the resource as well.
23325         (ves_icall_System_Reflection_Module_Close): New icall.
23326
23327         * appdomain.c: Bump corlib version number.
23328
23329         * image.c (mono_image_addref): New public function.
23330
23331         * assembly.c: Call mono_image_addref.
23332
23333         * reflection.c (mono_module_get_object): Increase reference count of 
23334         the image.
23335
23336         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23337         Fixes #22532.
23338
23339         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
23340         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
23341         proper exceptions on DllImport problems.
23342
23343 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
23344
23345         * class.c, metadata.c: eliminate CSIZE macro.
23346
23347 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
23348
23349         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
23350         * object.h: Added async_callback field in MonoAsyncResult.
23351         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
23352         * verify.c: Added async_callback in MonoAsyncResult layout.
23353
23354 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
23355
23356         * reflection.c (mono_reflection_get_custom_attrs): Add support
23357         for Modules.
23358
23359 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23360
23361         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
23362         marshalling.
23363         (mono_marshal_method_from_wrapper): Add null pointer check.
23364
23365 2004-01-16  Martin Baulig  <martin@ximian.com>
23366
23367         * debug-mono-symfile.h: Set version number to 36 and reflect
23368         latest symbol writer changes.
23369
23370 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23371
23372         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
23373         multi-dimensional arrays.
23374         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
23375         (mono_class_from_mono_type): Use bounded_array_class_get.
23376         
23377         * class.c (mono_bounded_array_class_get): New function which takes
23378         a 'bounded' bool argument to distinguish vectors from one dimensional
23379         arrays.
23380
23381         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
23382         bounded_array_class_get if the array has bounds.
23383
23384         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23385         Search modules loaded using AssemblyBuilder:AddModule as well.
23386
23387 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23388
23389         * appdomain.c: increased corlib version.
23390         * filewatcher.c: removed g_print.
23391         * icall.c:
23392         (get_property_info): only allocate what is actually requested.
23393         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
23394
23395 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23396
23397         * Makefile.am: added filewatcher.[ch]
23398         * filewatcher.[ch]: FileSystemWatcher runtime support.
23399         * icall.c: added new FSW icalls.
23400
23401 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
23402
23403         * string-icalls.c: fix stringbuilder regression as suggested by
23404         Iain McCoy <iain@mccoy.id.au>.
23405
23406 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23407
23408         * process.c (process_read_stringtable_block): Recognize '007f' as
23409         a language neutral stringtable block.
23410
23411 2004-01-12  Patrik Torstensson
23412
23413         * object.h (MonoStringBuilder) : Changed layout to support our
23414         new stringbuilder class.
23415         * marshal.c: Change marshalling to support the new layout of 
23416         string builder.
23417         * appdomain.c: increased version number because new layout of
23418         string builder.
23419
23420 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
23421
23422         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
23423         assembly name as an string instead of an AssemblyName, since it is
23424         easier to extract info from it.
23425
23426         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
23427         the culture subdirectories too. Fixes #52231.
23428
23429 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23430
23431         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
23432         It takes 2 new parameters with an optional name for the method to look
23433         for and case ignoring info.
23434
23435         * threadpool.c: removed unused variable.
23436
23437 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23438
23439         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
23440         It takes 2 new parameters with an optional name for the property to look
23441         for and case ignoring info.
23442         Fixes bug #52753.
23443
23444 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23445
23446         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
23447         Fix #52451.
23448
23449 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23450
23451         * appdomain.c:
23452         * assembly.c: escape the uri before passing it to g_filename_from_uri.
23453         Fixes bug #52630.
23454
23455 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
23456
23457         * reflection.c: Add support for more than one unmanaged resource.
23458
23459         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
23460         in field->def_value, as done in all other cases.
23461
23462         * reflection.c (mono_reflection_get_custom_attrs): Add support for
23463         TypeBuilders.
23464
23465         * reflection.c (mono_reflection_create_runtime_class): Remove 
23466         errorneous assignment to klass->element_class, since it is already
23467         done in mono_reflection_setup_internal_class.
23468
23469 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23470
23471         * gc.c: added missing LeaveCriticalSection.
23472         * icall.c: indented a couple of lines.
23473         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
23474         if we call EndInvoke inside a callback. Fixes bug #52601.
23475
23476 2004-01-07  Martin Baulig  <martin@ximian.com>
23477
23478         * mono-debug-debugger.h
23479         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
23480
23481 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
23482
23483         * appdomain.c: Use messages in NotImplementedException.
23484
23485         * exception.c (mono_get_exception_not_implemented): Now this takes
23486         a message argument.
23487
23488         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
23489         exception instead of g_asserting an aborting when something is not
23490         implemented.
23491
23492         Add some inline docs.
23493
23494 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
23495
23496         * reflection.h: Update after changes to object layout.
23497
23498         * reflection.c: Implement saving of unmanaged aka win32 resources.
23499
23500         * appdomain.c: Bump version number.
23501
23502         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
23503         Handle missing domains gracefully.
23504
23505 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
23506
23507         * file-io.c : On Windows, there are much more invalid_path_chars.
23508
23509 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23510
23511         * class.h, object.c: prepare for GetType () speedup.
23512
23513 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
23514
23515         * profiler.c: workaround for --profile null reference exception on
23516           cygwin. Patch by Patrik Torstensson.
23517
23518 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
23519
23520         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
23521         make work for unaligned access.
23522
23523 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
23524
23525         * class.c: small cleanup (class->fields [i] -> field).
23526         * image.c: check address of metadata is valid.
23527
23528 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
23529
23530         * assembly.h assembly.c (mono_assembly_loaded): New public function to
23531         search the list of loaded assemblies.
23532
23533         * reflection.c (mono_reflection_type_from_name): Use 
23534         mono_assembly_loaded instead of mono_image_loaded.
23535
23536         * reflection.c: Fix warnings.
23537
23538 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
23539
23540         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
23541         is dynamic. This is needed since an assembly can contain both dynamic and
23542         non-dynamic images.
23543
23544         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
23545         assembly->dynamic.
23546
23547         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
23548
23549         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
23550         to store modules loaded using AddModule.
23551
23552         * reflection.c (mono_image_fill_file_table): Generalize this so it works
23553         on Modules.
23554
23555         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
23556
23557         * reflection.c (mono_image_fill_export_table_from_module): New function to
23558         fill out the EXPORTEDTYPES table from a module.
23559
23560         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
23561         into a separate function. Also handle loaded non-dynamic modules.
23562
23563         * reflection.c (mono_image_basic_init): Fix memory allocation.
23564
23565         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23566
23567         * assembly.c (mono_assembly_load_references): Make this public.
23568
23569 2003-12-19  Martin Baulig  <martin@ximian.com>
23570
23571         * class.c (mono_class_initialize_generic): Made this static, take
23572         a `MonoGenericInst *' instead of a `MonoClass *'.
23573         (mono_class_from_generic): Call mono_class_initialize_generic()
23574         unless we're already initialized or being called from
23575         do_mono_metadata_parse_generic_inst().
23576
23577         * class.h (MonoGenericInst): Added `initialized' and
23578         `init_pending' flags.
23579
23580         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
23581         `mono_class_init (gklass)' or mono_class_initialize_generic()
23582         here; set `generic_inst->init_pending' while parsing the
23583         `type_argv'.
23584
23585 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
23586
23587         * locales.c: include string.h for memxxx prototypes
23588
23589 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23590
23591         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
23592         constructor when accessing literal fields.
23593
23594 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
23595
23596         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23597
23598         * reflection.c (assembly_add_resource_manifest): New function to fill
23599         the MANIFESTRESOURCE table.
23600
23601         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
23602
23603         * reflection.h: Update to changes in class layout.
23604
23605         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
23606         Reenable call to mono_runtime_is_shutting_down ().
23607
23608         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
23609         determine if the runtime is shutting down.
23610
23611 2003-12-16  Jackson Harper <jackson@ximian.com>
23612
23613         * icall.c: comment out call to mono_runtime_is_shutting_down to
23614         fix build.
23615         
23616 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
23617
23618         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
23619         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
23620
23621 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
23622
23623         * reflection.c: move definition of swap_with_size
23624         to before its first call
23625
23626 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
23627
23628         * appdomain.c (mono_runtime_is_shutting_down): New public function.
23629
23630         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
23631         icall.
23632
23633         * object.c: Fix warnings.
23634
23635         * icall.c (ves_icall_Type_Get...): Only consider inherited static
23636         members if FlattenHierarchy is set.
23637
23638         * reflection.c (mono_image_add_decl_security): New function to emit
23639         declarative security.
23640
23641         * reflection.h reflection.c: Add support for declarative security.
23642
23643         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23644         
23645 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23646
23647         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23648         
23649         * appdomain.c verify.c: Moved corlib version checking into its own
23650         function in appdomain.c since it needs to create vtables etc.
23651
23652 2003-12-13  Patrik Torstensson <p@rxc.se>
23653
23654         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
23655         instead of unwrapped server.
23656
23657 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
23658
23659         * verify.c (check_corlib): Fix field index.
23660
23661 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
23662
23663         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
23664         GetGacPath icall.
23665
23666 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
23667
23668         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
23669         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
23670         cope with sizeof(size_t) != sizeof(guint32).
23671
23672 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23673
23674         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
23675         in case of failure.
23676
23677 2003-12-10  Mark Crichton <crichton@gimp.org>
23678
23679         * icall.c: removed the GetNonZeroBytes.  We now handle this case
23680         in managed code.
23681
23682         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
23683
23684 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
23685
23686         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
23687         marked as deleted.
23688
23689 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23690
23691         * verify.c (check_corlib): Handle the case when the version field is 
23692         initialized by a static constructor.
23693
23694 2003-12-08  Patrik Torstensson  <p@rxc.se>
23695
23696     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
23697
23698 2003-12-08  Martin Baulig  <martin@ximian.com>
23699
23700         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
23701         a MonoReflectionGenericParameter, also take the parameter index
23702         and name as arguments.
23703         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
23704         (ves_icall_MonoGenericParam_initialize): New interncall.
23705         (ves_icall_Type_make_byref_type): New interncall.
23706
23707         * reflection.h (MonoReflectionGenericParam): Derive from
23708         MonoReflectionType, not just from MonoObject.  Added `refobj' and
23709         `index' fields.
23710
23711         * reflection.c (mono_reflection_define_generic_parameter): Create
23712         and return a new MonoReflectionGenericParam; don't initialize the
23713         constraints here.
23714         (mono_reflection_initialize_generic_parameter): New public method;
23715         initializes the constraints and creates the `param->pklass'.
23716
23717 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23718
23719         * reflection.h reflection.c: Use the new fields 'num_types', 
23720         'num_fields' and 'num_methods' to track the number of types etc.
23721
23722         * verify.c (check_corlib): Check corlib version number.
23723
23724 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
23725
23726         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
23727         function works on all methods.
23728
23729 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23730
23731         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
23732         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
23733         the custom_type_info flag of the transparent proxy.
23734         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
23735         objects that supports IRemotingTypeInfo.
23736         * object.h: Added custom_type_info field in transparent proxy.
23737
23738 2003-12-06  Martin Baulig  <martin@ximian.com>
23739
23740         * class.c (mono_class_create_from_generic): Removed.
23741         (mono_class_from_generic): Check `ginst->klass' before doing
23742         anything else.  This is important to fully support "recursive"
23743         generic types.
23744
23745         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
23746         empty `generic_inst->klass' before doing anything else.
23747
23748 2003-12-06  Dick Porter  <dick@ximian.com>
23749
23750         * verify.c: 
23751         * object.h:
23752         * icall.c:
23753         * locales.c: Use C structs to access class fields.  Don't do a
23754         conversion between MonoString and UChar because both are
23755         platform-endian UTF-16.  Compare now takes startindex and count
23756         parameters.  Add a char overload for IndexOf.  Speed up the
23757         invariant string IndexOf.
23758
23759 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
23760
23761         * Makefile.am (monosn_LDADD): Fix parallel build.
23762
23763 2003-12-04  Martin Baulig  <martin@ximian.com>
23764
23765         * icall.c
23766         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
23767         (ves_icall_Type_make_array_type): New interncall.       
23768
23769 2003-12-04  Martin Baulig  <martin@ximian.com>
23770
23771         * locales.c: also change it in the !HAVE_ICU case.
23772
23773 2003-12-04  Dick Porter  <dick@ximian.com>
23774
23775         * icall.c:
23776         * locales.c: construct_compareinfo is now in CompareInfo, not
23777         CultureInfo.
23778
23779 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23780
23781         * image.c (mono_image_load_file_for_image): Cache loaded images in the
23782         image->files array.
23783
23784         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
23785         table as well.
23786
23787         * assembly.c (mono_assembly_load_references): Only load references
23788         once.
23789
23790         * class.c (mono_class_from_name): Avoid linear search of the 
23791         EXPORTEDTYPE table.
23792
23793         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
23794
23795 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23796
23797         * image.h (MonoImage): Add 'field_cache' field.
23798
23799         * loader.c (mono_field_from_token): Cache field lookups.
23800         
23801         * reflection.c (mono_module_get_object): Fix name property.
23802
23803         * icall.c (ves_icall_get_enum_info): Update after changes to 
23804         mono_metadata_get_constant_index ().
23805
23806         * icall.c: Get rid of get_type_info icall, use a separate icall for
23807         each type property to avoid needless memory allocations. Fixes #51514.
23808
23809         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
23810         to avoid needless binary searches.
23811
23812         * class.c (class_compute_field_layout): Move the initialization of
23813         field->def_value to mono_class_vtable ().
23814
23815         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
23816         non-corlib types.
23817
23818         * object.c (mono_object_allocate): Make it inline.
23819
23820         * object.c (mono_object_allocate_spec): Make it inline.
23821         
23822 2003-12-02  Dick Porter  <dick@ximian.com>
23823
23824         * locales.c (create_NumberFormat): NumberFormatInfo construction.
23825         Patch by Mohammad DAMT (mdamt@cdl2000.com).
23826
23827 2003-12-01  Dick Porter  <dick@ximian.com>
23828
23829         * threads.c: Fix signature and call in CreateMutex and
23830         CreateEvent.
23831
23832 2003-12-01  Dick Porter  <dick@ximian.com>
23833
23834         * icall.c: 
23835         * locales.c: Implement string compares and searching
23836
23837         * object.h: Add extra Thread field
23838
23839 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
23840
23841         * reflection.c (fixup_method): Add support for MonoCMethod.
23842
23843 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
23844
23845         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
23846
23847         * reflection.c (assembly_name_to_aname): Allow extra characters in
23848         assembly names. Fixes #51468.
23849
23850 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23851
23852         * exception.c (mono_exception_from_name_domain): New helper function.
23853
23854         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
23855         exception object in the correct domain.
23856
23857         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
23858         formatting + make a copy a the input data.
23859
23860         * loader.c (mono_get_method_from_token): Methods which contain
23861         native code do not have entries in the ImplMap.
23862
23863         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
23864         Thanks to Gonzalo for spotting this.
23865         
23866         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
23867         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
23868
23869         * assembly.h (mono_assembly_load_from): Split the second part of 
23870         assembly loading into a new public function.
23871
23872         * exception.h (mono_get_exception_bad_image_format): New function.
23873
23874 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
23875
23876         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23877         Enumerate all modules inside a dynamic assembly. Fixes #51293.
23878         
23879         * icall.c: Add new icall for creating dynamic methods.
23880
23881         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
23882
23883         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
23884
23885         * reflection.c (mono_reflection_create_dynamic_method): New icall to
23886         create a dynamic method.
23887
23888         * reflection.c (resolve_object): New helper function.
23889
23890         * reflection.c: Generalize ReflectionMethodBuilder and the functions
23891         which manipulate it so they can also work on dynamic methods.
23892
23893         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
23894         creating the MonoReflectionMethodAux structure if it is not needed.
23895         
23896         * reflection.h verify.c: Update after changes to object layout.
23897
23898         * reflection.c (method_builder_encode_signature): Fix compilation on
23899         gcc 2.95.x.
23900
23901 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
23902
23903         * appdomain.h: Added support for context static fields. Added static_data
23904           field to MonoAppContext and renamed thread_static_fields to a more
23905           generic special_static_fields in MonoAppDomain, since it can now contain
23906           context static fields.
23907         * domain.c: Updated hashtable name.
23908         * object.c: Replaced field_is_thread_static() for a more generic
23909           field_is_special_static() which also checks for context static attribute.
23910           In mono_class_vtable(), added support for static context fields.
23911         * threads.c: Changed methods that manage thread static fields to more
23912           generic methods so they can be reused both for thread and context static
23913           data.
23914         * threads.h: Declared some new methods.
23915
23916 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
23917
23918         * reflection.h: Update after changes to the managed types.
23919
23920         * reflection.c (encode_custom_modifiers): New helper function.
23921
23922         * reflection.c (method_encode_signature): Emit custom modifiers.
23923
23924         * reflection.c (field_encode_signature): Emit custom modifiers.
23925
23926 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23927
23928         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
23929
23930         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
23931         implementation.
23932
23933         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
23934         icall.
23935
23936         * object.c (mono_field_get_value_object): New function.
23937
23938         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
23939         specific.
23940
23941 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23942
23943         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
23944         return a preallocated out-of-memory exception instance.
23945
23946         * object.c (out_of_memory): Use the new function.
23947
23948         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
23949         flag is before the custom modifiers. Fixes #49802.
23950
23951 2003-11-16  Martin Baulig  <martin@ximian.com>
23952
23953         * class.c (mono_class_is_open_constructed_type): Implemented the
23954         MONO_TYPE_GENERICINST case.
23955
23956 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23957
23958         * assembly.c (mono_assembly_fill_assembly_name): New function to
23959         fill out the MonoAssemblyName structure.
23960         (mono_assembly_open): Use the new function.
23961
23962         * icall.c (fill_reflection_assembly_name): New helper function.
23963
23964         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
23965         new function.
23966
23967         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
23968
23969 2003-11-15  Martin Baulig  <martin@ximian.com>
23970
23971         * class.c (mono_class_is_open_constructed_type): New public
23972         function; checks whether a type is an open constructed type,
23973         ie. whether it still contains type parameters.
23974         (mono_class_inflate_generic_type): If we're a type parameter and
23975         the inflated type is also a MONO_TYPE_(M)VAR, return the original
23976         type.
23977
23978         * class.h (MonoGenericInst): Added `guint32 is_open'.
23979
23980         * loader.c (method_from_methodspec): Check whether we're an open
23981         or closed constructed type and set `ginst->is_open'.
23982
23983         * reflection.c (mono_reflection_bind_generic_parameters): Check
23984         whether we're an open or closed constructed type and set
23985         `ginst->is_open'.
23986         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
23987         from open constructed types.
23988
23989 2003-11-15  Martin Baulig  <martin@ximian.com>
23990
23991         * reflection.c (mono_reflection_bind_generic_parameters): If we're
23992         a generic instance (instead of a generic type declaration) with
23993         unbound generic parameters, bind them to our actual types.
23994
23995 2003-11-14  Martin Baulig  <martin@ximian.com>
23996
23997         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
23998
23999         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24000         an interface type, populate `res->interfaces' with instantiated
24001         versions of all the interfaces we inherit.
24002
24003 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24004
24005         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24006         when MONO_PATH is set but doesn't contain the install dir.
24007
24008 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24009
24010         * icall.c:
24011         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24012         it's also implemented in base classes. Fixes bug #50927.
24013
24014 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24015
24016         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24017         if this method is called from a finalizer. Fixes #50913.
24018
24019 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24020
24021         * threads.c: Implement VolatileRead/VolatileWrite
24022
24023         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24024
24025 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24026
24027         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24028         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24029         2.95.3.
24030
24031         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24032         from Peter Ross (pro@missioncriticalit.com).
24033         
24034 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24035
24036         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24037
24038 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24039
24040         * assembly.c (mono_assembly_load_references): Disable check because it
24041         triggers on older corlibs which lots of people have.
24042
24043 2003-11-12  Jackson Harper  <jackson@ximian.com>
24044
24045         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24046         load corlib.dll if mscorlib.dll is not found.
24047         * assembly.h: Remove corlib name define.
24048         * class.c:
24049         * domain.c:
24050         * image.c: Change corlib name to mscorlib.
24051         
24052 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24053
24054         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24055
24056 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24057
24058         * appdomain.h: Added loader_optimization here to sync with the C#
24059         code, and add disallow_binding_redirects field.
24060
24061 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24062
24063         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24064
24065         * reflection.c (mono_image_build_metadata): Fix crash on modules
24066         with no types.
24067
24068         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24069
24070         * icall.c (ves_icall_get_method_info): Return callingConvention as
24071         well.
24072
24073         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24074         namespaces from the EXPORTEDTYPE table as well.
24075
24076         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24077         from all modules inside the assembly.
24078         
24079 2003-11-11  Martin Baulig  <martin@ximian.com>
24080
24081         * reflection.c (mono_reflection_bind_generic_parameters): Make
24082         this work for interfaces.
24083
24084 2003-11-11  Martin Baulig  <martin@ximian.com>
24085
24086         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24087
24088 2003-11-11  Martin Baulig  <martin@ximian.com>
24089
24090         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24091         "MonoInflatedMethod" and "MonoInflatedCtor".
24092
24093 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24094
24095         * reflection.c (resolution_scope_from_image): Use the assembly table
24096         from the manifest module, since other modules don't have it.
24097
24098         * debug-helpers.c (mono_type_full_name): New helper function.
24099
24100         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24101
24102         * image.c (mono_image_load_file_for_image): New public function which
24103         is a replacement for the load_file_for_image in class.c.
24104
24105         * assembly.c (mono_assembly_load_module): A wrapper for the function
24106         above which does assembly association and reference loading too.
24107
24108         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24109
24110 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24111
24112         * appdomain.c: not all of the attributes for the full assembly name
24113         are required and the order doesn't matter. Fixes bug #50787.
24114
24115 2003-11-10  Dick Porter  <dick@ximian.com>
24116
24117         * locales.c: Use platform-endian UTF16
24118
24119 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24120
24121         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24122         
24123 2003-11-10  Martin Baulig  <martin@ximian.com>
24124
24125         * metadata.c
24126         (mono_metadata_load_generic_params): Make this actually work.
24127
24128         * reflection.c (mono_reflection_bind_generic_parameters): If our
24129         parent is a generic instance, pass all the `types' to it, no
24130         matter whether it has the same number of type parameters or not.
24131
24132 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24133
24134         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24135
24136         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24137         assignment code to this function so it gets called recursively for all
24138         modules.
24139
24140         * image.c (load_modules): Remove the assembly assignment since it is
24141         now done by mono_assembly_load_references.
24142         
24143         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24144         Add 'module' argument.
24145         (mono_module_get_types): New helper function.
24146         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24147
24148 2003-11-08  Martin Baulig  <martin@ximian.com>
24149
24150         * class.c (mono_class_inflate_generic_method): Interface method
24151         don't have a header.
24152
24153         * reflection.c (mono_image_get_methodspec_token): Take an
24154         additional `MonoGenericInst *' argument instead of reading it from
24155         the header; this is necessary to support interfaces.
24156         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24157         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24158         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24159         argument.
24160
24161         * reflection.h (MonoReflectionInflatedMethod): Added
24162         `MonoGenericInst *ginst'.
24163
24164 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24165
24166         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24167
24168 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24169
24170         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24171
24172 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24173
24174         * reflection.c 
24175         (reflection_methodbuilder_from_method_builder):
24176         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24177         initialize a ReflectionMethodBuilder structure.
24178         (mono_image_get_methodbuilder_token):
24179         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24180         tokens which point to types in another module inside the same assembly.
24181
24182         * reflection.c: Use the new helper functions.
24183         
24184         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24185
24186         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24187         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24188
24189         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24190         neccesary.
24191
24192         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24193         current module. Emit the manifest only for the main module.
24194
24195         * reflection.c (mono_image_create_token): Add assertion when a 
24196         memberref needs to be created.
24197
24198         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24199
24200         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24201         larger buffer for the custom attribute blob. Fixes #50637.
24202         
24203 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24204
24205         * threadpool.c: notify listener on async processing handles after
24206         invoking the async callback. Thanks to Zoltan.
24207
24208 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24209
24210         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24211         avoid code duplication.
24212
24213         * reflection.h (MonoDynamicImage): New type which is currently unused,
24214         but will be used through the ref.emit code in place of 
24215         MonoDynamicAssembly.
24216
24217         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24218         object layout.
24219
24220         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24221         a MonoDynamicImage instead of just a MonoImage.
24222         
24223         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24224         icalls to ModuleBuilder but keep their semantics, so they will work
24225         with moduleb->assemblyb. This will change later.
24226         
24227 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24228
24229         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24230         object layout.
24231
24232         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24233         main module, since it is now done by the managed code.
24234
24235 2003-11-03  Martin Baulig  <martin@ximian.com>
24236
24237         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24238         `ginst->klass' here.
24239         (method_encode_methodspec): Don't use the `ginst->generic_method's
24240         klass if it's a generic instance, use `ginst->klass' in this case.
24241
24242 2003-11-03  Martin Baulig  <martin@ximian.com>
24243
24244         * reflection.c (mono_image_get_generic_method_param_info):
24245         Removed, use mono_image_get_generic_param_info() instead.
24246         (mono_image_get_type_info): Write the GenericParam table before
24247         the Method table.  This is neccessary because in the GenericParam
24248         table, type parameters of the class (ie. '!0' etc.) must come
24249         before the ones from its generic methods (ie. '!!0' etc).
24250
24251 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24252
24253         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24254
24255 2003-11-02  Martin Baulig  <martin@ximian.com>
24256
24257         * reflection.c (create_generic_typespec): Take a
24258         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24259         the generic parameters from it.
24260
24261 2003-11-02  Martin Baulig  <martin@ximian.com>
24262
24263         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24264         instead of a `MonoClassField *' since we just need the type.
24265         (create_generic_typespec): New static function.  Creates a
24266         TypeSpec token for a generic type declaration.
24267         (mono_image_get_generic_field_token): New static function.
24268         (mono_image_create_token): If we're a FieldBuilder in a generic
24269         type declaration, call mono_image_get_generic_field_token() to get
24270         the token.
24271
24272 2003-11-02  Martin Baulig  <martin@ximian.com>
24273
24274         * reflection.h
24275         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24276         `MonoReflectionGenericInst *declaring_type' and
24277         `MonoReflectionGenericInst *reflected_type' fields.
24278
24279         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24280         `MonoReflectionGenericInst *declaring_type' and a
24281         `MonoReflectionGenericInst *reflected_type' argument instead of a
24282         single `MonoReflectionGenericInst *type' one.  Set
24283         `res->declaring_type' and `res->reflected_type' from them.
24284         (mono_reflection_inflate_field): Likewise.      
24285
24286 2003-11-02  Martin Baulig  <martin@ximian.com>
24287
24288         * class.c (mono_class_setup_vtable): Don't store generic methods
24289         in the vtable.  
24290
24291 2003-11-02  Martin Baulig  <martin@ximian.com>
24292
24293         * reflection.h (MonoReflectionGenericInst): Added
24294         `MonoReflectionType *declaring_type'.
24295
24296         * reflection.c (mono_reflection_bind_generic_parameters): Use
24297         `if (tb->parent)' instead of `klass->parent'.
24298
24299 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24300
24301         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24302         with an empty ASSEMBLY table.
24303
24304         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24305         variable in the inner and outer loops.
24306
24307 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24308
24309         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24310         argument.
24311
24312         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24313         
24314         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24315         icalls. Instead, do everything in managed code. This is needed since
24316         it is hard to restore the original domain etc. in unmanaged code in the
24317         presence of undeniable exceptions.
24318
24319         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
24320         New icalls to push and pop appdomain refs.
24321
24322 2003-10-31  Martin Baulig  <martin@ximian.com>
24323
24324         * class.c (inflate_generic_type): Renamed to
24325         mono_class_inflate_generic_type() and made it public.
24326
24327         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
24328         New interncall.
24329
24330         * loader.c (mono_field_from_memberref): Also set the retklass for
24331         typespecs.
24332
24333         * fielder.c (mono_image_get_inflated_field_token): New static
24334         method; creates a metadata token for an inflated field.
24335         (mono_image_create_token, fixup_method): Added support for
24336         "MonoInflatedField".
24337         (fieldbuilder_to_mono_class_field): New static function.
24338         (mono_reflection_inflate_field): New public function.
24339
24340         * reflection.h
24341         (MonoReflectionGenericInst): Added `MonoArray *fields'.
24342         (MonoReflectionInflatedField): New typedef.     
24343
24344 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
24345
24346         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
24347         for Solaris and other platforms without s6_addr16
24348
24349 2003-10-30  Martin Baulig  <martin@ximian.com>
24350
24351         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
24352         argument instead of two.
24353         (mono_class_inflate_generic_signature): Likewise.
24354         (inflate_generic_header): Likewise.
24355         (mono_class_inflate_generic_method): Likewise.  In addition, if
24356         `ginst->klass' is set, it becomes the new `method->klass'.
24357
24358         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
24359         field.
24360
24361         * reflection.c (encode_generic_method_sig): Write a 0xa as the
24362         first byte. [FIXME]
24363         (method_encode_methodspec): If we have generic parameters, create
24364         a MethodSpec instead of a MethodRef.
24365         (fixup_method): Added support for "MonoInflatedMethod" and
24366         "MonoInflatedCtor".
24367         (mono_image_create_token): Added support for "MonoInflatedMethod"
24368         and "MonoInflatedCtor".
24369         (inflated_method_get_object): New static function; returns a
24370         managed "System.Reflection.MonoInflatedMethod" object.
24371         (mono_reflection_bind_generic_method_parameters): Return a
24372         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
24373         (mono_reflection_inflate_method_or_ctor): Likewise.
24374         (mono_image_get_generic_method_param_info): Initialize unused
24375         fields to zero.
24376         (mono_image_get_generic_param_info): Likewise.
24377
24378         * reflection.h (MonoReflectionInflatedMethod): New public
24379         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
24380         "S.R.MonoInflatedCtor" classes.
24381
24382         * loader.c (method_from_memberref): If we're a TypeSpec and it
24383         resolves to a generic instance, inflate the method.
24384
24385 2003-10-28  Dick Porter  <dick@ximian.com>
24386
24387         * object.c (mono_runtime_run_main): Convert command-line arguments
24388         into utf8, falling back to the user's locale encoding to do so.
24389
24390 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24391
24392         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
24393         at this time.
24394
24395         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
24396
24397         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
24398         up icalls at method definition time. Partially fixes #33569.
24399
24400 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
24401
24402         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
24403         marshalling of arrays. Fixes #50116.
24404
24405         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
24406
24407         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
24408         points to a vtable in the dying appdomain.
24409
24410         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
24411         listeners into unmanaged code inside the lock.
24412
24413         * object.c (mono_class_vtable): Turn off typed allocation in non-root
24414         domains and add some comments.
24415
24416 2003-10-25  Martin Baulig  <martin@ximian.com>
24417
24418         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
24419
24420         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
24421
24422         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
24423         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
24424         currently parsing.  Create the generic class and store it in
24425         `generic_inst->klass' before parsing the type arguments.  This is
24426         required to support "recursive" definitions; see mcs/tests/gen-23.cs
24427         for an example.
24428         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
24429         to support recursive typespec entries.
24430
24431         * class.c (mono_class_setup_parent): If our parent is a generic
24432         instance, we may get called before it has its name set.
24433         (mono_class_from_generic): Splitted into
24434         mono_class_create_from_generic() and mono_class_initialize_generic().
24435
24436 2003-10-25  Martin Baulig  <martin@ximian.com>
24437
24438         * icall.c (ves_icall_Type_BindGenericParameters): Return a
24439         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
24440         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
24441         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
24442
24443         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
24444         (create_typespec): Likewise.
24445         (mono_reflection_bind_generic_parameters): Return a
24446         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
24447         (mono_reflection_inflate_method_or_ctor): New public function.
24448
24449         * reflection.h (MonoReflectionGenericInst): New typedef.        
24450
24451 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24452
24453         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
24454         inside the domain lock. Fixes #49993.
24455         
24456         * object.c (mono_class_vtable): When typed allocation is used, 
24457         allocate vtables in the GC heap instead of in the mempool, since the
24458         vtables contain GC descriptors which are used by the collector even
24459         after the domain owning the mempool is unloaded.
24460
24461         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
24462
24463         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
24464         reflect what it does. Also invalidate mempools instead of freeing
24465         them if a define is set.
24466
24467         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
24468         of the appdomain.
24469         
24470         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
24471         hold the finalizable objects in this domain.
24472
24473         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
24474         appdomain.
24475
24476         * appdomain.c (mono_domain_set): New function to set the current
24477         appdomain, but only if it is not being unloaded.
24478
24479         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
24480         appdomain which is being unloaded.
24481         
24482         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
24483         unloading of the root appdomain.
24484
24485         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
24486         icall to execute a method in another appdomain. Intended as a 
24487         replacement for InternalSetDomain, which can confuse the code 
24488         generation in the JIT.
24489
24490         * appdomain.c (mono_domain_is_unloading): New function to determine
24491         whenever an appdomain is unloading.
24492
24493         * appdomain.c (mono_domain_unload): New function to correctly unload
24494         an appdomain.
24495
24496         * assembly.c (mono_assembly_load_references): Check that an assembly
24497         does not references itself.
24498
24499         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
24500         domain manually, it asks the finalizer thread to do it, then waits for
24501         the result. Also added a timeout.
24502
24503         * icall.c: Register the new icalls.
24504
24505         * threads.h threads.c: Export the mono_gc_stop_world and 
24506         mono_gc_start_world functions.
24507         
24508         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
24509         function to fill out the mempool with 0x2a.
24510
24511 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
24512
24513         * reflection.h (MonoReflectionMethodAux): New structure to store
24514         information which is rarely used, thus is not in the MonoMethod
24515         structure.
24516
24517         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
24518         store the aux info.
24519
24520         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
24521         and marshalling info into the aux structure.
24522
24523         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
24524         from the aux structure.
24525
24526         * loader.c (mono_method_get_param_names): Retrieve the param names from
24527         the aux structure.
24528         
24529 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
24530
24531         * exception.h exception.c: Add AppDomainUnloadedException && fix 
24532         warning.
24533
24534 2003-10-21  Dick Porter  <dick@ximian.com>
24535
24536         * socket-io.c
24537         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
24538         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
24539
24540 2003-10-21  Martin Baulig  <martin@ximian.com>
24541
24542         * reflection.c (mono_reflection_bind_generic_parameters):
24543         `klass->parent' is NULL for interfaces.
24544
24545 2003-10-21  Martin Baulig  <martin@ximian.com>
24546
24547         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24548
24549 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
24550
24551         * exception.c (mono_exception_from_name_msg): New helper function for
24552         creating exceptions and initializing their message field.
24553
24554         * exception.c: Simplify functions using the new helper.
24555
24556         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
24557         New function.
24558
24559         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
24560         mono_raise_exception, since otherwise gcc doesn't generate the function
24561         epilog for raise_exception, confusing the stack unwinding in the JIT.
24562         Fixes #45043.
24563
24564         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
24565         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
24566         Fixes #49499.
24567
24568 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24569
24570         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
24571         utf8.
24572
24573 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
24574
24575         * icall.c: Removed GetUninitializedObject method because
24576           AllocateUninitializedClassInstance does the same.
24577
24578 2003-10-18  Martin Baulig  <martin@ximian.com>
24579
24580         * class.c (inflate_generic_signature): Renamed to
24581         mono_class_inflate_generic_signature() and made it public.
24582         (my_mono_class_from_generic_parameter): New static function; if we
24583         don't already have the generic parameter's MonoClass, create a
24584         very simple one which is just used internally in the runtime and
24585         not passed back to managed code.
24586
24587         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
24588
24589         * metadata.h (MonoMethodSignature): Moved the
24590         `MonoGenericParam *gen_params' to the MonoMethodHeader.
24591         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
24592
24593         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
24594         ves_icall_MonoMethod_GetGenericArguments(); this is now an
24595         interncall on the MonoMethod class, not on MethodInfo.
24596         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
24597         calling mono_reflection_bind_generic_method_parameters() directly.
24598
24599         * loader.c (mono_method_get_signature): If this is a MethodSpec;
24600         return the already computed `method->signature'.
24601         (method_from_methodspec): New static function to load a method
24602         from a MethodSpec entry.
24603         (mono_get_method_from_token): Call the new method_from_methodspec()
24604         for MethodSpec tokens.  
24605         (mono_get_method_from_token): If we're a generic method, load the
24606         type parameters.
24607
24608         * reflection.c (mono_image_get_memberref_token): Allow
24609         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
24610         table.
24611         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
24612         (mono_image_create_token): First check whether it's a generic
24613         method (so we'd need to create a MethodSpec), then do the other
24614         two alternatives.
24615         (mono_reflection_bind_generic_method_parameters): Return a
24616         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
24617         called directly from the interncall.
24618
24619 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
24620
24621         * reflection.c (load_public_key): Move loading of the public key
24622         into managed code.
24623
24624         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
24625
24626         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
24627         fields.
24628
24629         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
24630         culture, hash_alg and public_key. Fixes #49555.
24631
24632 2003-10-17  Martin Baulig  <martin@ximian.com>
24633
24634         * class.h (MonoGenericInst): Moved this declaration here and added
24635         `MonoMethod *generic_method'.
24636
24637         * icall.c
24638         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
24639         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
24640
24641         * metadata.c (mono_metadata_type_equal): Two types of
24642         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
24643         index; ie. don't compare the address of the `MonoGenericParam'
24644         structure.
24645         (mono_metadata_load_generic_params): Removed the `MonoMethod
24646         *method' argument.
24647
24648         * metadata.h (MonoGenericInst): Moved declaration to class.h.
24649         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
24650
24651         * reflection.c (method_encode_signature): Encode the number of
24652         generic parameters.
24653         (encode_generic_method_sig): New static function.
24654         (method_encode_methodspec): New static function; creates an entry
24655         in the MethodSpec table for a generic method.
24656         (mono_image_get_methodspec_token): New static function.
24657         (mono_image_create_token): Call mono_image_get_methodspec_token()
24658         for generic methods.
24659         (mono_reflection_bind_generic_method_parameters): New public
24660         function.  Instantiates a generic method.
24661
24662 2003-10-16  Martin Baulig  <martin@ximian.com>
24663
24664         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
24665         *gen_params' here from MonoMethodHeader.
24666
24667         * metadata.c (mono_metadata_parse_method_signature): If we have
24668         generic parameters, initialize `method->gen_params' and then set
24669         the correct `type->data.generic_param' in all the parameters.
24670
24671 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24672
24673         * threads.c (mono_threads_get_default_stacksize): New function to 
24674         return the default stacksize.
24675
24676         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
24677         termination of the finalizer thread, since the previous method had
24678         race conditions. Fixes #49628.
24679
24680         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
24681         as for the other managed threads.
24682
24683 2003-10-16  Martin Baulig  <martin@ximian.com>
24684
24685         * class.c (inflate_generic_signature): Copy `generic_param_count'
24686         and `gen_params'.
24687
24688         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
24689         New interncall.
24690
24691         * metadata.c (mono_metadata_parse_method_signature): Actually set
24692         the `method->generic_param_count' here.
24693         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
24694
24695 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24696
24697         * object.h: Add a new field to TypedRef to simplify the implementation
24698         of the REFANY opcodes in the JIT.
24699
24700         * icall.c: Make use of the new field.
24701
24702         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
24703         dynamically.
24704
24705 2003-10-15  Martin Baulig  <martin@ximian.com>
24706
24707         * class.c (mono_class_from_gen_param): Renamed to
24708         mono_class_from_generic_parameter() and moved most of the
24709         functionality from mono_reflection_define_generic_parameter()
24710         here; ie. we create a "real" class here.
24711         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
24712         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
24713         previously been called.
24714
24715         * class.h (MonoGenericParam): Moved the declaration of this struct
24716         here from metadata.h and added `MonoMethod *method'.
24717
24718         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
24719         interncall.
24720
24721         * loader.c (mono_get_method_from_token): If we have any generic
24722         parameters, call mono_metadata_load_generic_params() to read them
24723         from the MONO_TABLE_GENERICPAR.
24724
24725         * metadata.c (mono_metadata_load_generic_params): Added
24726         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
24727
24728         * metadata.h (MonoMethodSignature): Replaced
24729         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
24730         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
24731
24732         * reflection.c (mono_reflection_define_generic_parameter): Moved
24733         most of the functionality into the new
24734         mono_class_from_generic_parameter(); set the `method' field if
24735         we're a method parameter.       
24736
24737 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
24738
24739         * marshal.c (emit_struct_conv): if native size is 0
24740         emit no code.
24741
24742 2003-10-14  Martin Baulig  <martin@ximian.com>
24743
24744         * icall.c: The generics API has changed in the spec since it was
24745         added to System.Type; these modifications make it match the spec
24746         again.
24747         (ves_icall_Type_GetGenericParameters): Renamed to
24748         `ves_icall_Type_GetGenericArguments'.
24749         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
24750         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
24751         `ves_icall_MonoType_get_HasGenericArguments'.
24752         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
24753         `ves_icall_MonoType_get_IsGenericParameter'.
24754         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
24755         this is no interncall anymore.
24756         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
24757         `ves_icall_TypeBuilder_get_IsGenericParameter'.
24758
24759 2003-10-14  Martin Baulig  <martin@ximian.com>
24760
24761         * reflection.c (mono_reflection_bind_generic_parameters): Also
24762         inflate generic methods if we're reading the class from IL.
24763
24764 2003-10-13  Martin Baulig  <martin@ximian.com>
24765
24766         * reflection.c (mono_reflection_define_generic_parameter): This
24767         method isn't called directly from the icall anymore; take a
24768         `MonoReflectionAssemblyBuilder *' so we can use this for type and
24769         method generic parameters.
24770         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
24771         (method_builder_encode_signature): Encode generic parameters.
24772         (mono_image_get_method_info): Write generic params to the
24773         MONO_TABLE_GENERICPARAM table.
24774
24775         * reflection.h (MonoReflectionMethodBuilder): Added
24776         `MonoArray *generic_params'.
24777
24778         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
24779
24780         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
24781         wrapper for mono_reflection_define_generic_parameter().
24782         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
24783
24784 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
24785
24786         * marshal.h: Add missing function to fix build.
24787
24788         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
24789         the SetLastError pinvoke attribute.
24790
24791         * marshal.c (mono_marshal_set_last_error): New helper function called
24792         by the generated code.
24793         
24794         * marshal.c (mono_mb_emit_branch): New helper function.
24795
24796         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
24797
24798         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
24799         classes as parameters and return values of delegates. Fixes #29256. 
24800
24801 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
24802
24803         * locales.c: use gint32 in non HAVE_ICU case
24804
24805 2003-10-11  Martin Baulig  <martin@ximian.com>
24806
24807         * mono-debug.c (mono_debug_add_method): Added a workaround for
24808         bug #48591.
24809
24810 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24811
24812         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
24813         delegates passed to native code must use the STDCALL calling 
24814         convention. Fixes #35987.
24815
24816 2003-10-10  Martin Baulig  <martin@ximian.com>
24817
24818         * class.c (inflate_generic_type): If we're inflating for a generic
24819         type instance (and not for a generic method), return
24820         MONO_TYPE_MVAR unchanged.
24821
24822 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24823
24824         * string-icalls.c: Join ignores null strings in the source array.
24825         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
24826         * threads.c: GetAvailableTheads is slightly more accurate.
24827
24828 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
24829
24830         * threads.h threads.c : add mono_threads_set_default_stacksize
24831         and pass default to CreateThread calls.
24832
24833 2003-10-09  Dick Porter  <dick@ximian.com>
24834
24835         * icall.c:
24836         * locales.h:
24837         * locales.c: Internal calls for constructing CultureInfo and
24838         related objects from libicu (if its available.)
24839
24840 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24841
24842         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
24843
24844 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24845
24846         * threadpool.c: added an argument to async_invoke_thread that is the
24847         item to process, pass the MonoAsyncResult to the thread start function
24848         when creating a new thread. This way we don't need to acquire any lock
24849         when we're creating a new thread. Readded a semaphore for faster
24850         response times (instead of that Sleep i added).
24851
24852 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
24853
24854         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
24855         get daylight change dates better on Windows, fix handling
24856         of platforms without tm_gmtoff.
24857
24858 2003-10-06  Martin Baulig  <martin@ximian.com>
24859
24860         * class.c (inflate_generic_method): Renamed to
24861         mono_class_inflate_generic_method() and made public.
24862         (mono_class_init): Don't inflate the generic methods here.
24863         (mono_class_from_generic): Added `gboolean inflate_methods'
24864         argument.  Inflate the methods here.
24865
24866         * loader.c (mono_method_get_param_names): Ignore instances of
24867         generic types for the moment.
24868
24869         * reflection.c (fixup_method): Added support for inflated methods.
24870         (mono_image_create_token): Use mono_image_get_methodref_token()
24871         for inflated methods.
24872         (mono_custom_attrs_from_param): Ignore instances of generic types
24873         for the moment.
24874         (mono_reflection_bind_generic_parameters): New public function.
24875         Moved all the functionality from
24876         ves_icall_Type_BindGenericParameters() here and added support for
24877         dynamic types.
24878         (mono_reflection_define_generic_parameter): Initialize
24879         `klass->methods' here.
24880
24881         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
24882         functionality into mono_reflection_define_generic_parameter().
24883         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
24884         TypeBuilder, return that TypeBuilder.
24885
24886 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24887
24888         * appdomain.c: removed mono_delegate_semaphore.
24889
24890         * threadpool.c:
24891         (mono_thread_pool_add): moved hash table creation inside and the thread 
24892         creation outside of the critical region.
24893         (mono_thread_pool_finish): removed obsolete code.
24894         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
24895         continue or exit the thread depending on the queue.
24896
24897 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
24898
24899         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
24900         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
24901         handle more bool marshalling options
24902
24903 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
24904
24905         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
24906         arrays of structs. Also add a more descriptive error message when
24907         a structure member is marshalled as LPArray.
24908
24909 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24910
24911         * marshal.c (mono_marshal_get_native_wrapper): Add support for
24912         marshalling arrays of complex types. Fixes #29098. Also remove an
24913         usused and incomplete function.
24914
24915 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
24916
24917         * gc.c: report heap_size - free_bytes as total memory allocated
24918         (bug#49362).
24919
24920 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24921
24922         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
24923         fix timezone handling problems on Windows.
24924         
24925         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
24926         asserts when the year is outside the range handled by ms the functions.
24927
24928         * class.c (setup_interface_offsets): If the class is an interface,
24929         fill out its interface_offsets slot.
24930
24931 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24932
24933         * threadpool.c: mark threadpool threads as background.
24934
24935 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
24936
24937         * decimal.c - define DECINLINE to nothing if not using GCC
24938
24939 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24940
24941         * assembly.c: More refcount fixes.
24942
24943 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24944
24945         * string-icalls.c: if we're not trimming, return the same string.
24946         When not splitting, don't create a new string.
24947
24948 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24949
24950         * image.c:
24951         (mono_image_open): increment the ref_count inside the critical section.
24952
24953 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
24954
24955         * image.c (mono_image_open): Fix reference counting bug.
24956
24957 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
24958
24959         * marshal.c (mono_marshal_type_size) struct alignment changed for 
24960         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
24961         64bits. Avoid leak in mono_marshal_get_native_wrapper when
24962         mono_lookup_pinvoke_call throws.        
24963
24964 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24965
24966         * reflection.c (mono_reflection_parse_type): Fix #49114.
24967
24968         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
24969         temporary workaround for cygwin header problem.
24970
24971         * object.c (mono_object_isinst): Synchronize this with the code
24972         generated by the JIT for casts.
24973
24974 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24975
24976         * reflection.c (encode_type): Fix #38332.
24977
24978 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24979
24980         * marshal.c (mono_marshal_method_from_wrapper): New function to return
24981         the original method from the wrapper method.
24982
24983 2003-09-25  Martin Baulig  <martin@ximian.com>
24984
24985         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
24986         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
24987         (ves_icall_Type_get_IsGenericInstance): New interncall.
24988
24989 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
24990
24991         * object.c: fix cast warning in big endian code.
24992
24993 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
24994
24995         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
24996         
24997 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24998
24999         * assembly.c: don't call check_env from mono_assembly_load. It's
25000         already done once in mono_assemblies_init and may cause headaches when
25001         multiple threads are loading assemblies.
25002
25003 2003-09-19  Martin Baulig  <martin@ximian.com>
25004
25005         * reflection.c (mono_reflection_define_generic_parameter): Don't
25006         allocate `klass->methods', set `klass->flags' to
25007         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25008
25009 2003-09-18  Martin Baulig  <martin@ximian.com>
25010
25011         * class.c (mono_class_init): Don't create `class->methods' if it's
25012         already initialized.
25013
25014         * metadata.c (mono_metadata_load_generic_params): Make this
25015         actually work.
25016
25017         * reflection.c (mono_reflection_define_generic_parameter): Set
25018         parent class and interfaces from the constraints.
25019
25020         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25021         to keep this struct in sync with the declaration in TypeBuilder.cs.
25022
25023 2003-09-17  Martin Baulig  <martin@ximian.com>
25024
25025         * metadata.h (MonoType): Replaced the data's `int type_param'
25026         field with `MonoGenericParam *generic_param'.
25027         (MonoGenericParam): Added `MonoClass *klass'.
25028
25029         * class.c (mono_class_from_gen_param): Removed the
25030         `MonoImage *image' and `int type_num' arguments.
25031
25032         * metadata.c (mono_metadata_parse_generic_param): New static
25033         method; creates a MonoGenericParam which just contains the index.
25034         (do_mono_metadata_parse_type): Call
25035         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25036         MONO_TYPE_MVAR.
25037
25038         * reflection.c (mono_image_typedef_or_ref): Generic type
25039         parameters may be in the same assembly, but never use a typedef
25040         for them.
25041         (mono_reflection_define_generic_parameter): We're now creating a
25042         "real" class for the type parameter; it's now safe to call
25043         mono_class_from_mono_type() on the class'es type, it'll do the
25044         right thing.
25045
25046 2003-09-16  Martin Baulig  <martin@ximian.com>
25047
25048         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25049         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25050         the `symfile' data structure must be fully initialized before it
25051         gets added to the table.
25052
25053 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25054
25055         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25056
25057         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25058         class init trampolines.
25059
25060 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25061
25062         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25063         to the built-in profiler to turn off time and allocation profiling
25064         respectively.
25065
25066 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25067
25068         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25069         g_direct_equal.
25070
25071         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25072         in human readable form.
25073
25074 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25075
25076         * reflection.c icall.c: Fixed warnings.
25077
25078         * image.c (load_class_names): Use a temporary hash table to hold the
25079         namespaces in order to avoid doing many string comparisons.
25080
25081         * image.h: Fix typo.
25082
25083         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25084         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25085         since the NULL case is short-circuited inside g_hash_table_lookup, 
25086         leading to better performance.  
25087
25088         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25089         obtain the first custom attribute for a given index. Depends on the
25090         CustomAttribute table being sorted by the parent field.
25091
25092         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25093         for better performance.
25094
25095 2003-09-07  Martin Baulig  <martin@ximian.com>
25096
25097         * class.c (mono_class_init): If we're a generic instance, inflate
25098         all our methods instead of loading them from the image.
25099         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25100
25101 2003-09-07  Martin Baulig  <martin@ximian.com>
25102
25103         * mono-debug-debugger.c: Added support for constructors.
25104
25105 2003-09-06  Martin Baulig  <martin@ximian.com>
25106
25107         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25108         New interncall.
25109
25110         * reflection.c (mono_reflection_setup_generic_class): Call
25111         ensure_runtime_vtable() to create the vtable.
25112
25113 2003-09-05  Martin Baulig  <martin@ximian.com>
25114
25115         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25116         MONO_TYPE_MVAR.
25117
25118 2003-09-04  Martin Baulig  <martin@ximian.com>
25119
25120         * reflection.c (mono_reflection_define_generic_parameter): Generic
25121         parameters start with zero.
25122
25123 2003-09-04  Martin Baulig  <martin@ximian.com>
25124
25125         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25126
25127         * reflection.h (MonoReflectionGenericParam): New typedef.
25128         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25129         the generic parameters from the managed TypeBuilder.
25130
25131         * reflection.c (mono_reflection_define_generic_parameter): New function.
25132         (mono_reflection_create_runtime_class): Encode generic parameters.
25133         (mono_reflection_setup_generic_class): New function; this is
25134         called after adding adding all generic params to the TypeBuilder.
25135         (encode_type): Added MONO_TYPE_VAR.
25136
25137 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25138
25139         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25140         here from the JIT.
25141
25142         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25143         load hook.
25144
25145 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25146
25147         * reflection.h reflection.c class.h class.c: Delete duplicate 
25148         definition of mono_type_get_name () from reflection.c and export the
25149         one in class.c.
25150
25151         * class.c: Class loading fixes from Bernie Solomon 
25152         (bernard@ugsolutions.com).
25153
25154         * reflection.c: Endianness fixes from Bernie Solomon 
25155         (bernard@ugsolutions.com).
25156         
25157 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25158
25159         * assembly.h assembly.c: Define a file format version for AOT
25160         libraries.
25161         
25162         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25163
25164         * appdomain.h (MonoJitInfo): New field to determine whenever the
25165         code is domain neutral.
25166         
25167 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25168
25169         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25170
25171 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25172
25173         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25174         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25175         Avoid caching the result since strings must be domain specific. Fixes
25176         #48050.
25177
25178 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25179
25180         * marshal.c (mono_marshal_init): Make this callable multiple times
25181         since it is hard to find a correct place to call it.
25182
25183         * object.c (mono_runtime_class_init): Execute static constructors in
25184         the correct appdomain.
25185
25186         * image.c (build_guid_table): Handle the case when multiple images have
25187         the same GUID.
25188
25189 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25190
25191         * icall.c: added a couple of icalls for System.Web.
25192
25193 2003-08-28  Martin Baulig  <martin@ximian.com>
25194
25195         * icall.c (ves_icall_Type_BindGenericParameters): Use
25196         `klass->generic_inst' instead of `&klass->byval_arg' in the
25197         mono_type_get_object() call.  The returned type must be
25198         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25199
25200 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25201
25202         * NOTES: New file.
25203
25204         * object.c (mono_class_proxy_vtable): Make it thread safe.
25205
25206         * pedump.c: Fix warning.
25207
25208         * object.c appdomain.h: Get rid of metadata_section. 
25209         It is no longer needed and it was causing deadlocks with domain->lock.
25210
25211         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25212
25213 2003-08-26  Martin Baulig  <martin@ximian.com>
25214
25215         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25216
25217 2003-08-26  Martin Baulig  <martin@ximian.com>
25218
25219         * pedump.c (main): Call mono_metadata_init(),
25220         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25221         and mono_loader_init().
25222
25223 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25224
25225         * loader.h: Add missing include to fix build.
25226
25227         * image.h: mono_image_load_references is no more.
25228
25229         * assembly.c: Reworked assembly loading to make it really thread safe.
25230         After these changes, the assembly returned by mono_assembly_open is
25231         fully initialized, i.e. all its references assemblies are loaded.
25232
25233         * assembly.c (mono_image_load_references): Renamed to 
25234         mono_assembly_load_references, and made private, since clients no
25235         longer need to call it.
25236
25237         * class.c: Removed calls to mono_assembly_load_references, since it was
25238         a source of deadlocks.
25239
25240         * loader.h loader.c class.h class.c: Protect data structures using a 
25241         new lock, the loader lock.
25242
25243         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25244         GPtrArrays only when needed.
25245
25246         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25247         into empty structures by mcs. Fixes pinvoke7.cs.
25248         
25249         * domain.c (mono_init): Call a new initialization function.
25250
25251         * appdomain.c (mono_runtime_init): Call the new initializer function
25252         of the marshal module.
25253
25254         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25255         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25256
25257         * marshal.h marshal.c: Added locks around the wrapper caches to make
25258         this module thread safe.
25259
25260         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25261         this argument. Fixes pinvoke1.exe.
25262
25263 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25264
25265         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25266         enumeration of values. Removed fields to store remote call output values in
25267         MonoAsyncResult. Not needed any more.
25268         * object.c: Initialize call_type and async_result fields in mono_message_init.
25269         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25270         dispatching the message.
25271         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25272         async call to finish. To do it use a message with EndInvoke call type.
25273
25274 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25275
25276         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25277         determines whenever a method has marshalling info.
25278
25279 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25280
25281         * assembly.c: fix the build on windows.
25282
25283 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25284
25285         * object.cs: Fixed bug #47785.
25286
25287 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25288
25289         * string-icalls.c (StringReplace): If their are no occurances of
25290         the old string found return a reference to the supplied
25291         string. This saves some memory and matches MS behavoir.
25292         
25293 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25294
25295         * socket-io.c: fixed compilation for systems that define AF_INET6
25296         and don't define SOL_IP/SOL_IPV6.
25297
25298 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25299
25300         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25301         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25302
25303         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25304
25305         * domain.c: Make this module thread safe.
25306
25307         * domain.c (mono_init): Call new initialization function.
25308
25309         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25310         reference types too. Fixes #38812.
25311
25312         * image.c (mono_image_init): Fixed warnings.
25313
25314         * class.c (mono_class_from_typeref): Handle assembly load failure
25315         correctly.
25316
25317         * appdomain.c (add_assemblies_to_domain): Handle the case when
25318         the references of an assembly are not yet loaded.
25319
25320         * metadata.c image.c assembly.c: Moved initialization of global
25321         variables to a separate function called at startup since lazy 
25322         initialization of these variables is not thread safe.
25323         
25324         * image.c assembly.c: Made this module thread safe by adding locks in 
25325         the appropriate places.
25326
25327         * domain.c (mono_init): Call the new initialization functions of the
25328         three modules.
25329
25330 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
25331
25332         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
25333           make a direct call. It is proxy's work to make the call asynchronous.
25334           mono_delegate_end_invoke(): If the targe is a proxy, just collect
25335           the return values.
25336         * object.cs: mono_method_call_message_new(): read AsyncResult and
25337           state object from parameters list, if this info is requested.
25338         * object.h: Added fields to store remote call output values in
25339           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
25340
25341 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25342
25343         * object.h: add needed fields to MonoThread.
25344         * threads.c, threads.h: allow registering a function to cleanup data
25345         allocated per thread by the JIT.
25346
25347 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25348
25349         * loader.h: portability fix by Bernie Solomon
25350         * <bernard@ugsolutions.com>.
25351
25352 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
25353
25354         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
25355         return a MonoArray. This simplifies the code and also ensures that
25356         the cache allways contains an object reference as a value.
25357
25358         * icall.c (ves_icall_get_parameter_info): Simplified using the new
25359         function.
25360
25361 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25362
25363         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
25364         fixes a problem with byte ordering when getting the address family for
25365         a socket.
25366
25367 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
25368
25369         * .cvsignore: Added monosn.
25370
25371         * reflection.h reflection.c loader.c: Added support for parameter
25372         marshalling to dynamically created types. Fixes #47295.
25373
25374 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25375
25376         * rand.c: remove useless warnings.
25377
25378 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25379
25380         * class.c: implemented ldtoken for methods and fieldrefs.
25381
25382 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25383
25384         * threadpool.c: when mono_async_invoke was called, no one took care of
25385         monitoring the queue. So if the method invoked took some time and we
25386         got new async invoke requests after 500 ms (the thread created waited
25387         that long in WaitForSingleObject), the new async invoke was not called
25388         until the previous one finished.
25389
25390         This is fixed now. Thanks to Totte for helping with it.
25391
25392 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25393
25394         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
25395
25396 2003-08-11  Martin Baulig  <martin@ximian.com>
25397
25398         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
25399
25400 2003-08-06  Martin Baulig  <martin@ximian.com>
25401
25402         * mono-debug-debugger.c: Added support for static fields,
25403         properties and methods.
25404
25405 2003-08-06  Martin Baulig  <martin@ximian.com>
25406
25407         * mono-debug-debugger.c: Don't store the MonoString's vtable to
25408         make this work for applications with multiple application domains.
25409
25410 2003-08-04  Martin Baulig  <martin@ximian.com>
25411
25412         * mono-debug-debugger.c: Completely reworked the type support; the
25413         most important thing is that we're now just using one single
25414         `MonoType' instance per type.
25415
25416 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
25417
25418         * mono-endian.h, mono-endian.c, icall.c: Added icall
25419         ves_icall_System_Double_AssertEndianity to assert double word endianity
25420         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
25421
25422 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25423
25424         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
25425         support, icalls and fixes.
25426
25427 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
25428
25429         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
25430         classes that are a punctuation character in .NET is not the same a
25431         g_unichar_ispunct.
25432
25433 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25434
25435         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
25436
25437 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
25438
25439         * icall.c: Add new MemCopy internalcall.
25440         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
25441         Simplified code; It is not necessary to handle all the cases here,
25442         as the C# code takes care of it.  Only handle the case of the name
25443         resource embedded into the assembly.
25444
25445         Changed signature to return the data pointer and the size of the
25446         data. 
25447
25448 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
25449
25450         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
25451         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
25452
25453 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25454
25455         * socket-io.c: ignore EINTR error in select.
25456
25457 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
25458
25459         * class.h, class.c: removed unused subclasses field in MonoClass.
25460
25461 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25462
25463         * icall.c: improve fix of get_base_definition(). If the parent class
25464           doesn't have the mehod, look at the parent of the parent.
25465         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
25466           to check if a parameter is an in or out parameter
25467           (PARAM_ATTRIBUTE_IN is not set by default).
25468           mono_method_return_message_restore(): Use mono_class_value_size to
25469           get the size of a value type. mono_type_stack_size (parameterType)
25470           does not return the correct value if parameterType is byRef.
25471           mono_load_remote_field(), mono_load_remote_field_new(),
25472           mono_store_remote_field(), mono_store_remote_field_new():
25473           raise exception if the remote call returns an exception.
25474
25475 2003-07-28  Martin Baulig  <martin@ximian.com>
25476
25477         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
25478         method.  This is a wrapper around mono_runtime_invoke() which
25479         boxes the instance object if neccessary.
25480
25481 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25482
25483         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
25484         metadata.h, row-indexes.h, verify.c: first cut of generics support.
25485
25486 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25487
25488         * icall.c: disable mcs bug workaround.
25489
25490 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25491
25492         * object.c (mono_runtime_class_init): Take the metadata_section
25493         mutex before obtaining the domain mutex.
25494
25495         * appdomain.h: Added definition of metadata_section mutex here. 
25496
25497         * object.c: define metadata_mutex here.
25498
25499 2003-07-24  Ravi Pratap  <ravi@ximian.com>
25500
25501         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
25502         fixed.
25503
25504 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
25505
25506         * reflection.c: Fix bug #46669
25507
25508 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25509
25510         * exception.c:
25511         * exception.h:
25512         * icall.c:
25513         * object.h: fill in the type name for TypeLoadException.
25514
25515 2003-07-23  Ravi Pratap  <ravi@ximian.com>
25516
25517         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
25518         relationship between TypeBuilders while compiling corlib) and bug
25519         45993 (Array types returned from the runtime while compiling
25520         corlib were from the loaded corlib).
25521
25522 2003-07-22  Martin Baulig  <martin@ximian.com>
25523
25524         * mono-debug-debugger.c: Reworked the type support a bit more;
25525         distinguish between types and classes.
25526
25527 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
25528
25529         * icall.c: add IsArrayImpl icall.
25530
25531 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
25532
25533         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
25534         initializing real_size only once. Also fix bug #46602.
25535
25536 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
25537
25538         * object.c: Renamed mono_metadata_section to metadata_section.
25539
25540 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
25541
25542         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
25543           empty array if the type is an array. Fixed.
25544           ves_icall_MonoMethod_get_base_definition: if the base method
25545           is abstract, get the MethodInfo from the list of methods of
25546           the class.
25547         * reflection.c: ParameterInfo.PositionImpl should be zero-based
25548           and it was 1-based. Fixed in mono_param_get_objects.
25549
25550 2003-07-20  Martin Baulig  <martin@ximian.com>
25551
25552         * mono-debug.h: Set version number to 31.
25553         (mono_debug_init): Added `MonoDomain *' argument.
25554
25555         * mono-debug-debugger.c: Reworked the type support; explicitly
25556         tell the debugger about builtin types; pass the `klass' address to
25557         the debugger.
25558
25559 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
25560
25561         * image.c: Allow new metadata tables to be loaded without a
25562         warning. Also update the warning message to give the new constant value.
25563                 
25564 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25565
25566         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
25567         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
25568         array type representation changes.
25569
25570 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25571
25572         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
25573         on Environment.Exit () call.
25574
25575 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25576
25577         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
25578         requires a matching corlib.
25579
25580 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25581
25582         * Changelog: My editor decided to add a CR to each line. Sorry about that.
25583           Committed again without the CRs.
25584         
25585 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25586
25587         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
25588           getting it from the "this" socket instance. Did not work
25589           if the socket is a subclass of Socket.
25590           Also fixed bug #35371.
25591
25592 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25593
25594         * metadata.c: fixed size for TypedByRef.
25595         * loader.c: when searching for a method, consider the vararg amrker.
25596         * unicode.c, decimal.c: constify some arrays.
25597
25598 2003-07-15  Dick Porter  <dick@ximian.com>
25599
25600         * socket-io.c: Fixed compilation for gcc < 3.2.
25601
25602         Fixed compilation for machines that don't have AF_INET6 (thanks to
25603         Bernie Solomon <bernard@ugsolutions.com> for that part.)
25604
25605         Fixed compile warnings.
25606         
25607         Fixed formatting and line endings.
25608
25609 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
25610
25611         * socket-io.h:
25612         * socket-io.c: Added IPv6 support.
25613
25614 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
25615
25616         * class.c (mono_class_is_assignable_from): New function to implement
25617         the is_assignable_from logic. Used by mono_object_isinst, 
25618         Type::IsAssignableFrom () and the interpreter.
25619
25620         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
25621         Object, even interfaces.
25622         
25623         * object.c (mono_object_isinst): Implement in terms of 
25624         is_assignable_from.
25625
25626         * icall.c (ves_icall_type_is_assignable_from): New icall.
25627
25628 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
25629
25630         * domain.c (foreach_domain): fix compiler warning.
25631
25632 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
25633
25634         * image.c (load_metadata_ptrs): use g_strndup because strndup is
25635         not available on all plattforms
25636
25637 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
25638
25639         * image.h image.c: Store the metadata version string in MonoImage.
25640         * icall.c: New icall to retrieve the image version.
25641         * reflection.c (create_dynamic_image): Fill in the image version field
25642         * reflection.c (build_compressed_metadata): Use the image version
25643         from the image structure.
25644
25645 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25646
25647         * appdomain.c: modified comment.
25648         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
25649         That will be its last iteration when mono_gc_cleanup is called from
25650         mono_runtime_cleanup and before the domain is unloaded.
25651
25652         Fixes bug #45962.
25653
25654 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
25655
25656         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
25657         attributes.
25658
25659 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25660
25661         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
25662         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
25663         Bernie Solomon <bernard@ugsolutions.com>.
25664
25665 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25666
25667         * object.c, object.h: provide mono_object_new_fast() for faster
25668         allocation in some special cases.
25669
25670 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25671
25672         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
25673         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
25674
25675 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25676
25677         * threadpool.c: fix leaks.
25678
25679 2003-07-01  Dick Porter  <dick@ximian.com>
25680
25681         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
25682         using MonoGHashTables.  Fixes threadpool bug posted to list.
25683
25684 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25685
25686         * image.h, image.c: added support to load an assembly from a byte array.
25687         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
25688         assembly bundle support.
25689
25690 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
25691
25692         * threadpool.c (mono_thread_pool_add): keep a reference to the
25693         AsyncResult to prevent GC
25694
25695 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25696
25697         * class.c: leak fix.
25698
25699 2003-06-25  Dick Porter  <dick@ximian.com>
25700
25701         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
25702         for the async object, the WaitHandle object will close the handle.
25703         Fixes bug 45321.
25704
25705 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25706
25707         * class.c: in mono_array_class_get (), lookup from the hash with the
25708         same type we insert: this works around a bug in
25709         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
25710         lluis. The real fix will have to wait for after the release.
25711
25712 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25713
25714         * icall.c: fix memory leak when getting type members.
25715
25716 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25717
25718         * reflection.c: added more pubtoken special cases.
25719
25720 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25721
25722         * class.c: handle field offset correctly when class size
25723         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
25724
25725 2003-06-20  Martin Baulig  <martin@ximian.com>
25726
25727         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
25728         *image' field.
25729
25730 2003-06-20  Martin Baulig  <martin@ximian.com>
25731
25732         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
25733
25734 2003-06-20  Martin Baulig  <martin@ximian.com>
25735
25736         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
25737         just distinguish between variables in registers and variables at
25738         an offset relative to a register.
25739
25740 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25741
25742         * icall.c: #ifdef out latest changes until mcs is fixed.
25743
25744 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25745
25746         * icall.c: return members in metadata order.
25747
25748 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25749
25750         * icall.c: avoid infinite loop in GetTimeZoneData.
25751
25752 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25753
25754         * icall.c: added Marshal.Prelink/All icalls.
25755
25756 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25757
25758         * object.c, object.h: fix warnings and do some overflow checking
25759         when creating arrays.
25760
25761 2003-06-17  Dick Porter  <dick@ximian.com>
25762
25763         * file-io.h:
25764         * file-io.c: File attributes need to be tweaked slightly when
25765         passed from the managed to the w32 world.
25766
25767 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25768         * profiler.h profiler-private.h profiler.c: Rework last patch
25769         based on suggestion by Paolo.
25770         
25771 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25772
25773         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
25774         instruction level coverage data collection.
25775         * profiler.h profiler.c (: Added new callback function which can be
25776         used by the profiler to limit which functions should have coverage
25777         instrumentation.
25778         * profiler.c (mono_profiler_load): Call g_module_build_path to
25779         generate the file name of the profiler library.
25780
25781 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25782
25783         * profiler.c, profiler.h, profiler-private.h: added basic block 
25784         coverage profiling API.
25785
25786 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
25787
25788         * reflection.c (mono_reflection_create_runtime_class): Add support
25789         for events in dynamically generated code.
25790
25791         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
25792         not allocated.
25793
25794 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25795
25796         * icall.c: when getting timezone info, return reasonable values if we
25797         can't get the actual data.
25798
25799 2003-06-14  Dick Porter  <dick@ximian.com>
25800
25801         * threads.c (start_wrapper): Remove the reference to the thread
25802         object in the TLS data, so the thread object can be finalized.
25803         This won't be reached if the thread threw an uncaught exception,
25804         so those thread handles will stay referenced :-( (This is due to
25805         missing support for scanning thread-specific data in the Boehm GC
25806         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
25807
25808 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
25809
25810         * reflection.c: ensure streams and tables are first allocated with
25811         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
25812
25813 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25814
25815         * icall.c: fixed GetElementType for byrefs (bug# 44792).
25816
25817 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
25818
25819         * reflection.c (mono_reflection_create_runtime_class): Add support for
25820         properties to dynamically created classes.
25821         * reflection.c: Fix a few places where non-MonoObjects were inserted
25822         into the tokens hashtable.
25823
25824 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25825
25826         * object.c: some support to handle out of memory exceptions.
25827
25828 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
25829
25830         * marshal.c (mono_marshal_get_native_wrapper): support reference
25831         return types
25832
25833 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25834
25835         * object.h, object.c: more portability stuff from Bernie Solomon.
25836         Unexport mono_object_allocate(). Added mono_object_unbox ().
25837         Set exitcode when an unhandled exception is thrown.
25838
25839 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
25840
25841         * marshal.c (mono_marshal_get_native_wrapper): use custom
25842         marshaler for return types.
25843
25844 2003-06-10  Dick Porter  <dick@ximian.com>
25845
25846         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
25847         ip_mreq is available
25848
25849 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25850
25851         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
25852         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
25853         by Bernie Solomon <bernard@ugsolutions.com>.
25854
25855 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
25856
25857         * gc.c (mono_gc_init): Avoid error message on shutdown when
25858         GC_DONT_GC=1 is used.
25859
25860         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
25861         New icall to return the GUID of a module.
25862
25863 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25864
25865         * class.c: ensure instance size always includes the parent's size
25866         even whem class size is set explicitly (fixes bug#44294).
25867
25868 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25869
25870         * profiler.h, profiler.c: made the simple profiler thread-safe,
25871         get more accurate timing info. Allow the loading of an
25872         externally-developed profiler module.
25873
25874 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
25875
25876         * marshal.c (mono_marshal_get_native_wrapper): improved
25877         class/byref arguments.
25878         (mono_marshal_get_native_wrapper): better string marshaling support.
25879
25880 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25881
25882         * class.c: ensure .pack and .size are handled correctly and
25883         simplified layout of static fields.
25884
25885 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25886
25887         * appdomain.c
25888         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
25889
25890         * loader.c (mono_lookup_pinvoke_call): look for modules in the
25891         current directory (fix bug 44008)
25892
25893 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
25894
25895         * marshal.c (mono_marshal_get_native_wrapper): started support for
25896         custom marshalers.
25897         (mono_delegate_to_ftnptr): consider marshalling specifications
25898
25899 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25900
25901         * reflection.c, reflection.h: emit custom marshal info.
25902
25903 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25904
25905         * object.c: free the GError.
25906         * icall.c: added CloseEvent_internal.
25907         * threads.[ch]:
25908         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
25909         call.
25910
25911 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
25912
25913         * loader.c (mono_method_get_signature): Add support for dynamic
25914         assemblies.
25915
25916 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25917
25918         * reflection.c: fixed bug #43905.
25919
25920 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25921
25922         * class.c, domain.c, icall.c, metadata.h, object.h: support for
25923         handling TypedReference and ArgIterator.
25924         * loader.c, loader.h: added function to get signature at call site.
25925
25926 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25927
25928         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
25929         data readonly. Buglets and warning fixes. Some MethodSpec support.
25930
25931 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25932
25933         * class.h, class.c, object.c: remove relative numbering support.
25934
25935 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
25936
25937         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
25938         free the string, until we get a chance to fix Gtk#
25939
25940 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25941
25942         * marshal.c: revert last patch.
25943
25944 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25945
25946         * icall.c: updates for new mono_class_vtable() not calling
25947         the type constructor anymore.
25948
25949 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25950
25951         * object.h, object.c: separate vtable creation from type
25952         initialization. Make running the .cctor thread safe.
25953
25954 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25955
25956         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
25957
25958 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25959
25960         * loader.c (mono_get_method): consider calling convention
25961
25962 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
25963
25964         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
25965         to return the invisible global type for a module.
25966
25967         * reflection.c (mono_image_build_metadata): Emit global fields too.
25968
25969 2003-05-20  Peter Williams  <peterw@ximian.com>
25970
25971         * loader.c (mono_lookup_internal_call): Add a few newlines.
25972
25973 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
25974
25975         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
25976         literal strings.
25977
25978         * appdomain.c (set_domain_search_path): Recalculate search path when
25979         AppDomainSetup.PrivateBinPath changes.
25980
25981         * object.c (mono_class_compute_gc_descriptor): It turns out some
25982         parts of the class libs (like System.Thread) holds pointers to
25983         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
25984         to treat native int a pointer type here.
25985         
25986 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
25987
25988         * appdomain.h, domain.c: add hashtable for jump target resolution.
25989
25990 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
25991
25992         * reflection.h reflection.c icall.c: Added new icalls 
25993         GetManifestResourceInfoInternal, GetModulesInternal and support
25994         infrastructure.
25995
25996 2003-05-16  Dick Porter  <dick@ximian.com>
25997
25998         * icall.c:
25999         * file-io.h:
26000         * file-io.c: Implement System.IO.MonoIO::GetTempPath
26001
26002 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
26003
26004         * object.c: mono_store_remote_field: little fix to previous patch.
26005
26006 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26007
26008         * class.c: add constructors to array classes.
26009         * icall.c: special case array construction for InternalInvoke (),
26010
26011 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26012
26013         * class.h class.c reflection.c object.c: Added support for field
26014         defaults in dynamically generated classes.
26015
26016 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26017
26018         * reflection.c: properly encode charset for ddlimport.
26019
26020 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26021
26022         * threads.c: allow compiling without GC.
26023
26024 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26025
26026         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26027         handling of thread static data.
26028
26029 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26030
26031         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26032
26033 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26034
26035         * class.c (mono_array_class_get): always set the serializable flags
26036         (mono_array_class_get): always set the SEALED attribute for array types
26037
26038 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26039
26040         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26041         attributes (fix for bug 42021).
26042
26043 2003-05-12  Dick Porter  <dick@ximian.com>
26044
26045         * gc.c: Don't run finalizers when the finalizer thread is
26046         finishing up, because the default domain has already been
26047         destroyed.
26048
26049 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26050
26051         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26052         value is null, we should throw an exception.   This is slightly
26053         different than the other conventions used for the constructor.
26054
26055 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26056
26057         * socket-io.c: fixed windows build.
26058
26059 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26060
26061         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26062
26063 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26064
26065         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26066         compilers.
26067
26068 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26069
26070         * class.c (mono_class_layout_fields): Add experimental GC aware
26071         auto layout facility. Requires class library changes to work correctly.
26072
26073         (mono_class_setup_vtable): Avoid overriding explicit interface
26074         method implementations. Fixes iface3.exe test.
26075
26076         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26077         object reference.
26078         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26079         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26080
26081         * metadata.h: Add new type classification macro which determines
26082         whenever the type holds an object reference.
26083
26084 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26085
26086         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26087
26088 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26089
26090         * gc.c (finalizer_thread): Work around a GC bug.
26091
26092 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26093
26094         * marshal.c (emit_struct_conv): allow unions
26095
26096         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26097
26098 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26099
26100         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26101
26102 2003-05-06  Martin Baulig  <martin@ximian.com>
26103
26104         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26105
26106 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26107
26108         * socket-io.c:
26109         (Select_internal): allow NULLs, don't create arrays if not needed.
26110         Coupled with Socket.cs changes.
26111
26112         * threadpool.c:
26113         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26114         register a finalizer for it that will close the semaphore handle. This
26115         fixes the leak and make Lupus' test run with > 4080 loops.
26116
26117 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26118
26119         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26120         Jerome Laban (bug #42287)
26121
26122 2003-05-02  Martin Baulig  <martin@ximian.com>
26123
26124         * debug-mono-symfile.h
26125         (MonoSymbolFile): Moved declaration into mono-debug.h.
26126         (MonoDebugMethodJitInfo): Likewise.
26127         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26128         argument.
26129         (_mono_debug_address_from_il_offset): Take a
26130         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26131
26132         * mono-debug.h
26133         (MonoDebugDomainData): New struct.
26134         (mono_debug_get_domain_data): New function.
26135         (mono_debug_add_method): Take an additional `MonoDomain *'
26136         argument.
26137         (mono_debug_source_location_from_address): Likewise.
26138         (mono_debug_il_offset_from_address): Likewise.
26139         (mono_debug_address_from_il_offset): Likewise.
26140
26141 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26142
26143         * reflection.c: one more check for null type in custom attrs.
26144
26145 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26146
26147         * reflection.c: avoid warning (comparison is always false due to limited
26148         range of data type).
26149
26150 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26151
26152         * icall.c: throw an exception in Type.GetField if the argument 'name'
26153         is NULL.
26154
26155 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26156
26157         * reflection.c: fixed handling of enums in named arguments to custom
26158         attributes (bug #42123).
26159
26160 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26161
26162         * reflection.c: use the right array element type and handle
26163         a null for a Type argument, too.
26164
26165 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26166
26167         * reflection.c: handle arrays as arguments to custom attributes.
26168
26169 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26170
26171         * reflection.c: handle a string value in a custom attr
26172         ctor that takes an object.
26173
26174 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26175
26176         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26177         (fix bug #42063)
26178
26179 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26180
26181         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26182
26183 2003-04-27  Martin Baulig  <martin@ximian.com>
26184
26185         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26186         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26187         MONO_DEBUGGER_EVENT_BREAKPOINT.
26188         (mono_breakpoint_trampoline_code): Removed.
26189         (mono_debugger_event_handler): The last argument is now a
26190         `guint32'.
26191         (mono_debugger_insert_breakpoint_full): Removed the
26192         `use_trampoline' argument.
26193         (mono_debugger_method_has_breakpoint): Likewise.
26194         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26195         mono_debugger_breakpoint_callback(); take the method and
26196         breakpoint number as arguments.
26197
26198 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26199
26200         * metadata.c: fix off by one when loading parameters attributes.
26201
26202 2003-04-24  Martin Baulig  <martin@ximian.com>
26203
26204         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26205
26206 2003-04-24  Martin Baulig  <martin@ximian.com>
26207
26208         * mono-debug-debugger.c: Moved all code which interacts with the
26209         Mono Debugger here.
26210
26211         * debug-mono-symfile.c: This code now just deals with the symbol
26212         file itself, the debugger code is now in mono-debug-debugger.c.
26213
26214 2003-04-23  Martin Baulig  <martin@ximian.com>
26215
26216         * mono-debug.c (mono_debug_source_location_from_il_offset):
26217         New method; like mono_debug_source_location_from_address(), but
26218         takes an IL offset instead of a machine address.
26219
26220 2003-04-23  Martin Baulig  <martin@ximian.com>
26221
26222         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26223         `line' field; this is now computed by the debugger.
26224
26225 2003-04-23  Martin Baulig  <martin@ximian.com>
26226
26227         * mono-debug.[ch]: New files.  This is the new debugging interface.
26228
26229         * mono-debug-debugger.[ch]: New files.  Moved all code which
26230         interacts with the Mono Debugger here.
26231
26232 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26233
26234         * domain.c (mono_init): initialize mono_defaults.monitor_class
26235
26236 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26237
26238         * reflection.c (method_encode_code): Add a spicy exception to help
26239         future compiler authors.
26240
26241 2003-04-21  Martin Baulig  <martin@ximian.com>
26242
26243         * icall.c
26244         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26245         Make this work with relative pathnames; g_filename_to_uri() needs
26246         an absolute filename.
26247
26248 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26249
26250         * icall.c: Track name changes in Object and ValueType.
26251
26252 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26253
26254         * metadata.c (mono_type_stack_size): size should be a multiple of
26255         sizeof (gpointer)
26256
26257 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26258
26259         * gc.c:
26260         (internal_domain_finalize): moved into mono_domain_finalize. No need
26261         to create another thread because the finalizers will be run in the
26262         finalizer thread.
26263         
26264         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26265         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26266         to be run (MS does this too).
26267
26268 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26269
26270         * object.c (mono_class_compute_gc_descriptor): Update comment.
26271
26272         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26273
26274         * image.h: Add synchronized wrapper cache.
26275
26276         * image.c (do_mono_image_open): Initialize cache.
26277
26278         * reflection.c (create_dynamic_mono_image): Initialize cache.
26279
26280 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26281
26282         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26283         ves_icall_System_Buffer_ByteLengthInternal.
26284
26285 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26286
26287         * reflection.c: setup klass->nested_in earlier. Allow
26288         a dash in the assembly name.
26289
26290 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26291
26292         * metadata.c (mono_type_to_unmanaged): dont access
26293         type->data.klass for MONO_TYPE_OBJECT
26294         (mono_type_to_unmanaged): consider System.Delegate class
26295
26296 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26297
26298         * class.c: just setup supertypes in the proper place instead of
26299         initializing the full element class for arrays.
26300
26301 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26302
26303         * class.c: ensure the element class of arrays is initialized.
26304         Setup the supertype info for array classes, too.
26305
26306 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26307
26308         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26309
26310 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26311
26312         * Makefile.am: re-added -m option when running cygpath. This way,
26313         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26314         separator.
26315         * mono-config.c: same codepath for locating mono config file for WIN32
26316         and the rest.
26317         * assembly.c: if mono_assembly_setrootdir is called, don't override
26318         the value set.
26319
26320 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26321
26322         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
26323         MONO_ASSEMBLIES variable.
26324
26325 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
26326
26327         * icall.c: added Assembly::GetNamespaces() icall.
26328
26329 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26330
26331         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
26332
26333 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
26334
26335         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
26336         * object.c: fixed bug in the construction of vtable for proxies
26337
26338 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
26339
26340         * object.c (mono_array_new): Mark mono_array_new as an icall.
26341
26342 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26343
26344         * class.c: fixed test for public method when overriding interfaces.
26345         Closes bug #40970.
26346
26347 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26348
26349         * appdomain.h, domain.c: added mono_domain_foreach() to
26350         be able to access the currently loaded appdomains.
26351         * object.c: make string interning work across sppdomains.
26352         Mark some functions for use as icalls.
26353
26354 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26355
26356         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
26357
26358         * reflection.h reflection.c: Allocate long living data using 
26359         GC_MALLOC_ATOMIC so the collector does not need to scan it.
26360
26361         * reflection.c: Double the allocation size in streams instead of
26362         increasing it, to prevent unneccesary copying on large assemblies.
26363         
26364         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
26365         creation if the assembly does not have the Run flag set.
26366
26367 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
26368
26369         * class.h: avoid the C++ keywords in header files (Jerome Laban
26370         spotted and fixed this).
26371
26372 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26373
26374         * object.c:
26375         (mono_unhandled_exception): fill in the arguments for the
26376         UnhandledException event. Only trigger that event for the default
26377         domain (as MS does).
26378
26379 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
26380
26381         * object.c: Improve typed allocation stuff based on suggestions from
26382         Paolo. Also turn it on if the GC library supports it.
26383
26384 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26385
26386         * object.c object.h class.h: Added experimental typed allocation
26387         facility using the interfaces in gc_gcj.h.
26388
26389         * os/gc_wrapper.h: Added new include files.
26390         
26391 2003-04-03  Martin Baulig  <martin@ximian.com>
26392
26393         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
26394         which is not yet enabled by default.
26395
26396         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
26397         functions.
26398         (mono_gc_lock, mono_gc_unlock): New static functions.
26399
26400         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
26401         functions; stop/start the world for the garbage collector.  This
26402         is using the windows API; we need to complete the SuspendThread()/
26403         ResumeThread() implementation in the io-layer to make this work on Unix.
26404         (mono_gc_push_all_stacks): New public function; tells the garbage
26405         collector about the stack pointers from all managed threads.
26406
26407 2003-04-03  Martin Baulig  <martin@ximian.com>
26408
26409         * object.h (MonoThread): Added `gpointer stack_ptr'.
26410
26411         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
26412
26413 2003-04-03  Martin Baulig  <martin@ximian.com>
26414
26415         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
26416
26417 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26418
26419         * reflection.c (typebuilder_setup_fields): Initialize field.first and
26420         field.last.
26421
26422 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
26423
26424         * loader.c (mono_lookup_internal_call): Report the corlib that is
26425         out of sync.
26426
26427 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
26428
26429         * icall.c (ves_icall_type_GetTypeCode): fixed check for
26430         System.DBNull (it's class not valuetype).
26431
26432 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26433
26434         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
26435         if the array method was already assigned a token (fixes bug#40646).
26436
26437 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
26438
26439         * reflection.c (mono_reflection_get_type): Attempt type resolve even
26440         if no assembly is given.
26441
26442 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
26443
26444         * metadata.h: Added the new tables.
26445
26446         * row-indexes.h: Added definitions for new tables.
26447
26448         * metadata.c: Add schemas for new tables, and add support for
26449         computing the sizes of them.
26450
26451         * class.c: Update for handling the new type cases.
26452
26453 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
26454
26455         * metadata.h (MONO_TYPE_IS_VOID): new macro
26456
26457 2003-03-31  Martin Baulig  <martin@ximian.com>
26458
26459         * threads.h (MonoThreadCallbacks): Added `thread_created'.
26460
26461         * threads.c (mono_thread_new_init): Call `thread_created' in the
26462         mono_thread_callbacks.
26463
26464 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
26465
26466         * loader.h: added marshalbyrefobject_class to mono_defaults
26467         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
26468         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
26469           generation of output parameters.
26470           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
26471         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
26472           contextbound and the target object belongs to the context of the caller.
26473         * object.h: added context and unwrapped_server variables in MonoRealProxy.
26474         * object.c: Implemented support for interfaces and abstract classes
26475           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
26476           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
26477
26478 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
26479
26480         * class.h class.c (mono_class_is_subclass_of): New function.
26481         
26482         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
26483         routines for most common case (calls from ArrayList::ToArray).
26484
26485         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
26486         routine so programs which call Environment::Exit() can be profiled.
26487
26488         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
26489         Added MONO_ARCH_SAVE_REGS.
26490
26491         * icall.c (ves_icall_type_is_subtype_of): Use new function.
26492
26493 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
26494
26495         * blob.h: Add a couple of new MonoType types definitions.
26496
26497         * tabledefs.h: Add a couple of new call convs.
26498
26499 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
26500
26501         * reflection.h (MonoReflectionDynamicAssembly): track changes in
26502         the layout of the class.
26503
26504         * reflection.c (alloc_table): double the size on overflow to avoid
26505         unnecessary copying.
26506
26507         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
26508         avoid filling out metadata tables and blobs. Also set mb->ilgen to
26509         null so it can be garbage collected.
26510         
26511 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
26512
26513         * reflection.c (mono_reflection_get_type): Return the resolved type
26514         only if it is in the assembly we searched.
26515
26516         * reflection.c (ensure_runtime_vtable): Initialize method slots.
26517
26518         * class.c (mono_class_setup_vtable): Set the slot of the overriding
26519         method.
26520
26521 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26522
26523         * appdomain.c:
26524         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
26525         the right one is 'file:///blah', but MS allows it.
26526         * assembly.c:
26527         (mono_assembly_open): allow 'file://blah'
26528
26529         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
26530
26531 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
26532
26533         * socket-io.c: fixes bug #40310.
26534
26535 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
26536
26537         * reflection.c (mono_reflection_parse_type): handle deeply nested
26538         types correctly.
26539
26540         * reflection.c (mono_image_create_token): Use unique token values
26541         since they will be put into a hash table.
26542
26543         * class.c (mono_class_setup_vtable): If a method occurs in more than
26544         one place in the vtable, and it gets overriden, then change the
26545         other occurances too.
26546
26547         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
26548         object as return type.
26549
26550 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26551
26552         * icall.c: Deleted "ToString" implementation for double and float
26553         because they are full implemented in managed code.
26554
26555 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26556
26557         * reflection.c, reflection.h: implemented and exported functions
26558         to retrieve info about custom attributes.
26559
26560 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26561
26562         * appdomain.c: moved Uri handling to assembly.c
26563         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
26564         work when using a file Uri in *nix and windows.
26565
26566         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
26567         GetReferencedAssemblies.
26568
26569 2003-03-18  Dick Porter  <dick@ximian.com>
26570
26571         * icall.c: Rename a couple of internal calls
26572
26573         * threads.c: Set the thread state to Stopped when a thread exits.
26574         Fixes bug 39377.
26575
26576 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
26577
26578         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
26579         New icall.
26580
26581         * object.c (mono_class_vtable): fix warning.
26582
26583 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
26584
26585         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
26586
26587         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
26588         memory.
26589         (method_encode_clauses): Create exception info structures in the right
26590         order.
26591         (mono_reflection_setup_internal_class): Initialize supertypes field.
26592
26593         * class.c object.c: Handle interfaces which implement other interfaces 
26594         correctly.
26595
26596         * class.h class.c: Move the supertypes array initialization code into 
26597         a separate function so it can be used for dynamic types too. Also call
26598         it earlier, in mono_class_init(), since it can be used before the
26599         type is initialized.
26600
26601 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26602
26603         * Makefile.am:
26604         * assembly.c:
26605         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
26606
26607         * appdomain.c:
26608         * appdomain.h:
26609         * marshal.c:
26610         * object.c: remove warnings.
26611
26612 2003-03-13  Martin Baulig  <martin@ximian.com>
26613
26614         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
26615         (MonoDebugLexicalBlockEntry): New types.
26616
26617         * debug-mono-symfile.c
26618         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
26619
26620 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26621
26622         * process.c: ret can be any non-zero value accroding to MS doc.
26623
26624 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
26625
26626         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
26627         fixing a warning for a miss-used prototype, would have cause
26628         random memory corruption.
26629
26630 2003-03-07  Martin Baulig  <martin@ximian.com>
26631
26632         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
26633         getting really annoying ....
26634
26635 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
26636
26637         * reflection.c (fixup_method): added support for array methods.
26638
26639 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
26640
26641         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
26642         (pointed out by Michael Adams).
26643
26644 2003-03-04  Dick Porter  <dick@ximian.com>
26645
26646         * icall.c: Temporarily reverted the Double and Single ToString()
26647         change, because it broke nunit.
26648
26649 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
26650
26651         * object.h, threads.h: make include files compatible with C++
26652         (patch by Jerome Laban <jlaban@wanadoo.fr>).
26653
26654 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26655
26656         * icall.c: Erased ToString helper functions for Double and Single.
26657         Now, that implementations ar all in managed code (Double and Single
26658         Formatters).
26659
26660 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
26661
26662         * appdomain.c: Added method for initializing the default context of
26663         a domain. Added internal call for getting the default context.
26664         * appdomain.h: Added context variable in MonoDomain struct.
26665         * domain.c: mono_domain_set also sets the default context of the domain
26666         * icall.c: Mapped internal method InternalGetDefaultContext.
26667         * object.c: mono_object_get_virtual_method returns always a remoting
26668         wrapper if the object is a transparent proxy.
26669         mono_runtime_invoke_array: when creating an object by calling the
26670         constructor, if the created object is a proxy, then the constructor should
26671         be called using the a remoting wrapper.
26672
26673 2003-03-03  Dick Porter  <dick@ximian.com>
26674
26675         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
26676         variable so it compiles on solaris.  Problem spotted by
26677         Christopher Taylor <ct@cs.clemson.edu>
26678
26679 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26680
26681         * appdomain.c:
26682         (get_info_from_assembly_name): don't leak value.
26683
26684         * icall.c:
26685         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
26686         result.
26687
26688 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
26689
26690         * assembly.c: export mono_image_load_references ().
26691         * class.c: handle function pointers. mono_class_from_name() now
26692         supports nested type names directly.
26693
26694 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
26695
26696         * reflection.h reflection.c: Encode already created dynamic methods 
26697         and fields correctly as a DEF instead of a REF.
26698
26699         * reflection.c: Get rid of the force_ref argument to 
26700         mono_image_typedef_or_ref since it was wrong in the first place.
26701
26702         * string-icalls.c: add error checking to string constructors according
26703         to the MSDN docs.
26704
26705         * reflection.c: Emit types in the order their TypeBuilders were 
26706         created. Previously, a new table index was assigned to each type before
26707         the tables were emitted. This was wrong because the signature blob
26708         might already refer to a type by its original table index.
26709
26710 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
26711
26712         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
26713         change.
26714         
26715 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26716
26717         * Makefile.am: make assemblies dir have \ instead of / on windows.
26718
26719 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
26720
26721         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
26722         iterate over the NESTEDCLASS table using a linear search since the
26723         table is not guaranteed to be sorted by the secondary key.
26724
26725         * class.c (mono_class_create_from_typedef): fixed up call to
26726         mono_metadata_nesting_typedef.
26727         
26728 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
26729
26730         * marshal.c (mono_string_to_byvalstr): clear the memory as
26731         suggested by Jerome Laban <jlaban@wanadoo.fr>
26732
26733 2003-02-26  Dick Porter  <dick@ximian.com>
26734
26735         * process.c: Cope with padding in .rsrc blocks
26736
26737 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26738
26739         * metadata.h: reverted the filter_len change, it breaks reflection
26740         
26741 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26742
26743         * metadata.h: added a new field to store the filter_len
26744         
26745
26746 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
26747
26748         * reflection.c: handle custom attributes for types and members
26749         created with Reflection.Emit (bug#38422).
26750
26751 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
26752
26753         * reflection.c: define RTSpecialName automatically for constructors for
26754         compatibility with MS.NET.
26755
26756         * reflection.c (mono_reflection_create_runtime_class): initialize
26757         nested_in field of dynamically created classes.
26758
26759 2003-02-22  Martin Baulig  <martin@ximian.com>
26760
26761         * debug-mono-symfile.h: Incremented version number.
26762
26763 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
26764
26765         * object.h icall.c process.c: fix warnings.
26766
26767 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
26768
26769         * appdomain.h appdomain.c:
26770         (mono_domain_try_type_resolve): split the 
26771         name_or_tb argument into a name and a tb argument.
26772         (mono_domain_has_type_resolve): new function to check whenever the
26773         application has registered a TypeResolve event handler.
26774         
26775         * icall.c reflection.h reflection.c: move the type resolve logic into
26776         mono_reflection_get_type () so it will be invoked when 
26777         Assembly::GetType () is called.
26778
26779         * reflection.c:
26780         (mono_reflection_get_type): renamed to get_type_internal.
26781         (mono_reflection_get_type): fixed type name generation so it works 
26782         for nested types too.
26783         (mono_reflection_get_type): call has_type_resolve () to avoid the 
26784         costly type name generation if there is no resolve event handler.
26785
26786 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26787
26788         * class.c, image.c: load exported types from file references.
26789
26790 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
26791
26792         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
26793           used to cache the managed methods used to create proxies and make 
26794           remote invocation of methods.
26795         * class.h: Added in MonoVTable a flag to indicate that a class needs 
26796           to be remotely created.
26797         * object.c: Modified the method mono_class_vtable(). It now initializes 
26798           the remote flag of the vtable. Modified mono_object_new_specific(), 
26799           so now it checks the remote flag.
26800         * icall.c: Added a couple of internal methods, one for enabling instance 
26801           creation interception for a type, and one for creating objects bypassing
26802           the remote check.
26803
26804 2003-02-18  Martin Baulig  <martin@ximian.com>
26805
26806         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
26807         New interncall to get a method's metadata token.
26808
26809         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
26810         New interncall for the debugger.
26811
26812 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
26813
26814         * class.c (mono_class_setup_vtable): allocate supertype array
26815
26816 2003-02-18  Martin Baulig  <martin@ximian.com>
26817
26818         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
26819
26820 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26821
26822         * reflection.c:
26823         (assembly_name_to_aname): jump over unknown properties (i've found
26824         something like: 'type, assembly, version=xxx, custom=null, public...',
26825         so now will ignore custom=null and still get the rest of the values).
26826
26827 2003-02-17  Dick Porter  <dick@ximian.com>
26828
26829         * threads.c: Have Thread.Start() wait for a semaphore to signal
26830         that the thread has set up all its local data.  This fixes bug
26831         34323, where Abort() raced the new thread's TLS data.
26832
26833         Also removes the handle_store() call from start_wrapper, because
26834         threads are now always created suspended and there is no longer a
26835         race between the parent and child threads to store the info.
26836
26837 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
26838
26839         * image.c: explain the #- heap issue in a message, hopefully
26840         avoiding FAQs on mono-list.
26841
26842 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26843
26844         * icall.c:
26845         (GetEntryAssembly): if the domain has not invoked
26846         AppDomain.ExecuteAssembly yet, return the assembly of the default
26847         AppDomain.
26848
26849 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
26850
26851         * class.c (mono_ldtoken): make it work in dynamic assemblies.
26852
26853 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
26854
26855         * metadata.c, reflection.c: simple speedup to type hash
26856         and equals code.
26857
26858 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
26859
26860         * image.c, image.h, class.c, assembly.c: move module loading
26861         to MonoImage. When loading metadata, consider alignemnet from
26862         the start of metadata, not from the metadata address in memory.
26863
26864 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
26865
26866         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
26867         AssemblyBuilder objects. Factored out custom attribute creation into
26868         a separate function.
26869         (create_custom_attr): new function to create custom attributes.
26870
26871 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
26872
26873         * Makefile.am: Got tired of typing the full pathname to pedump.
26874         Until there is another option, am installing this.
26875
26876 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
26877
26878         * class.c (class_compute_field_layout): always set field->parent 
26879         (mono_ldtoken): use mono_defaults.fieldhandle_class;
26880
26881 2003-02-11  Dick Porter  <dick@ximian.com>
26882
26883         * threads-types.h:
26884         * monitor.c: Rewrote Monitor, making lock much faster and
26885         Pulse/Wait work as specified.  Also uses much fewer handles, and only
26886         creates them as needed.
26887
26888         * exception.c: Added SynchronizationLockException
26889
26890         * threads.c: Deleted old Monitor implementation.  The new one is
26891         in a new file.
26892
26893 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
26894
26895         * class.c: handled TypedReference type code. Set the correct size for
26896         class data. Setup interface_offsets for interface classes, too.
26897
26898 2003-02-09  Martin Baulig  <martin@ximian.com>
26899
26900         * debug-mono-symfile.h: Reflect latest symbol writer changes.
26901
26902 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
26903
26904         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
26905         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
26906         * object.c: fixed mono_object_get_virtual_method () for interfaces.
26907         * verify.c: check for code that runs after the end of the method.
26908
26909 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26910
26911         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
26912         "System.Math::Round2".
26913         * sysmath.h: Added Floor, Round and Round2 definitions.
26914         * sysmath.c: Modified certain functions that were not 100% compliant
26915         with MS.NET (math precision) and added the implementation of Floor,
26916         Round and Round2.
26917
26918 2003-02-07  Martin Baulig  <martin@ximian.com>
26919
26920         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
26921
26922 2003-02-07  Martin Baulig  <martin@ximian.com>
26923
26924         * debug-mono-symfile.c: Reflected latest symwriter changes.
26925         (mono_debug_create_mono_symbol_file): Removed.
26926         (mono_debug_open_mono_symbol_file): Take an argument which
26927         specifies whether to create a dynamic symbol file.
26928
26929 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
26930
26931         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
26932
26933 2003-02-05  Martin Baulig  <martin@ximian.com>
26934
26935         * reflection.c (mono_image_build_metadata): Make this public,
26936         protect it against being called multiple times, don't create
26937         resources and don't build the compressed metadata here.
26938         (mono_image_create_pefile): Do this here.
26939
26940         * icall.c
26941         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
26942
26943 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26944
26945         * socket-io.c: fixed bug #36322.
26946
26947 2003-02-06  Piers Haken <piersh@friskit.com>
26948
26949         * appdomain.[ch]:
26950         * class.h:
26951         * debug-mono-symfile.c:
26952         * icall.c:
26953         * loader.c:
26954         * mono-config.c:
26955         * monosn.c:
26956         * reflection.c:
26957         * socket-io.c: warning cleanups
26958
26959 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
26960
26961         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
26962         function. works like remoting invoke, but does a check for the Proxy first.
26963
26964 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
26965
26966         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
26967
26968 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
26969
26970         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
26971         array of pointers.
26972         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
26973         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
26974
26975         * object.c (mono_store_remote_field_new): used by the new jit
26976         instead of mono_store_remote_field
26977         (mono_load_remote_field_new): used by the new jit
26978         instead of mono_load_remote_field
26979
26980 2003-02-05  Patrik Torstensson
26981
26982         * appdomain.c: changed unload to take the domain id instead
26983         of domain
26984         
26985         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
26986
26987
26988 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26989
26990         * appdomain.c: don't look for assemblies in ApplicationBase if
26991         PrivateBinPathProbe is set.
26992
26993 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26994
26995         * object.c: make the first argument in main_args contain the absolute
26996         path to the assembly. Fixes bug #37511.
26997
26998 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26999
27000         * icall.c: get correct UTC offset for countries not using daylight
27001         time saving. Fixes bug #30030.
27002
27003 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27004
27005         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27006         and 1 are the family).
27007
27008 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27009
27010         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27011
27012         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27013
27014 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27015
27016         * reflection.c: added support for SignatureHelper tokens, which is
27017         needed by the Calli opcode.
27018
27019         * reflection.h: track changes to SignatureHelper class.
27020
27021         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27022
27023 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27024
27025         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27026
27027 2003-02-03  Patrik Torstensson
27028         * appdomain.[c|h], domain.c : 
27029          - Added support for getting a domain via domain id
27030          - Support for setting and getting domain from System.AppDomain 
27031            (used in cross appdomain channel)
27032          - Added support for get/set for a MonoAppContext on a thread 
27033            (Context class in System.Runtime.Remoting.Contexts),
27034          - Removed hack in Get/SetData and ExecuteAssembly.
27035         
27036         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27037         the managed world to get control when a proxy is created.
27038
27039         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27040         
27041 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27042
27043         * icall.c
27044         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27045         Populate the codebase field as well.
27046
27047 2003-02-02  Martin Baulig  <martin@ximian.com>
27048
27049         * debug-mono-symfile.c
27050         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27051         (mono_debug_symfile_add_method): Allow interncalls.
27052
27053 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27054
27055         * icall.c: throw parse exception if strtod fails or the string is empty.
27056
27057 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27058
27059         * marshal.c: handle object type separately from defined
27060         class types.
27061
27062 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27063
27064         * marshal.c: handle NATIVE_LPSTR for strings when it's
27065         explicitly specified.
27066
27067 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27068
27069         * reflection.c, reflection.h, icall.c: setup the reflection
27070         handle cache for ModuleBuilders and AssemblyBuilders.
27071
27072 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27073
27074         * reflection.c (reflection_methodbuilder_to_mono_method): set
27075         pinvoke flag
27076
27077 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27078
27079         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27080
27081 2003-01-29  Dick Porter  <dick@ximian.com>
27082
27083         * threads.c: No need for the fake_thread kludge now that Thread
27084         doesn't run a class constructor
27085         
27086 2003-01-29  Dick Porter  <dick@ximian.com>
27087
27088         * threads.c: Use g_direct_hash instead of the rather bogus
27089         g_int_hash
27090
27091 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27092
27093         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27094         (fix pinvoke12.exe)
27095         (mono_marshal_get_struct_to_ptr): generate valid IL code
27096         (mono_marshal_get_ptr_to_struct): generate valid IL code
27097         (*): correctly set sig->pinvoke, we need to memdup the signature
27098         to do that
27099
27100 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27101
27102         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27103         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27104
27105 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27106
27107         * profiler.c: provide more callers information.
27108
27109 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27110
27111         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27112
27113         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27114
27115         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27116
27117 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27118
27119         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27120         exception instead of going into an infinite loop on dates which it 
27121         can't yet handle.
27122
27123         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27124         out-of-range exception if needed.
27125
27126         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27127         an implementation for an interface method and to override an inherited
27128         method at the same time. 
27129         Imagine a scenario when a virtual method is used to override a
27130         virtual abstract method in a parent class, and this same method 
27131         provides an implementation for an method inherited from an interface. 
27132         In this case, the interface resolution code will set im->slot, which 
27133         means that the virtual method override pass will skip this method 
27134         which means a pointer to the abstract method inherited from the parent
27135         will remain in the vtable of this non-abstract class.
27136
27137         * class.c: (mono_class_setup_vtable): continue search for a real 
27138         method if only an abstract method is found.     
27139
27140 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27141
27142         * reflection.c: add size to encoding for ByValStr and ByValArray
27143         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27144
27145 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27146
27147         * class.c (mono_class_setup_vtable): pass the override info as an
27148         argument.
27149
27150         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27151         correctly.
27152         
27153         * reflection.c (ensure_runtime_vtable); add support for method 
27154         overrides.
27155         
27156 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27157
27158         * reflection.c (resolution_scope_from_image): Hack to work to work with
27159         dynamic assemblies.
27160
27161         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27162         added a 'force_ref' argument to force this function to allways return 
27163         a TypeRef. This is needed by mono_image_get_memberref_token ().
27164         
27165 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27166
27167         * reflection.c (mono_image_get_type_info): interfaces really don't have
27168         a parent.
27169
27170         * reflection.c (mono_image_basic_init): fill out missing fields of
27171         image structure.
27172
27173         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27174         dynamic assemblies. This is required so dynamic assemblies show up in
27175         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27176         Type::GetType() etc. This is consistent with MS behaviour.
27177
27178         * image.c image.h reflection.c: add newly created classes to the name 
27179         cache so mono_class_get () will find them.      
27180
27181 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27182
27183         First part of changes to get IKVM.NET running under mono.
27184         
27185         * appdomain.h, appdomain.c: added new function 
27186         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27187         This function will call AppDomain::DoTypeResolve to do the actual work.
27188
27189         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27190         moved existing code dealing with dynamic tokens to a new function 
27191         called mono_reflection_lookup_dynamic_token (). This function will 
27192         raise TypeResolve events when appropriate. Since reflection.c is not 
27193         part of libmetadata, a new hook function called 
27194         mono_lookup_dynamic_token() is added to class.c which will call this.
27195
27196         * assembly.h assembly.c: make the invoke_load_hook function public,
27197         so it can be called for dynamic assemblies.
27198
27199         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27200
27201         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27202         type isn't found.
27203
27204         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27205         MonoGHashTable, since it contains pointers to objects which the GC 
27206         needs to track.
27207
27208         * assembly.c (search_loaded): remove unused variable.
27209         
27210 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27211
27212         * object.c: fixed issue exposed by gcc-generated IL programs
27213         that use RVA data for pointers.
27214
27215 2003-01-25  Martin Baulig  <martin@ximian.com>
27216
27217         * threads.c (start_wrapper): Moved the initialization of
27218         `start_func' above the mono_new_thread_init() call to which we
27219         pass it as argument.
27220
27221 2003-01-24  Martin Baulig  <martin@ximian.com>
27222
27223         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27224         the MonoThread pointer.
27225
27226 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27227
27228         * icall.c: Rename `PowImpl' to Pow.
27229
27230 2003-01-23  Dick Porter  <dick@ximian.com>
27231
27232         * threads.c (start_wrapper): Create a Thread object if needed, so
27233         the Main() thread can do the class initialisation in a subthread
27234         that has been set up to allow managed code execution.
27235
27236         Pass the thread ID instead of the MonoThread pointer to the thread
27237         start and attach callbacks.  This change is required, because the
27238         jit thread start callback must be called _before_ the Thread
27239         object can be created.
27240         
27241         (mono_thread_init): Removed much object creation code that is no
27242         longer needed.  No managed code is called from here now.
27243
27244         * object.c (mono_runtime_exec_managed_code): Create a subthread
27245         for Main, and call back to the runtime to use it.
27246         Set the exit code when Main exits.
27247
27248         * gc.c: Make sure domain finalisation happens in a subthread.
27249         Re-enable threaded GC, fixing bug 31333 (again).
27250
27251         * environment.c: System.Environment internall calls (so far just
27252         ExitCode is here, the others are still in icall.c)
27253
27254         * appdomain.c (mono_runtime_cleanup): All threads running managed
27255         code should have finished before mono_runtime_cleanup() is
27256         reached, so no need to clean up threads.
27257
27258 2003-01-22  Martin Baulig  <martin@ximian.com>
27259
27260         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27261         `gpointer func' arguments.      
27262         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27263         but added `MonoThread *thread' argument.
27264         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27265
27266         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27267         and pass it to the mono_thread_start_cb callback.
27268         (mono_install_thread_callbacks): New public function to install a
27269         set of callbacks which are set by the debugger.
27270         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27271
27272 2003-01-22  Martin Baulig  <martin@ximian.com>
27273
27274         * Makefile.am: Install debug-mono-symfile.h.
27275
27276 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27277
27278         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27279
27280 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27281
27282         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27283         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27284         (mono_array_class_get): correctly set access levels of arrays
27285
27286 2003-01-20      Patrik Torstensson
27287         * image.h (MonoAssemblyName): changed major, minor, build, revision
27288         from signed to unsigned.
27289
27290 2003-01-20  sean kasun <skasun@azstarnet.com>
27291
27292         * reflection.c (load_cattr_value): Now this handles
27293         MONO_TYPE_SZARRAY.  Fixes bug #35629
27294
27295 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27296
27297         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27298         integer value
27299
27300 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27301
27302         * decimal.c: fixed bug #26056.
27303
27304 2003-01-17  Martin Baulig  <martin@ximian.com>
27305
27306         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27307
27308 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27309
27310         * exception.[ch]:
27311         (mono_get_exception_type_initialization): new function.
27312
27313         * object.c: throw a TypeInitializationException when an exception is
27314         thrown invoking the class constructor.
27315
27316 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27317
27318         * reflection.c: fixed attribute reading.
27319
27320 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27321
27322         * icall.c:
27323         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
27324         provided, look for the type in the calling assembly and then in
27325         mscorlib; if the assembly name is provided, only try that one.
27326
27327 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
27328
27329         * object.c: register the vtable before there is a chance it's
27330         queried again recursively.
27331
27332 2003-01-13  Duncan Mak  <duncan@ximian.com>
27333
27334         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
27335         gc-internal.h. 
27336         
27337 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
27338
27339         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
27340
27341 2003-01-11  Martin Baulig  <martin@ximian.com>
27342
27343         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
27344         this to 20 for the release.
27345
27346 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
27347
27348         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
27349
27350         * loader.c (mono_method_get_marshal_info): bug fix
27351
27352         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
27353         structures with explicit layout
27354
27355 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27356
27357         * profiler.c: made the output more readable (and sorted). 
27358         Added caller information for the allocation profiler.
27359
27360 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
27361
27362         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
27363
27364 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27365
27366         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
27367         to get value types.
27368         
27369 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
27370
27371         * object.c, profiler.h, profiler.c, profiler-private.h:
27372         Added object allocation profiler.
27373
27374 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
27375
27376         * reflection.h, reflection.c: handle global methods.
27377         Compress blob entries.
27378
27379 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
27380
27381         * marshal.c: fix compilation.
27382
27383 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
27384
27385         * loader.c (mono_method_get_marshal_info): impl.
27386
27387         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
27388
27389 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27390
27391         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
27392         for reference types.
27393
27394 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
27395
27396         * loader.c: fixed off by one error in loaded parameter names.
27397
27398 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
27399
27400         * marshal.c (mono_marshal_get_icall_wrapper): like
27401         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
27402         instead of a MonoMethod.
27403
27404 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27405
27406         * decimal.c: fixed bug #36537.
27407
27408 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
27409
27410         * marshal.c: throw a missing method exception if a
27411         P/Invoke method is not found.
27412
27413 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27414
27415         * icall.c: allow a null this for constructors.
27416
27417 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
27418
27419         * icall.c: raise the proper exceptions if the arguments to the
27420         internal Invoke are incorrect.
27421
27422 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
27423
27424         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
27425
27426 2003-01-03  Martin Baulig  <martin@ximian.com>
27427
27428         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27429
27430 2002-12-31  Martin Baulig  <martin@ximian.com>
27431
27432         * debug-mono-symfile.c: Completely rewrote the type section.
27433         Instead of using individual malloc()ed fields, we use one big
27434         continuous memory area and offsets into this area.
27435         See the comments in the source code for details.
27436
27437 2002-12-30  Martin Baulig  <martin@ximian.com>
27438
27439         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
27440
27441 2002-12-30  Martin Baulig  <martin@ximian.com>
27442
27443         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
27444         line number table in this data blob instead of using an external
27445         pointer.
27446
27447 2002-12-28  Martin Baulig  <martin@ximian.com>
27448
27449         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27450
27451 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
27452
27453         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
27454         as a boxed return type.
27455
27456 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
27457
27458         * appdomain.c
27459         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
27460         g_build_filename to properly get separators on the filename created.
27461
27462         * object.h: Small change, introduce MonoMarshalByRefObject to
27463         track the layout of that structure in the C# universe as we make
27464         changes there.
27465
27466 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
27467
27468         * object.c: removed assert to allow static fields on interfaces.
27469         * loader.c: a TypeSpec may be used for any type, not just arrays.
27470
27471 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27472
27473         * class.c, class.h: added mono_class_array_element_size ().
27474         Ignore static methods in interfaces.
27475
27476 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27477
27478         * threads.c: fixed the build under cygwin.
27479
27480 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27481
27482         * reflection.c: handle nullref constants. Allocate keys for
27483         reflection handles with the GC.
27484
27485 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27486
27487         * threads.c, threads.h: added mono_thread_get_abort_signal()
27488         to get a suitable signal for thread abort.
27489
27490 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27491
27492         * metadata.c: fix handling of ExportedType table.
27493
27494 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27495
27496         * icall.c: added WriteWindowsDebugString internal call.
27497
27498 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27499
27500         * reflection.h: added fields to match C# implementation.
27501
27502 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27503
27504         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
27505
27506 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
27507
27508         * gc.h, gc-internal.h: Rename header for GC internal calls to
27509         gc-internal.h from gc.h as to not clash with Boehm GC having its
27510         header installed as <gc.h> in outside include paths.
27511         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
27512         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
27513
27514 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27515
27516         * icall.c: assign minor, build and revision in FillName.
27517
27518 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
27519
27520         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
27521         Added support for running code generated by Reflection.Emit.
27522
27523 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27524
27525         * appdomain.c: check for NULL argument in LoadFrom.
27526
27527 2002-12-10  Dick Porter  <dick@ximian.com>
27528
27529         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
27530
27531 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27532
27533         * appdomain.c: fix buglet when building exe file name.  Handle full
27534         assembly name (needed after latest changes to AssemblyName).
27535         * image.c:
27536         (mono_image_close): free some hashtables.
27537
27538 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
27539
27540         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
27541         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
27542         on some systems (redhat 7.3) 
27543
27544 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
27545
27546         * threads.c: delete the critical section of a sync block,
27547         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
27548
27549 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
27550
27551         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
27552
27553 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27554
27555         * appdomain.[ch]: handle the assembly preload event to try loading the
27556         assemblies using the paths we have in the current domain.
27557
27558         * assembly.[ch]: created an assembly preload hook that is called to try
27559         loading the assembly by other means that the ones provided here.
27560
27561         * domain.c: initialize the domain search path.
27562
27563         From now on, assemblies (TODO: except corlib and System) are loaded
27564         according to these rules when using mono_assembly_load ():
27565
27566                 1. It tries to load the assembly from the ApplicationBase
27567                 of the current domain appending .dll and .exe (TODO: have to
27568                 try loading from name/name.dll and name/name.exe).
27569
27570                 2. It tries the search path specified in PrivateBinPath for the
27571                 current domain (if any).
27572
27573                 3. Previous behavior.
27574
27575 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
27576
27577         * icall.c: implemented GetInterfaceMap() related icall.
27578         * domain.c, loader.h: load MethodInfo in mono_defaults.
27579
27580 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27581
27582         * gc.c: disable the finalizer thread for now, untill all the issues
27583         with it are resolved.
27584
27585 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27586
27587         * string-icalls.c: handle embedded nulls in string ctor when the
27588         length is specified.
27589
27590 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
27591
27592         * class.c: look for explicit interface implementation in parent
27593         classes, too.
27594
27595 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
27596
27597         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
27598
27599 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
27600
27601         * gc.c: protect handles with a critical section.
27602
27603 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27604
27605         * icall.c:
27606         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
27607         parameters. If no assembly specified, try getting the type from all
27608         the assemblies in the current domain, else, load the assembly and get
27609         the type from it.
27610
27611 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27612
27613         * marshal.c: applied patch from Aleksey Demakov that fixes
27614         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
27615
27616 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27617
27618         * icall.c: fixed get_location.
27619
27620 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
27621
27622         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
27623         declarations to make it work with older gcc. 
27624
27625         * loader.c (mono_get_method): set signature->pinvoke for native calls
27626
27627 2002-11-20  Dick Porter  <dick@ximian.com>
27628
27629         * threads.c (mono_thread_init): Set the main thread's handle
27630
27631 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
27632
27633         * gc.c: allow compilation without GC support. Changed to match the
27634         mono coding style.
27635
27636 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
27637
27638         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
27639
27640 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
27641
27642         * reflection.c: set a public key token on the core assemblies.
27643
27644 2002-11-18  Dick Porter  <dick@ximian.com>
27645
27646         * threads.c: Split out some thread initialisation so that other
27647         files can set the start callback function.
27648
27649         * gc.c: Run finalisers in a separate thread, to avoid stack
27650         overflow.  Fixes bug 31333.
27651
27652         * appdomain.c: Set up GC finalisation thread.
27653
27654         * reflection.c: 
27655         * object.c: 
27656         * domain.c: Use gc.h macros for GC_malloc
27657         
27658 2002-11-15  Dick Porter  <dick@ximian.com>
27659
27660         * threadpool.c: 
27661         * threads.c:
27662         * appdomain.c: Removed mono_runtime_init_with_attach(),
27663         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
27664         merging the extra parameter with the existing function.  Removed
27665         unneeded code in mono_thread_attach().
27666
27667 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
27668
27669         * image.c (mono_image_loaded_by_guid): a method to get loaded
27670         images by guid. 
27671         (load_metadata_ptrs): we store the guid as string.
27672
27673 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
27674
27675         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
27676
27677         * metadata.c (mono_guid_to_string): imported method form Zoltan
27678         Varga (slightly modified)
27679
27680         * assembly.c (mono_assembly_open): load precompiled code
27681
27682         * loader.h (MonoMethod): we store the method token for use in the
27683         aot compiler. 
27684
27685 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27686
27687         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
27688         the hook function called when an assembly is loaded.
27689         
27690         * domain.c: Modified file.
27691         (mono_domain_assembly_load): removed hash table insertion of assemblies.
27692
27693         Fixes bug #33196.
27694
27695 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
27696
27697         * reflection.c: Map PEFileKind to the value expected by the WinNT
27698         image loader. 
27699
27700 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27701
27702         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
27703         Read until the buffer is filled completely.
27704
27705 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27706
27707         * icall.c: implemented MonoType.InternalGetEvent ().
27708
27709 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27710
27711         * appdomain.c: implemented InitAppDomainSetup. Delayed
27712         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
27713         the entry_assembly.
27714
27715         * assembly.c: base_dir is now an absolute path ending with
27716         G_DIR_SEPARATOR.
27717
27718         * icall.c: modified get_location according to the above changes.
27719
27720         * object.c: init AppDomain.SetupInformation for the default domain after
27721         we have the entry assembly.
27722
27723         * domain.c: when unloading a domain, setup = NULL.
27724
27725 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
27726
27727         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
27728
27729 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
27730
27731         * object.h, object.c: introduced mono_object_get_virtual_method ()
27732         to lookup the method invoked on an object when a callvirt is done on
27733         a method.
27734         * icall.c: make MethodInfo::Invoke() always do a virtual call.
27735
27736 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27737
27738         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
27739         current domain when loaded an assembly and failed to load it.
27740
27741         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
27742
27743 2002-10-31  Dick Porter  <dick@ximian.com>
27744
27745         * icall.c: 
27746         * file-io.h: 
27747         * file-io.c: Return the error status in a parameter, as the
27748         GetLastError() value has long since been blown away if we try and
27749         look it up in a subsequent internal call invocation.  Delete the
27750         GetLastError() internal call, because it's useless.
27751
27752 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
27753
27754         * class.[ch]: added cast_class to fix bug 29517
27755
27756 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
27757
27758         * marshal.c: create valid IL code in the filter clause:
27759         the new JIT is less forgiving:-)
27760
27761 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27762
27763         * icall.c: removed get_property internal call.
27764
27765 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
27766
27767         * appdomain.h domain.c: Added an ID to appdomains.
27768         
27769         * threads.c threads.h icall.c: Implement icall
27770         Thread:GetDomainID(), and remove unused icall 
27771         CurrentThreadDomain_internal.
27772
27773 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27774
27775         * icall.c: Don't recurse through the base types in GetConstructor.
27776         Fixes bug #32063. 
27777
27778 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
27779
27780         * mempool.h, mempool.c: added mono_mempool_empty() and
27781         mono_mempool_stats().
27782
27783 2002-10-23  Dick Porter  <dick@ximian.com>
27784
27785         * file-io.c: 
27786         * file-io.h: 
27787         * icall.c: Added MonoIO.GetFileType internal call
27788
27789 2002-10-17  Dick Porter  <dick@ximian.com>
27790
27791         * appdomain.c (mono_runtime_cleanup): Don't signal the async
27792         delegate semaphore before waiting for all threads to finish,
27793         because new threads can also call async delegates.  Fixes bug
27794         32004.
27795
27796         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
27797         of 3 seconds, in case another async job is queued.  (This part is
27798         needed because the bug fix reintroduced the 3s exit lag.)  This
27799         makes the mono_runtime_shutdown flag superfluous.
27800
27801 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
27802
27803         * reflection.c: include ehader size in method section headers.
27804         Really check for suplicated modules entries.
27805
27806 2002-10-17  Martin Baulig  <martin@gnome.org>
27807
27808         * debug-mono-symfile.c: Added back support for locals.
27809
27810 2002-10-14  Martin Baulig  <martin@gnome.org>
27811
27812         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
27813         MONO_TYPE_VOID.
27814
27815 2002-10-14  Martin Baulig  <martin@gnome.org>
27816
27817         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
27818         mono_class_get() instead of looking in the class cache. 
27819
27820 2002-10-13  Martin Baulig  <martin@gnome.org>
27821
27822         * debug-mono-symfile.c: Set version number to 28, include the
27823         signature in method names.
27824
27825 2002-10-13  Martin Baulig  <martin@gnome.org>
27826
27827         * debug-mono-symfile.h: Set version number to 27.
27828
27829 2002-10-11  Martin Baulig  <martin@gnome.org>
27830
27831         * gc.c: Don't register/unregister NULL pointers as disappearing links.
27832
27833 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
27834
27835         * metadata.c, metadata.h: added helper function to allocate signatures.
27836
27837 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27838
27839         * icall.c: added internal call to get the location of machine.config.
27840
27841 2002-10-08  Martin Baulig  <martin@gnome.org>
27842
27843         * debug-mono-symfile.c: Ignore classes with a pending init for the
27844         moment.
27845
27846 2002-10-03  Dick Porter  <dick@ximian.com>
27847
27848         * threads.c: Freebsd pthread_t is a pointer
27849
27850 2002-10-03  Dick Porter  <dick@ximian.com>
27851
27852         * socket-io.c: Implemented GetHostName_internal
27853
27854 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27855
27856         * mono-config.c:
27857         (mono_config_parse_file): don't leak the text.
27858
27859 2002-10-02  Martin Baulig  <martin@gnome.org>
27860
27861         * debug-mono-symfile.c: Added support for methods.
27862
27863 2002-10-01  Martin Baulig  <martin@gnome.org>
27864
27865         * debug-mono-symfile.c: Don't emit methods and line numbers for
27866         the dynamic symbol file, just write the type table.  We can easily
27867         have an external helper program which creates a symbol file for an
27868         IL file.        
27869
27870 2002-10-01  Dick Porter  <dick@ximian.com>
27871
27872         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
27873         Only add the handle to the cleanup array when we're about to
27874         launch the thread.  Bug 31425 deadlocked when the test was run on
27875         mono under w32.
27876
27877 2002-10-01  Martin Baulig  <martin@gnome.org>
27878
27879         * debug-mono-symfile.c: Added support for properties.
27880
27881 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
27882
27883         * reflection.c: unaligned store fix from Mark Crichton
27884         <crichton@gimp.org>.
27885
27886 2002-09-27  Martin Baulig  <martin@gnome.org>
27887
27888         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
27889         New interncall.
27890
27891 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
27892
27893         * assembly.h, assembly.c: use a sane API to hook into the assembly
27894         loading process instead of a useless special-purpouse hack
27895         (ngen needs a hook, too, for example).
27896
27897 2002-09-27  Dick Porter  <dick@ximian.com>
27898
27899         * threads.c (mono_thread_init): Call GetCurrentProcess() so
27900         io-layer can set up some process handle info.  Not needed on w32,
27901         but doesn't hurt either.
27902
27903         * process.c: Pass the program name in the second parameter to
27904         CreateProcess, so the path is searched.  Include the working
27905         directory. Implemented process name, process enumeration, and some
27906         process detail internal calls.
27907         
27908         * icall.c: Added internal calls for process lookup, and some
27909         process details
27910
27911 2002-09-26  Martin Baulig  <martin@gnome.org>
27912
27913         * assembly.c (mono_install_open_assembly_hook): New global
27914         function to install a function to be invoked each time a new
27915         assembly is loaded.
27916         (mono_assembly_open): Run this callback function if set.
27917
27918         * debug-mono-symfile.c: Put back line numbers for the dynamic
27919         symbol file and also record the .il file as source file.  This
27920         allows us to install the temporary symbol file as `file.dbg' just
27921         like a compiler-generated one.
27922
27923 2002-09-26  Nick Zigarovich <nick@chemlab.org>
27924
27925         * Corrected typo in gc.c (BOHEM vs BOEHM).
27926
27927 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27928
27929         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
27930         GetProperties. Also avoid calling g_slist_length in GetProperties and
27931         GetMethods.
27932
27933 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
27934
27935         * reflection.c: avoid unaligned stores (bug spotted by
27936         Mark Crichton  <crichton@gimp.org>).
27937
27938 2002-09-25  Martin Baulig  <martin@gnome.org>
27939
27940         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
27941         instead of guint64 for addresses and added prologue/epilogue info.
27942
27943 2002-09-25  Martin Baulig  <martin@gnome.org>
27944
27945         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
27946         store line number info.  For the dynamic symbol file, we only need
27947         to provide the JIT generated dynamic line number info for the dynamic
27948         symbol file.
27949
27950 2002-09-25  Martin Baulig  <martin@gnome.org>
27951
27952         * debug-mono-symfile.h: Incremented version number.
27953
27954 2002-09-24  Martin Baulig  <martin@gnome.org>
27955
27956         * class.c (mono_debugger_class_init_func): New global function
27957         pointer variable.
27958         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
27959         call it.
27960
27961         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
27962         function.  This is called via the mono_debugger_class_init_func
27963         hook to add all types to the dynamic type table.
27964         (ves_icall_MonoDebugger_GetType): New interncall to get a class
27965         from its metadata token.
27966
27967         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
27968         New interncall for the debugger.
27969
27970 2002-09-24  Nick Drochak <ndrochak@gol.com>
27971
27972         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
27973         before using it in case it is null.
27974         
27975 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27976
27977         * metadata.c: allow custom modifiers in local var signatures
27978         (bug spotted by Zoltan Varga).
27979
27980 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
27981
27982         * class.c: deal with the <Module> class that may have a NULL vtable.
27983         Eliminate warnings.
27984
27985 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
27986
27987         * image.c, image.h: more strong name helpers.
27988         * monosn.c: more work: convert pem keys to cryptoapi format.
27989
27990 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
27991
27992         * string-icalls.c: speedup IndexOf.
27993
27994 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
27995
27996         * icall.c: updates from Zoltan.2.Varga@nokia.com.
27997
27998 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
27999
28000         * icall.c: cleanup: use mono_object_domain ().
28001
28002 2002-09-23  Martin Baulig  <martin@gnome.org>
28003
28004         * debug-mono-symfile.c: Improved type support.
28005
28006 2002-09-22  Martin Baulig  <martin@gnome.org>
28007
28008         * debug-mono-symfile.c: Added support for reference types and strings.
28009
28010 2002-09-22  Martin Baulig  <martin@gnome.org>
28011
28012         * debug-mono-symfile.c: Started to work on the type table.
28013
28014 2002-09-21  Martin Baulig  <martin@gnome.org>
28015
28016         * debug-mono-symfile.c: Largely reworked the symbol table format.
28017         The symbol table is now incrementally updated each time a new
28018         method is added.  We're now also using our own magic and version
28019         so that you don't need to recompile all your classes if the
28020         dynamic table changes.
28021         (mono_debug_update_mono_symbol_file): Removed.
28022         (mono_debug_symfile_add_method): New function to add a method.
28023
28024 2002-09-21  Martin Baulig  <martin@gnome.org>
28025
28026         * icall.c
28027         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28028         New interncall.
28029
28030         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28031         New interncall to get a method from its metadata token.
28032
28033 2002-09-21  Martin Baulig  <martin@gnome.org>
28034
28035         * debug-mono-symfile.c: Create type table.
28036
28037 2002-09-20  Martin Baulig  <martin@gnome.org>
28038
28039         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28040
28041 2002-09-20  Martin Baulig  <martin@gnome.org>
28042
28043         * debug-mono-symfile.c: Provide information about params and locals.
28044
28045 2002-09-20  Martin Baulig  <martin@gnome.org>
28046
28047         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28048         New interncall.
28049
28050         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28051         interncall to get a method from its metadata token.
28052
28053 2002-09-20  Martin Baulig  <martin@gnome.org>
28054
28055         * debug-mono-symfile.c: Added a few checks for method->header
28056         being non-NULL.  This should never happen, but for the moment
28057         let's use a g_warning() rather than a g_assert().
28058
28059 2002-09-19  Mark Crichton  <crichton@gimp.org>
28060
28061         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28062         even if support for it isn't present.  Added an #ifdef to fix this.
28063
28064         * socket-io.c: Added checks back for Solaris support.
28065
28066 2002-09-19  Martin Baulig  <martin@gnome.org>
28067
28068         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28069         changes in the symbol file format.
28070
28071 2002-09-18  Martin Baulig  <martin@gnome.org>
28072
28073         * debug-mono-symfile.c: Set version number to 21.
28074
28075 2002-09-18  Dick Porter  <dick@ximian.com>
28076
28077         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28078         on netbsd.  Fixes bug 30051.
28079
28080 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28081
28082         * reflection.c:
28083         (set_version_from_string): little fix.
28084
28085 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28086
28087         * monosn.c, Makefile.am: added strong name utility.
28088         * reflection.h, reflection.c: implemented delayed signing,
28089         locale, version and hash id assembly attributes.
28090
28091 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28092
28093         * loader.c, metadata.c: load param attributes in signatures.
28094
28095 2002-09-16  Martin Baulig  <martin@gnome.org>
28096
28097         * debug-mono-symfile.c: Added string table with all method names.
28098
28099 2002-09-14  Martin Baulig  <martin@gnome.org>
28100
28101         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28102         fast method lookup.
28103
28104 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28105
28106         * reflection.c: record the public key token of referenced assemblies.
28107
28108 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28109
28110         * image.c, image.h: added functions to get the strong name and the
28111         public key of an assembly.
28112         * pedump.c: use them.
28113
28114 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28115
28116         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28117
28118 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28119
28120         * marshal.c (mono_marshal_get_managed_wrapper): Added
28121         MONO_TYPE_BOOLEAN 
28122
28123 2002-09-11  Martin Baulig  <martin@gnome.org>
28124
28125         * gc.c: Call GC_unregister_disappearing_link() on all links when
28126         finalizing them, this is necessary to aviod a crash in boehm's
28127         finalize handler.
28128
28129 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28130
28131         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28132         nick@chemlab.org.
28133
28134 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28135
28136         * icall.c: implemented MonoType::Module.
28137         * reflection.c, reflection.h: mono_module_get_object () from
28138         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28139
28140 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28141
28142         * icall.c: ignore overridden methods in GetMethods ().
28143         Fix for FieldInfo::SetValue().
28144         * object.c: handle float/double in runtime invoke.
28145
28146 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28147
28148         * object.c: allow a constructor to be called again on an object.
28149
28150 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28151
28152         * class.h, class.c: move field layout code to it's own function and
28153         export it. Get an interface id earlier. Move fields in MonoClass
28154         so they are more cache friendly and align the bitfields.
28155         * loader.c: temporary handle get_param_names() for a runtime method.
28156         * reflection.c, reflection.h: more code to handle runtime creation of
28157         types.
28158
28159 2002-09-09  Martin Baulig  <martin@gnome.org>
28160
28161         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28162         signature with the pinvoke field being set for the actual call.
28163
28164 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28165
28166         * icall.c: removed some unused icalls. Start of map of glib charsets
28167         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28168
28169 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28170
28171         * debug-helpers.c: break infinite loop (found and fixed by
28172         Holger Arnold <harnold@gmx.de>).
28173
28174 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28175
28176         * icall.c: target may be null in create_delegate.
28177
28178 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28179
28180         * marshal.c: handle a boolean return type.
28181
28182 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28183
28184         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28185
28186 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28187
28188         * gc.c: fix weakreferences.
28189
28190 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28191
28192         * icall.c: added icall to get default codepage.
28193
28194 2002-09-03  Dick Porter  <dick@ximian.com>
28195
28196         * threads.h: 
28197         * threads.c: Use MonoThread instead of MonoObject where
28198         apropriate.
28199
28200         Store running thread objects in a hash table, so that we have all
28201         the info to hand when waiting for them to finish
28202         (means we don't need OpenThread() any more, so mingw builds should
28203         be fully functional again.)
28204
28205         * verify.c:
28206         * object.h: Added thread ID to MonoThread
28207
28208 2002-09-03  Martin Baulig  <martin@gnome.org>
28209
28210         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28211
28212 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28213
28214         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28215
28216 2002-09-03  Martin Baulig  <martin@gnome.org>
28217
28218         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28219         argument to store the end address of the disassembled instruction.
28220
28221         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28222         here from debug-symfile.h.
28223         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28224         JIT into this struct.
28225         (MonoSymbolFile): Added `char *image_file' field.
28226         (MonoDebugGetMethodFunc): Removed.
28227         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28228         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28229         (mono_debug_find_method): New method.
28230
28231         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28232         create a full symbol file.
28233         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28234         and static symbol files.
28235         (mono_debug_find_method): The symbol file keeps an internal method hash,
28236         call this to get a MonoDebugMethodInfo from a MonoMethod.
28237
28238         * debug-symfile.[ch]: Removed.
28239
28240 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28241
28242         * image.c (do_mono_image_open): Remove linker version check.
28243
28244 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28245
28246         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28247         wrappers for instance methods.
28248         
28249 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28250
28251         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28252
28253 2002-08-28  Dick Porter  <dick@ximian.com>
28254
28255         * Makefile.am: Export HOST_CC for w32 builds
28256
28257 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28258
28259         * file-io.c process.c: MonoString are null terminated, no
28260         need for mono_string_to_utf16() anymore.
28261
28262 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28263
28264         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28265
28266 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28267
28268         * icall.c, reflection.h: speedup System.MonoType.
28269
28270 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28271
28272         * reflection.c: allow null as the value of a string argument in
28273         custom attributes constructors.
28274
28275 2002-08-27  Martin Baulig  <martin@gnome.org>
28276
28277         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28278         `trampoline_address' field.
28279
28280 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28281
28282         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28283         check (fixes bug #29486) 
28284
28285 2002-08-27  Martin Baulig  <martin@gnome.org>
28286
28287         * debug-mono-symfile.c: Changed the file format in a way that allows us
28288         open it read-only and to use a specially malloced area for all the
28289         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28290         debugging IL code and there is no MCS generated symbol file for it.
28291
28292 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28293
28294         * object.c: added a define for a good string and array
28295         creation speedup (not enabled by default because we need to deal with
28296         the synch stuff).
28297
28298 2002-08-26  Martin Baulig  <martin@gnome.org>
28299
28300         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28301         function to create a dynamic symbol file.  This is used by the
28302         debugger to create a symbol file for IL code on-the-fly.
28303
28304 2002-08-26  Martin Baulig  <martin@gnome.org>
28305
28306         * loader.c (mono_lookup_pinvoke_call): Include the error message
28307         from g_module_error() in the error message.
28308
28309 2002-08-24  Martin Baulig  <martin@gnome.org>
28310
28311         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28312         function to update the symbol file.  The symbol file is mmap()ed
28313         writable, but private.  This allows us to install the symbol file
28314         together with the assembly.
28315
28316 2002-08-24  Martin Baulig  <martin@gnome.org>
28317
28318         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
28319         but they can read the new symbol file format which mcs is now creating.
28320
28321         * debug-symfile.c (mono_debug_find_source_location): Moved to
28322         debug-mono-symfile.c; this is now operating on the new symbol file.
28323
28324 2002-08-23  Martin Baulig  <martin@gnome.org>
28325
28326         * debug-helpers.c (mono_method_desc_from_method): New function to get
28327         a MonoMethodDesc from a MonoMethod.
28328
28329 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28330
28331         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
28332         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
28333
28334 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
28335
28336         * string-icalls.[ch]: make helper methods static.
28337
28338 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28339
28340         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
28341         types to it and to SetValueInternal.
28342
28343         * object.c: Moved handle_enum label to its proper place. This was the
28344         f... bug! ;-)
28345
28346         This time i compiled mcs and gtk-sharp and they both work.
28347
28348 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28349
28350         * icall.c: reverted partially my previous patch until 
28351         object.c:set_value handles enums correcly.
28352
28353 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28354
28355         * icall.c:
28356         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
28357         (ves_icall_System_Environment_get_MachineName): removed warning when
28358         compiling under cygwin.
28359
28360 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28361
28362         * object.c: fixed field_get_value() for reference types.
28363
28364 2002-08-22  Dick Porter  <dick@ximian.com>
28365
28366         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
28367         Don't free a buffer while it's still needed.  Patch from Jonathan
28368         Liger <Jonathan.liger@wanadoo.fr>
28369
28370 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
28371
28372         * icall.c (ves_icall_System_Environment_get_Platform): Add new
28373         internal call.
28374
28375 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
28376
28377         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
28378         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
28379
28380         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
28381         we call unmanaged code which throws exceptions.
28382
28383 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28384
28385         * appdomain.h: added per-domain entry_assembly.
28386         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
28387         arguments.
28388         * icall.c: Assembly::GetEntryAssembly icall.
28389         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
28390         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
28391
28392 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28393
28394         * appdomain.h, gc.c: added mono_domain_finalize ().
28395
28396 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28397
28398         * object.c:
28399         (mono_print_unhandled_exception): changed g_warning by g_printerr
28400         because g_log has a 1024 characters limit (yeah, i got a big stack
28401         trace). Don't print exception name, that should be in ToString 
28402         returned string.
28403
28404 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28405
28406         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
28407         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
28408
28409 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28410
28411         * object.c:
28412         (mono_print_unhandled_exception): after previous commit, i realized
28413         that MS calls ToString on the exception. I changed this function to
28414         do that. This way we get stack_trace for free.
28415
28416 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28417
28418         * object.c:
28419         (mono_print_unhandled_exception): invoke Message property instead of
28420         getting 'message' field from Exception. Don't allocate memory for
28421         'trace' and 'message' if not needed.
28422
28423 2002-08-18  Dick Porter  <dick@ximian.com>
28424
28425         * unicode.c: Fix asserts to match Encoder.cs checks
28426
28427 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28428
28429         * marshal.c: fix unaligned store issue and a few wrong
28430         opcode argument types.
28431
28432 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28433
28434         * icall.c: added GetUninitializedObjectInternal internal call.
28435
28436 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
28437
28438         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
28439         to the right domain.
28440
28441 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
28442
28443         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
28444
28445         * class.c (class_compute_field_layout): set blittable to false for Strings
28446
28447         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
28448
28449 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28450
28451         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
28452         first chunk of code to create types at runtime. Code to
28453         handle ReflectedType/DeclaringType. Make reflection handles
28454         domain specific.
28455
28456 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
28457
28458         * class.c: set correct name in arrays.
28459
28460 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
28461
28462         * appdomain.c (mono_domain_transfer_object): make it work with
28463         valuetypes. bug fixes.
28464
28465 2002-08-12  Dick Porter  <dick@ximian.com>
28466
28467         * object.h: Rename some parameters to avoid c++ keywords (Patch
28468         from Joseph Wenninger <kde@jowenn.at>)
28469
28470 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
28471
28472         * icall.c: added icall to implement Assembly.GetFile*.
28473
28474 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28475
28476         * reflection.h, reflection.c: code to embed managed resources.
28477
28478 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28479
28480         * class.c: move all the type size stuff into
28481         class_compute_field_layout().
28482
28483 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28484
28485         * class.c: ensure enums have always the correct instance size.
28486         * unicode.c: remove wrong assert.
28487
28488 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28489
28490         * assembly.c: fix mem corruption issue.
28491         * image.h, image.c: added mono_image_get_resource () to access
28492         managed resources.
28493         * icall.c: implemented Assembly.EntryPoint property and some
28494         Managed Resources related internalcalls.
28495
28496
28497 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28498
28499         * image.c, image.h: impemented mono_image_get_entry_point ().
28500         * appdomain.c: use mono_image_get_entry_point.
28501
28502 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28503
28504         * reflection.c: support the object type argument when loading
28505         custom attributes.
28506
28507 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
28508
28509         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
28510         String as return type.
28511
28512 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
28513
28514         * reflection.c: fix encoding of named args for custom attrs to match
28515         the ms implementation. Read them back when instantiating custom
28516         attributes.
28517
28518 2002-08-02  Radek Doulik  <rodo@ximian.com>
28519
28520         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
28521         by Dietmar as quick fix
28522         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
28523         16 as stack size, used on more places as quick fix before Dietmar
28524         will fix it properly
28525
28526 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28527
28528         * object.h, object.c: added accessors for fields and properties.
28529
28530 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28531
28532         * class.c, class.h: made mono_class_get_field_from_name ()
28533         loop on parent types.
28534         Added mono_class_get_property_from_name ().
28535
28536 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28537
28538         * class.c, class.h: move the code to setup the type vtable in its own
28539         function so that it can be reused also for types created at runtime.
28540         Eliminate the "class" identifier from the header file.
28541         * reflection.c: setup the vtable for enums so that we can create
28542         objects for use in SetConstant ().
28543
28544 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
28545
28546         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
28547         instead of the delegate itself as this pointer (bug #28383)
28548
28549 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
28550
28551         * marshal.c (mono_marshal_get_managed_wrapper): added return type
28552         conversions.
28553
28554 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28555
28556         * loader.c: don't set the pinvoke bit on icalls.
28557
28558 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
28559
28560         * debug-helpers.c (mono_method_full_name): only print a number to
28561         indicate wrapper type (so that the output is more readable in traces).
28562
28563 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
28564
28565         * class.c (mono_class_init): include method override patch from Paolo
28566
28567 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
28568
28569         * icall.c: fixed GetTypeCode().
28570
28571 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
28572
28573         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
28574         use real delegate invoke function to make it work with multicast
28575         delegates (fix bug# 28291).
28576
28577 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
28578
28579         * object.c: load constant strings.
28580
28581 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28582
28583         * reflection.c: no magic numbers.
28584         * tabledefs.h: security action enum.
28585
28586 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28587
28588         * assembly.c: fix possible memory corruption.
28589
28590 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28591
28592         * reflection.h, reflection.c: added support for linking resources.
28593         * verify.c: check we have an updated corlib.
28594
28595 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
28596
28597         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
28598         string arrays.
28599         (mono_marshal_string_array): null terminate unmanaged string arrays.
28600         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
28601
28602 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
28603
28604         * icall.c: Type.GetType () can now return also types from the
28605         calling assembly.
28606
28607 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28608
28609         * loader.h, loader.c: stack walking support.
28610         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
28611         GetCallingAssembly.
28612
28613 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
28614
28615         * marshal.c: added optimisations for blittable types 
28616
28617         * class.c (mono_array_class_get): do not set blittable attribute on arrays
28618         (mono_class_setup_mono_type): set blittable attribute for single
28619         and double.
28620
28621         * marshal.c (mono_string_utf8_to_builder): impl.
28622         (mono_string_builder_to_utf8): impl.
28623         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
28624
28625 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
28626
28627         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
28628         (mono_marshal_get_managed_wrapper): impl. byref types
28629
28630 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28631
28632         * icall.c:
28633         (search_method): don't display debug message. 
28634
28635 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28636
28637         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
28638
28639 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28640
28641         * appdomain.c: set the missing filename when throwing exception.
28642
28643 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28644
28645         * metadata.c (mono_type_size): code cleanup
28646         (mono_type_stack_size): removed some test code
28647
28648 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
28649
28650         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
28651         mono_get_exception_file_not_found now.
28652
28653         * exception.c (mono_exception_from_name_two_strings): New version
28654         that will call a constructor with two string arguments. 
28655         (mono_get_exception_file_not_found): New helper routine, used to
28656         report file-not-found errors.
28657
28658 2002-07-20  Dick Porter  <dick@ximian.com>
28659
28660         * process.h:
28661         * process.c: Pass file handles to CreateProcess
28662         
28663         * icall.c:
28664         * file-io.h:
28665         * file-io.c: Implemented CreatePipe
28666
28667 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28668
28669         * metadata.c (mono_get_param_info): set alignment for value types
28670
28671 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28672
28673         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
28674         Constify mono_domain_assembly_open().
28675         * loader.c: handle null namespace in icalls.
28676
28677 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28678
28679         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
28680         (emit_str_to_ptr_conv): marshal object as structs
28681
28682         * metadata.c (mono_type_to_unmanaged): marshal object as structs
28683
28684         * marshal.c (mono_marshal_get_runtime_invoke): support value types
28685
28686 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
28687
28688         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
28689         (mono_marshal_get_native_wrapper): we an now return value types
28690
28691 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28692
28693         * verify.c: more checks implemented.
28694
28695 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
28696
28697         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
28698         (fix bug #27695)
28699         (mono_marshal_get_native_wrapper): allow byref arguments
28700         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
28701         impl. PtrToStringXXX methods
28702         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
28703         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
28704         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
28705         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
28706         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
28707
28708 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28709
28710         * reflection.c: fix buglet in parsing an assembly name.
28711
28712 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28713
28714         * marshal.c (emit_ptr_to_str_conv): first impl.
28715
28716 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
28717
28718         * object.c, class.h: cache the vtable in the class as suggested by
28719         vargaz@freemail.hu (Zoltan Varga).
28720
28721 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28722
28723         * class.h, loader.c: added mono_field_from_token().
28724         * verify.c: first cut of type checking code.
28725
28726 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28727
28728         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
28729
28730 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
28731
28732         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
28733         (fix bug #27782)
28734         (mono_marshal_get_remoting_invoke): impl.
28735         (mono_delegate_begin_invoke): impl.
28736         (mono_mb_emit_save_args): impl.
28737         (mono_delegate_end_invoke): impl.
28738         (mono_marshal_get_delegate_begin_invoke):
28739         (mono_marshal_get_delegate_end_invoke):
28740         (mono_marshal_get_delegate_invoke): generate a special name for
28741         those methods (including the signature) and associate them whith
28742         the delegate class. 
28743
28744 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
28745
28746         * reflection.[ch]: 
28747         (mono_reflection_type_from_name): now it has a MonoImage parameter
28748         which is used as the default image to search the type in. If the image
28749         is NULL or getting the type from it fails, it defaults to corlib.
28750
28751         * icall.c: changed 1 call to mono_reflection_type_from_name to match
28752         new parameter.
28753
28754 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28755
28756         * reflection.c: update the parameter table index.
28757
28758 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28759
28760         * domain.c: don't include the mark byte in the string hash.
28761
28762 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28763
28764         * icall.cs: icall for Type.GetTypeCode ().
28765         * verify: a couple of fixes and disabled local initialization checks.
28766
28767 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
28768
28769         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
28770
28771         * debug-helpers.c (mono_method_full_name): print the type of the
28772         runtime wrapper
28773
28774         * metadata.c (mono_signature_hash): a hash function for signatures
28775         (mono_signature_hash): better hash algorithm
28776
28777         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
28778
28779         * debug-helpers.c (mono_method_full_name): this can now generate
28780         method names with signatures
28781
28782         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
28783         method dont have this pointers.
28784
28785 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
28786
28787         * reflection.c: fixup typebuilder tokens.
28788         * image.c: fix buglet.
28789         * marshal.h: remove whitespace.
28790         * metadata.h, metadata.c: reinstate code that was removed.
28791         * verify.c: handle catch directives and fix another couple of bugs.
28792
28793 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
28794
28795         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
28796         (mono_marshal_get_native_wrapper): make it comp. with the old code
28797         (mono_marshal_get_native_wrapper): support boolean
28798         (mono_marshal_get_managed_wrapper): support more types
28799
28800 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
28801
28802         * class.c (class_compute_field_layout): compute class->blittable attribute.
28803
28804 2002-07-09  Dick Porter  <dick@ximian.com>
28805
28806         * threads.c: Make the thread cleaning up cope with threads that
28807         call ExitThread()
28808
28809 2002-07-08  Radek Doulik  <rodo@ximian.com>
28810
28811         * reflection.c (method_encode_code): use non-translated values to
28812         compute finally_start, this fixes exception handling on ppc, yay!
28813
28814         * decimal.h (struct signscale): fix endianess
28815
28816 2002-07-07  Radek Doulik  <rodo@ximian.com>
28817
28818         * reflection.c: swap box_val and not val
28819
28820 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
28821
28822         * reflection.c, reflection.h: handle full assembly info in type name.
28823         Handle Type arguments when loading custom attributes.
28824         * icall.c: updated to use new mono_reflection_type_from_name () method.
28825
28826 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28827
28828         * loader.c:
28829         (method_from_memberref): also print assembly name when method not found.
28830
28831 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28832
28833         * icall.c:
28834         (ves_icall_TypeGetProperties): fixed bug #27473. 
28835
28836 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28837
28838         * reflection.c: display image name and token when cannot find the
28839         .ctor for an attribute.
28840
28841 2002-07-05  Martin Baulig  <martin@gnome.org>
28842
28843         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
28844
28845 2002-07-04  Dick Porter  <dick@ximian.com>
28846
28847         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
28848         compile on mingw.  This will cause mingw builds to not wait for
28849         subthreads to terminate after the main thread does.  I've lodged a
28850         bug with the mingw developers for them to wrap OpenThread().
28851
28852 2002-07-03  Dick Porter  <dick@ximian.com>
28853
28854         * threads.c: Store thread IDs instead of handles, because
28855         GetCurrentThread() returns a pseudohandle and therefore stores
28856         useless values.  mono_thread_cleanup() continues checking the
28857         array of threads until it is empty, to cope with subthreads
28858         spawning new threads after the main thread has finished.
28859
28860         * profiler.h:
28861         * profiler.c:
28862         * profiler-private.h: Pass the thread ID to thread profiler
28863         functions, instead of a handle
28864
28865 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28866
28867         * verify.c: fixes to make it more usable.
28868         * pedump.c: added --verify code to verify IL code in an assembly.
28869
28870 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28871
28872         * reflection.c: turn errors into warnings to allow compiling corlib.
28873
28874 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28875
28876         * reflection.c: add special cases to compile corlib.
28877
28878 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28879
28880         * reflection.c: handle properties with only a set method.
28881
28882 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28883
28884         * opcodes.h: add enum with opcodes in opval order.
28885
28886 2002-07-01  Dick Porter  <dick@ximian.com>
28887         
28888         * object.h:
28889         * object.c (mono_runtime_run_main): Removed unneeded argument
28890
28891 2002-06-28  Martin Baulig  <martin@gnome.org>
28892
28893         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
28894
28895 2002-06-27  Dick Porter  <dick@ximian.com>
28896
28897         * threads.c: Store the handle in both the parent thread and in the
28898         subthread, to minimise the time between starting a new thread and
28899         storing its ID.
28900
28901 2002-06-26  Dick Porter  <dick@ximian.com>
28902
28903         * appdomain.c (mono_runtime_cleanup): Close the socket library
28904         after all the threads have finished, not before
28905
28906 2002-06-26  Martin Baulig  <martin@gnome.org>
28907
28908         * debug-symfile.c (mono_debug_find_source_location): Added
28909         `guint32 *line_number' argument.  If it's not NULL, store the line number
28910         there and return the file name without the line number.
28911
28912 2002-06-25  Dick Porter  <dick@ximian.com>
28913
28914         * icall.c:
28915         * process.h:
28916         * process.c: Process forking and other support functions
28917
28918 2002-06-25  Dick Porter  <dick@ximian.com>
28919
28920         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
28921         things dont happen when the image is closed.
28922         (mono_image_lookup_resource): Walk the resource section looking
28923         for a particular entry
28924
28925         * cil-coff.h: PE resource section decoding
28926
28927 2002-06-25  Dick Porter  <dick@ximian.com>
28928         
28929         * assembly.h:
28930         * assembly.c: 
28931         (mono_assembly_foreach): Accessor functions to walk the list of
28932         loaded assemblies
28933         (mono_assembly_set_main):
28934         (mono_assembly_get_main): Process methods need to know which
28935         assembly is the "main" one
28936
28937         * object.c (mono_runtime_run_main): Record the main assembly
28938
28939         * debug-helpers.c: Fix typo
28940
28941 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
28942
28943         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
28944         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
28945
28946 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
28947
28948         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
28949
28950 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
28951
28952         * image.c (do_mono_image_open): Initialize reference count,
28953         otherwise we leak the MonoImage.
28954
28955 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28956
28957         * reflection.c: small tweak to handle self-hosting.
28958
28959 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28960
28961         * reflection.c: fix type name parse code.
28962
28963 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28964
28965         * reflection.c: break out of the loop.
28966         * image.c: special case corlib.
28967
28968 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28969
28970         * reflection.c: add all the custom attrs at the end to ensure the
28971         ctors have been properly initialized when the attributes are defined
28972         in the current assembly.
28973
28974 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28975
28976         * reflection.c: handle correctly multiple-nested types.
28977
28978 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
28979
28980         * row-indexes.h: fix typos.
28981         * reflection.c: adjust for typos and fix method_def_or_ref
28982         encoding in MethodImpl table.
28983
28984 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
28985
28986         * reflection.c: fix entry point patching (thanks Serge!).
28987
28988 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
28989
28990         * verify.c: add check for System.Exception
28991
28992 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28993
28994         * image.c, class.c: minifix for code just c&p'ed.
28995         * reflection.c: warning fix.
28996         * object.h, loader.h, domain.c: load also StringBuilder.
28997
28998 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28999
29000         * marshal.h, marshal.c: some support code to handle complex marshaling.
29001
29002 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29003
29004         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29005         Better signatures with vtable error dump.
29006
29007 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29008
29009         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29010
29011 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29012
29013         * icall.c (ves_icall_Type_GetField): impl.
29014
29015 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29016
29017         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29018         to retrieve a marshal description blob for a field or param.
29019
29020 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29021
29022         * reflection.h, reflection.c: change order of nested type emission
29023         to avoid table corruption. The NestedTypes table is sorted.
29024         * icall.c: change order of GetConstructor results to workaround mcs bug.
29025
29026 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29027
29028         * reflection.h, reflection.c: handle field and param marshal
29029         information.
29030
29031 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29032
29033         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29034
29035 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29036
29037         * reflection.c: fix call convention.
29038
29039 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29040
29041         * reflection.h, reflection.c: mono_image_get_memberref_token()
29042         takes a type instead of a class, now. Added
29043         mono_image_get_array_token() to create tokens for the special
29044         multi-dim array methods.
29045
29046 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29047
29048         * assembly.c: handle modules (no assembly table). Split
29049         loading references in its own function.
29050         * class.c: handle moduleref resolution scope.
29051         * image.c, image.h: cache module name in image.
29052
29053 2002-06-07  Martin Baulig  <martin@gnome.org>
29054
29055         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29056         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29057
29058 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29059
29060         * icall.c: more signature fixes that used uint instead of int.
29061
29062 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29063
29064         * reflection.c: fixed signature of field refs.
29065
29066 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29067
29068         * class.c, reflection.c: handle typerefs of nested types
29069         (both on read and when writing files).
29070
29071 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29072
29073         * icall.c: fix method signatures that tried to workaround the previous
29074         typo, d'oh!
29075
29076 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29077
29078         * debug-helpers.c: fix typo.
29079
29080 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29081
29082         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29083         rewrote the PE/COFF writing code (our programs are understood by the
29084         ms runtime, now).
29085
29086 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29087
29088         * gc.c, gc.h, icall.c: weakreference support.
29089
29090 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29091
29092         * Makefile.am, mono-config.c: use $(sysconfdir).
29093
29094 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29095
29096         * icall.c: changed default precision of Double.ToString() to 15.
29097         Fixed memory leak. Unified with Single.ToString.
29098
29099 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29100
29101         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29102
29103 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29104
29105         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29106         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29107         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29108         and myself.
29109
29110 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29111
29112         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29113
29114 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29115
29116         * reflection.c, socket-io.c: more compilation fixes.
29117
29118 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29119
29120         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29121         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29122         unicode.c: warning and compiler compatibility fixes.
29123
29124 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29125
29126         * class.h, metadata.c: fixed warnings/compilation errors.
29127
29128 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29129
29130         * Makefile.am, mono-config.c, mono-config.h: configuration file
29131         support routines.
29132         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29133         config file. Export methods to insert and lookup mappings.
29134
29135 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29136
29137         * reflection.c: handle types and boxed objects in custom attr
29138         constructors.
29139
29140 2002-05-30  Martin Baulig  <martin@gnome.org>
29141
29142         * debug-symfile.c
29143         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29144
29145 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29146
29147         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29148         to lookup the implmap row for a P/Invoke method.
29149         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29150         P/Invoke method from the runtime on an as needed basis.
29151
29152 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29153
29154         * metadata.c (mono_metadata_parse_signature): impl.
29155
29156 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29157
29158         * class.c: handle .pack directive.
29159
29160 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29161
29162         * object.c: initialize static fields with RVA data.
29163
29164 2002-05-25  Martin Baulig  <martin@gnome.org>
29165
29166         * debug-symfile.c
29167         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29168
29169 2002-05-24  Martin Baulig  <martin@gnome.org>
29170
29171         * debug-symfile.c
29172         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29173         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29174         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29175
29176 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29177
29178         * object.c: special case string ctros in invoke.
29179         * gc.c: silly whitespace changes.
29180
29181 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29182
29183         * threadpool.[ch]: impl. a threadpool that can
29184         be used by mint and mono.
29185
29186 2002-05-22  Martin Baulig  <martin@gnome.org>
29187
29188         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29189         The first argument is now a `MonoReflectionModuleBuilder *', the return
29190         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29191         `methods' field to get the method builder.  The `token' argument is the
29192         unfixed token.
29193
29194         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29195         invalid characters instead of g_assert_not_reached()ing.  This seems
29196         to be the behaviour of mscorlib.
29197
29198 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29199
29200         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29201         Hestilow to fix bug #25104
29202
29203 2002-05-21  Martin Baulig  <martin@gnome.org>
29204
29205         * debug-symfile.c (mono_debug_find_source_location): New function.
29206         Looks up an IL offset in the line number table and returns the source
29207         location as a string.
29208
29209 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29210
29211         * icall.c:
29212         (mono_double_ToStringImpl): changed %f by %g until we have something
29213         better.
29214
29215 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29216
29217         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29218         parameters first in C#.
29219
29220 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29221
29222         * icall.c, reflection.h: added icall to get info about an event.
29223
29224 2002-05-20  Radek Doulik  <rodo@ximian.com>
29225
29226         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29227         endian
29228         (mono_value_box): don't use memcpy for small sizes on
29229         architectures with unaligned access
29230
29231 2002-05-20  Martin Baulig  <martin@gnome.org>
29232
29233         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29234         if `tb->parent == NULL'.
29235         (mono_reflection_create_internal_class): New function.  This is
29236         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29237         for enum types.
29238
29239         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29240         New interncall.
29241
29242 2002-05-19  Martin Baulig  <martin@gnome.org>
29243
29244         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29245         argument to get the length, don't default to the array length.
29246
29247 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29248
29249         * assembly.c (mono_assembly_setrootdir): New function used to
29250         override the MONO_ASSEMBLIES directory.
29251
29252 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29253
29254         * icall.c: ValueType_GetHashCode() initialize local var.
29255
29256 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29257
29258         * reflection.c: sort custom attributes table.
29259
29260 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29261
29262         * reflection.c: support named args in custom attributes (write support).
29263
29264 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29265
29266         * reflection.c: fix finally position calculation.
29267
29268 2002-05-15  Radek Doulik  <rodo@ximian.com>
29269
29270         * reflection.c: fixed endianess at many places
29271
29272         * icall.c (ves_icall_InitializeArray): comment out debug msg
29273
29274 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29275
29276         * object.c (mono_unhandled_exception): new function to handle
29277         unhandled exceptions.
29278         (mono_unhandled_exception): call the UnhandledException event.
29279         (mono_runtime_delegate_invoke): impl.
29280
29281 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29282
29283         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29284         returns the RVA, not the direct pointer to the data. Handle the case
29285         when the class size is fixed.
29286
29287 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29288
29289         * reflection.c: fix some endianess issues.
29290
29291 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29292
29293         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29294
29295         * threads.c (mono_thread_init): added a callback which is invoked
29296         at thread start.
29297
29298 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29299         
29300         * icall.c: make GetHashCode return non-negative values.
29301
29302 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29303
29304         * object.c, icall.c, gc.c: revert to address-based hashcode.
29305
29306 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29307
29308         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29309
29310 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29311
29312         * icall.c, class.c: special case <Module>.
29313
29314 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29315
29316         * icall.c: fix bug in GetNow().
29317
29318 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
29319
29320         * object.c (mono_runtime_class_init): make sure that we call all
29321         static class constructors.
29322
29323 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29324
29325         * reflection.c: sort methodsemantics table.
29326
29327 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29328
29329         * reflection.h, reflection.c: honour init locals setting.
29330
29331 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
29332
29333         * icall.c: copied Double ToStringImpl for Single ToStringImpl
29334
29335 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29336
29337         * reflection.c: support ContructorBuilders in attribute blob creation.
29338
29339 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29340
29341         * reflection.c: some changes to build a binary that can be run
29342         directly in windows.
29343
29344 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29345
29346         * loader.c: print a big message when an icall can't be found.
29347
29348 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29349
29350         * string-icalls.c: fix bug 24248.
29351
29352 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29353
29354         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
29355         icall.c, reflection.h: separate assembly loading by pathname and by
29356         assembly name. Use the MONO_PATH env var to search for assemblies.
29357
29358 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29359
29360         * assembly.c, image.h: add some support for assemblies
29361         with multiple modules.
29362         * class.c, class.h: export mono_class_from_typeref().
29363         * loader.c: remove duplicated code and use mono_class_from_typeref(),
29364         instead.
29365
29366 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29367
29368         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
29369         documentation says (the ECMA one is correct).
29370
29371 2002-05-02  Dick Porter  <dick@ximian.com>
29372
29373         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
29374         Don't name the synchronisation mutex.
29375
29376 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
29377
29378         * rand.c
29379         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
29380         Make the prototypes match.
29381         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
29382         Same.
29383
29384         * icall.c
29385         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
29386         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
29387         all systems have tm.tm_zone, so use strftime() with %Z to print
29388         the timezone abreviation into a temp string.
29389
29390         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
29391         rather than mono_array_addr() on a MonoString on Big Endian
29392         machines.
29393
29394 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
29395
29396         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
29397         fix bug 24041
29398
29399 2002-04-30  Dick Porter  <dick@ximian.com>
29400
29401         * socket-io.c: Cope with SOCKET being an integer rather than a
29402         pointer now.
29403
29404         * threads.c: Added Thread_free_internal, to deal with thread
29405         handle cleanup.  Moved calls to handle_store() and handle_remove()
29406         to start_wrapper(), so each can only be called once.  Allocate
29407         synchronisation blocks with GC_malloc(), and use GC finalisation
29408         to close the handles.
29409
29410         * icall.c: added System.Threading.Thread::Thread_free_internal
29411
29412 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29413
29414         * icall.c: support Environment.Exit, CommandLineArgs().
29415
29416 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29417
29418         * object.c, object.h: added mono_runtime_run_main () and
29419         mono_runtime_get_main_args () for use in System.Environment.
29420
29421 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29422
29423         * gc.c: fix thinko, enable actual finalization since the jit is now
29424         fixed.
29425
29426 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29427
29428         * gc.c, object.c: take into account that an object may be offset wrt the address
29429         returned by GC_malloc().
29430
29431 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29432
29433         * image.c: handle files without entries in the assembly table (modules).
29434
29435 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
29436
29437         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
29438         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
29439         allowed to be null when it's System.Object class setup.
29440
29441 2002-04-27  Martin Baulig  <martin@gnome.org>
29442
29443         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
29444         if `tb->parent == NULL' rather than crashing.
29445
29446 2002-04-28  Nick Drochak  <ndrochak@gol.com>
29447
29448         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
29449         calling acos() where asin() should have been called.
29450
29451 2002-04-26  Martin Baulig  <martin@gnome.org>
29452
29453         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
29454         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
29455         there's a subdirectory called `System', but we don't want to read that
29456         subdirectory as an assembly.
29457
29458 2002-04-25  Martin Baulig  <martin@gnome.org>
29459
29460         * debug-symfile.c: Reflect latest MonoString changes.
29461
29462 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29463
29464         * rand.c, rand.h: instance method icalls need to have an explicit
29465         this pointer as first argument in the C implementation.
29466
29467 2002-04-25  Nick Drochak <ndrochak@gol.com>
29468
29469         * icall.c: Fix typo in map for GetNonZeroBytes
29470
29471 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29472
29473         * string-icalls.c : String does now passes unit tests without any 
29474         errors, the following changes has been made:
29475         
29476         Implemented replace methods.
29477         Renaming of methods to (try) follow the standard.
29478         Fixed compare ordinal
29479         Made all memory allocated directly to function instead of via icall function.
29480         Small performance fix in is_in_array function
29481                         
29482  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
29483
29484         c (mono_string_Internal_ctor_charp_int_int):
29485         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
29486         sindex < 0, throw ArgumentOutOfRangeException instead of
29487         ArgumentNullException.
29488
29489         Added new check for length == 0, however
29490         I need to make it return String.Empty from the C code.
29491         
29492         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
29493         that calculate the length for us here.
29494         
29495         (mono_string_Internal_ctor_sbytep_int_int): Replaced
29496         mono_string_new_utf16 with mono_string_new, since value is utf8.
29497
29498 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29499
29500         * object.c: register the object for finalization if needed.
29501         Allocate one more char in the string for the terminating 0 char.
29502
29503 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29504
29505         * class.c, class.h, image.c: check if a type implemenst a destructor.
29506         Use the proper key for array class lookups.
29507         * icall.c: register the icalls in the System.GC class.
29508         * gc.c, gc.h: GC-related functions and icalls.
29509
29510 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29511
29512         * icall.c:
29513         * socket-io.c:
29514         * unicode.c: free some strings gotten from mono_string_to_utf8 and
29515         changed a couple of free () by g_free ().
29516
29517         * decimal.c: one-liner in the comments for decimal2string ().
29518
29519 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29520
29521         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
29522
29523 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29524
29525         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
29526         * object.c (mono_runtime_invoke_array) : handle null in params
29527
29528 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29529
29530         * string-icalls.c: fixed bug in split (one off bug)
29531
29532 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29533
29534         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
29535         * icalls.c: added String::Equals as internal method
29536
29537 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29538
29539         * threads.c: fixed bug in the double interlocked functions
29540
29541 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
29542
29543         * threads.c: implemented all of the new interlocked icalls.
29544         * string-icalls.c: fix a bug in insert.
29545         * icalls.c: added the icalls for interlocked, removed old string functions.
29546         
29547 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29548
29549         * loader.c: fix off-by-one error when reading argument names.
29550
29551 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29552
29553         * profiler.c: win32 counter implementation (untested).
29554         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
29555         (the latter needs testing and more complete impl. from win32 folks).
29556
29557 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
29558
29559         * object.c: mono_array_new_full workaround mono_array_class_get
29560         problem.
29561
29562 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29563
29564         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
29565         * object.h (mono_string_chars): Changed casting type.
29566
29567 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29568
29569         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
29570                            method signatures to use gunichar2 instead of gint16.
29571
29572 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
29573
29574         * object.h, object.c: domain-specific versions of mono_object_new and
29575         mono_array_new.
29576
29577 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
29578
29579         * object.c: changed String layout
29580
29581         * string-icalls.c (mono_string_Internal_ctor_chara): added
29582         internal string constructors.
29583
29584 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
29585
29586         * threads.c: pass 'this' to the thread start routine.
29587
29588 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29589
29590         * string-icalls.c: fix IndexOf and LastIndexOf. Now
29591         InternalCompareStr don't call twice mono_string_cmp_char for the last
29592         character. Improved performance in mono_string_cmp_char.
29593
29594 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29595
29596         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
29597         code into its own library: libmonoruntime.
29598
29599 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
29600
29601         * object.h, object.c: changed array format so that szarrays do not
29602         require a bounds structure.
29603         * icall.c, appdomain.c: support for new szarray format.
29604
29605 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29606
29607         * metadata.c: compare also the retuns type when comparing signatures:
29608         we didn't do this as an optimization since really overloaded methods
29609         must differ also in the arguments, but this doesn't work with
29610         low-level IL code (or when using explicit conversion operators: see
29611         bug#23498 for an example).
29612
29613 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29614
29615         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
29616
29617 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29618
29619         * icall.c: make MonoType::GetElementType its own icall.
29620
29621 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29622
29623         * icall.c: remove MonoMethod_get_Name().
29624         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
29625         object.
29626
29627 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29628
29629         * string-icalls.c: optimized a few methods.
29630
29631 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29632
29633         * icall.c: added all new string internal calls
29634         * string-icalls.c: added, new string internal call implementation.
29635         * object.c: added mono_string_new_size for allocating a string a size
29636
29637 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
29638
29639         * object.c (mono_object_isinst): use the same code as in the
29640         optimized x86 version.
29641
29642 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29643
29644         * profiler.c: TSC-based timer code (faster and more accurate).
29645         Not hooked up in configure, yet (set USE_X86TSC to 1).
29646
29647 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
29648
29649         * profiler.c, profiler.h: track time spent compiling methods.
29650         * threads.c: track thread creation/destruction.
29651
29652 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
29653
29654         * profiler.c, profiler.h, profiler-private.h: profiling interface
29655         and sample implementation. Moved here so that it can be used also by
29656         the jit.
29657
29658 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
29659
29660         * reflection.c, reflection.h: keep types and other handles separate in
29661         the hash tables for referred tokens. Add guid for modules.
29662
29663 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29664
29665         * assembly.c: fix bugs found with valgrind.
29666         * metadata.h, metadata.c: added mono_metadata_guid_heap().
29667
29668 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
29669
29670         * threads: added icall support for getting current domain for
29671                    the thread.
29672  
29673 2002-04-13  Martin Baulig  <martin@gnome.org>
29674
29675         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
29676         (MonoDebugVarInfo): Added `index' field for register based addresses.
29677         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
29678         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
29679         `MonoDebugVarInfo *params' and `guint32 this_offset' with
29680         `MonoDebugVarInfo *this_var'.
29681
29682         * debug-symfile.c (relocate_variable): New static function to write
29683         a location description for a local variable or method parameter.
29684
29685 2002-04-12  Martin Baulig  <martin@gnome.org>
29686
29687         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
29688         stack offset and begin/end scope address of a local variable.
29689         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
29690         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
29691         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
29692
29693         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
29694         Added new relocation types for start/end scope of a local variable.
29695
29696 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29697
29698         * object.h: add mono_object_domain() macro.
29699         * reflection.c: handle typespecs.
29700         * icall.c: MonoMethod::get_Name() implementation.
29701
29702 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29703
29704         * icall.c: String::GetHashCode() icall implementation.
29705
29706 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29707
29708         * icall.c: String::IndexOfAny icall.
29709         * object.c, object.h: make array->max_length more useful.
29710         Intrduced mono_object_class() and mono_string_length() macros.
29711
29712 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29713
29714         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
29715         instead of g_unichar_isdigit.
29716
29717 2002-04-11  Nick Drochak  <ndrochak@gol.com>
29718
29719         * icall.c: Implement a simple Double.ToString().
29720
29721 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29722
29723         * appdomain.h: only io-layer.h is supposed to be included.
29724         * icall.c: explicitly import environ. Fix warning.
29725
29726 2002-04-10  Nick Drochak  <ndrochak@gol.com>
29727
29728         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
29729                 return true even if it's not Daylight Savings time.
29730                 Only return false for the case where the function isn't
29731                 implemented for a plaform (read Windows).
29732
29733 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29734
29735         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
29736         data with a mutex.
29737
29738 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
29739
29740         * mempool.c (mono_mempool_alloc): only use g_malloc when
29741         absolutely necessary.
29742
29743 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29744
29745         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
29746
29747         * class.c (mono_class_vtable): use domain mempool to allocate vtable
29748         (mono_class_proxy_vtable): use domain mempool
29749
29750 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29751
29752         * appdomain.h, appdomain.c: split initialization that requires the
29753         execution engine support into mono_runtime_init().
29754
29755 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29756
29757         * class.c (mono_class_init): don't include vtable inside MonoClass
29758         to save some memory, gather some statistics.
29759         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
29760
29761 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29762
29763         * icall.c: internalcall implementation for ValueType.Equals().
29764
29765 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
29766
29767         * object.c (mono_message_init): moved 
29768         (mono_runtime_exec_main): new arch. independent impl.
29769         (mono_runtime_invoke_array): new method - like
29770         mono_runtime_invoke, but you can pass an array of objects.
29771         (mono_remoting_invoke): new arch. independent impl.
29772         (mono_message_invoke): new arch. independent impl.
29773         (mono_runtime_class_init): new arch. independent impl.
29774         (mono_runtime_object_init): new arch. independent impl.
29775
29776 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29777
29778         * metadata.c, object.c, reflection.c: documented the exported
29779         functions.
29780
29781 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
29782
29783         * icall.c: simpler code to pass the assembly builder data to corlib.
29784         Implement GetNestedTypes() internalcall.
29785
29786 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29787
29788         * class.c: warn if a type can't be loaded.
29789
29790 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
29791
29792         * image.h: typedef MonoImageOpenStatus
29793         * types.h: removed unused file
29794         
29795 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
29796
29797         * icall.c: Enum_ToObject accepts enum value arguments.
29798
29799 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29800
29801         * class.c: move initialization of properties, events and nested
29802         classes, so that they happen for interfaces, too.
29803
29804 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29805
29806         * icall.c: cleanup some ugly casts in Array_SetValue*.
29807
29808 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29809
29810         * icall.c: the values array fro enums is of the correct type, now.
29811         Implement (correctly) getFullName instead of assQualifiedName for
29812         MonoType.
29813         * reflection.h, reflection.c: added mono_type_get_name ().
29814
29815 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29816
29817         * assembly.c, image.h: for each MonoImage, record from wich assembly
29818         it was loaded.
29819         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
29820         Make Type.Assembly work.
29821
29822 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
29823
29824         * debug-symfile.h: use char* instead of gpointer to avoid
29825         unnecessary casts.
29826
29827         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
29828
29829         * icall.c (ves_icall_InternalExecute): impl. FielSetter
29830         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
29831
29832 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
29833
29834         * icall.c (mono_message_init): impl. (code cleanup)
29835         (ves_icall_InternalExecute): impl. FieldGetter
29836
29837         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
29838         defined we call all (non-static)methods through the vtable. 
29839
29840 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
29841
29842         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
29843         finalizer even though the memory is still referenced (and the chunk of
29844         memory is not freed).
29845
29846 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
29847
29848         * assembly.c: fix brokeness.
29849
29850 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
29851
29852         * class.c: kill some warnings. Check explicit interface method
29853         implementation also without considering the namespace.
29854         Load also literal strings in static class data.
29855
29856 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
29857
29858         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
29859         (default_assembly_name_resolver): Make the resolver take the
29860         "base" directory where the assembly was originally defined, so we
29861         can load DLLs that are in the same directory as the assembly that
29862         is being referenced.
29863
29864 2002-03-28  Dick Porter  <dick@ximian.com>
29865
29866         * file-io.h: 
29867         * file-io.c:
29868         * socket-io.c: 
29869         * unicode.h: 
29870         * unicode.c: Warning cleanups
29871
29872 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
29873
29874         * object.h, reflection.h: use the correct type instead of MonoObject.
29875
29876 2002-03-28  Martin Baulig  <martin@gnome.org>
29877
29878         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
29879         (mono_debug_update_symbol_file): Initialize classes if necessary.
29880
29881 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
29882
29883         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
29884         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
29885
29886 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
29887
29888         * assembly.h: fix function prototype.
29889         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
29890         * mono-endian.h: use const cast.
29891
29892 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
29893
29894         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
29895
29896 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
29897
29898         * loader.c: don't assert when a typeref can't be loaded, give
29899         a chance to the runtime to trow an exception instead.
29900         * loader.h: fix warning.
29901
29902 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
29903
29904         * class.c (mono_class_proxy_vtable): added proxy support
29905
29906 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
29907
29908         * icall.c: removed last of PAL calls, added System.Environment
29909         * file-io.h, file-io.c: MonoIO implementation
29910         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
29911
29912 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
29913
29914         * appdomain.c: do not use the byte marker in ldstr table lookup.
29915         * debug-helpers.c: allow two ':' to separate class and method name.
29916         * object.c: allocate arrays bounds with the GC, too.
29917         * verify: add a few more checks.
29918
29919 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
29920
29921         * reflection.c: output also literal strings. Allocate parameter data
29922         with GC_malloc() (thanks, Martin, for catching this!).
29923
29924 2002-03-26  Martin Baulig  <martin@gnome.org>
29925
29926         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
29927         include the `this' offset in the `param_offsets'.
29928
29929 2002-03-25  Martin Baulig  <martin@gnome.org>
29930
29931         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
29932         mono_debug_get_class() function to get the classes. Added new
29933         relocation types for arrays and strings.
29934         (mono_debug_get_class): New static function to search in all
29935         referenced assemblies for a metadata token.
29936
29937         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
29938
29939 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
29940
29941         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
29942         hold gc-allocated objects. Make the string heap a stream like the
29943         others. Removed duplicated code when writing stream info.
29944         Added asserts to catch possible buffer overflows. Set the sorted map
29945         for tables that need sorting. Added some documentation.
29946
29947 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
29948
29949         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
29950         for interned strings and vtables.
29951
29952 2002-03-24  Martin Baulig  <martin@gnome.org>
29953
29954         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
29955         it in the array since it was created with g_slist_prepend().
29956
29957 2002-03-24  Martin Baulig  <martin@gnome.org>
29958
29959         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
29960         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
29961         (mono_debug_method_from_token): Renamed to
29962         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
29963         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
29964
29965         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
29966         relocation types.
29967
29968         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
29969
29970 2002-03-24  Martin Baulig  <martin@gnome.org>
29971
29972         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
29973         (mono_debug_method_from_token): New func.
29974
29975         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
29976         New interncall, calls mono_debug_local_type_from_signature().
29977         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
29978         calls mono_debug_method_from_token().
29979
29980 2002-03-23  Martin Baulig  <martin@gnome.org>
29981
29982         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
29983         specifies the number of bytes to be converted, not the array size.
29984         Return the number of chars, not the number of bytes.
29985         (ves_icall_iconv_get_chars): The `byteCount' argument
29986         specifies the number of bytes to be converted, not the array size.
29987
29988 2002-03-23  Martin Baulig  <martin@gnome.org>
29989
29990         * reflection.h (MonoReflectionSigHelper): New type.
29991
29992         * reflection.c (mono_reflection_sighelper_get_signature_local),
29993         (mono_reflection_sighelper_get_signature_local): New functions.
29994
29995         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
29996         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
29997         interncalls.
29998
29999 2002-03-23  Martin Baulig  <martin@gnome.org>
30000
30001         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
30002         is_writeable is set.
30003         (mono_raw_buffer_update): New function to write the modified map
30004         back to disk.
30005
30006         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30007
30008         * debug-symfile.c (mono_debug_update_symbol_file): Call
30009         mono_raw_buffer_update() when done writing.
30010
30011 2002-03-23  Martin Baulig  <martin@gnome.org>
30012
30013         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30014
30015         * debug-symfile.c: Added support for arguments and local variables.
30016
30017 2002-03-23  Dick Porter  <dick@ximian.com>
30018
30019         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30020         protected by ifdefs, hence breaking the w32 build.
30021
30022 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30023
30024         * object.c: implement is_interned() the right way.
30025
30026 2002-03-21  Martin Baulig  <martin@gnome.org>
30027
30028         * debug-symfile.[ch]: New files to handle debugging information
30029         files. There's also support to dynamically update these symbol
30030         files to include machine dependent information.
30031
30032 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30033
30034         * threads.c (mono_thread_create): new function to create thread
30035         from C
30036
30037 2002-03-20  Martin Baulig  <martin@gnome.org>
30038
30039         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30040         method is a constructor.
30041         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30042         points to ves_icall_InternalInvoke().
30043
30044 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30045
30046         * file-io.c: Flush shouldn't throw exceptions.
30047
30048 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30049
30050         * file-io.c: FileStream flush support; FileSetLength now
30051         restores file pointer.
30052
30053 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30054
30055         * class.c: set image for pointer classes.
30056
30057 2002/03/19  Nick Drochak <ndrochak@gol.com>
30058
30059         * sysmath.c: Forgot one.
30060
30061 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30062
30063         * sysmath.c: Avoid redefining existing names.
30064
30065 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30066
30067         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30068         handled by runtime as icall rather than dllimport from libm.so
30069         * file-io.c, file-io.h: fixed handle argument type.
30070
30071 2002-03-18  Dick Porter  <dick@ximian.com>
30072
30073         * reflection.c (mono_image_get_type_info): rename interface to
30074         iface, because of "#define interface struct" on windows.
30075
30076 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30077
30078         * class.c, class.h: rename and export mono_ptr_class_get().
30079         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30080         * reflection.c, reflection.h, icall.c: better/saner type name
30081         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30082         method signatures.
30083
30084 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30085
30086         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30087
30088         * icall.c (ves_icall_InternalInvoke): impl.
30089
30090 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30091
30092         * reflection.c: output the interface map table, too.
30093
30094 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30095
30096         * class.c (class_compute_field_layout): separate computation of 
30097         static field layout
30098
30099 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30100
30101         * icall.c: added System.Buffer support.
30102         * file-io.c: moved file icalls from PAL to FileStream.
30103
30104 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30105
30106         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30107
30108 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30109
30110         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30111
30112 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30113
30114         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30115
30116 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30117
30118         * debug-helpers.{c,h}: moved here from monograph some useful functions
30119         to locate a method by name/signature in a class or image. Included
30120         also a small and flexible IL disassembler.
30121
30122 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30123
30124         * reflection.c: fixup tokens in methods with small header size, too.
30125
30126 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30127
30128         * object.c (mono_string_to_utf8): remove assert(!error), instead
30129         print a warning. 
30130
30131 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30132
30133         * icall.c: update to the new mono_Array_class_get interface.
30134
30135 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30136
30137         * appdomain.c, object.c: Boehm-GC enable.
30138         * icall.c: make get_data_chunk() support split data requests.
30139         Ensure a class is initialized in more cases. Return only the first
30140         property found in GetProperties() or the compiler gets confused. 
30141         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30142         * reflection.h, reflection.c: add fixup mechanism for field and method
30143         tokens. Initialize assembly->typeref in a single place. Output
30144         properties after events. Support custom attributes for events, too.
30145         Typo fix for paramter custom attrs.
30146
30147 2002-03-07  Martin Baulig  <martin@gnome.org>
30148
30149         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30150
30151 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30152
30153         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30154
30155 2002-03-06  Martin Baulig  <martin@gnome.org>
30156
30157         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30158         non-zero lower bounds. See testcases #F10-#F13.
30159
30160 2002-03-05  Martin Baulig  <martin@gnome.org>
30161
30162         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30163
30164         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30165         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30166         here.
30167         (ves_icall_System_Array_SetValue): Likewise.
30168         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30169         as argument and does the actual work. This function is used when copying a
30170         multi-dimensional array.
30171         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30172         now do all the widening conversions of value types.
30173         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30174
30175 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30176
30177         * class.c: remove some magic numbers and use the smbolic names,
30178         instead. Added init_events() to load event info at class init time.
30179         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30180         and mono_metadata_methods_from_event().
30181         * reflection.h, reflection.c: added support for writing out the evnets
30182         related information.
30183
30184 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30185
30186         * reflection.h, icall.c: use a different method (GetInterfaces)
30187         to gather interface info and add isbyref, isprimitive and
30188         ispointer to the ves_icall_get_type_info() return value.
30189
30190 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30191
30192         * class.h: stared adding support for events.
30193         * icall.c: split find_members implementation. Added debug icall to get
30194         the address of an object.
30195         * reflection.c: handle TypeBuilders in mono_type_get_object().
30196
30197 2002-03-01  Martin Baulig  <martin@gnome.org>
30198
30199         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30200         ArgumentOutOfRangeException(), not an ArgumentException().
30201         (ves_icall_System_Array_GetLowerBound): Likewise.
30202         (ves_icall_System_Array_GetValue): Improved argument checking.
30203         (ves_icall_System_Array_SetValue): Improved argument checking.
30204
30205 2002-03-01  Martin Baulig  <martin@gnome.org>
30206
30207         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30208         called with invalid arguments rather than just dying with g_assert().
30209         (ves_icall_System_Array_SetValue): Likewise.
30210         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30211         raise a NotImplementedException instead.
30212         (ves_icall_System_Array_GetLength): Added argument checking.
30213         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30214
30215 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30216
30217         * object.h (mono_assert): new macros mono_assert and
30218         mono_assert_not_reached
30219
30220 2002-02-28  Martin Baulig  <martin@gnome.org>
30221
30222         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30223         and "System::String::IsInterned" to "System::String::_IsInterned".
30224
30225 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30226
30227         * icall.c: remove hacks for typebuilder. Added icall to create a
30228         modified type from a tybebuilder.
30229         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30230         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30231         to create a backing MonoClass for a TypeBuilder.
30232
30233 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30234
30235         * class.c, class.h: more refactoring of class init.
30236         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30237
30238 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30239
30240         * marshal.c, marshal.h: start of marshaling interface.
30241
30242 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30243
30244         * icall.c: fix order in assembly qualified name icall.
30245
30246 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30247
30248         * class.c: do not free str, since we store it in the hash table.
30249         * reflection.h: add label field to MonoILExceptionInfo.
30250         * reflection.c: handle references to more than one assembly. Handle
30251         case when there isn't a module created in the assembly.
30252
30253 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30254
30255         * class.c: Fix typo. Start refactoring of class init code.
30256
30257 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30258
30259         * appdomain.c: exit with 1 on error.
30260         * class.c: we already have the name in MonoClassField.
30261         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30262         MonoStreamHeader instead of an offset of image->raw_metadata.
30263
30264 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30265
30266         * appdomain.c (mono_init): Be even more descriptive about the error.
30267
30268 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30269
30270         * appdomain.c: give the user an informative message when corlib can't
30271         be loaded.
30272
30273 2002-02-26  Martin Baulig  <martin@gnome.org>
30274
30275         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30276         New icall to get the time zone data.
30277
30278 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30279
30280         * reflection.c: set virtual and raw size of section correctly.
30281         * threads.c: transfer domain information to newly created threads.
30282
30283 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30284
30285         * class.c: when instancing a class in a domain, load the default
30286         vaules for static fields from the constant table. Fix System.Enum to
30287         not be an enum.
30288         * icall.c: implement Object::GetType() internalcall. Implemented
30289         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30290         Fixed checking of binding flags in find_members().
30291         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30292         * reflection.c: handle enumerations when writing to the constant
30293         table. Use a different object cache for types.
30294
30295
30296 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30297
30298         * object.c (mono_object_isinst): fix for arrays
30299
30300         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30301
30302 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30303
30304         * object.c: don't use mprotect ()  and fix intern pool hash table
30305         lookup for big endian systems.
30306
30307 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30308
30309         * icall.c: change type_is_subtype_of () signature.
30310
30311 2002-02-21  Mark Crichton  <crichton@gimp.org>
30312
30313         * rand.c, rand.h: Added random number generator for
30314         System.Security.Cryptography classes.
30315
30316         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30317
30318         * icall.c: Added System.Security.Cryptography calls.
30319
30320 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30321
30322         * class.c, icall.c, metadata.c: better support for pointer types.
30323         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
30324         * reflection.c: Add support for getting custom attrs for properties
30325         and simplify some code.
30326
30327 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30328
30329         * icall.c: change getToken () and add custom attribute GetBlob()helper
30330         method.
30331         * reflection.h: add custom attrs array to the reflection builder structures.
30332         * reflection.c: encode and emit custom attributes for all the relevant
30333         reflection objects. Cache fieldref and methodref tokens. Change
30334         mono_image_create_token() interface to take a MonoDynamicAssembly.
30335         More complete custom attributes decoder. Load custom attributes for
30336         Assembly, Field, Method and Constructor objects, too. Make the
30337         returned array an Attribute[] one, not object[]. Added
30338         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
30339         custom attribute constructor.
30340
30341 2002-02-20  Dick Porter  <dick@ximian.com>
30342
30343         * icall.c:
30344         * rawbuffer.c:
30345         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
30346         problem code out for now).
30347
30348 2002-02-19  Radek Doulik  <rodo@ximian.com>
30349
30350         * object.c (mono_ldstr): use hash table to avoid multiple swapping
30351
30352 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
30353
30354         * icall.c: register the GetCustomAttributes method.
30355         * object.c, object.h: add mono_string_new_len ().
30356         * reflection.h, reflection.c: added mono_runtime_invoke(),
30357         mono_install_runtime_invoke(). Added
30358         mono_reflection_get_custom_attrs () to load custom attributes and
30359         create the attribute objects.
30360
30361 2002-02-19  Dick Porter  <dick@ximian.com>
30362         * threads-dummy-types.c:
30363         * threads-dummy-types.h:
30364         * threads-dummy.c:
30365         * threads-dummy.h:
30366         * threads-pthread-types.c:
30367         * threads-pthread-types.h:
30368         * threads-pthread.c:
30369         * threads-pthread.h:  Deleted obsolete files
30370
30371 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
30372
30373         * class.c (mono_class_vtable): runtime init the class when we
30374         allocate static class data.
30375
30376         * icall.c (ves_icall_System_Array_SetValue): check for null values.
30377
30378         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
30379         and String - but we will need generic marshalling support in the
30380         future. 
30381         (mono_init): set the domain name in a ms compatible way
30382
30383         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
30384         String[].
30385
30386 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
30387
30388         * object.c (mono_array_clone): use alloca() instead of g_malloc  
30389         for sizes
30390
30391         * appdomain.c (mono_domain_unload): impl.
30392
30393 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30394
30395         * appdomain.c, object.c: fix intern pool implementation.
30396         * class.c: fix alignment code.
30397
30398 2002-02-16  Radek Doulik  <rodo@ximian.com>
30399
30400         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
30401         and s2 > s1, just copy lower bytes to be compatible with little
30402         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
30403         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
30404
30405         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
30406         force big_endian to be 1 for big endian machines 
30407         (ves_icall_iconv_new_decoder): ditto
30408
30409 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
30410
30411         * socket-io.c (convert_sockopt_level_and_name): If the system
30412         doesn't define SOL_IP or SOL_TCP, get them by hand using
30413         getprotobyname() and caching the values (because this could be a
30414         slow operation).
30415         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
30416         Use the appropriate struct when the system does support it. Ie,
30417         not all systems have struct ip_mreqn so use struct ip_mreq when
30418         appropriate.
30419
30420 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
30421
30422         * reflection.c: handle finally clauses.
30423
30424 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
30425
30426         * socket-io.c: use g_snprintf() instead of snprintf.
30427
30428 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30429
30430         * reflection.c (mono_param_get_objects): Cast second argument to
30431         mono_method_get_param_names to a const char** to silence the
30432         compiler warning.
30433
30434         * appdomain.c (mono_domain_assembly_open): Put parens around the
30435         truth statement in the for-loop.
30436
30437         * unicode.c (iconv_convert): Got rid of a compiler warning about
30438         int i being unused when the system has a new iconv.
30439         (iconv_get_length): Same.
30440
30441         * image.c (load_class_names): Cast the second argument to
30442         g_hash_table_insert() to char* to hush compiler warnings about the
30443         arg being a const.
30444         (mono_image_open): Same here.
30445
30446         * socket-io.c: Don't conditionally include sys/filio.h or
30447         sys/sockio.h here anymore since we now get them from
30448         io-layer/io-layer.h
30449         (inet_pton): If the system doesn't support inet_aton, implement
30450         using inet_addr and also #define INADDR_NONE if it isn't defined
30451         by the system.
30452
30453 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30454
30455         * metadata.c, metadata.h: added function to get packing and size info
30456         of a typedef.
30457         * reflection.h, reflection.c: handle field RVA data. Save info about
30458         the table layout if needed. Assign typedef indexes to all the types
30459         before dumping the info about them to avoid forward reference problems.
30460
30461 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
30462
30463         * socket-io.c (convert_sockopt_level_and_name): ifdef
30464         SO_ACCEPTCONN because it is not defined on my system (old debian)
30465
30466 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30467
30468         * opcode.c: use stddef.h to get NULL.
30469
30470 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30471
30472         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
30473         for FIONBIO, FIONREAD and SIOCATMARK.
30474         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
30475         define INADDR_NONE and besides, inet_addr() is deprecated and
30476         should not be used. Use inet_pton() instead - it also has the
30477         added bonus that it can easily handle IPv6 addresses as well.
30478         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
30479
30480 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30481
30482         * decimal.c: remove _MSC_VER conditional.
30483
30484 2002-02-13  Dick Porter  <dick@ximian.com>
30485
30486         * socket-io.c: 
30487         * icall.c: Internal calls for Blocking, Select, Shutdown,
30488         GetSocketOption and SetSocketOption
30489
30490 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30491
30492         * assembly.cs: better resolver: use it instead of some kludgy
30493         code.
30494
30495 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
30496
30497         * reflection.c: the best way to speed-up the compiler is to avoid
30498         infinite loops.
30499
30500 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
30501
30502         * class.c (mono_class_vtable): changed the object layout
30503         (obj->vtable->class). 
30504         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
30505
30506 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30507
30508         * assembly.c: look for assemblies in the assembly dir, too.
30509
30510 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30511
30512         * class.c: fix thinko in mono_class_from_type().
30513
30514 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30515
30516         * exception.h, exception.c: added TypeLoadException.
30517         * object.h, object.c: added mono_array_clone ().
30518         * icall.c: handle throwOnError in AssemblyGetType().
30519         Added Array.Clone().
30520         * opcode.h, opcode.c: use a single value for the opcode val.
30521         Compile fix for non-gcc compilers.
30522
30523 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
30524
30525         * opcodes.c, opcodes.h: export interesting info about opcodes.
30526
30527 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
30528
30529         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
30530         icalls. 
30531
30532         * class.c (class_compute_field_layout): set element_class for enums
30533         (mono_class_create_from_typedef): set element_class for normal classes
30534
30535         * icall.c (ves_icall_System_Enum_get_value): impl.
30536
30537         * class.c (mono_class_create_from_typedef): do not set valuetype
30538         flag for System.ValueType and System.Enum
30539
30540 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
30541
30542         * unicode.c (iconv_convert): fix big endian problem.
30543
30544 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30545
30546         * class.c: add asserts if we are ever going to scribble over memory.
30547         * socket-io.c: not all systems have AF_IRDA defined.
30548
30549 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
30550
30551         * class.c (class_compute_field_layout): do not consider static
30552         fields to compute alignment
30553
30554 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
30555
30556         * appdomain.c (mono_appdomain_get): impl.
30557         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
30558
30559 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30560
30561         * icall.c: ignore "file://" prefix when loading an assembly.
30562
30563 2002-01-23  Dick Porter  <dick@ximian.com>
30564
30565         * socket-io.c:
30566         * icall.c:
30567         * Makefile.am: Added socket support
30568
30569 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30570
30571         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
30572         code back.  This should return the assemblies that are loaded by
30573         the runtime on behalf of an application domain. 
30574
30575         The current implementation is still broken, it just returns every
30576         assembly loaded, but until we get real applications domain this
30577         will do.
30578
30579 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
30580
30581         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
30582         AppDomain object.
30583
30584 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30585
30586         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
30587         the mono_class_from_name lookup.
30588         (ves_icall_get_parameter_info): ditto.
30589         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
30590         method.
30591         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
30592
30593 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
30594
30595         * class.c: load also nested classes on class init.
30596         System.ValueType instance methods gets passed boxed
30597         values, unless methods in derived classed that get a pointer to the
30598         data.
30599         * icall.c: use better name parsing code in GetType().
30600         * image.c, image.h: add mono_image_loaded ().
30601         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
30602         * reflection.c, reflection.h: added mono_reflection_parse_type().
30603
30604 2002-01-22  Veronica De Santis <veron78@interfree.it>
30605
30606         * icall.c : Added mapping of internal calls for Manual and Auto reset events
30607         * threads.c : Added the implementation of internal calls for events
30608         * threads.h : Added prototypes of internal calls for events
30609         
30610 2002-01-21  Radek Doulik  <rodo@ximian.com>
30611
30612         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
30613
30614 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
30615
30616         * class.c (mono_class_init): set min_align to 1 (instead of 0)
30617         (mono_class_value_size): use min_align
30618
30619 2002-01-20  Dick Porter  <dick@ximian.com>
30620
30621         * threads.h:
30622         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
30623         so it compiles on w32.
30624
30625 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
30626
30627         * metadata.c (mono_type_stack_size): impl.
30628
30629         * class.c (mono_class_get_field): impl. memberref token
30630
30631 2002-01-16 Veronica De Santis <veron78@@interfree.it>
30632
30633         * icall.h : Added the internal calls mapping for CreateMutex_internal
30634                     and ReleaseMutex_internal.
30635         * threads.h : Added the prototype of mutexes internal calls.
30636         * threads.c : Added the implementations of mutexes internal calls.
30637
30638 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30639
30640         * metaparse.h: removed unused file.
30641         * reflection.c, reflection.h: added stream_data_align () function 
30642         to align data in streams and keep stream aligned. Add support for
30643         exception support in method headers.
30644
30645 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
30646
30647         * unicode.c: make iconv_convert () return the number of bytess written
30648         in the output buffer.
30649
30650 2002-01-15  Dick Porter  <dick@ximian.com>
30651         * threads.c: Make the runtime's idea of infinite timeouts coincide
30652         with the class library's
30653
30654         Fix a particularly egregious bug in mono_thread_cleanup(). That
30655         code was so utterly bogus it must have been written on a Monday.
30656
30657 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30658
30659         * reflection.h: add subtypes field to TypeBuilder.
30660         * reflection.c: encode constants for literal fields.
30661         Handle subtypes. Fix user string token (and add a zero byte)
30662         at the end.
30663         
30664 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
30665
30666         * class.c (mono_class_init): bug fix: assign slot numbers for
30667         abstract methods.
30668
30669 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30670
30671         * reflection.c: don't try to output a code RVA for abstract methods.
30672         Small fixes for method header format. Output parameter info to the
30673         ParamDef table. Save method overriding info to MethodImpl table.
30674         Fix property support. Allow typedef.extends to be a type in the
30675         building assembly.
30676         * verify.c: fix off-by-one error.
30677
30678 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
30679
30680         * class.c: fix mono_class_from_mono_type () for szarray types.
30681         Remove unused cache check in mono_class_from_type_spec().
30682         * icall.c: *type_from_name () functions handle simple arrays and byref.
30683         * reflection.c: handle byref and szarray types. Handle methods without
30684         body (gets P/Invoke compilation working). Handle types and fields in
30685         get_token ().
30686         * reflection.h: add rank to MonoTypeInfo.
30687
30688 2002-01-10  Dick Porter  <dick@ximian.com>
30689
30690         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
30691         internal calls
30692
30693 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30694
30695         * icall.c: initialize class in type_from_handle ().
30696         Loop also in parent classes for get_method ().
30697         * reflection.c: properly encode class and valuetype types.
30698         Start on encoding TypeBuilder types. Handle fieldrefs.
30699         Use correct length when registering a user string.
30700         Handle ConstructorBuilder and MonoMethod in get_token ().
30701         Make mono_type_get_object () aware of cached types.
30702         * object.c: back out change to mono_string_new ().
30703
30704 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
30705         * object.c: mono_string_new should return a NULL when the string 
30706         passed in is NULL -- not try to deference it.
30707         
30708 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30709
30710         * icall.c: hack to make IsSubType work for TypeBuilders.
30711         * reflection.c: emit constructors before methods.
30712         Retrieve param names in mono_param_get_objects().
30713
30714 2002/01/05  Nick Drochak  <ndrochak@gol.com>
30715
30716         * Makefile.am: fix list of headers and sources so automake 1.5
30717         doesn't complain. Removed \# at end of list.
30718
30719 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30720
30721         * reflection.c: get token for a method ref. Set return type of
30722         constructor to void.
30723         * loader.c: debug message.
30724         * class.c: typo fix.
30725
30726 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
30727
30728         * icall.c: fix array init with rank > 1. FindMembers
30729         loops in parent class as well.
30730         * image.c: do not insert nested types in name cache.
30731         * reflection.c: warning fix.
30732         * reflection.h: add override method (for interface impl).
30733
30734 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
30735
30736         * metadata.c: fix customattr decoding.
30737
30738 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
30739
30740         * rawbuffer.cs: Added native Win32 implementation, avoids using
30741         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
30742
30743 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
30744
30745         * class.c: make the low-level routines handle the cache.
30746
30747 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
30748
30749         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
30750
30751 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
30752
30753         * class.c: fix mono_array_element_size() for objects.
30754         * class.h, class.c: add properties to MonoClass and load them
30755         at init time.
30756         * icall.c: check with isinst() when assigning a value to an array
30757         instead of requiring the classes to match exactly.
30758         Implemented icall for System.Type::GetType().
30759         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
30760         enums. Handle bindingflags when looking for methods and fields.
30761         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
30762         and mono_metadata_methods_from_property().
30763         * reflection.h, reflection.c: added structures for propreties,
30764         parameters and enums. Implemented mono_property_get_object() and
30765         mono_param_get_objects().
30766
30767 2001-12-18  Dick Porter  <dick@ximian.com>
30768
30769         * file-io.c: Use mono_string_to_utf16() instead of
30770         mono_string_chars()
30771
30772         * object.c: Added mono_string_to_utf16(), which copies the non
30773         NULL-terminated MonoString into a new double-null-terminated
30774         buffer.
30775
30776 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
30777
30778         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
30779
30780 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
30781
30782         * file-io.c: raise exceptions if handle is invalid.
30783
30784 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
30785
30786         * assembly.c: yet another check for mscorlib.
30787         * class.c, class.h: load nesting info for classes.
30788         * icall.c: many new functions to support the Reflection classes.
30789         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
30790         * reflection.h, reflection.c: mono_image_create_token(),
30791         mono_assembly_get_object(), mono_type_get_object(),
30792         mono_method_get_object(), mono_field_get_object(): methods to return
30793         objects that parallel the C representation of assemblies, types,
30794         methods, fields.
30795
30796 2001-12-11  Dick Porter  <dick@ximian.com>
30797
30798         * icall.c:
30799         * file-io.c: Internal calls for file IO.
30800
30801 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
30802
30803         * tabledefs.h: missing FileAttributes.
30804         * verify.h, verify.c: use is_valid_string () to simplify and check for
30805         valid strings more correctly. Fix warnings and speeling.
30806         Check more tables: Filed, File, ModuleRef, StandAloneSig.
30807         Check code: branches, maxstack, method calls.
30808
30809 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
30810
30811         * object.c (mono_object_allocate): removed static, so that the jit
30812         can allocate value types.
30813
30814         * icall.c (ves_icall_System_DateTime_GetNow): impl.
30815
30816 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30817
30818         * class.c: init enum types right away and register the
30819         token->MonoClass map in mono_class_create_from_typedef ().
30820         * verify.h, verify.c: first cut of the verifier.
30821         * pedump.c: add --verify switch to verify metadata tables.
30822         * tabledefs.h: add some missing enums.
30823
30824 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
30825
30826         * class.c (mono_install_runtime_class_init): impl.
30827         (mono_class_init): renamed mono_class_metadata_init to
30828         mono_class_init, also removed the metadata_inited flag
30829
30830         * object.c (mono_object_isinst): use faster algorithm
30831
30832 2001-11-30  Radek Doulik  <rodo@ximian.com>
30833
30834         * mono-endian.h: reverted last change
30835         added function prototypes
30836
30837         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
30838         add mono-endian.c back
30839
30840         * mono-endian.c: returned back, as Paolo pointed out, it's needed
30841         for unaligned access, I've mistaked it with endianess. I am
30842         sorry.
30843         (mono_read16): fix reverted endianess
30844         (mono_read64): ditto
30845         (mono_read32): ditto
30846
30847 2001-11-30  Dick Porter  <dick@ximian.com>
30848
30849         * exception.c: Implement mono_exception_from_name()
30850
30851 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
30852
30853         * metadata.h, metadata.c: remove params_size and locals_size and their
30854         calculation from the metadata code: they are only usefult to the
30855         interp.
30856
30857 2001-11-29  Radek Doulik  <rodo@ximian.com>
30858
30859         * object.c (mono_ldstr): swap bytes here, it's probably not the
30860         best place, but works for me now, I'll redo it once I know mono
30861         better, also note that I add PROT_WRITE and don't reset back, also
30862         note that it's only affects big endians, so x86 should be OK
30863
30864         * mono-endian.h (read16): use just glib macros for both endians
30865
30866         * mono-endian.c: removed as glib macros are used in in
30867         mono-endian.h so we don't need to care about endianess for read
30868         macros as glib does that for us already
30869
30870 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
30871
30872         * class.h, class.h: take minimum alignment into consideration so
30873         that the fields of a class remain aligned also when in an array.
30874
30875 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30876
30877         * loader.h, loader.c: add mono_method_get_param_names().
30878         * class.c: 0-init class fields.
30879
30880 2001-11-26  Dick Porter  <dick@ximian.com>
30881
30882         * icall.c:
30883         * threads-types.h:
30884         * threads.c: New file that handles System.Threading on all platforms
30885
30886         * object.c: 
30887         * object.h: Remove the synchronisation struct from MonoObject,
30888         replace it with a pointer that gets initialised on demand
30889
30890         * Makefile.am: Replace all the system-specific threading code with
30891         a single file that uses the new wrapper library
30892
30893 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
30894
30895         * class.c, class.h: add mono_install_trampoline() so that the runtime
30896         can register a function to create a trampoline: removes the ugly
30897         requirement that a runtime needed to export arch_create_jit_trampoline.
30898         * object.h, object.c: added mono_install_handler() so that the runtime
30899         can install an handler for exceptions generated in C code (with
30900         mono_raise_exception()). Added C struct for System.Delegate.
30901         * pedump.c: removed arch_create_jit_trampoline.
30902         * reflection.c: some cleanups to allow registering user strings and
30903         later getting a token for methodrefs and fieldrefs before the assembly
30904         is built.
30905         * row-indexes.h: updates and fixes from the new ECMA specs.
30906
30907 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
30908
30909         * class.h, class.c: add enum_basetype field to MonoClass.
30910         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
30911         to get index in the constant table reated to a field, param or
30912         property.
30913         * reflection.h, reflection.c: handle constructors. Set public-key and
30914         version number of the built assembly to 0.
30915         * row-indexes.h: update from new ECMA spec.
30916
30917 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
30918
30919         * class.h, class.c: add a max_interface_id to MonoClass.
30920         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
30921         since it's used to do that. Added mono_type_type_from_obj().
30922         Make GetType() return NULL instead of segfaulting if the type was not
30923         found. Handle simple arrays in assQualifiedName.
30924         * object.h: add a struct to represent an Exception.
30925         * reflection.c: output call convention in method signature.
30926         Add code to support P/Invoke methods and fixed offsets for fields.
30927
30928 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
30929
30930         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
30931         the value.
30932         * icall.c: use mono_array_addr instead of array->vector: fixes the
30933         reflection image writing.
30934         * reflection.c: init call convention byte to 0 in method signature.
30935         Encode the property signature. Don't output property-related methods
30936         twice. Really process the properties for a type (don't cast a field to
30937         a property, my mom always told me that).
30938         Fix 64 bit issues in pointer alignment in a different and more
30939         readable way.
30940
30941 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
30942
30943         * loader.h: Removed type class from MonoDefaults, added monotype
30944
30945         * loader.c: Loaded MonoType, removed loading of Type
30946
30947         * icall.c (my_mono_new_object): Now returns a System.MonoType,
30948         and fills in System.Type._impl with a RuntimeTypeHandle rather
30949         than the actual MonoClass *
30950
30951         (ves_icall_type_from_handle): change from type_class to
30952         monotype_class
30953
30954         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
30955         implemented
30956
30957         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
30958         implemented
30959
30960         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
30961
30962         (ves_icall_System_Reflection_Assembly_GetType): implemented
30963
30964         (ves_icall_System_MonoType_assQualifiedName): implemented
30965
30966         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
30967
30968 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
30969
30970         * assembly.c (mono_assembly_open): Implement a cache for the
30971         assemblies. 
30972
30973         (mono_assembly_close): only destroy the assembly when the last
30974         reference is gone.
30975         
30976 2001-11-09  Dick Porter  <dick@ximian.com>
30977
30978         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
30979
30980 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
30981
30982         * class.c (mono_class_metadata_init): bug fix: compute the right slot
30983
30984 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
30985
30986         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
30987         from Martin Weindel.
30988         * object.h: add mono_string_chars ().
30989
30990 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
30991
30992         * reflection.c (build_compressed_metadata): Eliminates warnings
30993         and uses 64-bit clean code.
30994
30995         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
30996         (mono_type_equal): Change signature to eliminate warnings.
30997
30998 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30999
31000         * icall.c, loader.c: remove the internalcall array constructors.
31001         Changes to match the new MonoArray structure.
31002         * object.h, object.c: an array object doesn't allocate an extra
31003         vector. Add mono_array_new_full () to create jagged arrays easily.
31004
31005 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31006
31007         * metadata.h, metadata.c: add mono_metadata_field_info () to
31008         retreive all the info about a field from vairous tables.
31009         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31010         * class.h, class.c: augment MonoClassField with more info.
31011         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31012         policy and load a field's RVA if needed.
31013
31014 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31015
31016         * class.c (mono_class_metadata_init): create a trampoline for all
31017         virtual functions instead of actually compiling them.
31018
31019 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31020
31021         * class.h, class.c: include name in MonoClassField.
31022         * class.c: fix fundamental type of System.Object and System.String.
31023         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31024         tokens in ldtoken.
31025         * icall.c: remove internalcalls for the Reflection stuff that is now
31026         done in C# code.
31027         * loader.c: mono_field_from_memberref () implementation.
31028         * mono-endian.c: thinko (s/struct/union/g).
31029         * object.c, object.h: make the mono_string_* prototypes actually use
31030         MonoString instead of MonoObject.
31031         * reflection.c, reflection.h: updates for changes in the reflection
31032         code in corlib: we use C structures that map to the actual C# classes.
31033         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31034         fat method header if needed and use the info from the ILGenerator for
31035         methods. Handle fields in types. Misc fixes.
31036
31037 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31038
31039         * class.c (mono_class_metadata_init): bug fix: always allocate
31040         space for static class data
31041
31042 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31043
31044         * class.c (mono_compute_relative_numbering): use relative
31045         numbering to support fast runtime type checks.
31046
31047 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31048
31049         * class.c (mono_class_create_from_typeref): added debugging output
31050         to print class name when MonoDummy is returned instead of real class
31051
31052 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31053
31054         * class.c (mono_class_metadata_init): interface offset table now
31055         contains pointers into the vtable - this is more efficient for the jit
31056
31057 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31058
31059         * class.c (mono_class_metadata_init): use a temporary vtable (the
31060         old algorithm only worked for the interpreter, but not for the jit)
31061
31062 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31063
31064         * loader.c (method_from_memberref): use mono_class_get to get the
31065         class of an array instead of using System.Array directly.
31066         (mono_get_method): also add MEMBERREF methods to the method cache
31067         which usefull for arrays.
31068
31069 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31070
31071         * pedump.c (arch_compile_method): added to compute vtable entry
31072
31073         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31074         number of interfaces.
31075         
31076         * class.h: merged MonoArrayClass into MonoClass
31077
31078         * class.c (mono_class_create_from_typedef): compute the vtable size and
31079         allocate space to include the vtable inside MonoClass
31080         (mono_class_metadata_init): initialize the vtable
31081
31082 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31083
31084         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31085         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31086         * image.c: endian fixes by Laurent Rioux.
31087         * object.h, object.c: rename MonoStringObject to MonoString and
31088         MonoArrayObject to MonoArray. Change some function names to conform to
31089         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31090         guint16* as first argument, so don't use char*.
31091         Provide macros to do the interesting things on arrays in a portable way.
31092         * threads-pthread.c: updates for the API changes and #include <sched.h>
31093         (required for sched_yield()).
31094         * icall.c: updates for the API changes above.
31095         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31096         platforms that need them.
31097
31098 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31099
31100         * class.c: set the correct type for all the fundamental
31101         type when loading the class.
31102
31103 2001-10-05  Dick Porter  <dick@ximian.com>
31104
31105         * threads-pthread.c (pthread_mutex_timedlock): Simple
31106         compatibility version for C libraries that lack this call.
31107
31108 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31109
31110         * class.c: MonoTypes stored in MonoClass are stored as
31111         fundamental MonoTypes when the class represents a
31112         fundamental type (System.Int32, ...).
31113         The TypeHandle return by ldtoken is a MonoType*.
31114         * icall.c: ves_icall_get_data_chunk () write out all the
31115         PE/COFF stuff. Implement ves_icall_define_method (),
31116         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31117         * image.c: properly skip unknown streams.
31118         * loader.h, loader.c: add type_class to mono_defaults.
31119         * metadata.c, metadata.h: export compute_size () as
31120         mono_metadata_compute_size () with a better interface.
31121         Typo and C&P fixes.
31122         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31123         * reflection.c, reflection.h: many cleanups, fixes, output method
31124         signatures and headers, typedef and typeref info, compress the metadata
31125         tables, output all the heap streams, cli header etc.
31126         * row-indexes.h: typo fixes.
31127
31128 2001-10-04  Dick Porter  <dick@ximian.com>
31129
31130         * object.h: Add a synchronisation mutex struct to MonoObject
31131
31132         * object.c (mono_new_object): Initialise the object
31133         synchronisation mutexes
31134
31135         * icall.c: System.Threading.Monitor internal calls
31136         
31137         * threads-pthread.h:
31138         * threads-pthread.c: System.Threading.Monitor internal calls
31139
31140         * threads-types.h: New file, includes the system-specific thread
31141         structures
31142         
31143         * threads-pthread-types.h:
31144         * threads-pthread-types.c: New files, handle pthread-specific
31145         synchronisation types
31146
31147         * threads-dummy-types.h: 
31148         * threads-dummy-types.c: New files of dummy support for
31149         thread-specific types
31150
31151         * metadata.c:
31152         * image.c:
31153         * pedump.c: include mono-endian.h not endian.h
31154         
31155         * Makefile.am: More threads files.
31156         Name mono-endian.h not endian.h
31157
31158 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31159
31160         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31161         stuff and implement a few more bits.
31162         * icall.c: a field needs to be dereferenced twice. Do not use the same
31163         name for two variables in the same scope.
31164         * image.c, image.h: cleanups.
31165
31166 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31167
31168         * class.c (mono_class_metadata_init): bug fix: compute the right size
31169
31170 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31171
31172         * icall.c: implemented some of the Reflection internalcalls.
31173         * image.c, image.h: start writing out the PE/COFF image.
31174         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31175         that does the reverse than decode_blob_size ().
31176         * object.c: use mono_metadata_encode_value (). Move here
31177         temporary implementation of mono_string_to_utf8 ().
31178         * rawbuffer.c: make malloc_map static.
31179
31180 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31181
31182         * metadata.c: fix type comparison for arrays.
31183         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31184         Added a couple of new classes to monodefaults.
31185         * icall.c: added a couple of Reflection-related internalcalls.
31186         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31187         Added a byval_arg MonoType to MonoClass.
31188
31189 2001-09-28  Dick Porter  <dick@ximian.com>
31190
31191         * icall.c:
31192         * threads-pthread.h: 
31193         * threads-pthread.c: Implemented internal calls for
31194         LocalDataStoreSlot operations.  Applied mutexes around all shared
31195         data.  Reworked the thread creation and Start() operations to
31196         avoid a race condition.
31197         
31198         * threads-dummy.h:
31199         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31200
31201 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31202
31203         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31204
31205 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31206
31207         * class.c, loader.c: warn and return NULL instead of erroring out.
31208         * icall.c: added System.AppDomain::getCurDomain().
31209         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31210
31211 2001-09-25  Dick Porter  <dick@ximian.com>
31212
31213         * threads-pthread.h:
31214         * threads-pthread.c: Implemented timed thread joining and added
31215         System.Threading.Thread::Join_internal internal call
31216
31217         * icall.c: Added System.Threading.Thread::Join_internal internal call
31218
31219         * threads-dummy.h:
31220         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31221
31222 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31223
31224         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31225         mono_string_intern () to implement the semantics of the ldstr opcode
31226         and the interning of System.Strings.
31227         * icall.c: provide hooks to make String::IsIntern and String::Intern
31228         internalcalls.
31229
31230 2001-09-23  Dick Porter  <dick@ximian.com>
31231
31232         * threads-dummy.c: 
31233         * threads-dummy.h: New files of dummy threading routines
31234
31235         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31236         support code based on system specifics
31237
31238         Rename PTHREAD_LIBS to THREAD_LIBS
31239         
31240 2001-09-23  Dick Porter  <dick@ximian.com>
31241
31242         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31243         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31244         internal calls.
31245         (mono_thread_init): Set up a Thread object instance to return when
31246         the main thread calls Thread.CurrentThread
31247         (mono_thread_cleanup): Wait for all subthreads to exit
31248
31249         * icall.c: New internal calls for System.Threading.Thread::Sleep
31250         (including Schedule) and CurrentThread
31251
31252         * threads.h: New file, to insulate thread-specific stuff from the
31253         rest of the code
31254
31255 2001-09-21  Dick Porter  <dick@ximian.com>
31256
31257         * threads-pthread.h: 
31258         * threads-pthread.c: New file, for handling pthreads-style
31259         threading support.  Start() now starts a new thread and executes
31260         the ThreadStart delegate instance.
31261
31262         * icall.c: Added the internalcall for
31263         System.Threading.Thread::Start_internal
31264
31265         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31266
31267 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31268
31269         * loader.c: work around the different signatures for delegates
31270         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31271
31272 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31273
31274         * class.h, class.c: add mono_class_get_field_from_name ().
31275         * *: Fix C comments and other ANSI C issues.
31276
31277 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31278
31279         * endian.h, assembly.c: fix some endianness issues.
31280
31281 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31282
31283         * loader.h, load.c: add delegate_class to mono_defaults.
31284         Handle runtime provided methods in mono_get_method ().
31285
31286 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31287
31288         * loader.c (mono_get_method): use pinvoke for internal call
31289
31290         * icall.c: use pinvoke for internal call
31291
31292         * loader.c (method_from_memberref): set the method name
31293
31294 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31295
31296         * metadata.c: help the compiler generate better code for
31297         mono_class_from_mono_type ().
31298
31299 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31300
31301         * class.c (mono_class_metadata_init): delayed computing of the
31302         class size to mono_class_metadata_init ()
31303
31304 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31305
31306         * class.c, class.h: add an interfaces member to MonoClass.
31307         * image.c, image.h: add assembly_name field to MonoImage
31308         from the assembly table.
31309         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31310
31311 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31312
31313         * class.c: Handle Array in mono_class_from_mono_type ().
31314         * metadata.c, pedump.c: some endian fixes.
31315
31316 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31317
31318         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
31319         * metadata.c: fix small problem introduced with the latest commit.
31320
31321 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
31322
31323         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
31324         We don't need a MonoMetadata pointer anymore to compare signatures in
31325         mono_metadata_signature_equal (), update callers.
31326         Reduced memory usage an number of allocations for MonoMethodHeader and
31327         MonoMethodSignature.
31328
31329 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
31330
31331         * metadata.c: added compare for szarray.
31332
31333 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
31334
31335         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
31336         and add a couple more types to it and mono_defaults. Give an hint on
31337         classes that need implementing in our corlib and are referenced
31338         in mscorlib.
31339
31340 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
31341
31342         * class.h, class.c: keep track if a class is also an Enum.
31343         * loader.c: Implement a couple more types for use in libffi
31344         marshalling. Gives better diagnostics when failing to dlopen
31345         a library. Set method->klass for P/Invoke methods, too.
31346
31347 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
31348
31349         * class.c, class.h: add a MonoType this_arg to MonoClass that
31350         represents a pointer to an object of the class' type that
31351         can be used by the interpreter and later the type cache.
31352         Add best guess alignment info for valuetype objects.
31353
31354 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
31355
31356         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
31357         into MonoType: one less level of indirection and allocation and
31358         simplifies quite a bit of code. Added cache for MonoTypes that are
31359         used frequently, so that we don't need to allocate them all the time.
31360
31361 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
31362
31363         * class.c (mono_class_create_from_typedef): System.Enum is also a
31364         value type, although it does not derive from System.ValueType
31365         (maybe a bug in the ms compiler?)
31366
31367         * metadata.c (mono_type_size): return the right size for value types
31368
31369         * loader.c (mono_get_method): only initialize method header if not abstract
31370
31371         * class.c (mono_class_from_mono_type): use mono_default values. 
31372
31373 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
31374
31375         * *: use MonoClass pointers instead of <type_tokens>
31376         
31377         * class.h: new flag: metadata_inited.
31378
31379         * class.c (mono_class_metadata_init): impl.
31380         (mono_class_instance_size): impl.
31381         (mono_class_data_size): impl.
31382
31383 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31384
31385         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
31386         MonoClass now has the name and name_space fields. 
31387         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
31388         mono_get_method () takes and optional MonoClass as argument.
31389         Removed mono_typedef_from_name() and added mono_class_token_from_name()
31390         instead that takes advantage of a map from class names to typedef
31391         tokens in MonoImage.
31392
31393 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
31394
31395         * metadata.c: zero is not a valid alignment boundary.
31396         Merge MONO_TYPE_VOID in default decoding code.
31397
31398 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
31399
31400         * image.h: merged MonoMetadata into MonoImage
31401
31402         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
31403         identify the type of elements.
31404
31405 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
31406
31407         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
31408         * cil-coff.h: split MonoMSDOSHeader and add size info.
31409         * image.c: add some consistency checks.
31410         * metadata.c: fix row size computation: one programmer
31411         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
31412         add explanation for the locator routine.
31413         Fix decoding of size in method header.
31414         
31415 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
31416
31417         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
31418         (g_concat_dir_and_file): Bring g_concat_dir_and_file
31419         function from gnome-libs.  This uses the right path separator
31420         based on the OS, and also works around a bug in some systems where
31421         a double slash is not allowed. 
31422         (default_assembly_name_resolver): Use g_concat_dir_and_file
31423         (mono_assembly_open): ditto.
31424
31425 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
31426
31427         * metadata.c (mono_metadata_signature_equal): impl.
31428
31429         * *: void is now a realy MonoType (instead of using NULL)
31430         
31431         * metadata.c (do_mono_metadata_parse_type): use
31432         mono_metadata_parse_type to parse void value.
31433
31434 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
31435
31436         * metadata.c, metadata.h: in the signature and method header store
31437         only the space required for holding the loca vars and incoming arguments.
31438
31439 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
31440
31441         * metadata.c (do_mono_metadata_parse_type): treat void like any
31442         other type (instead of assigning NULL);
31443
31444 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
31445
31446         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
31447
31448 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
31449
31450         * image.c (do_mono_image_open): added a cache for arrays.
31451
31452 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31453
31454         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
31455         decode a single column from a row in a metadata table and changes
31456         to take advantage of it in the typedef locator (gives a nice speed up).
31457         Store offset info for function params.
31458
31459 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
31460
31461         * image.h (MONO_IMAGE_IS_CORLIB): removed 
31462
31463 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
31464
31465         * assembly.c: how could mono_assembly_close () had ever worked?
31466         * metadata.c, metadata.h: provide offset info for local vars.
31467         Implement mono_type_size () to take care of alignment as well
31468         as size (it was mono_field_type_size in cli/class.c before).
31469
31470 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
31471
31472         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
31473
31474         * assembly.h (CORLIB_NAME): set to corlib.dll
31475
31476         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
31477
31478 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31479
31480         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
31481         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
31482         tokentype.h: massive namespace cleanup.
31483
31484 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31485
31486         * metadata.h, metadata.c: decode exception clauses when parsing method header.
31487
31488 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
31489
31490         * metadata.c (mono_metadata_free_type): added check for type !=
31491         NULL (void) before calling mono_metadata_free_type()
31492
31493 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
31494
31495         * metadata.h, row_indexes.h: added header with enumerations to use
31496         to index in the columns from tables in metadata and to decode coded
31497         tokens: we should start using this instead of embedding magic numbers
31498         all over the code.
31499
31500 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
31501
31502         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
31503         Move metadata_t info from cli_image_info_t to MonoImage, where
31504         it's easily accessible. Changed all the uses accordingly.
31505         Added the method and class caches to MonoImage.
31506         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
31507         and mono_metadata_decode_value () signature to be more consistent
31508         with the other parse functions (and simplify code). Taken advantage
31509         of zero-length array allocation with GCC. Removed reduntant (and
31510         wrong) MonoFieldType struct and use MonoParam instead. Changed
31511         mono_metadata_parse_field_type () to use common code for parsing.
31512         Added mono_metadata_typedef_from_field () and
31513         mono_metadata_typedef_from_method () to lookup a typedef index from a
31514         field or method token.
31515         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
31516
31517 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
31518
31519         * metadata.c (mono_metadata_parse_field_type): Implement. 
31520         (do_mono_metadata_parse_type): Split engine from
31521         mono_metadata_parse_type, so that we can create smaller structures
31522         for things that just have one pointer to the MonoType (look at
31523         the MonoFieldType)
31524
31525 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
31526
31527         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
31528         as Jan Gray found out, it is incorrect. 
31529
31530 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
31531
31532         * assembly.c: Implement asssembly loading.  This loads an image
31533         and loads all the referenced assemblies.  Come to think of it, we
31534         could always do lazy loading of the assemblies. 
31535
31536         * image.c (mono_image_open): Keep loaded images in a hashtable.
31537
31538         * image.h (MonoImage): Add reference count.
31539
31540 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
31541
31542         * assembly.c (mono_assembly_open): Keep track of the file name in
31543         case the assembly has no ASSEMBLY table.
31544
31545         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
31546         from get.c here.
31547
31548 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
31549
31550         * metadata.c, metadata.h: decode local vars in method header
31551         parse function. Change callers accordingly.
31552
31553 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
31554
31555         * metadata.h, cil-coff.h: protect against multiple inclusion.
31556         Added some new structures to hold information decoded from metadata:
31557         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
31558         and relevant decoding/free functions.
31559         * metadata.c: implement decoding functions. Add warning for out of bounds
31560         index in mono_metadata_locate(). Implement mono_get_method () to retreive
31561         all the info about a method signature and invocation. Remove check on
31562         uninitialized local var in parse_mh() and fix memory leak.
31563
31564 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
31565
31566         * metadata.h: More macros.
31567
31568         * tokentype.h: New file.
31569
31570 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
31571
31572         * assembly.c: added a consistency check and initialize
31573         some structures with g_new0().
31574         * metadata.c: fixed a couple more bugs in table size computation
31575         and add other checks for out-of bound access to metadata.
31576
31577 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
31578
31579         * metatada.c: fix bugs computing table sizes. Spew a
31580         warning when index in string heap is out of bounds.
31581
31582 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
31583
31584         * metadata.h: Add a couple of macros to manipulate tokens. 
31585
31586 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31587
31588         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
31589         cli_section_tables).
31590
31591 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
31592
31593         * metadata.c (mono_metadata_user_string): New function, provides
31594         access to the UserString heap. 
31595
31596 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
31597
31598         * metadata.c: Add inline documentation.
31599
31600 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
31601
31602         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
31603         files. 
31604
31605 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
31606
31607         * typeattr.h: New file, TypeAttribute flags. 
31608
31609 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
31610
31611         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
31612         mono_assembly_ensure_section): Section loading code.
31613         (load_section_tables): Load the sections.
31614
31615         * mono/metadata/metadata.c (mono_metadata_locate_token,
31616         mono_metadata_locate): Functions to locate the information
31617         definition given a token or a table and an index.
31618         (mono_metadata_compute_table_bases): New.
31619         (compute_size): New function to compute the sizes of the various
31620         tables.
31621
31622         * mono/metadata/metadata.h: Finish listing the different index
31623         types. 
31624
31625         * mono/metadata/pedump.c: Improve to dump new information.
31626
31627 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
31628
31629         * mono/metadata/metadata.c: Entered all the tables matching
31630         Beta2. 
31631
31632         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
31633
31634
31635
31636