2009-04-28 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * metadata-verify.c: Verify the constant table.
4
5 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6
7         * metadata-verify.c: Verify the memberef table.
8
9 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
10
11         * metadata-verify.c (get_coded_index_token): Remove
12         dead argument.
13
14 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
15
16         * metadata-verify.c: Verify the interfaceimpl table.
17
18 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
19
20         * verify.c: Improve error message.
21
22         * debug-helpers.c (mono_type_get_desc): Harden the code that
23         deals with VAR and MVAR.
24
25 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
26
27         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
28         part of #498692.
29
30 2009-04-23 Tom Hindle <tom_hindle@sil.org>
31
32         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
33         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
34
35 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
36
37         * security-core-clr.c: Avoid redundant checks for platform code, 
38         e.g. check for method and for class (very common) and check
39         for class and outer class (less common)...
40
41 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
42
43         * reflection.c: Avoid returning random cattrs for synthetic methods.
44         Fixes #498545.
45
46 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
47
48         * assembly.c: assemblies in the GAC should never be shadow-copied.
49
50 2009-04-26  Mark Probst  <mark.probst@gmail.com>
51
52         * domain.c, domain-internals.h: Disable
53         track_resurrection_{objects,handles}_hash in MonoDomain if using
54         SGen.
55
56 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
57
58         * metadata-verify.c: Verify the param table.
59
60 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
61
62         * metadata-verify.c (verify_typedef_table): Range check FieldList and
63         MethodList.
64
65         * metadata-verify.c (verify_method_table): Proper check the ParamList
66         field.
67
68 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
69
70         * metadata-verify.c (verify_method_table): Check for runtime
71         implemented functions such as delegate .ctors. Remove spurious
72         printf.
73         
74 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
75
76         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
77
78 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
79
80         Don't allocate MonoGenericInfo for ownerless generic params.
81         * class-internals.h (MonoGenericParam::info): Move field to ...
82         (MonoGenericParamFull): ... this.  New struct.
83         (MonoGenericContainer::type_params): Change type to
84         MonoGenericParamFull.
85         (MonoGenericParam, MonoGenericContainer): Update accessors.
86         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
87         'info' field for ownerless generic param.
88         (mono_metadata_load_generic_params): Update to changes.
89         * reflection.c (mono_reflection_create_generic_class): Likewise.
90         (reflection_methodbuilder_to_mono_method): Likewise.
91         (mono_reflection_initialize_generic_parameter): Likewise.
92
93 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
94
95         Don't use MonoGenericParamInfo for ownerless generic params.
96         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
97         use ParamInfo class at all.
98         (mono_class_from_generic_parameter): Use them.
99         (make_generic_param_class): Fix a couple of instances where 'pinfo
100         == NULL' wasn't handle.
101
102 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
103
104         * class.c (make_generic_param_class): Carve out of ...
105         (mono_class_from_generic_parameter): ... here.
106
107 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
108
109         Simplify mono_class_from_generic_parameter
110         * class-internals.h (MonoGenericParamInfo::token): New field.
111         * metadata.c (mono_metadata_load_generic_params): Initialize it
112         from metadata.
113         * class.c (mono_class_from_generic_parameter): Use it instead of
114         searching through metadata.
115
116 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
117
118         * metadata-verify.c: Add verification of the method table.
119
120 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
121
122         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
123         Delegate::Invoke optimization.
124
125 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
126
127         * appdomain.c (mono_domain_create_appdomain_internal): Free the
128         string returned by get_shadow_assembly_location_base.
129
130         * appdomain.c (get_shadow_assembly_location_base): Add a comment
131         about caller's ownership.
132
133 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
134
135         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
136         reflection memory on domain unload.
137
138         * domain.c (mono_domain_free): Don't free refobject_hash, let the
139         reflection cleanup code do it.
140
141         * domain-internals.h: Add mono_reflection_cleanup_domain.
142
143         This fixes a memory leak for managed mirrors of reflection objects
144         on domain unload. 
145
146 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
147
148         * metadata-verify.c: Implement more verification of the field table.
149
150 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
151
152         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
153         doesn't try to parse the input assembly, which can be broken.
154
155 2009-04-23  Mark Probst  <mark.probst@gmail.com>
156
157         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
158         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
159         by using the lowest bit in the link to store whether the link is
160         tracked.  Move the track_resurrection hashes into boehm-gc.c.
161
162 2009-04-22  Miguel de Icaza  <miguel@novell.com>
163
164         * Makefile.am: Split the console support in platform specific code
165         and put together a framework for making this easy in the future so
166         that we can start splitting code instead of having a mess of PLATFORM_WIN32
167
168 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
169
170         * pedump.c: Fix a warning.
171
172 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
173
174         * verify.c (mono_delegate_type_equal): Compare valuetypes using
175         mono_class_from_mono_type to avoid bad interactions with the dual representation
176         of the generic type definition.
177
178 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
179
180         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
181         get the MonoClass for the call context type as it might be a generic
182         instance.
183
184         Fixes #491483.
185
186 2009-04-21  Mark Probst  <mark.probst@gmail.com>
187
188         * object-internals.h: The Thread object has no execution_context
189         member anymore.
190
191         * threads.c, threadpool.c, threads-types.h: Accessor functions for
192         the execution context.
193
194         * appdomain.c: Bump corlib version.
195
196 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
197
198         * verify.c (do_newobj): Improve error message.
199
200 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
201
202         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
203         is nested in the filter block.
204
205         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
206         block is not fully nested.
207
208         Fixes #495656.
209
210 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
211
212         * verify.c (verify_type_compatibility_full): Compare MonoClass and
213         not MonoType to check for equality of valuetypes as the generic type
214         definition allows for two different encodings: the generic type definition
215         class or a generic instance over the GTD arguments.
216
217         Fixes #496175.
218
219 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
220
221         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
222
223         * verify.c (do_initobj): Improve error message.
224
225 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
226
227         * metadata-verify.c: Enable pe verification as the issue with #496453
228         is that the authenticode data directory have a different unspecified
229         format. Ignore it for now.
230
231         * pedump.c: Run the metadata verifier together with the IL verifier.
232
233         Fixes ##496453.
234
235 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
236
237         * metadata-verify.c: Temporarily disable pe verification due to #496453.
238
239 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
240
241         * class.c (can_access_type): Check visibility against
242         the element type for pointers and arrays.
243
244         Fixes #496150.
245
246 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
247
248         * metadata-verify.c: Fix cli and table verification to use information
249         from the MonoImage. A lot of duplicated code got killed.
250
251 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
252
253
254         This patch starts to integrate the metadata verifier with the runtime code.
255
256         This patch causes major regression in functionality for the metadata verifier
257         as cli and table verification are disabled since they require to be ported to
258         use MonoImage information.
259
260         * image.c (do_mono_image_load): Split the code in this function
261         into mono_image_load_pe_data and mono_image_load_cli_data.
262         Add     care_about_pecoff parameter to not load pecoff data.
263         Call into the metadata verifier for pecoff and cli verification.
264
265         * image.c (mono_image_open_raw): New function that doesn't perform
266         any parsing of the image contents.
267         
268         The reason for the 3 new functions is to give pedump better control
269         into the interaction with the verifier.
270
271         * metadata-internals.h: Add new functions from image.c as part of the
272         internal mono API.
273
274         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
275         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
276         to make those functions work together with the runtime.
277
278         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
279         true if the image needs to be verified.
280
281         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
282
283         * pedump.c: Use new metadata verifier API.
284
285 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
286
287         * object.c (mono_install_vtable_trampoline): Make this receive a
288         trampoline creation function instead of trampoline, allowing the JIT
289         to use a different trampoline for each vtable.
290
291 2009-04-18  Mark Probst  <mark.probst@gmail.com>
292
293         * object.c (mono_raise_exception): Don't reset the thread abort
294         exception state here.
295
296 2009-04-18  Mark Probst  <mark.probst@gmail.com>
297
298         * icall-def.h: New icall for getting the thread abort exception
299         state for a thread.
300
301         * object.c, thread.c, object-internals.h: A thread's abort
302         exception state is now a GC handle.  To get the object it stands
303         for, we must move it into the current app domain, if it's
304         different than the one where it originated from.
305
306         * appdomain.c: Bump corlib version.
307
308         * domain.c, domain-internals.h: New function for setting the
309         domain and migrate the thread abort exception or not.
310
311 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
312
313         * metadata-verify.c: Add initial verification of the
314         field table.
315
316 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
317
318         * metadata-verify.c: Add a macro to conditionally enable
319         dumping of verification information. Add  make_coded_token
320         and search_sorted_table to enable search sorted tables
321         by a given coded token.
322
323 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
324
325         * metadata-verify.c: Add array mapping from table index
326         to description offset. Add get_col_offset and get_col_size
327         functions.
328
329 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
330
331         * metadata-verify.c: Add remaining table descriptions offsets.
332         Add remaining coded index descriptions.
333
334 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
335
336         * metadata-verify.c: Fixed constant table description.
337         Fixed calculation of HasCustomAttribute coded index size.
338         Fixed calculation of size for many table indexes. 
339
340 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
341
342         * pedump.c (dump_metadata): Dump table offset instead
343         of useless pointer in memory.
344
345 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
346
347         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
348
349 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
350
351         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
352         a missing of for interface types.
353
354 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
355
356         * metadata-verify.c (verify_pe_optional_header): Add comment of why
357         the code is commented.
358
359         * metadata-verify.c (verify_resources_table): Remove spurious printf
360         and don't fail if there are unmanaged resources. Gmcs generates a useless
361         one     for all assemblies - I bet it's some MS compatibility junk.
362
363 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
364
365         * metadata-verify.c (verify_typedef_table): Verify the extends field.
366
367         * metadata-verify.c (mono_image_verify): Add a is_corlib.
368
369         * verify-internals.h: Same.
370
371         * pedump.c: Fix for mono_image_verify new signature.
372
373 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
374
375         * metadata-verify.c (verify_typedef_table): Verify for some invalid
376         flags combinations.
377
378 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
379
380         * metadata-verify.c (verify_module_table): Ignore the generation field.
381
382 2009-04-15  Martin Baulig  <martin@ximian.com>
383
384         * debug-mono-symfile.c
385         (mono_debug_symfile_lookup_location): Don't print a warning for
386         unknown extended opcodes if they're within 0x40 and 0x7f.
387
388 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
389
390         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
391         invoke signatures returning an enum. Fixes #494847.
392
393 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
394
395         * metadata-verify.c: Initial code to verify the typedef table.
396
397 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
398
399         * verify.c (mono_method_verify): Don't fail if an unconditional branch
400         with non empty stack happens before the beginning of a try block.
401
402         Fixes #494812.
403
404 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
405
406         * metadata-verify.c: Verify typename and typenamespace fields of
407         the typeref table.
408
409 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
410
411         * metadata-verify.c: Initial code to verify the typeref table.
412
413 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
414
415         * verify.c (verify_delegate_compatibility): Fix error message.
416
417 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
418
419         * security-core-clr.c: Fix typo
420
421 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
422
423         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
424         a MonoGHashTable to keep its values alive.
425         (emit_marshal_boolean): Fix a warning.
426
427 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
428
429         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
430         not have any interface configured for IPv4/IPv6.
431
432 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
433
434         * assembly.c: fix typo in error message.
435
436 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
437
438         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
439         allocating the location holding the this argument to prevent
440         'too many root sets' errors.
441
442         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
443         to mark fields as special static.
444         (mono_field_static_get_value): Handle special static fields.
445         (mono_field_static_set_value): Ditto.
446
447         * class-internals.h (struct _MonoClassField): Document this.
448
449 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
450
451         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
452           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
453           case.  This will handle when managed code returns null to native code.
454
455         Code is contributed under MIT/X11 license.
456
457 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
458
459         * object.c (build_imt_slots): Changing a free to a g_free to match
460           the g_malloc0 in add_imt_builder_entry that allocated this memory.
461
462         Code is contributed under MIT/X11 license.
463
464 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
465
466         * marshal.c (emit_marshal_boolean): Adding code to ensure that
467           the correct TRUE value is passed through the marshaling layer.
468
469         Code is contributed under MIT/X11 license.
470
471 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
472
473         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
474         correctly. Fixes #492330.
475         
476         * marshal.c: Fix the embedding of object pointers into JITted code in
477         the native-to-managed wrappers by allocating some GC tracked memory, and
478         embedding the address of that.
479
480 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
481
482         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
483         pointers into the vtable.
484
485 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
486
487         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
488
489         * verify.c (verify_ldftn_delegate): Improve error message.
490
491 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
492
493         * reflection.c (my_mono_class_from_mono_type): Remove.
494
495 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
496
497         Prepare to reduce memory usage of owner-less generic parameters (1/n)
498         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
499         and constraints fields into ...
500         (MonoGenericParamInfo): ... this.
501         (mono_generic_param_info, mono_generic_container_get_param_info):
502         New accessors.
503         * class.c, debug-helpers.c, icall.c: Update to changes.
504         * metadata.c, reflection.c, verify.c: Likewise.
505
506 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
507
508         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
509
510         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
511         
512         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
513         booleans with sbytes.
514
515 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
516
517         * class.c (can_access_instantiation): Verify accesibility of element types
518         for arrays and pointers.
519
520         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
521
522         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
523
524         Fixes #493068.
525
526 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
527
528         * verify.c (do_invoke_method): Improve error messages.
529
530 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
531
532         * verify.c:  Fixing the MSVC build.
533
534         Code is contributed under MIT/X11 license.
535
536 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
537
538         * security-core-clr.c: Simplify get_reflection_caller not to call
539         mono_method_get_last_managed (another stack walk) and adjust the
540         callers to handle a (should not happen) NULL return value.
541
542 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
543
544         Add accessors to some MonoGenericParam fields
545         * class-internals.h (mono_generic_param_owner): New accessor.
546         (mono_generic_param_num): Likewise.
547         (mono_type_get_generic_param_owner): New helper.
548         (mono_type_get_generic_param_num): New helper.
549         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
550
551 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
552
553         * class-internals.h (mono_generic_container_get_param): New wrapper.
554         * class.c, icall.c, metadata.c, verify.c: Use it.
555
556 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
557
558         Fix gtest-252.cs
559         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
560         the standard case/loop.  In particular, don't complain about
561         references to generic type definitions.
562
563 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
564
565         * debug-helpers.c (dis_one): Decode string arguments.
566
567 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
568
569         * pedump.c (dump_verify_info): Dump type name correctly.
570
571 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
572
573         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
574         are larger than code size.
575
576         This can happen in valid code if the try/catch block is not followed by any instruction
577         and do a backward branch on the leave instruction.
578
579         Fixes #492494.
580
581 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
582
583         * security-core-clr.c: Fix typo while comparing second method names
584         in can_avoid_corlib_reflection_delegate_optimization
585
586 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
587
588         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
589
590         Fixes #487738.
591
592 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
593
594         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
595         a MVAR using a class context.
596
597         Fixes #490335.
598
599 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
600
601         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
602
603         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
604
605         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
606         functions supplied by the JIT for the SGEN GC.
607
608         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
609         
610 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
611
612         monitor.c (mono_monitor_try_enter_internal):
613         Added calls to profile monitor contentions.
614         Also duplicated a small piece of code (the "get the monitor" logic)
615         from the fast path to the slow path, and changed the relevant goto
616         statements, so that monitor acquisition events can be emitted from the
617         slow path (this is by Paolo Molaro).
618
619 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
620
621         * profiler.c, profiler.h, profiler-private.h:
622         Added support for profiling monitor contentions.
623
624 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
625
626         * metadata-verify.c: Verify the modules table.
627
628 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
629
630         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
631         using the context of the method been verifier and not of the method been called.
632
633         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
634         safely inflate generic types. 
635
636 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
637
638         * security-core-clr.c: Change the strategy for checking the 
639         "reflection using delegates optimization" to avoid unneeded 
640         attributes in multiple class libraries.
641
642 2009-04-02  Mark Probst  <mark.probst@gmail.com>
643
644         * sgen-gc.c: Remove object element in the disappearing link struct
645         by storing the object pointer in the link.
646
647 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
648
649         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
650
651 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
652
653         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
654
655         * verify.c (mono_method_verify): Do proper bounds checking of exception
656         clause ranges.
657
658 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
659
660         * loader.c (mono_field_from_token): Don't crash if the field parent could
661         not be decoded.
662
663 2009-03-31  Mark Probst  <mark.probst@gmail.com>
664
665         * sgen-gc.c: Execute critical finalizers after ordinary
666         finalizers.
667
668         * class-internals.h, domain.c: Add CriticalFinalizerObject to
669         mono_defaults.
670
671 2009-03-31 Jb Evain <jbevain@novell.com>
672
673         * verify.c (do_ldstr): don't check if a string is in the user strings
674         heap if the current image is dynamic.
675
676 2009-03-31  Mark Probst  <mark.probst@gmail.com>
677
678         * sgen-gc.c: Wait until the last finalizer has executed when
679         returning from WaitForPendingFinalizers.
680
681 2009-03-31  Martin Baulig  <martin@ximian.com>
682
683         * mono-debug-debugger.h (MonoDebuggerEvent): Add
684         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
685         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
686         (mono_debugger_event_create_appdomain): New function.
687         (mono_debugger_event_unload_appdomain): New function.
688
689         * appdomain.c (mono_domain_create_appdomain_internal): Call
690         mono_debugger_event_create_appdomain().
691
692 2009-03-31  Martin Baulig  <martin@ximian.com>
693
694         * mono-debug-debugger.c
695         (mono_debugger_register_class_init_callback): Also register the
696         class init callback if the class is already initialized to make
697         things work with shadow copied assemblies.
698
699 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
700
701         * security-core-clr.c
702         (mono_security_core_clr_ensure_reflection_access_field): Let 
703         critical code access the field (just like we do for methods). Use
704         check_field_access helper.
705         (mono_security_core_clr_ensure_reflection_access_method): Use 
706         check_field_access helper.
707
708 2009-03-31  Mark Probst  <mark.probst@gmail.com>
709
710         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
711         call the run-finalize function directly.
712
713         * gc.c, gc-internal.h: Make run_finalize() non-static.
714
715 2009-03-31  Mark Probst  <mark.probst@gmail.com>
716
717         * sgen-gc.c: Use a separate struct for disappearing links.
718
719 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
720
721         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
722         * MaxIOVectorLength enabled, just ignore them.
723         Fixes bug #349688.
724
725 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
726
727         * metadata-verify.c: Fix eglib build.
728
729 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
730
731         * threads-types.h: Fix the win32 build.
732
733 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
734
735         * class.c: move coreclr inheritance/override checks to 
736         security-core.clr.c
737         * security-core.clr.c|h: add code from class.c with additional
738         documentation. Fix override check when the method is not critical.
739
740 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
741
742         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
743         (match_class): Ditto.
744
745 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
746
747         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
748
749         * metadata-verify.c: Implement table layout row size calculation. Verify
750         the total size of the tables.
751
752 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
753
754         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
755
756 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
757
758         * appdomain.c:
759         * console-io.[ch]: added new mono_console_init() to make sure that
760         file descriptors 0, 1 and 2 are opened.
761         Bug #489019 fixed.
762
763 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
764
765         * appdomain.h: Export a new callback type and a new function to
766         set this callback. This allow a mono host to provide it's own
767         definition for "platform code".
768         * metadata-internals.h: Add a core_clr_platform_code flag on 
769         _MonoImage to (cache and) know if it is representing platform 
770         code.
771         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
772         on platform code images.
773         * security-core-clr.c|h 
774         (mono_security_set_core_clr_platform_callback): Allow the host
775         to provide it's own platform check definition.
776         (mono_security_core_clr_determine_platform_image): Detect if an 
777         image is platform code (using the specified callback).
778         (mono_security_core_clr_is_platform_image): Return cached value 
779         for platform code.
780
781 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
782
783         * threads.c (mono_create_thread): New helper function to wrap CreateThread
784         which has different parameter types for the 'tid' argument in windows and
785         the io-layer.
786
787         * appdomain.c attach.c threads.c: Use the new helper.
788
789 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
790
791         * metadata-verify.c: Verify valid table bits.
792
793 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
794
795         * metadata-verify.c (verify_metadata_header): Store size in the size field.
796
797         * metadata-verify.c: Add initial table schema verification.
798
799 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
800
801         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
802         obtain the refclass argument needed by mono_param_get_objects (). Fixes
803         #488383.
804
805         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
806
807         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
808
809 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
810
811         * security-core-clr.c: Add/update documentation
812
813 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
814
815         * marshal.c (emit_marshal_object): Generate code to throw an exception
816         instead of throwing it. Fixes #488670.
817
818 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
819
820         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
821         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
822         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
823         and add a call to mono_security_core_clr_ensure_delegate_creation
824         to do the extra checks required by CoreCLR.
825         * security-core-clr.c|h: Add function to check delegate creation,
826         both in the binding and accessibility, under CoreCLR.
827
828 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
829
830         * reflection.c (mono_reflection_create_dynamic_method): when 
831         coreclr is enabled make sure that every resolved object are
832         checked (e.g. field and method access).
833         * security-core-clr.c|h: Add function to check objects resolved
834         when a dynamic method is created.
835
836 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
837
838         * metadata-verify.c: Cache directory rva translations.
839
840         * metadata-verify.c: Add cli-header and streams verification.
841
842 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
843
844         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
845         the wrong offset (8 instead of 6).
846
847 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
848
849         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
850         methods, return the native function address itself. Fixes
851         #487758.
852
853 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
854
855         * console-io.c: some of the values for control characters might not be
856         present.
857
858 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
859
860         * exception.c|h: Add helpers to create [Field|Method]AccessException
861         * icall.c: Add required coreclr check calls for field reflection.
862         Move the existing (method) check logic into security-core-clr.c
863         * security-core-clr.c: Add functions to check if the access of a
864         field or method is allowed when reflecting under coreclr. This is
865         mostly done using a stack walk to find the "real" caller: i.e. the
866         code that is calling the reflection
867
868 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
869
870         * gc-internal.h: Change location of gc_wrapper.h
871
872 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
873
874         * class.c: Simplification to coreclr checks for overrides that
875         makes it easier to set breakpoints.
876
877 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
878
879         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
880         mono_security_core_clr_method_level): Avoid potential 
881         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
882         user/application code) and make it easier to set breakpoints
883
884 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
885
886         * metadata-verify.c: Reject cli header tables that mono don't handle.
887
888 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
889
890         * pedump.c: Fix CLI header dumping.
891
892 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
893
894         * metadata-verify.c: More CLI header verification.
895
896 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
897
898         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
899
900 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
901
902         * metadata-verify.c: Initial verification of the CLI header.
903
904 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
905
906         * metadata-verify.c (verify_resources_table): Fix verification of zero
907         sized resource section and id entries count.
908
909 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
910
911         * icall.c: Handle user types in many Type icalls. Fixes #486303.
912
913 2009-03-17  Jb Evain  <jbevain@novell.com>
914
915         * profiler.c: call mono_gc_base_init from mono_profiler_load.
916
917 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
918
919         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
920         (mono_gc_make_descr_for_array): Ditto.
921
922 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
923
924         * verify.c (mono_verifier_is_class_full_trust): Add support for
925         CoreCLR security mode where trusted assemblies are defined as
926         "platform code".
927
928 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
929
930         * metadata-verify.c: Add minimal PECOFF resource verification.
931
932 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
933
934         * metadata-verify.c: Be less restrictive with some coff fields.
935
936 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
937
938         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
939         params as boxed values on stack. Fixes #485706.
940
941 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
942
943         * console-io.c: the termios values may vary in different flavors of unix.
944
945 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
946
947         * console-io.[ch]: return the entire set of control characters when
948         initializing the terminal.
949         * appdomain.c: bump corlib version.
950
951 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
952
953         * mono-perfcounters.c: added support for in-process custom
954         performance counters.
955
956 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
957
958         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
959
960 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
961
962         * metadata-verify.c: Verify the data pointed by the import table. 
963
964 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
965
966         * metadata-verify.c (load_data_directories): Store data
967         directory contents.
968
969         * metadata-verify.c: Verify the import table. 
970
971 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
972
973         * metadata-verify.c: Verify data directories.
974
975 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
976
977         * metadata-verify.c: Check section header flags.
978
979 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
980
981         * appdomain.c: if the assembly name is a shadow-copied file, return
982         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
983         in mono_make_shadow_copy.
984         * icall.c: if the assembly name is a shadow-copied file, replace it
985         with the original assembly path.
986
987         Bug #484244 fixed. NUnit tests for corlib can be run without
988         --noshadow now.
989
990 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
991
992         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
993         entries when the table is reallocated.
994
995         * icall.c: Allocate the memory used by the mono_ptr_array macros using
996         mono_gc_alloc_fixed () since it contains GC refs.
997
998 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
999
1000         * reflection.c (ensure_complete_type): New helper function to call
1001         type resolve handlers for unfinished dynamic types.
1002         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1003
1004 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1007         #483247.
1008
1009 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1010
1011         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1012
1013 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1014
1015         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1016         between GCHandles of type WeakTrackResurrection and the objects they
1017         point to.
1018
1019         * gc.c: Partly implement the sematics of GCHandles of type 
1020         WeakTrackResurrection: these handles should only be cleared after the
1021         finalizer of the object they are pointing to has ran.
1022
1023 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1024
1025         * icall.c: Partially revert r126631 because using the jump
1026         trampolines for generic shared methods makes it superfluous.
1027
1028 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1029
1030         * threads.c (handle_store): Create the 'threads' hash table with the proper
1031         MONO_HASH_VALUE_GC type.
1032
1033 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1036         FIRST_GC_TRACKED.
1037
1038         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1039         and LAST_GC_TRACKED as a GC root.
1040
1041         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1042
1043         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1044         the static data even if it consists of 1 reference.
1045
1046         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1047         if there is a GC descriptor.
1048
1049         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1050         instead of through the GC since they contain no object references.
1051
1052 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1053
1054         * generic-sharing.c (instantiate_other_info): Always return a jump
1055         trampoline for method code.
1056
1057 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1058
1059         * culture-info-tables.h: generated to include the en-tt culture.
1060
1061 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1062
1063         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1064         capture the thread context.
1065
1066         * object.c (mono_async_result_new): Cache the invoke wrappers to
1067         ExecutionContext::Capture.
1068
1069 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * marshal.h: Add a prototype for what mono_compile_method returns
1072         for invoke wrappers.
1073
1074         * gc.c: Use the new prototype declaration.
1075
1076 2009-03-04  Geoff Norton  <gnorton@novell.com>
1077
1078         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1079         * gc-internal.h:
1080         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1081
1082 2009-03-04  Martin Baulig  <martin@ximian.com>
1083
1084         * mono-debug.h
1085         (mono_debugger_runtime_invoke): Removed.
1086
1087         * mono-debug-debugger.c
1088         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1089
1090 2009-03-02  Martin Baulig  <martin@ximian.com>
1091
1092         * mono-debug.h
1093         (mono_debugger_unhandled_exception): Removed.
1094         (mono_debugger_handle_exception): Removed.
1095         (mono_debugger_throw_exception): Removed.
1096
1097         * mono-debug.c
1098         (mono_debug_debugger_version): Bump to 5.
1099
1100         * mono-debug-debugger.c: Moved the exception handling code to
1101         ../mini/debug-mini.c
1102
1103 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1104
1105         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1106         finalize_objects_hash.
1107
1108         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1109         
1110         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1111         field.
1112
1113         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1114         cache.
1115
1116         * image.c (mono_image_close): Free it.
1117         
1118         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1119         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1120         on the this argument.
1121
1122         * gc.c (run_finalize): Optimize the calling of the finalizers.
1123
1124 2009-03-03  Martin Baulig  <martin@ximian.com>
1125
1126         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1127         of the `MonoGenericInst' changes.
1128
1129 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1130
1131         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1132         mono_array_class_get_cached to reduce locking contention. Extract
1133         a domain var.
1134
1135         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1136         intermediary managed arrays. Use caching version of mono_array_new
1137         to allocate the result array.
1138
1139         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1140
1141         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1142
1143         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1144         to reduce locking contention.
1145
1146 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1147                 
1148         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1149         thunk builder code for the non-interface case.
1150
1151 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1152
1153         * object.c (get_generic_virtual_entries): New helper function to collect
1154         the virtual generic method instances which need to be added to an IMT
1155         thunk.
1156         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1157         Instead of creating a new IMT thunk, reset the vtable slot to the
1158         trampoline, the thunk will be created the next time the trampoline is called.
1159         (build_imt_slots): Add support for virtual generic methods in interfaces by
1160         adding to the IMT thunk all the methods registered using 
1161         mono_method_add_generic_virtual_invocation ().
1162
1163         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1164         (struct _MonoIMTCheckItem): Ditto.
1165
1166         * object.c (mono_method_add_generic_virtual_invocation): Take a
1167         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1168         the IMT thunk to include all items.
1169         
1170         * object.c (mono_class_create_runtime_vtable): Add a missing
1171         mono_loader_unlock ().
1172
1173 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1174
1175         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1176
1177         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1178
1179 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1180
1181         * object-internals.h: Rename _MonoReflectionEvent to
1182         MonoReflectionMonoEvent so it reflects the right managed type.
1183         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1184
1185         * icall.c:
1186         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1187         type.
1188
1189 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1190
1191         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1192         intermediary managed arrays. Use caching version of mono_array_new
1193         to allocate the result array.
1194
1195 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1196
1197         * reflection.c: Use cached version of mono_array_new alongside
1198         the mono_reflection_get_custom_attrs_by_type call path.
1199
1200 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1203         intermediary managed arrays. Use caching version of mono_array_new
1204         to allocate the result array.
1205
1206         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1207
1208 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1209
1210         * icall.c: Add small implementation of a growable stack bound array.
1211
1212         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1213
1214         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1215         intermediary managed arrays. Use caching version of mono_array_new
1216         to allocate the result array.
1217
1218 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1221         helps Enum::CompareTo to be implemented without reboxing all enums
1222         to their underlying type.
1223 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1226         since it acquires a global lock leading to scalability problems.
1227
1228         * profiler.c: Make the stat profiler work with multiple appdomains, this
1229         currently only works when no appdomains are unloaded.
1230
1231 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1232
1233         * appdomain.c: make the check to avoid copying when the assembly is
1234         already shadow copied actually work.
1235
1236 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1239
1240         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1241         changes to the managed side.
1242
1243 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1246         classes + a separate lock for it, as it is used frequently at runtime, not
1247         just during metadata loading/JIT compilation.
1248
1249         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1250         for szarrays.
1251         
1252         * object-internals.h (mono_class_from_name_cached): New macro to cache
1253         the results of the lookup locally without having to declare a static
1254         variable to hold it.
1255         (mono_class_get_field_from_name_cached): Ditto.
1256         (mono_array_class_get_cached): Ditto.
1257
1258         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1259         the new macros.
1260         
1261         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1262         slower search in metadata.
1263
1264         * pedump.c: Fix a warning.
1265
1266 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * reflection.c (encode_locals): Add checks for user types.
1269         (method_encode_clauses): Ditto.
1270         (method_encode_code): Ditto.
1271         (mono_image_create_token): Ditto.
1272
1273         * object-internals.h: Change the type of more fields from MonoReflectionType*
1274         to MonoObject*.
1275
1276 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1277
1278         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1279         the a thread does not suspend within 100ms.
1280
1281         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1282         in addition to StopRequested as well.
1283
1284         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1285
1286         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1287         search the method_hash before inserting a new entry, to avoid crashes when
1288         the same method is inserted multiple times, causing the old 
1289         MonoDebugMethodInfo structure to be freed by the value dtor function.
1290
1291 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1292
1293         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1294         SO_EXLUSIVEADDRUSE where available.
1295
1296 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1299         runtime invoke wrappers, this time it is string ctor wrappers, which
1300         pass a dummy string as 'this' instead of their obj argument. Fixes
1301         #478473.
1302
1303 2009-02-21  Jb Evain  <jbevain@novell.com>
1304
1305         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1306         only get create_culture once.
1307
1308 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1309
1310         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1311         check before the locking.
1312         
1313         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1314         (mono_reflection_create_runtime_class): Ditto.
1315         (mono_reflection_sighelper_get_signature_local): Ditto.
1316         (mono_reflection_sighelper_get_signature_field): Ditto.
1317
1318         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
1319         is a System.MonoType object or similar.
1320         (monotype_cast): New helper function to cast a MonoObject to a 
1321         MonoReflectionType object.
1322
1323         * object-internals.h: Change MonoReflectionType* members in structures to
1324         MonoObject* members to force the usage of the monotype_cast () function.
1325
1326         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
1327         structures/arrays. This causes us to assert instead of crashing when 
1328         instances of user defined subclasses of System.Type are encountered.
1329
1330 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1331
1332         * cil-coff.h:
1333         * icall-def.h:
1334         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
1335         win32 resource loaded from a PE file.
1336
1337         * image.c: fix mono_image_lookup_resource.
1338
1339 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1340
1341         * icall-def.h:
1342         * threads-types.h:
1343         * threads.c: added internal call for WaitHandle.SignalAndWait.
1344
1345 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
1346
1347         * cominterop.c : Adding cominterop_type_from_handle and 
1348           registering it as an icall.  Replacing all references
1349           to type_from_handle.
1350
1351         Code is contributed under MIT/X11 license.
1352
1353 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1354
1355         * Makefile.am: Add lock-tracer.h and lock-trace.c.
1356
1357         * appdomain.c: Call the tracer init function.
1358
1359         * domain-internals.h: Enable the tracer for the domain locks.
1360
1361         * image.c: Enable the tracer for image locks.
1362
1363         * loader.c: Enable the trace for the loader lock.
1364
1365         * lock-tracer.h:
1366         * lock-tracer.c: Initial implementation of the lock trace utility.
1367         The tracer requires a compile time define to be enabled and a env var
1368         to be enabled at runtime.
1369
1370 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1371
1372         * domain.c (mono_domain_code_foreach): Improve documentation.
1373
1374 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1375
1376         * appdomain.c:
1377         * generic-sharing.c:
1378         * object.c:
1379         * reflection.c:  Adjust locking order to the new semantics where the loader lock
1380         comes first.
1381
1382 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1383
1384         * domain.c: Add mono_domain_code_* functions that perform locking
1385         around the domain codeman.
1386
1387         * domain-internals.h: Export those functions.
1388
1389         * object.c: Use new functions instead of acquiring the domain lock.
1390
1391 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
1392
1393         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
1394         delegate. Fixes #477396.
1395
1396 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * reflection.c (create_custom_attr): Get rid of alloca.
1399
1400 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
1401
1402         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
1403           Adding exception handling for all CCW calls.
1404
1405         Code is contributed under MIT/X11 license.
1406
1407 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
1410
1411         * marshal.c (emit_marshal_boolean): Add null checks to the new 
1412         native->managed marshalling code. Fixes #476247.
1413
1414 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * class.c (mono_class_get_vtable_entry): Move the addition of
1417         static rgctx invoke wrappers for vtable methods here, this simplifies
1418         a lot of code and causes fewer rgctx wrappers to be created.
1419
1420         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
1421         name of the statistics to begin with an uppercase.
1422
1423 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1424
1425         * reflection.c: Revert previous change as it breaks the build.
1426         
1427 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1428
1429         * verify.c: Properly handle SZARRAY element type.
1430
1431         Fixes #474271.
1432
1433 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1434
1435         * reflection.c (mono_image_create_method_token): Correctly encode
1436         MethodDef MemberRefParent token.
1437
1438         Fixes #472845.
1439
1440 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1441
1442         * image.c (mono_image_close): Delete the critical section before
1443         freeing the memory holding it.
1444
1445 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1446
1447         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
1448         Fixes #476257.
1449
1450 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1451
1452         * pedump.c (main): Call mono_marshal_init so pedump
1453         doesn't crash.
1454
1455 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1456
1457         * loader.c (method_from_memberref): Properly fix #474271 and
1458         don't break the runtime bad.
1459
1460 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1461
1462         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
1463         (mono_domain_alloc0): Ditto.
1464
1465 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1466
1467         * loader.c (method_from_memberref): Don't abort if the array
1468         method is not found. A regular loader failure is more informative
1469         and correct.
1470
1471         Fixes #474271.
1472
1473 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1474
1475         *loader.c: Guard MonoImage::method_cache/methodref_cache
1476         using the image lock instead of the loader lock.
1477
1478         * metadata.h: Add comments about which fields are protected by
1479         the image lock.
1480
1481 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
1484
1485         * generic-sharing.c (mono_method_construct_object_context): Remove the
1486         wrapper_type == NONE assert, it is not needed.
1487
1488 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1489
1490         * reflection.c (clear_cached_object): New helper function.
1491         (mono_method_clear_object): New function to clear the cached reflection
1492         objects for a dynamic method.
1493
1494         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
1495         Partly fixes # 463323.
1496         
1497 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1498
1499         * class.c:
1500         * loader.c:
1501         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
1502
1503 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1504
1505         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
1506         take the image lock instead of the loader lock.
1507
1508         * metadata-internals.h: Export new functions.
1509
1510 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1511
1512         * domain.c (app_config_parse): Remove another use of stat that is
1513         not necessary as g_file_get_contents already does the presence
1514         check. 
1515
1516 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
1519
1520         * marshal.c: Move the bstr handling code to cominterop.c.
1521
1522         * marshal.c: Remove some COM interop code missed previously.
1523
1524 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1525
1526         More Paolo patches from the Wii port:
1527         
1528         * security.c: Remove ves_icall_System_Environment_get_UserName
1529         from here.
1530
1531         * icall.c: And put ves_icall_System_Environment_get_UserName
1532         here. 
1533
1534         * appdomain.c (mono_set_private_bin_path_from_config): Remove
1535         redundant call to stat that was only used to test for the file
1536         existence.   Patch from Paolo.
1537
1538         * gc.c (run_finalize): If COM is disabled, do not link in
1539         mono_marshal_free_ccw.
1540
1541         * generic-sharing.c: Use alloca.h here as well.
1542
1543 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
1544
1545         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
1546
1547 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * cominterop.c cominterop.h: New files.
1550
1551         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
1552         function/typedefs which are needed by cominterop.c global.
1553
1554 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1555
1556         * generic-sharing.c: Don't take the loader lock to guard image
1557         mempool allocs.
1558
1559 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1560
1561         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
1562         called without the loader lock which is required to guard MonoImage:tokens.
1563
1564 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1565
1566         * class.c:
1567         * metadata.c:
1568         * method-builder.c:
1569         * marshal.c:
1570         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
1571
1572 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1573
1574         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1575         Rework the code to use regular mono_image_alloc/0.
1576
1577         * loader.c: Rework the code to use regular mono_image_alloc/0.
1578
1579         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1580
1581 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
1582
1583         * object-internals.h : Fixing a typo in the 
1584           MonoReflectionComVisibleAttribute struct.
1585
1586         * marshal.c (cominterop_com_visible): Check the implemented 
1587           interfaces for ComImport.
1588
1589         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
1590           assume that bools should be treated as VARIANTBOOLs.
1591
1592         * marshal.c (emit_marshal_boolean): Adding cases for 
1593           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
1594
1595         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
1596           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
1597
1598         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
1599           should be treated as VARIANTBOOLs.    
1600
1601         Code is contributed under MIT/X11 license.
1602
1603 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
1606         allocation with the image lock.
1607
1608 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1609
1610         This patch is the last of a series to remove explicit reference of MonoImage::mempool
1611         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
1612
1613         * object.c: Add mono_string_to_utf8_image.
1614
1615         * object-internals.h: Export mono_string_to_utf8_image.
1616
1617         * reflection.c: Rework all explicit references to the the image mempool to go thought
1618         the mono_image_alloc set of functions.
1619
1620 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1621
1622         This patch is the third of a series to remove explicit reference of MonoImage::mempool
1623         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
1624         and generics-sharing.c.
1625
1626         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
1627         as first argument. Note that this function remains broken as it doesn't perform locking around the
1628         mempool allocation.
1629
1630         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
1631
1632         * image.c: Add g_slist_append_image.
1633
1634         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
1635         the supplied image for allocation. Move code into mono_metadata_field_info_full.
1636
1637         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
1638         Fix all related code to do the same.
1639
1640         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
1641
1642         * metadata-internals.h: Fix the signatures.
1643
1644 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1645
1646         This patch is the second of a series to remove explicit reference of MonoImage::mempool
1647         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
1648         and similar to work using MonoImage.
1649
1650         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
1651         MonoMemPool.
1652
1653         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
1654
1655         * class.c (mono_metadata_signature_deep_dup): Same.
1656
1657         * class.c (inflate_generic_type): Same.
1658
1659         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
1660
1661         * metadata.c (mono_metadata_signature_dup_full): Same.
1662
1663         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
1664         mono_metadata_signature_dup_full.
1665
1666         * metadata.c (mono_metadata_type_dup): Same.
1667
1668         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
1669
1670         * reflection.c: Same.
1671
1672         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
1673
1674         * metadata-internals.h: Fix the signatures.
1675
1676         * class-internals.h: Same.
1677
1678 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1679
1680         This patch is the first of a series to remove explicit reference of MonoImage::mempool
1681         and use mono_image_alloc set of functions instead. 
1682
1683         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
1684         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
1685         of a MonoMemPool.
1686
1687         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
1688
1689         * class.c (g_list_prepend_mempool): Removed.
1690
1691         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
1692
1693         * image.c: Add g_list_prepend_image.
1694
1695         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
1696
1697         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
1698
1699
1700 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1701
1702         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
1703         mono_image_unlock.
1704
1705         * image.c (mono_image_init): Init the lock field.
1706  
1707         * image.c (mono_image_init): Cleanup the lock field.
1708
1709         * image.c: Add mono_image_(un)lock functions.
1710
1711 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1712
1713         * class.c, class-internals.h: mono_method_get_context_general()
1714         combines the functionality of mono_method_get_context() and
1715         mini_method_get_context().
1716
1717         * generic-sharing.c, domain-internals.h:
1718         mono_method_construct_object_context() and
1719         mono_domain_lookup_shared_generic() moved from mini.
1720
1721         * icall.c (ves_icall_InternalInvoke): Handle the case where the
1722         method doesn't have the correct instantiation because it's shared
1723         generic code.  Fixes #473999.
1724
1725 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
1728
1729         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
1730         
1731 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1732
1733         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
1734
1735         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
1736
1737         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
1738         and recheck the cache for dups after it.
1739
1740         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
1741
1742         Fixes one of the deadlocks found in #473150.
1743
1744 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
1745
1746         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
1747           For Win32, add additional break conditions for accept.
1748
1749         Code is contributed under MIT/X11 license.
1750
1751 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1752
1753         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
1754         lazily initialize the native wrapper cache.
1755         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
1756         cache, since they are different from the normal wrappers.
1757
1758         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
1759
1760         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
1761         AOT compiled native wrappers.
1762
1763 2009-02-09  Geoff Norton  <gnorton@novell.com>
1764
1765         * appdomain.h:
1766         * security-core-clr.c: Allow enabling core-clr from the embedding
1767         API.
1768
1769 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1770
1771         * socket-io.c: when requesting all the local ips, if there are no
1772         interfaces up and running, MS returns 127.0.0.1.
1773
1774 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1775
1776         * mono-perfcounters-def.h: processor time is an inverse time.
1777         Fixes bug #468625.
1778
1779 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1780
1781         * socket-io.c: an empty host name returns the list of local IPs.
1782         Fixes bug #386637 part 1/2.
1783
1784 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * verify.c (mono_class_interface_implements_interface): Call
1787         mono_class_setup_interfaces ().
1788         (merge_stacks): Ditto.
1789
1790 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1791
1792         * class.c (mono_class_setup_interfaces): New function to lazily initalize
1793         klass->interfaces.
1794         (mono_generic_class_get_class): Don't initalize klass->interfaces.
1795         (mono_generic_class_get_class): Ditto.
1796
1797 2009-02-06  U-QUACK\miguel  <miguel@quack>
1798
1799         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
1800         they live in security.c
1801
1802         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
1803         another bit from Paolo's code.
1804
1805 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * object.c (build_imt_slots): Add a small optimization to avoid inflating
1808         methods which will be discarded by add_imt_builder_entry ().
1809
1810         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
1811         need to be boxed.
1812
1813         * loader.c: Add a statistics for the size of the memberref signature cache.
1814         
1815         * loader.c (find_cached_memberref_sig): New helper function.
1816         (cache_memberref_sig): Ditto.
1817
1818         * loader.c: Cache the result of parsing memberref signatures, since otherwise
1819         they will be parsed again for every generic instantiation, leading to unbounded
1820         memory growth.
1821
1822 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
1825         parameters of generic methods.
1826
1827         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
1828         after the original method is copied to the inflated method.
1829         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
1830
1831         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
1832         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
1833
1834         * class.c metadata.c: Update after the changes above.
1835
1836 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
1837
1838         * metadata-verify.c: Simplified error handling and added
1839         section table validation.
1840
1841 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1842
1843         * class-internals.h (MonoClassExt): New structure containing rarely used
1844         fields of MonoClass.
1845         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
1846         through a new 'ext' field.
1847
1848         * class.c (mono_class_alloc_ext): New helper function to allocate 
1849         class->ext.
1850
1851         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
1852
1853 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1854
1855         * object.c (mono_object_get_virtual_method): Properly inflate
1856         generic methods.  Fixes #472692.
1857
1858 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
1861         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
1862         for the parent type, the created type must be ready to be used on a generic
1863         instantiation.
1864         We fill this_arg/byval_arg if the parent is a generic instance to make sure
1865         we won't have duplicated entries in generic_inst_cache.
1866
1867         Fixes #469553.
1868
1869 2009-02-05  Miguel De Icaza  <miguel@novell.com>
1870
1871         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
1872         replace with plain BSD per the comments on the bug MONO77637.
1873
1874 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * class.c (mono_class_get_generic_class): New accessor function.
1877         (mono_class_get_generic_container): Ditto.
1878
1879         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
1880         fields, similar to the ones in MonoMethod.
1881
1882         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
1883         (mono_class_create_from_typedef): Set klass->is_generic if needed.
1884
1885         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
1886         
1887         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
1888         the same information as element_class->byval_arg.
1889
1890         * class.c reflection.c: Remove references to class->byval_arg.
1891
1892         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
1893         klass->enum_basetype directly.
1894
1895         * verify.c metadata.c object.c icall.c reflection.c: Use 
1896         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
1897         directly.
1898
1899 2009-02-04  Miguel de Icaza  <miguel@novell.com>
1900
1901         * icall-def.h: Remove internal calls for sockets when
1902         DISABLE_SOCKET is defined, file system writing features when the
1903         OS only support reading and not writing data and Policy support if
1904         the Policy is disabled.
1905         
1906         * image.c (do_mono_image_open): Apply Paolo's patches for using
1907         mono_file_map_ APIs here.
1908
1909         * assembly.c: Add support for platforms to avoid prefix
1910         auto-detection. 
1911
1912 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1913
1914         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
1915         warning.
1916
1917         * class.c (mono_class_inflate_generic_class): New helper function.
1918
1919         * class.c: Use mono_class_inflate_generic_class in a few places. Add
1920         statistics for inflated methods/classes.
1921
1922         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
1923
1924         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
1925         the call is made from Delegate.CreateDelegate () for the invoke method of
1926         a delegate.
1927
1928         * loader.c: Add a statistics for the memory occupied by inflated signatures.
1929
1930         * metadata.c (mono_metadata_signature_size): New helper function.
1931
1932         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
1933         generic instances.
1934
1935         * metadata.c (inflated_method_in_image): Avoid calling 
1936         mono_method_signature () if the method does not already have a signature.
1937
1938 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
1939
1940         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
1941         valuetype is compatible with target type, check by inheritance as a
1942         VT is not really compatible with System.ValueType, for example.
1943
1944         * verify.c (do_invoke_method): Improve error message.
1945
1946         * verify.c (do_box_value): If boxing a nullable, use the type argument
1947         on stack instead.
1948
1949         * verify.c (do_newobj): Improve error message.  
1950
1951         Fixes #469549.
1952
1953 2009-02-03  Miguel de Icaza  <miguel@novell.com>
1954
1955         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
1956
1957 2009-02-03  Mark Probst  <mark.probst@gmail.com>
1958
1959         * generic-sharing.c: Don't hold domain lock when calling
1960         instantiate_other_info().  Fixes #471958.
1961
1962         * domain-internals.h, loader.c: Describe locking policy of domain
1963         lock vs loader lock.
1964
1965 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
1966
1967         * verify.c (mono_delegate_signature_equal): Make it possible to check
1968         first-arg-bound delegates to static method.
1969
1970         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
1971         static methods with the first arg bound.
1972
1973         Fixes #469529.
1974
1975 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
1976
1977         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
1978         errors.
1979
1980         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
1981         under strict mode. Any type, when boxed can be seen as a reference type.
1982
1983         Fixes #469528.
1984
1985 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
1986
1987         * object.h: The lower bound of an array is a signed integer value.
1988         Introduce mono_array_lower_bound_t typedef. It should be used instead of
1989         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
1990
1991         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
1992         calculate the upper bound.
1993         
1994         Fixes #471252.
1995
1996 2009-02-02  Miguel de Icaza  <miguel@novell.com>
1997
1998         From Paolo's work, refactored, cleared up:
1999         
2000         * threadpool.c, icall.c: ifdef code that requires a working socket
2001         stack.
2002
2003         * metadata.c (mono_metadata_field_info): Do not attempt to return
2004         a value from a function declared as void.
2005
2006         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2007         from the console stack.
2008
2009         * assembly.c: use strrchr instead of rindex.
2010
2011         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2012         alloca.h on systems that have it.
2013
2014         * environment.c: Avoid code that uses stuff from
2015         HAVE_SYS_UTSNAME_H
2016         
2017         * appdomain.c: Include sys/time.h.
2018
2019         * console-io.c: include sys/ioctl.h if it is available.
2020
2021 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2024
2025         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2026         the method builder.
2027
2028         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2029         after it was created and cached, as the later is not thread safe.
2030         
2031 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2032
2033         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2034         called while the debugging module is not initialized. Fixes #471669.
2035
2036 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2037
2038         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2039
2040         Fixes #471255.
2041
2042 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2043
2044         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2045         loader lock is not taken while the templates lock is held.  Fixes
2046         #471089.
2047
2048 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2049
2050         * metadata.c (type_in_image): Added a check to fix a monodis
2051         crash.
2052
2053 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2056         nullable arguments.
2057
2058         * object.c (mono_runtime_invoke_array): Ditto.
2059         
2060         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2061         freeing wrappers of dynamic methods.
2062
2063         * loader.c (mono_free_method): Call it. Fixes #463323.
2064         
2065         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2066         methods taking vtype/byref arguments, to fix yet another bug caused by
2067         the sharing of runtime invoke wrappers. Partly fixes #471259.
2068
2069 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2072         <first file in file table>:1 when the IL offset does not have an associated
2073         line number.
2074
2075 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2076
2077         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2078         variable info for a method.
2079
2080         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2081         
2082 2009-01-30  Jb Evain  <jbevain@novell.com>
2083
2084         * pedump.c: reuse code from monodis to make sure pedump honors
2085         MONO_PATH, which is needed to verify net_2_1 assemblies.
2086
2087 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2088
2089         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2090         there is no line number info.
2091
2092 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2093
2094         Avoid some MonoType allocations
2095         * reflection.c (mono_reflection_initialize_generic_parameter):
2096         Reuse MonoType from param->pklass rather than allocating one.
2097         (mono_dynamic_image_free): Update to changes.
2098
2099 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2100
2101         Rearrange some code to improve consistency
2102         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2103         (mono_reflection_initialize_generic_parameter): ... here.
2104
2105 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2106
2107         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2108         with type constraints as an experiment.
2109
2110         * boehm-gc.c (on_gc_notification): Update mono_stats.
2111
2112 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2113
2114         Avoid some allocations
2115         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2116         pointer to tail array to avoid extra allocation.
2117         * metadata.c (free_generic_inst): Update to changes.
2118         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2119         on-stack struct.
2120
2121 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2122
2123         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2124         return TRUE if the two type objects are the same.
2125
2126 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2127
2128         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2129         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2130         klass->min_align, since klass->min_align contains the managed alignment,
2131         while the native alignment can be different, like for longs on x86.
2132         Fixes #469135.
2133
2134         * class-internals.h (MonoMarshalType): Add a min_align field.
2135
2136 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2137
2138         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2139         the 1.0 format.
2140
2141 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2142
2143         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2144         some comments about the usage of the used_regs field.
2145
2146         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2147         Fixes #469217.
2148
2149 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2150
2151         * appdomain.c: return NULL instead of throwing FileNotFoundException
2152         when LoadAssembly() fails.
2153
2154 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2155
2156         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2157         image if the owner is NULL.  Fixes the AOT failures.
2158
2159 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2160
2161         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2162         MonoGenericParam structure using memset so the image field is initialized
2163         as well.
2164
2165 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2166
2167         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2168         a plain store.
2169
2170 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2171
2172         * class.c (mono_class_setup_vtable_general): In the generic instance
2173         optimization, set method->slot for abstract virtual methods. Fixes part of
2174         #467834.
2175
2176 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2177
2178         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2179         which signals that the unloading has started but all appdomain services must
2180         remain operational.
2181
2182         * appdomain.c (mono_domain_unload): The initial state for unloading now
2183         is unloading_start and we switch to unloading after the managed call to
2184         AppDomain::DomainUnload has finished.
2185
2186         The new unloading state has to be created because managed code in the
2187         DomainUnload event can depend on things like the threadpool still working.
2188         The domain must remain fully functional while the event executes.
2189
2190         This shown as an issue due to Process::WaitForExit, which waits for
2191         async reads of stdout and stderr to complete. Since those are processed
2192         in the threadpool the code deadlocks because the DomainUnload callback 
2193         waits for the async read finished event, which should have been set by a
2194         threadpool job but has been discarded due to the domain been in unload
2195         state.
2196
2197 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2198
2199         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2200         image must match.
2201
2202 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2203
2204         * reflection.c (resolve_object): For fields, inflate the class and
2205         then get the field in the inflated class.
2206
2207 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2208
2209         * object-internals.h (struct _MonoException): Added a comment
2210         explaining the new use of trace_ips.
2211
2212 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2213
2214         * generic-sharing.c (inflate_other_data): Inflate array methods
2215         correctly.
2216
2217         * loader.c, class-internals.h: Rename search_in_array_class() to
2218         mono_method_search_in_array_class() and make it non-static.
2219
2220 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2223         Hopefully fixes #458168.
2224
2225 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2226
2227         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2228         as it is performed elsewhere.
2229
2230         Code is contributed under MIT/X11 license
2231
2232 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2233
2234         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2235         requests queued.
2236         * object.c (mono_raise_exception): Increment the exceptions total
2237         counter when an exception is thrown.
2238         * class-internals.h: Add a location for storing the total number of
2239         asp.net requests served.
2240         * mono-perfcounters.c: Implement update support for asp.net counters
2241         from the class libraries. Implement read support for asp.net counters
2242         and exceptions total counter.
2243
2244 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2245
2246         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2247         accessing klass->methods. Fixes #467385.
2248
2249 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2250
2251         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2252         for byval arguments without an [Out] attribute. Fixes #467212.
2253
2254         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2255         Fix compilation under android.
2256         
2257         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2258         processed, scan them directly after they are copied, to achieve better locality
2259         and cache usage.
2260
2261         * socket-io.c: Applied patch from Koushik Dutta
2262         (koush@koushikdutta.com). Disable IPV6 when running under android.
2263
2264 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * icall.c (ves_icall_InternalExecute): Add write barriers.
2267
2268         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2269         the GC code.
2270
2271         * sgen-gc.c: Implement write barriers in IL code.
2272
2273 2009-01-17  Geoff Norton  <gnorton@novell.com>
2274
2275         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2276
2277 2009-01-17  Geoff Norton  <gnorton@novell.com>
2278
2279         * image.c: When unloading the image->references table, there can be gaps
2280         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2281         when unloading an appdomain.
2282
2283 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2284
2285         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2286         speed up ptr-in-nursery checks.
2287
2288         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2289         threads_lock () to prevent deadlocks.
2290
2291         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2292         does not need to be scanned during minor collections, since writes to it
2293         must use write barriers.
2294
2295 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2296
2297         * metadata-verify.c: Add pe nt header verification.
2298         
2299 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * gc.c: Fix a few warnings when using SGEN.
2302
2303 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2304
2305         * metadata-verify.c: Add pe optional header verification.
2306
2307 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * sgen-gc.c: Add support for user defined marker functions, used by
2310         MonoGHashTable to avoid registering a GC root for every hash node.
2311
2312 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
2315         non-pinned roots into separate hashes to avoid having to traverse them
2316         in functions which are only interested in one kind.
2317
2318 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2319
2320         * metadata-verify.c: Add pe header machine field verification.
2321         
2322 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2323
2324         * metadata-verify.c: Add pe header size verification.
2325
2326 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
2329         using the GC, they don't contain references.
2330
2331         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
2332
2333 2009-01-13  Geoff Norton  <gnorton@novell.com>
2334
2335         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
2336         AppDomains created on the native side can be cleaned up on the native side.
2337
2338 2009-01-13  Geoff Norton  <gnorton@novell.com>
2339
2340         * appdomain.c: Ensure that we call mono_context_init for the embedding api
2341         as well as the managed api.
2342
2343 2009-01-13  Geoff Norton  <gnorton@novell.com>
2344
2345         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
2346         with a MonoAppDomain initialized against it.
2347
2348 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2349
2350         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
2351         
2352         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
2353
2354         * marshal.c: Avoid setting the exception clauses after a method has been entered 
2355         into the wrapper caches. Fixes #465700.
2356
2357         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
2358         method builder.
2359         (mono_mb_create_method): Set the clauses from the method builder.
2360
2361 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2362
2363         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
2364         Patch from Makoto Kishimoto.
2365
2366 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2367
2368         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
2369         encoding them as ROOT_DESC_COMPLEX.
2370         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
2371
2372 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
2375         no longer point to the nursery.
2376
2377         * sgen-gc.c: Add a few comments/FIXMEs.
2378         
2379         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
2380
2381         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
2382         initialization of the various _method variables thread safe. Fixes
2383         #465377.
2384
2385 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2386
2387         * domain.c, domain-internals.h: Remove the shared_generics_hash
2388         and its lookup functions.
2389
2390 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
2391
2392         * socket-io.c:  Fixing the MSVC build. 
2393
2394         Code is contributed under MIT/X11 license.
2395
2396 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
2397
2398         * metadata-verify.c: Add pe header watermark verification.
2399
2400 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2401
2402         * metadata-verify.c: Add lfanew verification.
2403
2404 2009-01-12  Jb Evain  <jbevain@novell.com>
2405
2406         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
2407         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
2408
2409 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2410
2411         * socket-io.c: Fix the build.
2412
2413         * environment.c: Fix an #ifdef.
2414
2415 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2416
2417         * threadpool.c (async_invoke_thread): Handle the wait function returning
2418         WAIT_IO_COMPLETION as well.
2419         (async_invoke_io_thread): Ditto.
2420
2421 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
2422
2423         * threads.c: Fixing the Windows build.
2424
2425         Code is contributed under MIT/X11 license.
2426
2427 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2428  
2429         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
2430         interrupt a wait.
2431         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
2432         the thread to wait again.
2433
2434 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2435
2436         * metadata-verify.c: Initial skeleton of the metadata verifier.
2437
2438         * pedump.c: Add support for the metadata verifier.
2439
2440         * verify-internal.h: Export the whole assembly metadata verifier function.
2441
2442 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2443
2444         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
2445
2446 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2447
2448         * Makefile.am: Upgrade dtrace-prelink.sh location.
2449
2450 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2451
2452         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
2453         well. Otherwise the shutdown deadlock that happens on unix will can happen
2454         as well.
2455         If the main thread code finishes too fast it's possible that the finalizer
2456         thread won't have executed yet, won't record itself as the finalizer thread
2457         and the shutdown sequence will wait on it forever.
2458
2459 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2460
2461         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
2462         with MSVC.
2463
2464 2009-01-08  Miguel de Icaza  <miguel@novell.com>
2465
2466         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
2467         Robert Jordan for pointing this out.
2468
2469 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
2470
2471         * icall.c
2472         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
2473         ves_icall_System_IO_DriveInfo_GetDriveType.
2474
2475 2009-01-07  Miguel de Icaza  <miguel@novell.com>
2476
2477         * icall.c: Wrap calls to mono_strtod in CriticalSection
2478         invocations when using eglib, to work around #464316.
2479
2480 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2481
2482         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
2483         return value of GetCurrentDirectory to never access unitialized memory.
2484
2485 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2486
2487         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
2488         return value of GetCurrentDirectory and expand the buffer if needed.
2489
2490         Fixes #459094.
2491
2492 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
2493
2494         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
2495           Adding a call to mono_init_com_types.
2496
2497         Code is contributed under MIT/X11 license.
2498
2499 2009-01-07  Geoff Norton  <gnorton@novell.com>
2500
2501         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
2502         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
2503         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
2504         be the value of the ip buffer.
2505
2506 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2507
2508         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
2509         interfaces_packed here.
2510
2511         Fixes part of #463294.
2512
2513 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2514
2515         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
2516
2517         Fixes part of #463294.
2518
2519 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2520
2521         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
2522         is a boxed complex as well.
2523
2524         Fixes part of #463294.
2525
2526 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2527
2528         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
2529         control if a methodspec should be created for the generic method definition from external assemblies.
2530         Caching of methodspec is done using the handleref hash table.
2531
2532         Fixes #462592.
2533
2534 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
2535
2536         * loader.c (find_method): When searching the interfaces of a class
2537         check the transitive closure of implemented interfaces.
2538
2539         Fixes #463303.
2540
2541 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2542
2543         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
2544         
2545 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2546
2547         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
2548         interfaces calculation to fill_valuetype_array_derived_types.
2549
2550         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
2551         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
2552         for example.
2553
2554         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
2555         interfaces for valuetypes if needed.    
2556
2557         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
2558         for their basetype as well. Types are array expanded if rank is > 0.
2559
2560         Fixes #400716.
2561
2562 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
2563
2564         * socket-io.h : Changing the signature of
2565           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
2566           the blocking state.
2567
2568         * icall-def.h :  Changing the signature of
2569           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
2570
2571         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
2572           For Windows only.  Avoid blocking when calling accept by
2573           querying for a connection via select.  The loop also queries
2574           the thread state every 1000 micro seconds for the thread
2575           stop state.  This will avoid the process hanging on shutdown
2576           when using a TcpChannel that is never connected to.
2577
2578         Code is contributed under MIT/X11 license.
2579
2580 2008-12-30  Marek Safar  <marek.safar@gmail.com>
2581
2582         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
2583
2584 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2585
2586         * class.c (get_implicit_generic_array_interfaces): Extract common
2587         code to a helper function making it a lot easier on the eyes.
2588
2589 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2590
2591         * class.c (get_implicit_generic_array_interfaces): If the internal
2592         enumerator is an interface inflate System.Object instead of itself.
2593
2594         Fixes #461261.
2595
2596 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
2597
2598         * object.c (mono_runtime_invoke_array): Don't assert with
2599         byref nullable types.
2600
2601         * marshal.c (mono_marshal_get_runtime_invoke): To handle
2602         byref nullables we unbox the object and store it on the
2603         stack. 
2604         We can't use the boxed object since it is the T of Nullable<T>
2605         and the boxed representation of a nullable it's underlying type
2606         or null.
2607         We could cheat and create a boxed nullable and use the same
2608         machinery of other byref VTs but this feels like a hack and
2609         using the stack has the bonus of reducing heap pressure.
2610
2611         Fixes #461941.
2612
2613 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
2614
2615         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
2616         return value.
2617
2618         Fixes #461867.
2619
2620 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
2621
2622         * icall-def.h : Adding an internal call definition for 
2623           System.Environment.internalBroadcastSettingChange.
2624
2625         * icall.c : Adding a Windows only implementation to broadcast a 
2626           WM_SETTINGCHANGE when an environment variable has changed.
2627
2628         Code is contributed under MIT/X11 license.
2629
2630 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2631
2632         * class.c, class-internals.h: Made
2633         mono_class_has_parent_and_ignore_generics() non-static.
2634
2635 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
2636
2637         * image.c: deal with the mmap failing when loading an image.
2638
2639 2008-12-17  Geoff Norton  <gnorton@novell.com>
2640
2641         * threadpool.c: Ensure that the io_queue_lock is initialized
2642         in all circumstances, as we always attempt to cleanup against it.
2643
2644 2008-12-17  Miguel de Icaza  <miguel@novell.com>
2645
2646         * icall.c (ves_icall_System_Environment_get_Platform): For
2647         compatibility reasons for existing client code we will keep
2648         returning 4 for a while.   
2649
2650         For how long will depend on the documentation being updated, and
2651         for us to give client code a chance to be updated.
2652
2653         This reverts the original decison on #433108 since we did not
2654         catch roughly 33 instances of the broken code in our own source
2655         code base, we did not catch failures on the buildbots, and QA did
2656         not bring this as a problem.
2657
2658         Only today I found some customer's code breaking due to our own
2659         class libraries not being fully updated and tracked it down to
2660         this change.  I am reverting it because if we could not even get
2661         our story straight in our own code base, how can we hope that our
2662         end user code be fixed?
2663
2664         As of this morning, our Wiki page that documents how to detect
2665         Unix had not been fixed.    
2666
2667 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
2668
2669         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
2670
2671         * class.c (mono_class_get_fields): Handle loading errors.
2672
2673 2008-12-12 Mark Mason <mmason@upwardaccess.com>
2674
2675         * 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.
2676         
2677 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
2678
2679         * mono-perfcounters.c: avoid warning.
2680
2681 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2682
2683         * reflection.c (ensure_runtime_vtable): Work on generic instances and
2684         make sure all interfaces have MonoClass::interface_id set.
2685
2686         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
2687         method table is property set.
2688
2689 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2690
2691         * class.c: New function mono_class_setup_interface_id that setup
2692         MonoClass::interface_id if needed.
2693
2694         * class-internals.h: Export new function.
2695
2696 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2697
2698         * class.c: Add code to sanity check the vtable after setup_vtable_general
2699         has done it's work.
2700
2701 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2702
2703         * icall.c: make Assembly.GetExecutingAssembly work properly when
2704         reflection is used to invoke the method.
2705         Bug #321781 fixed.
2706
2707 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2708
2709         * metadata/generic-sharing.c: Look for constraints in all type
2710         arguments, not just the first one.
2711
2712 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2713
2714         * appdomain.c: return the correct CodeBase for an Assembly instance
2715         that was loaded from the shadow-copy directories.
2716         Bug #458190 fixed.
2717
2718 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
2721
2722         * sgen-gc.c (check_object): New debugging helper function.
2723
2724         * object.c: Fix calls to mono_value_copy_array ().
2725
2726 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2727
2728         * class.c (mono_class_setup_fields): If working on an inflated class
2729         first check if the generic definition did init with success.
2730
2731         Fixes #445361.
2732
2733 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2734
2735         pedump.c (main): Fix a warning.
2736
2737 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
2738
2739         * object-internals.h : Adding a definition for 
2740           MonoReflectionComVisibleAttribute.
2741
2742         * marshal.c (cominterop_com_visible) :  Method added to check the 
2743           ComVisible attribute of a class.
2744
2745         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
2746           cominterop_raise_hr_exception added to consolidate common code 
2747           to raise hr exceptions.
2748
2749         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
2750           if a managed class should support IDispatch.
2751
2752         * marshal.c 
2753           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
2754           Added additional checks for managed object when getting 
2755           an IDispatch interface.
2756
2757         Code is contributed under MIT/X11 license.
2758
2759 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2760
2761         pedump.c (main): Handle mono_get_method () returning NULL. 
2762
2763 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2764
2765         * marshal.h: Fix a warning.
2766
2767 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2768
2769         * marshal.c : Adding cominterop_release_all_rcws to release all
2770           runtime callable wrappers held by the runtime.
2771
2772         * marshal.h : Adding declaration for cominterop_release_all_rcws.
2773           
2774         Code is contributed under MIT/X11 license.
2775
2776 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2777
2778         * metadata.c (mono_image_alloc_lock): New helper function.
2779         (mono_image_alloc0_lock): Ditto.
2780
2781         * metadata.c: Use the alloc_lock () helper functions for allocating
2782         memory from the image mempool.
2783
2784 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
2785
2786         * class.c (mono_class_from_generic_parameter): Document it's
2787         locking behavior. Fix double checked locking here, we stored in
2788         param->pklass a partially initialized MonoClass and no membar was used.
2789
2790 2008-12-05  Marek Habersack  <mhabersack@novell.com>
2791
2792         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
2793         (3) functions are present in the C library use them to do the
2794         job. If they are absent, make sure that the sum of int_part and
2795         dec_part is rounded before returning. This is necessary due to the
2796         division of dec_part by the power of 10 before the final addition
2797         is performed - if the result is not rounded in some cases it will
2798         yield invalid results.
2799
2800 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2801
2802         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
2803         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
2804         instruction instead of a pointer constant.
2805
2806 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2807
2808         * loader.c (mono_method_get_header): Do most of the work outside the
2809         loader lock, to avoid assembly load hook deadlocks.
2810
2811         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
2812         (mono_metadata_parse_type_full): Ditto.
2813
2814 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
2815
2816         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
2817         Make the stack depth fixed. Ensure proper argument passing to the backtrace
2818         funtions. Finally, use a lock to produce well ordered output.
2819
2820         The lock looks silly, as all calls to the corlib mempool should be guarded
2821         with the loader lock, but for some reason this fact doesn't help. 
2822
2823         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
2824
2825 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2826
2827         * socket-io.c: 64 bit big-endian fixes.
2828
2829 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2830
2831         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
2832         targets that require strict compatibility between the types.
2833
2834         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
2835         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
2836         Kill the strict argument and create a new one valuetype_must_be_boxed.
2837
2838         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
2839         state that all valuetypes must be boxed.
2840
2841         Fixes #448560.
2842
2843 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
2844
2845         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
2846         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
2847
2848         Contributed under MIT/X11 license.
2849
2850 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
2851
2852         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
2853         the inflate_generic_type machinery should handle it.
2854
2855         This avoids a crash when the field's flags is zero and it's type is
2856         a primitive.
2857         What happens is that mono_metadata_parse_type_full will see that opt_attrs
2858         is zero and will return one of the cached built-in primitive types. Since
2859         those types live in read-only memory, the code that copies it crashes.  
2860
2861 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2862
2863         * object.c: Don't put function descriptors into generalized IMT
2864         thunks.
2865
2866 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2867
2868         * class.c: Enable generic code sharing on PPC64.
2869
2870 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2871
2872         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
2873         from mini/mini.c.
2874
2875         * generic-sharing.c: Allocate the method template slists from the
2876         image mempool so it doesn't leak.
2877
2878 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
2879
2880         * class.c (generic_array_methods): Release the linked list.
2881
2882 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2883
2884         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
2885         invocation to g_utf16_to_utf8().
2886
2887 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2888
2889         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
2890         arguments on big endian archs.
2891
2892 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
2893
2894         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
2895         the type name (test added in corlib).
2896
2897 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
2898
2899         * pedump.c: initialize perf. counters. Fixes a segv.
2900
2901 2008-11-25  Martin Baulig  <martin@ximian.com>
2902
2903         * mono-debug-debugger.c
2904         (mono_debugger_runtime_invoke): Return the exception object if an
2905         exception was thrown.  Visual Studio displays the exception object
2906         in the locals window.
2907
2908 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2909
2910         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
2911         ftnptr.
2912
2913 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2914
2915         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
2916         MONO_TYPE_U are sizeof (gpointer), too.
2917
2918 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2919
2920         * marshal.c (mono_type_native_stack_size): Fixed size and
2921         alignment for reference types.
2922
2923 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2924
2925         * class.c (mono_class_generic_sharing_enabled): Disable generic
2926         code sharing for PPC64.
2927
2928 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
2929
2930         * icall.c (mono_method_get_equivalent_method): Make sure
2931         method->klass->methods is inited before looping over it.
2932
2933 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2934
2935         * object.c: when calling ExecuteAssembly in a newly created domain,
2936         the configuration file and application base are already set up.
2937         Bug #446353 take 2 fixed.
2938
2939 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
2942         Fixes #444715. Fix a warning.
2943
2944 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
2945
2946         * appdomain.c: write the full path of the assembly to the .ini file
2947         created when "shadow-copying"
2948         Bug #446353 fixed.
2949
2950 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2951
2952         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
2953         if signature==FALSE.
2954
2955 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2956
2957         * marshal.h : Fix the cygwin build.
2958            marshal.c:12442: undefined reference to `_IID_IMarshal'
2959           
2960         Code is contributed under MIT/X11 license.
2961
2962 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2963
2964         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
2965           free threaded marshaler when QueryInterface is called on a COM callable
2966           wrapper requesting the IMarshal interface.
2967           
2968         Code is contributed under MIT/X11 license.
2969
2970 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2971
2972         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
2973
2974         * reflection.c (mono_type_get_object): Special case the very common
2975         void type.
2976
2977         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
2978         hold typeof(void).
2979
2980 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
2981
2982         * process.h : Adding method declaration for
2983           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
2984           
2985         * process.c : Adding implementation for
2986           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
2987           
2988         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
2989           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
2990
2991         Code is contributed under MIT/X11 license.
2992
2993 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
2994
2995         * appdomain.c (unload_thread_main): Clean up threadpool by
2996         calling mono_thread_pool_remove_domain_jobs.
2997
2998         * domain-internals.h (struct _MonoDomain): Add new fields to
2999         help coordinate the cleanup of the threadpool.
3000
3001         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3002         that cleans up the threadpool of all jobs associated with an appdomain.
3003         It does that by cleaning up the queues and making sure all active
3004         threads are accounted.
3005
3006         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3007         unloaded or in the process of. Take this is such way that there is
3008         no race condition between another thread starting the unload and the
3009         current thread acknowledging it.
3010
3011         * threadpool.c (async_invoke_thread): Same.
3012
3013         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3014         firing the new thread.
3015
3016         * threadpool.c (start_tpthread): Same.
3017
3018         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3019
3020         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3021
3022 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3023
3024         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3025         Add support for DuplicateHandle.
3026         
3027         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3028         Add support for DuplicateHandle.
3029         
3030         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3031         Add support for DuplicateHandle.
3032
3033         Code is contributed under MIT/X11 license.
3034
3035 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3036
3037         * class-internals.h: Make min_align into a whole byte.
3038
3039         * class.c: Set min_align for SIMD types to 16.
3040
3041 2008-11-05  Geoff Norton  <gnorton@novell.com>
3042
3043         * attach.c: Default the attacher to enabled for all cases including
3044         embedded.
3045
3046 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3047
3048         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3049         change r117650.
3050
3051 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3052
3053         * monitor.c, monitor.h: New function for querying offsets of
3054         members of MonoThreadsSync.
3055
3056 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3057
3058         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3059         to speed up this function and to avoid the boundless memory growth caused by
3060         the signature_dup () calls.
3061
3062 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3065         wrapper.
3066
3067         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3068         by 1 bit.
3069
3070         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3071
3072 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3073
3074         * appdomain.c:
3075         * domain-internals.h: made mono_set_private_bin_path_from_config()
3076         "internal".
3077         * object.c: call the above function after setting the configuration
3078         file path for the root domain.
3079         Fixes bug #314478.
3080
3081 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3082
3083         * assembly.c: when the assembly is loaded from an absolute path, end
3084         basedir with a directory separator.
3085         Bug #440781 fixed.
3086
3087 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3088
3089         * monitor.c (mono_monitor_get_fast_enter_method): If
3090         CompareExchange is not available, don't create the fastpath
3091         instead of asserting.  (The method is missing in the 1.1 profile.)
3092
3093 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3094
3095         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3096
3097         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3098         Monitor.Exit IL fastpaths.
3099
3100 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3101
3102         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3103
3104 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3105
3106         * class.c (mono_class_create_from_typedef): Added Vector2l.
3107
3108 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3109
3110         * class.c (mono_class_create_from_typedef): Added Vector2d.
3111
3112 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3113
3114         * appdomain.c: translate \ into / for cache_path.
3115         * domain-internals.h: new mono_is_shadow_copy_enabled().
3116         * icall.c: (fill_reflection_assembly_name) do the same path
3117         manipulations that get_code_base does.
3118         (get_code_base) use mono_is_shadow_copy_enabled.
3119
3120 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3121
3122         * appdomain.c: shadow-copied assemblies go to CachePath +
3123         ApplicationName when both are set. DynamicBase has nothing to do with
3124         shadow copies.
3125         Bug #406877 fixed.
3126
3127 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3128
3129         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3130         STANDALONESIG table.
3131
3132         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3133         standalone signatures.
3134
3135         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3136         comparison code: instead of comparing the signatures using a custom
3137         equals function, transform them to a common signature and compare that. This
3138         works better with AOT.
3139
3140 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3141
3142         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3143
3144         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3145         call for generic instances.
3146         (mono_class_setup_properties): Call setup_properties () before accessing
3147         gklass->properties.
3148
3149         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3150         over the virtual methods of a class using metadata if possible, avoiding the
3151         creation of MonoMethod's for non-virtual methods.
3152         
3153         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3154         get_virtual_methods () to iterate over the virtual methods of classes.
3155
3156 2008-10-25  Martin Baulig  <martin@ximian.com>
3157
3158         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3159
3160 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3161
3162         * class.c (mono_class_create_from_typedef): Added Vector4i.
3163
3164 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3165
3166         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3167         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3168         special-casing applies to eliminate the call completely.
3169
3170 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3171
3172         * class.c (mono_class_create_from_typedef): Added Vector8s.
3173
3174 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3175
3176         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3177
3178 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3179
3180         * icall.c: get rid of annoying warning.
3181
3182 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3183
3184         * threadpool.c: in 1.x, if you change the background status of the
3185         threadpool thread, it's not reset.
3186         Remove unnecessary calls to SetState.
3187
3188 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3189
3190         * threadpool.c: asynchronously create a set of idle threads upon first
3191         use of the threadpool. SetMinThreads will now start the appropriate
3192         number of idle threads if they are not already running. The default is
3193         1 threadpool thread per CPU. Increased the maximum number of threads
3194         per CPU to 10.
3195
3196 2008-10-22  Martin Baulig  <martin@ximian.com>
3197
3198         Revert r116521 from Zoltan, it breaks the debugger:
3199
3200         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3201         over the virtual methods of a class using metadata if possible, avoiding the
3202         creation of MonoMethod's for non-virtual methods.
3203         
3204         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3205         get_virtual_methods () to iterate over the virtual methods of classes.
3206
3207 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3208
3209         * threads.c: when creating a threadpool thread, set its state to
3210         'background'.
3211         * threadpool.c: reset the background state of a threadpool thread
3212         after finishing each work item
3213         Bug #437888 fixed.
3214
3215 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3216
3217         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3218         
3219         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3220         generic instances which works by inflating the methods in the container
3221         class's vtable.
3222
3223         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3224         variant which doesn't make a copy if no inflation was done.
3225         (mono_class_setup_fields): Use it.
3226
3227         * metadata.c (mono_metadata_get_shared_type): New helper function to
3228         return a shared instance of a given MonoType.
3229
3230         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3231         a copy of most non-generic types.
3232
3233 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3234
3235         * threadpool.c: remove one more GetSystemInfo () call.
3236
3237 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3238
3239         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3240         use the code in mono-proclib.h to get processor information.
3241
3242 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3243
3244         * appdomain.c: fixed the logic that determines whether assemblies in a
3245         directory are "shadow-copied" or not. Bug #433483 fixed.
3246
3247 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3248
3249         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3250         warning.
3251
3252 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3253
3254         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3255         returning a vtype.
3256
3257         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3258         reflection.c: Use mono_field_get_name () for accessing a field's name.
3259
3260         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3261         class.c
3262
3263         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3264         field.
3265
3266         * loader.c (find_method_in_class): Reenable the metadata optimization by
3267         not using it for generic instances.
3268
3269         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3270         data/def_type fields from MonoClassField into a separate structure.
3271         (struct MonoClassField): Remove data/def_type fields.
3272         (struct _MonoClass): Add a 'field_def_values' array to store the default
3273         values/RVA for fields.
3274
3275         * class.c reflection.c: Update after the changes.
3276         
3277         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3278         for accessing field->data.
3279
3280         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3281
3282         * loader.c (find_method_in_class): Revert the last change for now as
3283         it breaks Mono.C5 unit tests.
3284
3285         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3286         'field_generic_types' and 'field_objects' which contain the information
3287         previously stored in MonoInflatedField.
3288         (MonoInflatedField): Delete.
3289         (struct _MonoClassField): Delete 'generic_info' field.
3290
3291         * reflection.c: Store the information which was previously in 
3292         field->generic_info in MonoDynamicGenericClass instead.
3293
3294         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3295         MonoClassField changes.
3296
3297 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3298
3299         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3300         store the value inside the data array of the MonoMethodWrapper.
3301         This saves memory, is faster and fixes the lifetime issues (methods
3302         were never removed from the hash previously). May also fix bug#436996.
3303
3304 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3305
3306         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3307         generic instances, compute the type from the generic definition instead of
3308         looking in field->generic_info.
3309
3310         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3311         for inflated fields, the only user was get_fieldref_token () which no
3312         longer needs it.
3313
3314         * class.c (mono_class_init): Revert the last change as it seems to cause
3315         crashes.
3316
3317         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
3318         bytes on 64 bit platforms.
3319
3320         * object.c (mono_class_create_runtime_vtable): Fix a warning.
3321         
3322         * object.c (mono_class_create_runtime_vtable): Don't initalize
3323         field->data/field->def_type here, it is done lazily by 
3324         mono_class_get_field_default_value ().
3325
3326         * icall.c (ves_icall_get_enum_info): Call 
3327         mono_class_get_field_default_value () instead of directly accessing
3328         field->data and field->def_type.
3329
3330         * object.c (get_default_field_value): Ditto.
3331
3332         * class.c (mono_field_get_data): Ditto.
3333         
3334         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
3335         call for generic instances.
3336
3337         * loader.c (find_method_in_class): If klass != from_class, then inflate
3338         the method with the context of from_class, since the caller assumes this.
3339
3340 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
3341
3342         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
3343         for accessing method->slot.
3344
3345 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
3346
3347         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
3348
3349 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3350
3351         * class.c (mono_method_get_vtable_index): Use
3352         mono_method_get_vtable_slot () for accessing method->slot.
3353
3354         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
3355         accessing klass->methods.
3356
3357         * class.c (mono_method_get_vtable_slot): New helper function.
3358         (mono_class_get_vtable_entry): Ditto.
3359         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
3360         accessing method->slot.
3361
3362         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
3363         method to get_inflated_method ().
3364
3365         * class.c (mono_class_get_inflated_method): New helper method to obtain
3366         a method of an inflated class without calling setup_methods ().
3367         (mono_class_get_cctor): Use get_inflated_method.
3368
3369         * generic-sharing.c (mono_class_get_method_generic): Ditto.
3370         
3371         * marshal.c image.c: Lazily create all the marshal caches.
3372
3373         * image.c (mono_image_init): Move initialization of runtime_invoke
3374         caches to marshal.c.
3375
3376         * marshal.c (get_cache): New helper function to lazily initialize a 
3377         wrapper cache.
3378         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
3379
3380         * debug-helpers.c (mono_method_full_name): Include generic arguments.
3381
3382 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
3383
3384         * loader.c: fixed check for interface type.
3385
3386 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3387
3388         * appdomain.c: check for NULL setup before it's referenced.
3389
3390 p
3391 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3392
3393         * class.c: remove the unused old vtable setup code.
3394
3395 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3396
3397         * class.c: don't depend on interface order in
3398         setup_interface_offsets (bug #435777).
3399         * reflection.c: sort the InterfaceImpl table (patch from
3400         Jb Evain  <jbevain@novell.com>).
3401
3402 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3403
3404         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
3405         the low level assemblies lock.
3406
3407 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
3408
3409         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
3410         object.c, reflection.c, socket-io.c, threads.c: introduced
3411         mono_framework_version () to return the major framewrok version,
3412         changed the code that was using more complex patterns to use it.
3413         Return the correct value for PlatformID for OSX.
3414
3415 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
3416
3417         * icall-def.h, process.h, process.c: added an icall to get info about
3418         processes using mono-proclib.
3419
3420 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
3421
3422         * mono-perfcounters.c: use the mono-proclib functions to
3423         access process information.
3424
3425 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3426
3427         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
3428         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
3429         reflection.c: remove rawbuffer usage: mmap support is more sanely
3430         provided by utils/mono-mmap.
3431
3432 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
3433
3434         * gc.c: use posix semaphores when possible so that
3435         mono_gc_finalize_notify() is signal safe.
3436
3437 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
3438
3439         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
3440         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
3441         be #ifdef-ed out, the linker will remove the rest.
3442
3443         * marshal.c: Implement DISABLE_COM.
3444
3445         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
3446
3447 2008-10-11  Miguel de Icaza  <miguel@novell.com>
3448
3449         * locales.c (string_invariant_compare_char): Optimization: do not
3450         call g_unichar_type unless we actually need the information.
3451
3452 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3453
3454         * object.c, class-internals.h: Also create remoting trampolines
3455         for generic methods.  Pass the domain to the remoting trampoline
3456         creation function, too.
3457
3458 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
3461
3462 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3463
3464         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
3465         Vector4ui.
3466
3467 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3468
3469         * assembly.c:
3470         * locales.c: remove the use of g_strdown. Fixes bug #322313.
3471
3472 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3473
3474         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
3475         for the least possible amount of time (extending the fix in r113458).
3476
3477 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3478
3479         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
3480
3481 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3482
3483         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
3484         as possible simd intrinsic types.
3485         Optimized the test to check for the common prefix first.
3486
3487 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
3488
3489         * class.c: back out part of a broken optimization committed on
3490         May 23th (bug #433908).
3491
3492 2008-10-09  Mark Probst  <mark.probst@gmail.com>
3493
3494         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
3495         Win32.  Should fix #432388 for most cases until we have the new
3496         profiler on Win32.
3497
3498 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3499
3500         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
3501         instead of using inst->id so the hash is stable for AOT.
3502
3503 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3504
3505         * appdomain.c:
3506         * icall.c: create a .ini file for shadow-copied assemblies that
3507         contains the location of the original assembly. Use this to return the
3508         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
3509         Also fix the number of '/' for windows when returning the CodeBase.
3510         Fixes bug #430920.
3511
3512 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3513
3514         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
3515
3516         Code is contributed under MIT/X11 license.
3517
3518 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3519
3520         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
3521           if if the class vtable needs initialized.
3522
3523         Code is contributed under MIT/X11 license.
3524
3525 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3526
3527         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
3528           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
3529           STRING->BSTR, and CLASS->INTERFACE.
3530
3531         Code is contributed under MIT/X11 license.
3532
3533 2008-10-07  Marek Habersack  <mhabersack@novell.com>
3534
3535         * sysmath.h: changed the declaration of the
3536         ves_icall_System_Math_Round2 icall by adding an extra
3537         away_from_zero parameter.
3538
3539         * sysmath.c (ves_icall_System_Math_Round2): added support for
3540         away from zero rounding. The icall now takes an extra boolean
3541         parameter to signal that away from zero operation is requested.
3542
3543 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3544
3545         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
3546         the delegate klass so it can work with full-aot.
3547         (mono_marshal_get_delegate_end_invoke): Ditto.
3548         (mono_marshal_get_delegate_invoke): Ditto.
3549
3550 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
3551
3552         * gc.c, attach.h, attach.c: remove a bad pattern:
3553         add_finalizer_callback () is not implemented correctly, it can't
3554         without adding more overhead to the finalizer loop and it's not
3555         even needed, since we know exactly what we need to call, so there is
3556         no need to do so through an expensive function pointer.
3557
3558 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
3559
3560         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
3561         for the no-gc case.
3562         * attach.c (mono_attach_init): Remove the #ifdef.
3563
3564 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3565
3566         * attach.c (mono_attach_init): Don't use
3567         mono_gc_add_finalizer_thread_callback when compiling without GC.
3568         Fixes #432306.
3569         
3570         Code is contributed under MIT/X11 license.
3571
3572 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3573
3574         * class.c (mono_class_create_from_typedef): Remove the 
3575         #ifndef DISABLE_SIMD stuff.
3576
3577 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3578
3579         * class-internals.h (MonoClass): Added simd_type bit field.
3580
3581         * class.c (mono_class_create_from_typedef): Check if type is a simd
3582         intrinsic.
3583
3584 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3585
3586         * object.c (mono_method_add_generic_virtual_invocation): Only add
3587         instantiations to the thunk whose count is at least as large as
3588         the threshold.
3589
3590 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3591
3592         * icall.c: changed the Type of the exception thrown when trying to
3593         invoke a constructor on an abstract class. Part of the fix for bug
3594         #324185.
3595
3596 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3597
3598         * class.c, class-internals.h (mono_method_get_vtable_index): New
3599         function which returns the index into the vtable and properly
3600         handles inflated virtual generic methods.
3601
3602 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3603
3604         * object.c, domain.c, object-internals.h, domain-internals.h:
3605         Generalize IMT thunk machinery to also handle thunks for virtual
3606         generic method invokes.  When a virtual generic method is invoked
3607         more than a number of times we insert it into the thunk so that it
3608         can be called without lookup in unmanaged code.
3609
3610         * generic-sharing.c, class-internals.h: Fetching a
3611         MonoGenericInst* for a method from an (M)RGCTX.
3612
3613 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3614
3615         * marshal.c (emit_marshal_string): Applied a variant of a patch by
3616         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
3617         marshalling. Fixes #431304.
3618
3619 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
3620
3621         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3622           handle when ref is specified without In or Out.
3623
3624         Code is contributed under MIT/X11 license.
3625
3626 2008-09-30  Mark Probst  <mark.probst@gmail.com>
3627
3628         * loader.c (mono_get_method_constrained): Don't expand method with
3629         the class's context, because it's already a method of that class.
3630
3631 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
3632
3633         * attach.c : should be correct build fix.
3634
3635 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * attach.c: Fix the previous change.
3638
3639 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
3640
3641         * attach.c : quick w32 build fix.
3642
3643 2008-09-27  Miguel de Icaza  <miguel@novell.com>
3644
3645         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
3646         crashes MonoDevelop: #430455.
3647
3648 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * domain-internals.h (struct _MonoDomain): Move most fields used only by
3651         the JIT do MonoJitDomainInfo in ../mini/mini.h.
3652
3653         * domain.c: Remove initialization/cleanup of the removed fields.
3654
3655 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3656
3657         * class.c (mono_class_generic_sharing_enabled): Enable generic
3658         code sharing for PPC.
3659
3660 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
3661
3662         * attach.c : Fixing the Windows builds.
3663
3664         Code is contributed under MIT/X11 license.
3665
3666 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3667
3668         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
3669         the default generic sharing mode to 'all'.
3670
3671 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3672
3673         * generic-sharing.c, class-internals.h: New function for checking
3674         whether a method needs a static RGCTX invoke wrapper.  A few
3675         funtions moved from mini/generic-sharing.c.
3676
3677         * icall.c: New function used.
3678
3679 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3680
3681         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
3682         Static RGCTX invoke wrapping applies to value type methods, too.
3683
3684         * class.c (mono_class_setup_vtable_general): In generic-shared
3685         value types, wrap methods with a static RGCTX invoke wrapper.
3686
3687 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
3690         osx build.
3691
3692 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
3693
3694         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
3695         register a callback which is called when the finalizer thread is woken
3696         up.
3697         (finalizer_thread): Call the callback if it exists.
3698
3699         * attach.h attach.c: New files, implementing the attach mechanism.
3700
3701         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
3702         
3703         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
3704         by the previous change.
3705
3706 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
3707
3708         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
3709         loader.c, marshal.c, metadata-internals.h, metadata.c,
3710         method-builder.c, object.c, reflection.c: introduced specific functions
3711         to allocate from the domain and image mempools and cleaned up most of
3712         the code to use them (still missing a few in reflection.c).
3713         Keep the loader bytes counter updated.
3714
3715 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
3716
3717         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
3718         loader-related counters.
3719
3720 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
3721
3722         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
3723         added more MS-compatible counters.
3724
3725 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
3726
3727         * class.c (mono_class_setup_fields): Call setup_fields before accessing
3728         class->blittable. Fixes #428217.
3729
3730 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
3731
3732         * reflection.c (mono_image_get_field_on_inst_token): Call 
3733         field_encode_signature () since that handles custom modifiers too.
3734         Fixes #424663.
3735
3736 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
3737
3738         * reflection.c (add_custom_modifiers): New helper function to merge custom
3739         modifiers stored in objects to a MonoType.
3740         (fieldref_encode_signature): Encode custom modifiers.
3741         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
3742         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
3743
3744 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
3745
3746         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
3747         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
3748         64-bit IL only images because imports are not resolved for IL only images.
3749         Special thanks to Bill Holmes for finding this bug and testing the patch.
3750         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
3751
3752         Contributed under MIT/X11 license.
3753
3754 2008-09-19  Miguel de Icaza  <miguel@novell.com>
3755
3756         * mono-config.c (dllmap_start): Add support for the bits keyword
3757         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
3758
3759 2008-09-19  Mark Probst  <mark.probst@gmail.com>
3760
3761         * reflection.c (inflate_mono_method): When the class the method is
3762         to be inflated for is itself not inflated, just return the method.
3763
3764 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
3765
3766         * mono-perfcounters.c: use more user friendly process instance names.
3767
3768 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
3769
3770         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3771           handle "[in] ref" and "[in][out] ref" cases.
3772
3773         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
3774           to mono_mb_create_method.  This was causing problems calling native to
3775           managed passing Variants by value.
3776
3777         Code is contributed under MIT/X11 license.
3778
3779 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * class.c (can_access_internals): Call mono_assembly_load_friends ()
3782         before accessing the friend_assembly_names field.
3783
3784         * assembly.c (mono_assembly_load_friends): Make this callable multiple
3785         times.
3786         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
3787         called lazily when it is needed.
3788
3789         * metadata-internals.h (struct _MonoAssembly): Add 
3790         'friend_assembly_names_inited' flag.
3791
3792 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
3793
3794         * mono-perfcounters-def.h: fix the types of a few counters.
3795         * mono-perfcounters.c: implemented the instance names getter
3796         and a few bugfixes.
3797
3798 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
3799
3800         * culture-info-table.h : regenerated.
3801
3802 2008-09-17  Robert Jordan  <robertj@gmx.net>
3803
3804         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
3805         context bound objects. Fixes #415577.
3806
3807         Code is contributed under MIT/X11 license.
3808
3809 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
3810
3811         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
3812         implementation (bug #423582).
3813
3814 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
3815
3816         * object.c (mono_object_get_virtual_method): Handle the case method->slot
3817         is not set. Fixes #426309.
3818
3819 2008-09-16  Jb Evain  <jbevain@novell.com>
3820
3821         * class.c (mono_class_from_name): fix the exported type look up
3822         when the type is defined in a referenced assembly.
3823
3824 2008-09-16  Jb Evain  <jbevain@novell.com>
3825
3826         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
3827         increment the next index counter on each iteration to make that work
3828         for more than one type forwarder. Unmanaged part to fix #422929.
3829
3830 2008-09-15  Mark Probst  <mark.probst@gmail.com>
3831
3832         * object-internals.h: enum ComInterfaceType in
3833         MonoInterfaceTypeAttribute is guint32, not guint16.
3834
3835 2008-09-12  Mark Probst  <mark.probst@gmail.com>
3836
3837         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
3838         writing code.
3839
3840 2008-09-11  Mark Probst  <mark.probst@gmail.com>
3841
3842         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
3843         not gboolean.
3844
3845 2008-09-11  Mark Probst  <mark.probst@gmail.com>
3846
3847         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
3848         Endianness fixes for MonoSymbolFileOffsetTable.
3849
3850 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
3851
3852         * process.c (complete_path) : Removing quotes from the 
3853           input path.  The glib file routines do not handle file paths
3854           that have quotes around them.
3855
3856         Code is contributed under MIT/X11 license.
3857
3858 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
3859
3860         * socket-io.h : Adding a comment to provide locations where 
3861           changes to MonoSocketAsyncResult need to be synced.
3862
3863         Code is contributed under MIT/X11 license.
3864
3865 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
3868         parameters as well. Fixes #425001.
3869
3870 2008-09-08  Miguel de Icaza  <miguel@novell.com>
3871
3872         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
3873         windows build.
3874
3875 2008-09-07  Miguel de Icaza  <miguel@novell.com>
3876
3877         * console-io.c: Add support for tracking the window size if it
3878         changes.
3879
3880         The setup is very simple: the TtySetup function will now return a
3881         pointer to a location in memory that tracks the current console
3882         size.  The managed code checks its current value every time its
3883         queried against the last value set, and updates accordingly.
3884
3885         With this setup we can work with multiple consoles, and we do not
3886         require to poke into managed code from a signal handler.
3887
3888         Additionally, the environment for COLUMNS and LINES is now handled
3889         in unmanaged code.
3890
3891         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
3892
3893 2008-09-07  Mark Probst  <mark.probst@gmail.com>
3894
3895         * marshal.c (mono_type_native_stack_size): Treat
3896         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
3897
3898 2008-09-04  Jb Evain  <jbevain@novell.com>
3899
3900         * class.c (mono_class_is_assignable_from): fix assignability of nullables
3901         to nullables.
3902
3903 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
3904
3905         * verify.c (verify_type_compatibility_full): Revert change
3906         to allow converting a native int to unmanaged pointer be verifiable
3907         under non-strict mode.
3908         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
3909
3910         * verify.c: Added some TODOs.
3911
3912 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
3913
3914         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
3915           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
3916           Changed to use GlobalAlloc for the memory returned on Windows platforms.
3917
3918         Code is contributed under MIT/X11 license.
3919
3920 2008-09-02  Jb Evain  <jbevain@novell.com>
3921
3922         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
3923
3924 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
3925
3926         reflection.c (typebuilder_setup_fields): Handle classes with
3927         explicit size.
3928
3929 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
3930
3931         class.c (mono_class_setup_events): Add memory barrier due to
3932         double checked locking.
3933         
3934         class.c (mono_class_setup_properties): Same.
3935
3936 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
3937
3938         * class.c (mono_class_is_assignable_from): Fix the build.
3939         
3940         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
3941         before accessing klass->interface_bitmap. Fixes #421744.
3942
3943 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
3946         the runtime into no-exec mode, useful when running the AOT compiler.
3947
3948         * appdomain.c gc.c object.c: Avoid executing managed code when running
3949         in no-exec mode.
3950         
3951         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
3952
3953         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
3954         special case when the mono_assembly_loaded () returns NULL because the 
3955         search hook is not installed.
3956
3957 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
3958
3959         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
3960         crashes in bstr marshalling on linux.
3961
3962 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
3965         with more than one parameter.
3966
3967 2008-08-24  Miguel de Icaza  <miguel@novell.com>
3968
3969         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
3970         start/stop flow control as well when turning off ICANON (allows
3971         C-s and C-q to be read by Console.ReadKey).
3972
3973 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
3974
3975         * class.c (mono_class_init): Move the initialization of nested classes
3976         into mono_class_get_nested_types (). Fixes #418433.
3977
3978         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
3979         flag.
3980
3981         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
3982         iterating tough the nested classes of a class.
3983
3984 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
3985
3986         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
3987         on arm.
3988
3989 2008-08-22  Miguel de Icaza  <miguel@novell.com>
3990
3991         * console-io.c (sigcont_handler): Support signal chaining for
3992         SIGCONT.
3993
3994         (console_set_signal_handlers): Use best practices with sigaction,
3995         clear the structure before using it. 
3996
3997 2008-08-22  Robert Jordan  <robertj@gmx.net>
3998
3999         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4000         Fix the Windows build.
4001
4002 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4003
4004         * class.c (mono_class_generic_sharing_enabled): Make the default
4005         sharing mode 'corlib'.
4006
4007 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4008
4009         * console-io.c (console_set_signal_handlers): Fix a warning.
4010
4011         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4012         method normally, the JIT will take care of avoiding recursion.
4013
4014 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4015
4016         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4017
4018         Code is contributed under MIT/X11 license.
4019
4020 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4021
4022         * console-io.c (sigcont_handler): We need to restore the entire
4023         termios state, not only the original settings, as things like echo
4024         can be controlled after this (Booish exposes this issue with its
4025         own ReadLine implementation).
4026
4027         Additionally, we need to set the terminal back into keypad_xmit
4028         mode.
4029         
4030         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4031         string as a paramter as well.   Otherwise we get different
4032         keyboard sequences.
4033
4034 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4035
4036         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4037         delegates with byref out parameter passing. Fixes #351520.
4038
4039         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4040         a generic context.
4041         (mono_type_get_desc): Add the type arguments for GENERICINST.
4042         (mono_method_full_name): Stringify the class name using mono_type_full_name
4043         so it picks up generic arguments.
4044
4045 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4046
4047         * console-io.c: Removed debug output.
4048
4049 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4050
4051         reflection.c (mono_reflection_create_runtime_class): Alloc
4052         the nested classes linked list using the dynamic image mempool.
4053         Fixes leak in corlib compilation.
4054
4055 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4056
4057         * console-io.c: Fix incredibly annoying behavior on the console
4058         after resuming execution after control-z.   This affected every
4059         console application.
4060
4061 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4062
4063         * mempool-internals.h: Header for mono private mempool functions. The first
4064         two function are for allocating glib linked lists using pools.
4065
4066         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4067
4068         * Makefile.am: Added mempool-internals.h.
4069
4070 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4071
4072         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4073         (mono_domain_free): Ditto.
4074
4075         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4076         be used by the JIT to store its domain-specific information, instead of putting
4077         it directly into MonoDomain.
4078
4079         * domain.c (mono_install_create_domain_hook): New helper function to install
4080         a hook which initializes domain->runtime_info.
4081
4082         * domain.c (mono_install_free_domain_hook): Ditto.
4083         
4084 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4085
4086         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4087         asserting if the ares parameter is null.
4088
4089         * mono-perfcounters.c: Fix warnings.
4090
4091         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4092         is not needed, don't check for interruptions either.
4093         (mono_marshal_get_delegate_end_invoke): Ditto.
4094
4095 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4096
4097         * mono-perfcounters.c (predef_readonly_counter): added support for
4098         reading the ASP.NET Requests Queued counter from another process.
4099
4100 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4101
4102         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4103         MonoImage to simplify the AOT code.
4104
4105 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4106
4107         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4108         marshalling. Fixes #416078.
4109
4110 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4111         
4112         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4113         it is set, looking up the icall address is deferred to the JIT, since 
4114         in embedded scenarios, the icall might not be registered in the runtime
4115         doing the AOT compilation. Backported from the 2.0 branch.
4116
4117 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4118
4119         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4120         Fixes #415621.
4121
4122 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4123
4124         * Makefile.am: added support for cross-compilation.
4125
4126 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4127
4128         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4129
4130 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4131
4132         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4133
4134 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4135
4136         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4137         mono-perfcounters.c: performance counters implementation.
4138
4139 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4140
4141         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4142         to gpointer, letting the AOT code decide what to store in it.
4143
4144 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4145
4146         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4147           mono_class_setup_methods if the methods are not initialized.
4148
4149         Code is contributed under MIT/X11 license.
4150
4151 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4152
4153         * verify.c: Remove some debug code I commited by accident.
4154
4155         * verify.c (mono_method_is_valid_in_context): Change the return value
4156         to make possible to distinguish between invalid and unverifiable.
4157
4158         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4159         methods.
4160
4161 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4162
4163         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4164         constraints. Fixes regression in gtest-253.
4165
4166 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4167
4168         * verify.c (mono_verifier_verify_class): Don't allow generic types
4169         with explicit layout.
4170
4171         * verify.c (mono_method_verify): Check locals and argument types.
4172
4173 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4174
4175         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4176         wait if the thread is in StopRequested state.
4177
4178         * class.c (mono_class_from_name): Refactor the module searching code into
4179         a separate function so it can be reused in the AOT case too.
4180
4181 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4182
4183         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4184         Check both the type and it's generic type definition for loader errors.
4185         
4186         * verify.c (mono_method_is_valid_in_context): Don't generate another
4187         error when a type errors occur, this leads to the wrong exception been
4188         thrown.
4189
4190 2008-07-28  Dick Porter  <dick@ximian.com>
4191
4192         * icall-def.h
4193         * process.c
4194         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4195         New internal calls to duplicate and close a process handle.
4196
4197 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4198
4199         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4200
4201 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4202
4203         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4204
4205 2008-07-27  Robert Jordan  <robertj@gmx.net>
4206
4207         * class.c (mono_class_init): Don't compute class.has_finalize for
4208         valuetypes. Fixes #412477.
4209
4210 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4211
4212         * verify.c: Implement constraint equivalence checking.
4213         This is required when a generic parameter is used as
4214         argument to a constrained one.
4215
4216         Fixes #410637.
4217
4218 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4219
4220         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4221
4222         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4223
4224         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4225         synch with managed object layout.
4226
4227 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4228
4229         * verify.c (do_branch_op): Handle valuetypes and generic
4230         arguments properly.
4231
4232         * verify.c (do_cmp_op): Same.
4233
4234         Fixes #410383.
4235
4236 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4237
4238         * generic-sharing.c: Fix memory leaks.
4239
4240         * class.c, class-internals.h: Make
4241         mono_class_inflate_generic_type_with_mempool() non-static.
4242
4243 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4244
4245         * pedump.c (dump_verify_info): Dump full class name.
4246
4247 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4248
4249         * generic-sharing.c: Removed some old code that didn't do anything.
4250
4251 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4252         * profiler.c: Added runtime_initialized_event,
4253         mono_profiler_install_runtime_initialized and
4254         mono_profiler_runtime_initialized. This new hook tells the profiler
4255         when the runtime is sufficiently initialized to be able to call
4256         mono_thread_attach on the root appdomain.
4257         * profiler.h, profiler-private.h: Likewise.
4258
4259 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4260
4261         * verify.c (do_cast): Do boxing for generic arguments as well.
4262
4263         * class.c (is_nesting_type): Drop generic instantiations before
4264         checking for nesting.
4265
4266         * class.c (can_access_instantiation): Allow access to generic
4267         arguments.
4268
4269 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4270
4271         * verify.c (verify_class_for_overlapping_reference_fields):
4272         On some cases, the field size might be zero, guard against that.
4273         Fix the explicit layout check to work as expected.
4274
4275 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4276
4277         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4278         mono_thread_resume () during shutdown, since the thread we want to abort
4279         might be suspended.
4280
4281 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4282
4283         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4284         warning.
4285
4286         * debug-mono-symfile.c: Fix a warning.
4287
4288         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4289
4290         * object.c (mono_class_vtable): Check if exception_type is set, and return
4291         NULL as defined by the function comments.
4292
4293 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4294
4295         * mempool.c: Use malloc for every single mempool allocation if the
4296         configure option is set.  This makes it easier to track mempool
4297         allocations with tools like Valgrind.
4298
4299 2008-07-22  Jb Evain  <jbevain@novell.com>
4300
4301         * reflection.c (create_dynamic_mono_image): emit the same
4302         metadata version that SL2 does when creating a SL2 image.
4303
4304 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4305
4306         * icall-def.h:
4307         * icall.c: New icall System.Enum:get_hashcode. This function
4308         avoids the overhead of boxing the enum to the underlying type.
4309
4310 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4311
4312         * reflection.c (mono_method_get_object): Don't let static RGCTX
4313         invoke wrappers get into MonoReflectionMethods.
4314
4315 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
4316
4317         * object-internals.h:
4318         * object.c: New mono_runtime_class_init_full function
4319         that makes throwing the exception optinal.
4320
4321         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
4322         for the case where the exception object is supplied.
4323
4324 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
4325
4326         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
4327         old ld versions.
4328
4329         Contributed under MIT/X11 license.
4330
4331 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4332
4333         * string-icalls.c (ves_icall_System_String_InternalSplit):
4334         Optimize array allocation by caching the MonoClass of the
4335         array type.
4336
4337         * icall.c (ves_icall_Type_GetMethodsByName): Same.
4338
4339         * reflection.c (mono_param_get_objects): Same.
4340
4341 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4342
4343         * icall-def.h:
4344         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
4345         It inflates the given type using the class context.
4346
4347 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4348
4349         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
4350         the vtable if it already exists.
4351
4352         * object-internals.h: Add mono_class_try_get_vtable as part of the
4353         internal API.
4354
4355         * reflection.c (mono_type_get_object): Use the MonoObject from the
4356         vtable when possible. Reduces locking contention on reflection heavy
4357         code.
4358
4359 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
4362         g_bit_nth_msf () since that macro is not implemented in eglib.
4363
4364 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
4367         on platforms which do not support it.
4368
4369 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4370
4371         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
4372
4373 2008-07-11  Martin Baulig  <martin@ximian.com>
4374
4375         * mono-debug-debugger.h
4376         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
4377
4378         * mono-debug-debugger.c
4379         (_mono_debugger_interruption_request): New global volatile variable.
4380         (mono_debugger_check_interruption): New public function.
4381
4382         * threads.c
4383         (mono_thread_current_check_pending_interrupt): Call
4384         mono_debugger_check_interruption().
4385         (mono_thread_interruption_checkpoint_request): Likewise.
4386
4387 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * verify.c: Add more type checks for loaded types. Verify the result
4390         handle from ldtoken.
4391
4392 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4393
4394         * loader.c (field_from_memberref): Don't crash if the field
4395         wasn't found.
4396
4397 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4398
4399         * verify.c: Verify if type and method instantiations
4400         don't have invalid VAR or MVAR arguments.
4401
4402 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4403
4404         * verify.c: Fix double free of function pointer list.
4405
4406 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4407
4408         * object.c (mono_string_to_utf8): Comment the new code as it
4409         breaks under eglib.
4410
4411 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
4412
4413         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
4414
4415 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
4416
4417         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
4418           is not throw too many times.
4419
4420         Code is contributed under MIT/X11 license.
4421
4422 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4423
4424         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
4425         debugging is turned off.
4426
4427 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
4428
4429         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
4430
4431 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4432
4433         * class-internals.h, class.c: Added new generic sharing option:
4434         Share only stuff in System.Collections.Generic, which is now the
4435         default.
4436
4437 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4438
4439         * generic-sharing.c, class-internals.h: New function for getting a
4440         generic method in a generic class given the corresponding method
4441         for a different instantiation of the class.  Partly refactored
4442         from mini-trampolines.c.
4443
4444         * class.c: Make sure generic methods have a class_inst if they are
4445         part of a generic class.
4446
4447         * metadata.c (mono_type_stack_size_internal): Handle type
4448         variables.
4449
4450 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4451
4452         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
4453         Signifies whether information on the this/vtable/mrgctx variable
4454         is available.
4455
4456 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4457
4458         * object.c, object-internals.h, icall.c: New function
4459         mono_delegate_ctor_with_method(), which does the same as
4460         mono_delegate_ctor(), but takes an explicit method argument
4461         instead of taking the method from the jit info.
4462
4463         * marshal.c: When creating a delegate with an inflated method take
4464         the "this" argument as the target class for the castclass.
4465
4466 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4467
4468         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
4469         mono_jit_info_table_find() to perform very badly in some cases.
4470
4471 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4472
4473         * icall.c (type_from_typename): Handle 'string'.
4474
4475         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
4476         wrappers into the wrapper_hash, since the key is not a MonoMethod.
4477
4478 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4479
4480         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
4481
4482         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
4483         number of available managed allocator types.
4484
4485         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
4486         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
4487
4488 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4489
4490         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
4491         which is a low level lock protecting just the 'jit_code_hash' hash table.
4492
4493         * domain.c: Initialize+cleanup jit_code_hash_lock.
4494         
4495 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4496
4497         * coree.c (mono_load_coree): Set coree_module_handle global variable only
4498         after initialization.
4499
4500         * coree.h: Make MonoFixupExe internal.
4501
4502         Contributed under MIT/X11 license.
4503
4504 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4505
4506         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
4507         because that is platform independent. Check NumberOfRvaAndSizes in PE32
4508         as well.
4509         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
4510         image being loaded is a CLI image and _CorValidateImage gets called.
4511
4512         * coree.h: Add MonoLoadImage.
4513
4514         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
4515         instead of LoadLibrary.
4516
4517         Contributed under MIT/X11 license.
4518
4519 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
4520
4521         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
4522         for any primitive type.
4523
4524 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * object.c (mono_array_new_specific): Optimize this and the other allocation
4527         functions a bit.
4528         
4529         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
4530         domains too if mono_dont_free_domains is set.
4531
4532         * domain-internals.h (mono_dont_free_domains): New internal option controlling
4533         whenever to free appdomain data after it has been unloaded.
4534
4535         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
4536         
4537 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
4538
4539         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
4540         (mono_method_get_equivalent_method): Fix a warning.
4541
4542         * object.c (mono_message_init): Avoid looking up array types for each call.
4543
4544 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4545
4546         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
4547         call.
4548
4549         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
4550         even more.
4551
4552         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
4553         each iteration.
4554
4555         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
4556         fields of an enum.
4557
4558 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
4559
4560         * object.c (mono_value_box): Fix boxing of nullables.
4561
4562 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4563
4564         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
4565         mono_module_handle that is defined by the linker; no initialization required.
4566         * coree.h: Remove mono_module_handle, add __ImageBase, update
4567         mono_image_open_from_module_handle.
4568         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
4569         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
4570         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
4571         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
4572         to 4 GB away from image base address. IA64 version is not tested but was very
4573         easy to implement and should work if we ever need it.
4574         * domain.c (mono_init_internal): Avoid system error message boxes.
4575         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
4576         with has_entry_point. Handle do_mono_image_load fauilre correctly.
4577         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
4578         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
4579         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
4580
4581         Contributed under MIT/X11 license.
4582
4583 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
4586         as part of the private mono API.
4587         
4588         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
4589         Do proper argument checking for methods that belong to generic classes.
4590         Do proper type resolution for GMFH/2.
4591         Fixes #377324.
4592         
4593 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4594
4595         * verify.c (do_switch): Fix a memory corruption bug with
4596         the jump index is out of bound.
4597
4598 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4599
4600         * verify.c: Disable debug code.
4601
4602 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4603
4604         * reflection.c (mono_image_get_methodbuilder_token): Use
4605         mono_image_get_methodspec_token_for_generic_method_definition
4606         instead of mono_image_get_memberref_token. We cache more memberef
4607         entries now.
4608
4609 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4610
4611         * verify.c: Inflate exception clause types.
4612         Fixes #402606.
4613         
4614 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4615
4616         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
4617         name.
4618
4619         * reflection.c (mono_image_get_ctorbuilder_token): Same.
4620
4621         * reflection.c (mono_image_create_method_token): Same.
4622
4623 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4624
4625         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
4626         It does the same as mono_image_get_methodref_token but works on
4627         MethodBuilder.
4628
4629         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
4630         and always generate a methodspec. This follows the old behavior and fixes
4631         the regressions in System.Core. 
4632
4633 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4634
4635         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
4636         don't event mono_class_get () succeeds. Fixes #402182.
4637
4638 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4639
4640         * metadata-internals.h: Added MonoDynamicImage::methodspec
4641         hashtable to store methodspec tokens created for MethodBuilders.
4642
4643         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
4644         MethodBuilders as open instantiations if a methodspec was requested.
4645
4646         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
4647
4648         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
4649
4650         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
4651
4652         Fixes bug #349190.
4653
4654 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4655
4656         * loader.c (method_from_methodspec): Avoid crashing if the
4657         method lookup fails.
4658
4659 2008-06-20  Dick Porter  <dick@ximian.com>
4660
4661         * socket-io.c (get_socket_assembly): Cope with Moonlight network
4662         classes being in a different assembly.  Fixes bug 399184.
4663
4664 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
4665
4666         * loader.c (mono_loader_init): Make this callable multiple times.
4667         (mono_dllmap_insert): Call mono_loader_init () so this works even before
4668         the runtime is initialized. Fixes #401755.
4669
4670 2008-06-19  Dick Porter  <dick@ximian.com>
4671
4672         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
4673         Fixes bug 349688.
4674
4675 2008-06-19  Dick Porter  <dick@ximian.com>
4676
4677         * socket-io.c:
4678         * icall-def.h: Implement Socket generic Send() and Receive()
4679         methods.  Fixes bug 395168.
4680
4681 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
4682
4683         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
4684
4685         Contributed under MIT/X11 license.
4686
4687 2008-06-18  Martin Baulig  <martin@ximian.com>
4688
4689         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
4690         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
4691         set to 80.0.  The debugger <-> runtime interface is now frozen as
4692         well.   
4693
4694         * mono-debug.c
4695         (mono_debug_debugger_version): Bump to 4.
4696
4697 2008-06-18  Martin Baulig  <martin@ximian.com>
4698
4699         * debug-mono-symfile.c
4700         (load_symfile): Don't check the minor version.
4701
4702         * debug-mono-symfile.h: Bump the version number to 50.0.
4703
4704 2008-06-18  Martin Baulig  <martin@ximian.com>
4705
4706         * debug-mono-symfile.c
4707         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
4708         minimum required version.
4709
4710 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4711
4712         * reflection.c (mono_custom_attrs_from_property): Fix support for
4713         retriveving cattrs of dynamic inflated generic types.
4714
4715         * reflection.c (mono_custom_attrs_from_event): Same.
4716
4717         * reflection.c (mono_custom_attrs_from_field): Same;
4718
4719         * reflection.c (typebuilder_setup_events): Same cattrs of events.
4720
4721         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
4722         Moved to metadata.c.
4723
4724         * metadata.c: New functions to retrive the equivalent field, event
4725         of property from the generic type definition.
4726
4727         * metadata-internals.h: Added new functions from metadata.c.
4728
4729 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4730
4731         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
4732         to cached in a mempool is used.
4733
4734         * metadata.c (free_generic_class): In some situations field generic_info type
4735         is not properly dup'ed and leads to double free'ing.
4736
4737         Fixes #400643.
4738
4739 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4740
4741         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
4742         this arguments (will be needed later for generic methods).
4743         Collect stats.
4744
4745 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4746
4747         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4748         Create a static RGCTX invoke wrapper for methods which require it.
4749
4750 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4751
4752         * object.c, class-internals.h: New function for checking whether
4753         an individual field is special static.
4754
4755 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4756
4757         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
4758         linear search since the table is sorted.
4759
4760         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
4761         Fixes #324180.
4762
4763 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4764
4765         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
4766         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
4767
4768         * gc.c (mono_domain_finalize): Allow an infinite timeout.
4769
4770         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
4771         
4772         * threads.c (mono_thread_request_interruption): Get rid of locking, use
4773         InterlockedCompareExchange to query and modify 
4774         thread->interruption_requested.
4775
4776         * object-internals.h (struct _MonoThread): Change interruption_requested
4777         to a gint32 so it can be modified by atomic operations. Add 
4778         'critical_region_level' from the managed side, change small_id to a guint32,
4779         add new set of 'unused' fields.
4780
4781         * appdomain.c: Bump corlib version.
4782
4783 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4784
4785         * class.c (mono_class_from_name): Search modules as well. Fixes
4786         #322332.
4787
4788 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4789
4790         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
4791         templates.  Templates are generalized with an additional type_argc
4792         argument.  RGCTX templates have type_argc==0, MRGCTX templates
4793         have type_argc>0.
4794
4795         * domain-internals.h, domain.c: New hash table for looking up
4796         MRGCTXs.
4797
4798         * metadata.c, metadata-internals.h: Rename hash and equal
4799         functions for MonoGenericInst's and make them public.
4800
4801         * class-internals.h: New data structures for the MRGCTX.  Macros
4802         for distinguishing slots in the RGCTX and the MRGCTX.
4803
4804 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4805
4806         * object.c (mono_method_get_imt_slot): Put the same methods of
4807         different instantiations of the same generic interface in the same
4808         IMT slots, to make generic sharing simpler.
4809
4810 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4811
4812         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
4813
4814         * metadata.c (mono_metadata_field_info_with_mempool): Added.
4815         This function works just like mono_metadata_field_info, but
4816         accept a mempool as argument to be used allocating memory.
4817
4818         * marshal.c (mono_marshal_load_type_info): Use new function
4819         to load marshal data into image mempool.
4820
4821 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4822
4823         * class.c (mono_class_inflate_generic_type_with_mempool):
4824         This function allows to inflate a generic type using
4825         a mempool.
4826
4827         * class.c (inflate_generic_type): Take a mempool as argument
4828         and use it to do type dup'ing.
4829
4830         * class.c (mono_class_setup_fields): Field type for generic
4831         generic classes are allocated from the image mempool.
4832
4833         * metadata.c (free_generic_class): Inflated field type is
4834         now allocated in the image mempool.
4835
4836 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4837
4838         * threads.c (thread_cleanup): Free MonoThread::name.
4839
4840 2008-06-12  Marek Habersack  <mhabersack@novell.com>
4841
4842         * appdomain.c (ensure_directory_exists): avoid unnecessary
4843         mkdir(2) calls when the shadow directory already exists.
4844         (mono_make_shadow_copy): copy also satellite assemblies from the
4845         private bin directories.
4846
4847 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
4848
4849         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
4850         
4851         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
4852         a page boundary. Fixes #396219.
4853
4854 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4855
4856         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
4857         due to double-checked locking.
4858
4859 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4860
4861         * assembly.c (build_assembly_name): Release memory on failure.
4862
4863         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
4864
4865 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4866
4867         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
4868         memory on failure.
4869
4870 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4871
4872         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
4873         memory on failure.
4874
4875 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4876
4877         * loader.c (field_from_memberref): Check if field signature type is equal
4878         to the non-inflated type of the field. Fixes #398980.
4879
4880 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
4881
4882         * assembly.c (mono_assembly_load_from_full): Call 
4883         mono_assembly_load_friends () outside the assemblies lock, since it can
4884         acquire the loader lock. Fixes #323696.
4885
4886         * reflection.c (resolve_object): Inflate the inst with the context for
4887         FieldOnTypeBuilderInst. Fixes #399010.
4888
4889 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4890
4891         * reflection.c (mono_image_get_field_on_inst_token): Don't
4892         inflate the field to encode it's signature. If it's a
4893         VAR or MVAR it should stay that way in the signature.
4894         Fixes #399047.
4895
4896 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4897
4898         * reflection.c (resolve_object): Release memory of inflated types.
4899
4900 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4901
4902         * loader.c (mono_method_get_signature_full): Remove assert about
4903         loading a methodspec to a generic method. We have such methods, such as
4904         System.Threading.Interlocked::CompareExchange<T>.
4905         This assert was removed since it crashes the verifier when it checks
4906         methods calling CompareExchange<T>.
4907
4908 2008-06-10  Marek Safar  <marek.safar@gmail.com>
4909
4910         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
4911         of Type array and not MonoType.
4912
4913 2008-06-10  Marek Habersack  <mhabersack@novell.com>
4914
4915         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
4916         <lupus@ximian.com>
4917
4918 2008-06-10  Martin Baulig  <martin@ximian.com>
4919
4920         * debug-mono-symfile.h
4921         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
4922         changes to the file format, but we were generating incorrect
4923         source file indices in the line number table due to a bug, which
4924         made backtraces report an incorrect source file.
4925
4926 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4927
4928         * mono-debug.c: Moved mono_debug_free_method_jit_info from
4929         mini/debug-mini.c to here.
4930
4931         * mono-debug.c (il_offset_from_address): Free memory from find_method.
4932
4933         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
4934         use it to release structs returned by mono_debug_find_method.
4935
4936 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
4937
4938         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
4939         since it needs to set method->slot for all interface methods.
4940
4941 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
4942
4943         * class-internals.h: Forgot to add.
4944
4945 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
4946
4947         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
4948
4949         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
4950         Lookup the custom attributes from property_hash.
4951
4952         * reflection.c (mono_save_custom_attrs): Save the custom attributes
4953         in property_hash. Allocate all data using the image mempool.
4954
4955         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
4956         for dynamic_custom_attrs to checks if the image is dynamic.
4957
4958 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4959
4960         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
4961         assemblies array.
4962         
4963         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
4964         runtime functions while holding the domain assemblies lock.
4965
4966 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
4967
4968         * verify.c: Reapplied the last bit of the reverted changes.
4969
4970 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
4971
4972         * verify.c: Reapplied more of the reverted changes.
4973
4974 2008-06-09  Martin Baulig  <martin@ximian.com>
4975
4976         * debug-mono-symfile.c (load_symfile): Check the major version
4977         first; if it's wrong, don't print the minor version in the error message.
4978
4979 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4980
4981         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
4982         lock instead of the domain lock to avoid deadlocks, since the thread might
4983         already hold the loader lock.
4984
4985         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
4986         (mono_thread_attach): Ditto.
4987
4988         * monitor.c: Use a TLS variable for holding the current thread id instead
4989         of calling pthread_self ().
4990         (mono_monitor_init_tls): New internal function to initialize the TLS
4991         variable.
4992         (mono_monitor_try_enter_internal): Put the owner == id check after the
4993         owner == 0 check.
4994
4995         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
4996         missed optimizations when using gcc-4.3.
4997
4998 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
4999
5000         * reflection.c (mono_dynamic_image_free): Free the memory
5001         used by MonoGenericParam in MonoDynamicImage::gen_param.
5002
5003         * reflection.c (mono_reflection_setup_generic_class): Allocate
5004         container from mempool.
5005
5006         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5007         container from mempool.
5008
5009 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5010
5011         * threads.c (mono_set_pending_exception): New internal function to set the
5012         pending exception of the current thread.
5013         (mono_thread_get_and_clear_pending_exception): Check for 
5014         thread->pending_exception as well.
5015
5016         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5017
5018         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5019         it can trigger a collection.
5020
5021 2008-06-06  Martin Baulig  <martin@ximian.com>
5022
5023         Merged the `debugger-kahalo' branch.
5024
5025         * mono-debug.h
5026         (MONO_DEBUGGER_VERSION): Bumped to 72.
5027
5028         * debug-mono-symfile.h
5029         (MonoSymbolFileMethodIndexEntry): Removed.
5030         (MonoSymbolFileMethodEntry): New public typedef.
5031         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5032         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5033         `data_offset'.
5034         (MonoSymbolFileMethodEntry): Removed.
5035         (MonoSymbolFileLexicalBlockEntry): Removed.
5036         (MonoSymbolFileLineNumberEntry): Removed.
5037         (MonoDebugLexicalBlockEntry): Removed.
5038         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5039         removed `num_il_offsets' and `il_offsets'.
5040         (MonoSymbolFile): Replace `version' with `major_version' and
5041         `minor_version'.
5042         (MONO_SYMBOL_FILE_VERSION): Replace with
5043         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5044         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5045
5046         * debug-mono-symfile.c
5047         (mono_debug_symfile_lookup_location): Add support for the new line
5048         number table format.
5049
5050 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5051
5052         * metadata.c (free_generic_class): Release the inflated
5053         MonoClass of dynamic generic classes if it's not a generic
5054         type definition.
5055
5056 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5057
5058         * verify.c: Reapplied more of the reverted changes.
5059
5060 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5061
5062         * reflection.c (lookup_custom_attr): Clean the cached flag or
5063         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5064         for SRE types.
5065
5066 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5067
5068         * verify.c: Reapplied a small part of the reverted changes.
5069
5070 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5071
5072         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5073
5074         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5075         previously in managed code.
5076         (mono_monitor_exit): Ditto.
5077         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5078
5079         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5080         the managed definition.
5081
5082 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5083
5084         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5085
5086 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5087
5088         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5089         
5090         * monitor.c: Add some micro optimizations.
5091
5092         * icall.c (type_from_typename): Handle 'bool'.
5093
5094 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5095
5096         * verify.c: Implement constructor verification per P III 1.8.1.4.
5097         Fixes #396716.
5098
5099 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5100
5101         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5102         holding the assemblies lock here too.
5103
5104 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5105
5106         * verify.c: Kill stack_top function.
5107
5108 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5109
5110         * verify.c: Kill stack_get function.
5111
5112 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5113
5114         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5115
5116 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5117
5118         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5119         more reliable.
5120
5121         * verify.c (mono_method_verify): Inflate params and locals to avoid
5122         mismatch when checking for compatibility.
5123
5124 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5125
5126         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5127         Length prefix should be size in bytes. Fix bug #339530.
5128         
5129         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5130         Length prefix should be size in bytes. Fix bug #339530.
5131
5132         Code is contributed under MIT/X11 license.
5133
5134 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5135
5136         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5137
5138         Contributed under MIT/X11 license.
5139
5140 2008-06-05  Martin Baulig  <martin@ximian.com>
5141
5142         * mono-debug-debugger.c
5143         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5144
5145 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5146
5147         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5148         while holding the assemblies lock to prevent deadlocks. Handle the case
5149         where the search hook returns NULL but the assembly was still loaded.
5150         Fixes #323696.
5151
5152         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5153         modify domain state.
5154
5155 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5156
5157         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5158         * Makefile.am (pedump_LDADD): Post-process object files and
5159         add dtrace-generated object file, if necessary.
5160
5161         Code is contributed under MIT/X11 license.
5162
5163 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5164
5165         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5166
5167 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5168
5169         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5170
5171 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5172
5173         * threads.c: Try to free everything from the delayed free table
5174         when shutting down threads, and set the variable to NULL after the
5175         table is freed so that calling
5176         mono_thread_hazardous_try_free_all() when shutting down the root
5177         domain doesn't crash.
5178
5179 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5180
5181         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5182         the caller if resulting type was inflated.
5183
5184         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5185         was inflated.
5186
5187         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5188
5189
5190 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5191
5192         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5193         class library tests.
5194
5195         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5196         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5197         #396989.
5198
5199 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5200
5201         * domain.c, domain-internals.h: The JIT infos are now freed by the
5202         JIT info table code.  They are freed immediately if there only a
5203         single JIT info table in circulation.  If there is more, the free
5204         is delayed via a queue.
5205
5206         * threads.c, threads-types.h: New hazard pointer function for
5207         freeing all freeable delayed items in one sitting.
5208
5209 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5210
5211         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5212
5213         * reflection.c (typebuilder_setup_properties): Same.
5214
5215         * reflection.c (typebuilder_setup_events): Same.
5216
5217 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5218
5219         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5220         and use it for allocating memory.
5221
5222         * reflection.c (mono_marshal_spec_from_builder): Same.
5223
5224         * reflection.c: Change code to use new signatures.
5225
5226         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5227
5228 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5229
5230         * decimal.c (rescale128): Put back one line which was accidently commented
5231         out.
5232         
5233         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5234         to cause crashes.
5235
5236 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5237
5238         * reflection.c (mono_reflection_generic_class_initialize): Name must
5239         be always malloc'ed so we can free it later on. Do this for field, property
5240         and event.
5241
5242         * metadata.c (free_generic_class): Free field, property and event names.
5243
5244 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5245
5246         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5247         instead of g_memdup.
5248
5249         * reflection.c (typebuilder_setup_fields): Same.
5250
5251 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * decimal.c (rescale128): Optimize this function a bit more.
5254
5255 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5256
5257         * metadata.c (free_generic_class): Release some memory from
5258         SRE generic classes.
5259
5260 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5261
5262         * reflection.c (mono_image_get_generic_field_token): No reference
5263         to name is kept, free it.
5264
5265         * reflection.c (mono_reflection_generic_class_initialize): Free
5266         more memory of the inflated field.
5267
5268 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5269
5270         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5271         code.
5272
5273 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5274
5275         * reflection.c (mono_dynamic_image_free): Release memory used by
5276         MonoDynamicImage::array_methods elements.
5277
5278         * reflection.c (assembly_add_win32_resources): Release memory after
5279         encoding.
5280
5281 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5282
5283         * decimal.c (log2_32): Use an optimized version for this function too.
5284         
5285         * decimal.c (log2_64): Fix this on 32 bit machines.
5286
5287 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5288
5289         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5290
5291         * class.c (mono_metadata_signature_deep_dup): Same.
5292
5293         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5294         a mempool.
5295
5296         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5297
5298         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5299
5300         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5301
5302         * class-internals.h: Update signatures to take a MonoMemPool.
5303
5304 2008-06-02  Dick Porter  <dick@ximian.com>
5305
5306         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5307         * icall-def.h: Add
5308         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5309         FormatMessage API to get the error text.  Fixes bug 321827.
5310
5311 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5312
5313         * decimal.c: Add some micro optimizations to make decimal operations faster.
5314
5315 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5316
5317         * reflection.c (method_encode_clauses): Take a mempool
5318         as parameter and use it to allocate the clause array.
5319
5320         * reflection.c (mono_image_get_field_on_inst_token): Free
5321         the inflated type after encoding it.
5322
5323         * reflection.c (mono_dynamic_image_free): Free each element
5324         of MonoDynamicImage::gen_params.
5325
5326         * reflection.c (reflection_methodbuilder_to_mono_method):
5327         Allocate the generic param array from the mempool.
5328         Allocate signature params from the mempool.
5329
5330         * reflection.c (mono_reflection_generic_class_initialize):
5331         Free inflated fields after been used.
5332
5333 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5334
5335         * icall.c: Reapply the memory leak fixes as they no
5336         longer make mono crash.
5337
5338 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5339
5340         * reflection.c (mono_type_get_object): Don't store the suplied
5341         MonoType with type_hash. A caller which pass a type that
5342         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
5343         might end with a pointer to freed memory.
5344         The solution is to use byval_arg or this_arg from the associated
5345         MonoClass of the supplied type.
5346
5347 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
5348
5349         * icall.c: Revert the rest of the last change as it breaks the build too.
5350
5351 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5352
5353         * icall.c: Revert a leak fix as it's breaking the build.
5354
5355 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5356
5357         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
5358
5359 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5360
5361         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
5362
5363 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5364
5365         * icall.c: Fix some memory leaks.
5366
5367 2008-05-29  Dick Porter  <dick@ximian.com>
5368
5369         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
5370         async socket operations from the pending list when a socket
5371         closes.  Leaving it until the threadpool services the event
5372         exposes a race condition when a socket descriptor is reused.
5373         Fixes bug 377589.
5374
5375 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5376
5377         * object.c: Fix negative index check for array alocation.
5378
5379 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5380
5381         * icall.c, marshal.c: Delegate wrappers should skip visibility.
5382         This check is performed by the verifier for IL created delegates
5383         and by Delegate::CreateDelegate for programatically created ones.
5384         Fixes #372406.
5385
5386 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5387
5388         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
5389         Fix code to use mono_array_size_t instead of int.
5390
5391         Based on patch by Luis F. Ortiz.
5392         Contributed under X11 license.
5393         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5394
5395 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5396
5397         * icall.c: Added ves_icall_System_Array_GetLongLength and
5398         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
5399         arrays.
5400
5401         * icall.h: Export both new functions.
5402
5403         Based on patch by Luis F. Ortiz.
5404         Contributed under X11 license.
5405         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5406
5407 2008-05-28  Martin Baulig  <martin@ximian.com>
5408
5409         The debugger now requires exactly r103463.
5410
5411         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
5412         This version is not supported by the debugger, wait for 72.
5413
5414 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5415
5416         * object.h: Changed array related functions to use
5417         mono_array_size_t instead of guint32. Forgot to commit this file.
5418
5419         Patch by Luis F. Ortiz.
5420         Contributed under X11 license.
5421         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5422
5423
5424 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5425
5426         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
5427         don't define it. Use the number literal instead.
5428
5429 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5430
5431         * icall.c: Changed array related functions to use
5432         mono_array_size_t instead of guint32.
5433
5434         * icall.c (ves_icall_System_Array_GetLength): Check for length
5435         overflow under MONO_BIG_ARRAYS.
5436
5437         Based on patch by Luis F. Ortiz.
5438         Contributed under X11 license.
5439         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5440
5441 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5442
5443         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
5444
5445         Based on patch by Luis F. Ortiz.
5446         Contributed under X11 license.
5447         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5448
5449 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5450
5451         * object.c, object.h: Changed array related functions to use
5452         mono_array_size_t instead of guint32.
5453
5454         Patch by Luis F. Ortiz.
5455         Contributed under X11 license.
5456         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5457
5458 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5459
5460         * object.h: Introduced mono_array_size_t typedef. This must be used
5461         in all places an array length is expected. This is 64bits wide if
5462         MONO_BIG_ARRAYS is enabled.
5463
5464         Patch by Luis F. Ortiz.
5465         Contributed under X11 license.
5466         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5467
5468 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5469
5470         * security-manager.c class.c: Set the class exception info by calling
5471         mono_class_set_failure ().
5472
5473         * class.c (mono_class_get_exception_data): New accessor function.
5474         (mono_class_set_failure): Store exception_data in the property hash.
5475
5476         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
5477         the struct as a property.
5478
5479         * loader.c (mono_get_method_full): Store the lookup result for method
5480         tokens in method_cache, the others in methodref_cache to decrease the memory
5481         usage of hash tables.
5482
5483         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
5484         (mono_image_init): method_cache is lazy inited now.
5485
5486         * metadata-internals.h (struct _MonoImage): Change method_cache to
5487         a MonoValueHashTable, add a separate methodref_cache.
5488
5489 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
5490
5491         * number-formatter.h: Fix tables to avoid arithemtic overflow in
5492           Double.ToString as exposed by Bug #383531.
5493
5494 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5495
5496         * number-formatter.h: Make some tables static.
5497
5498         * class.c (mono_method_set_generic_container): New accessor function.
5499         (mono_method_get_generic_container): Ditto.
5500
5501         * class-internals.h (struct _MonoMethod): Remove rarely used 
5502         'generic_container' field, store it in the property hash instead. Add 
5503         'is_generic' boolean field instead.
5504
5505         * image.c (mono_image_init): Initialize property_hash.
5506         (mono_image_close): Destroy property_hash.
5507
5508         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
5509         hold rarely used fields of runtime structures belonging to this image.
5510
5511         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
5512         to get/set method->generic_container.
5513
5514         * loader.c (mono_get_method_from_token): Avoid loading the method header for
5515         generic methods.
5516
5517 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * class.c (mono_class_inflate_generic_method_full): Don't increase
5520         mono_stats.inflated_method_count for methods found in the cache.
5521
5522         * threads.c (mono_thread_request_interruption): Add a comment about 
5523         QueueUserAPC ().
5524
5525 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
5526
5527         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
5528         interface_offsets_packed table.
5529         
5530         * class.c (mono_class_init): Remove some dead code.
5531
5532         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
5533         mono_class_setup_vtable () when CAS is active to detect security problems.
5534
5535 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
5536
5537         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
5538
5539         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
5540         parameters as it's irrelevant for delegate checking.
5541
5542 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
5543
5544         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
5545
5546         * class.c (mono_class_init): Control the creation of a generic vtable using
5547         a global which is true by default, but set to false by the runtime startup code.
5548         
5549         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
5550         Disabled for now since it breaks the embedding API.
5551         Move the setup of class->methods for arrays to mono_class_setup_methods ().
5552         (mono_class_setup_methods): Add a memory barrier.
5553
5554         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
5555         when mono_class_init () doesn't compute the generic vtable.
5556         
5557 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
5558         * profiler.c: Added mono_profiler_install_statistical_call_chain,
5559         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
5560         to support call chains (backtrace) in the stat profiler.
5561         * profiler.c, profiler-private.h: Likewise.
5562
5563 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5564
5565         * generic-sharing.c: Init generic class when a method of it is
5566         requested via a runtime generic context.
5567
5568 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
5569
5570         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
5571
5572         * reflection.c (mono_type_get_object): Add a FIXME.
5573
5574         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
5575
5576         * class.c (mono_class_get_method_by_index): New helper function, returning an
5577         entry in the class->methods array.
5578
5579 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5580
5581         * class.c (mono_class_init): Only do the array optimization for szarrays. 
5582         Avoid creating a generic vtable for generic instances as well.
5583         (mono_class_get_method_from_name_flags): Don't search in the metadata for
5584         generic instances.
5585
5586 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5587
5588         * loader.c (mono_get_method_constrained): Inflate the signature
5589         with class context. Fix #325283.
5590
5591 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5592
5593         * object.c (mono_class_create_runtime_vtable): Add a comment.
5594
5595         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
5596         where needed.
5597         (setup_interface_offsets): Handle the case when this is called twice for arrays.
5598         (mono_class_setup_vtable_general): Add an assert.
5599         (mono_class_init): Avoid creating a generic vtable for arrays.
5600
5601         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
5602         here, let mono_class_init () do that.
5603
5604         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
5605         interfaces in mscorlib.
5606
5607         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
5608         interfaces. Add some comments.
5609         (mono_class_init): Call mono_class_setup_methods () here since it is no
5610         longer called by mono_class_setup_vtable ().
5611
5612         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
5613         not set in class->vtable.
5614         (mono_class_create_runtime_vtable): Reenable the disabled code.
5615
5616         * object.c (mono_class_create_runtime_vtable): Disable the last change for
5617         now as it causes some test failures.
5618
5619         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
5620         if using the vtable trampoline. Also remove some strange code which put the
5621         generic methods themselves into the vtable slots. Remove the AOT init_vtable
5622         stuff as it is no longer needed.
5623
5624 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5625
5626         * pedump.c: Give make --verify all option check code as well.
5627         Using --verify code won't check for metadata now.
5628
5629 2008-05-19  Martin Baulig  <martin@ximian.com>
5630
5631         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
5632
5633         * mono-debug.c
5634         (_mono_debug_using_mono_debugger): New global variable; it's set
5635         directly by the debugger, so mono_debug_using_mono_debugger() also
5636         works after attaching.
5637
5638 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5639
5640         * object.c (mono_class_create_runtime_vtable): Use memory barriers
5641         as we do double checked locking on MonoClass::runtime_info and
5642         MonoClassRuntimeInfo::domain_vtables.
5643
5644 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
5645
5646         * debug-helpers.c (print_field_value): Fix a warning.
5647
5648 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
5649
5650         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
5651         set in the AOT case.
5652
5653 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5654
5655         * class.c (mono_class_setup_vtable_general): Use memory barriers
5656         as we do double checked locking on MonoClass::vtable.
5657
5658 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5659
5660         * reflection.c (resolve_object): Inflate only if the generic context
5661         is not null. Fixes #389886.
5662
5663 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
5664
5665         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
5666         instead of g_free.
5667
5668         Code is contributed under MIT/X11 license.
5669
5670 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5671
5672         * class.c: Revert unrelated change.
5673
5674 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5675
5676         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
5677         a generic instantiation, use mono_class_from_mono_type instead of playing
5678         with MonoType directly.
5679
5680 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
5683         checks must ignore generic instantiations, so mono_class_has_parent is not
5684         suitable. Fixes #390128.
5685
5686 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
5687
5688         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
5689         it to avoid registering tokens during metadata generation. Fixes #390023.
5690
5691 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5692
5693         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
5694         consistent.
5695
5696         Contributed under MIT/X11 license.
5697
5698 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5699
5700         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
5701         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
5702         to fixup the EXE image.
5703         (mono_cleanup): Use mono_close_exe_image.
5704         (mono_close_exe_image): New function.
5705         * image.c: Include "marshal.h".
5706         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
5707         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
5708         counting when the image is loaded outside of mono_image_open_full. Set status
5709         based on GetLastError.
5710         * coree.c: Include required headers. Add init_from_coree.
5711         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
5712         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
5713         (_CorExeMain): Set init_from_coree.
5714         (CorExitProcess): Only call ExitProcess for now.
5715         (CorBindToRuntimeEx): New stub implementation.
5716         (CorBindToRuntime): New function.
5717         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
5718         (MonoFixupExe): ILONLY executables require no fixups.
5719         (mono_set_act_ctx): New function to set activation context.
5720         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
5721         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
5722         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
5723         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
5724         as MONO_INTERNAL.
5725         * domain-internals.h: Add mono_close_exe_image.
5726
5727         Contributed under MIT/X11 license.
5728
5729 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
5730
5731         * metadata.c (mono_metadata_compute_size): Correctly calculate field
5732         size for generic param and event tables. Fixes #388977.
5733
5734 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
5735
5736         * loader.c (mono_method_signature): Use memory barriers because of the double
5737         checked locking pattern.
5738
5739         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
5740         aborting or aborted as well. Fixes #376391.
5741         
5742         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
5743         existing runtime state in the Suspend handler during shutdown.
5744
5745 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
5748
5749         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
5750         which are starting up or shutting down.
5751
5752         * threads.c (mono_threads_set_shutting_down): Don't return a value since
5753         this function never returns if the runtime is already shutting down.
5754
5755         * icall.c (ves_icall_System_Environment_Exit): Update after 
5756         mono_threads_set_shutting_down () signature change.
5757         
5758 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
5759
5760         * class.c: Added can_access_instantiation to verify if the instantiation
5761         is visible. Fix access check for nested types as they returned TRUE
5762         before doing type and generic instantiation visibility checks.
5763
5764 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
5765
5766         * reflection.c (mono_reflection_create_generic_class): The created type
5767         must have a different container from its TypeBuilder. Otherwise they
5768         will end sharing generic arguments, which is wrong.
5769
5770         Due to the sharing, making a generic instance of the created type using
5771         the TypeBuider generic arguments resulted in the generic type definition
5772         been returned, which is wrong as well.
5773
5774         As a bonus the code was leaking the type_params array. This memory should
5775         be allocated from the image mempool.
5776
5777         This fixes bug #354047.
5778
5779 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
5780
5781         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
5782         to here         as they are now used in assembly.c new code.
5783         Added a skipverification flag to MonoAssembly.
5784         New internal function mono_assembly_has_skip_verification.
5785
5786         * assembly.c: New function mono_assembly_has_skip_verification. It checks
5787         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
5788         part of #387274.
5789
5790 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5791
5792         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
5793         needed. Fixes #387034.
5794
5795         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
5796
5797 2008-05-06  Miguel de Icaza  <miguel@novell.com>
5798
5799         * assembly.c (mono_assembly_load_reference): Prevent crash while
5800         disassembling Silverlight 2.0 executables while we still do not
5801         have GACed libraries.
5802
5803 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5804
5805         * reflection.c: Special case generic type definitions as well. Fixes #383444.
5806
5807 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
5810         of the dynamic case. Fixes #387404.
5811
5812 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5813
5814         *verify.c (mono_verifier_is_class_full_trust): If under
5815         verify_all and the verifier mode was not set, only
5816         gac and corlib types are fulltrust. This makes --verify-all
5817         usable to detect unverifiable code, which is the expected
5818         use case.
5819
5820 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5821
5822         * verify.h: Ops, commited the header with debug
5823         enabled.
5824
5825 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5826
5827         * verify.c (merge_stack): Use the new value on unverifiable
5828         stack merges.
5829
5830         * verify.c (verify_type_compatibility_full): Comparison
5831         of nullable types can't use mono_class_is_assignable_from.
5832
5833         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
5834         that makes all verification errors be reported.
5835
5836         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
5837         mono_method_verify.
5838
5839 2008-05-05  Robert Jordan  <robertj@gmx.net>
5840
5841         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
5842         support for value types. See #386415.
5843
5844         * object.c: comments.
5845
5846         Code is contributed under MIT/X11 license.
5847
5848 2008-05-05  Martin Baulig  <martin@ximian.com>
5849
5850         * debug-mono-symfile.h
5851         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
5852         for old pre-terrania symbol files.
5853
5854 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5855
5856         * mono-config.c: Add ppc64 architecture.
5857
5858         Code is contributed under MIT/X11 license.
5859
5860 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5861
5862         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
5863           PPC64 uses function descriptors as well.
5864
5865         Code is contributed under MIT/X11 license.
5866
5867 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
5868
5869         * object.c (compute_class_bitmap): Ignore literal static fields.
5870
5871         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
5872         var has an invalid format.
5873         (describe_ptr): Add some sanity checks for the vtable.
5874         (add_nursery_frag): Clear unused nursery fragments.
5875         (major_collection): Clear all remaining nursery fragments.
5876
5877 2008-05-03  Robert Jordan  <robertj@gmx.net>
5878
5879         * image.c, metadata-internals.h: add thunk_invoke_cache.
5880
5881         * marshal.c, marshal.h: implement
5882         mono_marshal_get_thunk_invoke_wrapper ().
5883
5884         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
5885
5886         Code is contributed under MIT/X11 license.
5887
5888 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
5889
5890         * verify.c (do_leave): Empty the stack.
5891
5892 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
5893
5894         * class.c (mono_class_is_assignable_from): Variance
5895         doesn't work between reference and value types. For example,
5896         given type C<T+>, C<int32> is not assignable to C<object>.
5897         Break the argument checking loop on first error. 
5898
5899 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
5900
5901         * icall.c : base64_to_byte_array() needs some more strict
5902           check for sequence of '=' characters. Patch by Santa
5903           Marta (http://deee.g.hatena.ne.jp/santamarta).
5904
5905           Contributed under MIT/X11 license.
5906           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
5907
5908 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
5909
5910         * domain.c: Disable LoadLibrary support to fix Win32 build.
5911
5912         Code is contributed under MIT/X11 license.
5913
5914 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
5915
5916         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
5917         to help with cache behaviour.
5918
5919 2008-05-01  Miguel de Icaza  <miguel@novell.com>
5920
5921         * appdomain.c (mono_domain_from_appdomain): Add new accessor
5922         method. 
5923
5924 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
5925
5926         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
5927
5928 2008-05-01  Dick Porter  <dick@ximian.com>
5929
5930         * process.c (process_get_fileversion): Only pass 16 bits of
5931         language ID to VerLanguageName.  Fixes bug 381204.
5932
5933 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5934
5935         * verify.c (mono_method_verify): Fix the comparison
5936         operator for code bounds check.
5937
5938 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5939
5940         * verify.c (mono_method_verify): Check the bounds of
5941         all access of the code array.
5942
5943 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
5944
5945         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
5946
5947 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * image.c (mono_image_strong_name_position): Fix return value when the rva is
5950         not valid.
5951
5952 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
5953
5954         * loader.c (mono_get_method_from_token, mono_method_signature): Add
5955         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
5956         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
5957         fixup main EXE images when using mono.exe for mixed-mode assembly support.
5958         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
5959         mono_runtime_load.
5960         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
5961         runtime initialization from metadata.
5962         * assembly.c: Remove obsolete ceGetModuleFileNameA.
5963         (mono_set_rootdir): Use mono_get_module_file_name.
5964         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
5965         handles.
5966         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
5967         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
5968         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
5969         MonoCLIImageInfo. Add support for module handles.
5970         (load_cli_header): Update mono_cli_rva_image_map signature.
5971         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
5972         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
5973         (mono_image_rva_map): Add support for module handles.
5974         (mono_image_ensure_section_idx): Add support for module handles.
5975         (mono_image_close): Add support for module handles.
5976         (do_load_header): Add support for module handles.
5977         (mono_image_open_from_module_handle): New function for internal use.
5978         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
5979         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
5980         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
5981         handles.
5982         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
5983         * image.h: Add mono_image_fixup_vtable.
5984         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
5985         support.
5986         * coree.h: New file.
5987         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
5988         unsupported native code.
5989         (mono_marshal_set_callconv_from_modopt): New function splitted from
5990         mono_marshal_get_managed_wrapper.
5991         (mono_marshal_get_managed_wrapper): Use
5992         mono_marshal_set_callconv_from_modopt.
5993         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
5994         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
5995         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
5996         that results in a deadlock when the runtime is loaded in _CorDllMain.
5997         * Makefile.am: Add coree.c and coree.h.
5998
5999         Contributed under MIT/X11 license.
6000
6001 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6002
6003         * generic-sharing.c: Search for type arguments in array element
6004         types as well.
6005
6006 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6007
6008         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6009
6010         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6011
6012         * object.c: Don't setup the RGCTX when the vtable is created,
6013         because we're setting it up lazily now.
6014
6015 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6016
6017         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6018         64 bit support.
6019
6020 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6021
6022         * verify.c (verify_class_for_overlapping_reference_fields): 
6023         If class is under fulltrust allow reference types to overllap
6024         if they have the same RVA.
6025
6026 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6027
6028         * pedump.c: Added new flag valid-only, that makes the verifier
6029         behaves just like --security=validil. It won't fail type load
6030         due to unverifiable restrictions.
6031
6032 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6033
6034         * class-internals.h (struct MonoMethod): Added a verification_success
6035         field to cache verifier executions. Reduced MonoMethod:slot size by
6036         one bit.
6037
6038 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6039
6040         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6041         instead of a 'vt' argument to save an indirection and to allow these to be used
6042         for valuetypes.
6043         (scan_vtype): New helper function to scan an area using a gc descriptor.
6044         (mono_gc_wbarrier_value_copy): Implement this.
6045         (handle_remset): Add support for REMSET_VTYPE.
6046         (find_in_remset_loc): Ditto.
6047         (mono_gc_base_init): Allow some debugging options to be controlled through the
6048         use of the MONO_GC_DEBUG env variable.
6049         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6050         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6051
6052 2008-04-23  Martin Baulig  <martin@ximian.com>
6053
6054         * domain.c (mono_domain_create): Move the call to
6055         mono_debug_domain_create() down, after allocating the domain id.
6056
6057 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6058
6059         verify.c (verify_class_for_overlapping_reference_fields): Skip
6060         static fields while verifying for overlapping fields as they
6061         don't matter at all.
6062
6063 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6064
6065         * domain-internals.h: added a declaration of
6066         mono_make_shadow_copy.
6067
6068         * assembly.c (mono_assembly_open_full): shadow copying of
6069         assemblies moved to here, so that all the assemblies within the
6070         application domain's private binary directories can be
6071         processed. Fixes bug #380546
6072
6073         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6074         mono_make_shadow_copy and made non-static. The decision whether
6075         to shadow-copy an assembly is made based on its location - it's
6076         copied if it's in one of the private application domain binary
6077         directories and its different to the target file in the shadow
6078         directory. Fixes bug #380546
6079
6080 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6081
6082         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6083
6084         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6085         types.
6086
6087         * reflection.c (mono_image_create_token): Handle 
6088         Method/ConstructorOnTypeBuilderInst.
6089         (resolve_object): Ditto.
6090         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6091         so it can be called from resolve_object. Also handle the case when the inflated
6092         class already has its methods setup.
6093
6094 2008-04-21  Martin Baulig  <martin@ximian.com>
6095
6096         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6097
6098 2008-04-20  Geoff Norton  <gnorton@novell.com>
6099
6100         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6101         pointer dereference.
6102
6103 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6104
6105         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6106         portability API to look up the assembly file. Fixes behavior in
6107         situations when the application has a bin/ directory, but the
6108         assembly search patch refers to Bin/ (and thus the requested file
6109         name is Bin/SomeLibrary.dll). Fixes bug #379888
6110
6111 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6112
6113         verify.c (mono_type_is_generic_argument): Extracted this check
6114         from a dozen places to here.
6115
6116         verify.c: Fixed all issues related to boxing generic arguments
6117         and their constraints.
6118
6119 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6120
6121         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6122
6123 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6126         isn't finished yet. Fixes #363447.
6127
6128 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6129
6130         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6131         Fixes #346419.
6132
6133 2008-04-13  Jb Evain  <jbevain@novell.com>
6134
6135         * domain.c: update the 2.1 profile versions.
6136         Merged from the Moonlight 2 branch.
6137
6138 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6141         mscorlibs for the non-refonly case as well.
6142
6143         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6144         in mono_assembly_load_from_full (). Fixes #378924.
6145
6146 2008-04-11  Geoff Norton  <gnorton@novell.com>
6147
6148         * icall.c: The global extern environ doesn't exist on Mac.  We
6149         need to call NSGetEnviron instead.
6150
6151 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6152
6153         verify.c: Add generic method constraint verification.
6154
6155 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6156
6157         class.c (mono_class_inflate_generic_method_full): Add a long
6158         explanation to the is_mb_open hack. Remove the FIXME.
6159
6160 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6161
6162         * verify.c (mono_method_verify): Mark all unknown opcodes
6163         as invalid. Mark jmp as unverifiable.
6164
6165 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6166
6167         * verify.c: Add code to do type constraint verification on class instances.
6168
6169         * verify.c (mono_verifier_verify_class): Use the type constraint 
6170         verification code.
6171
6172 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6173
6174         * class.c (mono_class_get_field_default_value): Don't pass cindex
6175         as hint to mono_metadata_get_constant_index. The local is not initialized
6176         and should contain garbage most of the time. This could only work
6177         with a lot of luck.
6178
6179 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6180
6181         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6182
6183 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6184
6185         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6186
6187         * class.c (mono_class_from_generic_parameter): Save the token of the
6188         generic param in MonoClass::sizes.generic_param_token.
6189
6190         * reflection.c (mono_custom_attrs_from_class): If the class type is
6191         VAR or MVAR retrieve the attributes of the generic param.
6192
6193 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6194
6195         * class.c (mono_class_init): Do class verification if the verifier
6196         is enabled.
6197
6198 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6199
6200         * verify-internal.h: Added mono_verifier_verify_class.
6201
6202         * verify.c: Added mono_verifier_verify_class. It checks for
6203         classes with explicit layout that have overlapping reference fields.
6204
6205         * pedump.c: Init the verifier state prior to verification. Fixed
6206         command line arguments.
6207
6208 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6209
6210         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6211
6212 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6213
6214         * verify-internals.h: Fix a warning.
6215
6216 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6217
6218         * verify-internals.h: New header with the verifier configuration
6219         extracted from mini.c.
6220
6221         * verify.c: Implemented the new functions exported by verify-internals.h.
6222
6223 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6224
6225         * verify.c: Add proper verification of ckfinite.
6226
6227 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6228
6229         * verify.c (do_conversion): Improved error message to something
6230         more meanfull.
6231
6232         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6233         with primitive types.
6234
6235 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6236
6237         * verify.c: Added tail prefix checking. Marked icall
6238         as unverifible.
6239
6240 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6241
6242         * verify.c: Fix the detection of branches to the middle
6243         of an instruction.
6244
6245 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6246
6247         * verify.c: Implemented verification of volatile. and
6248         unaligned. prefix. Check if a type is valid after retrieving it.
6249
6250 2008-04-01  Dick Porter  <dick@ximian.com>
6251
6252         * process.c (process_get_fileversion): If there's no string block,
6253         set the file language to en_US.  Fixes the other new part of bug
6254         374600.
6255
6256 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6257
6258         * class.c: New functions mono_method_can_access_field_full and
6259         mono_method_can_access_method_full. They perform type visibility
6260         and type site check.
6261
6262         * class-internal.h: Added exported functions.
6263
6264         * verify.c: Use new functions to implement proper visibility checks.
6265
6266 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6267
6268         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6269
6270 2008-03-28  Dick Porter  <dick@ximian.com>
6271
6272         * process.c (process_get_fileversion): Use the first language ID
6273         we see, rather than insisting on an invariant language.  Fixes bug
6274         374600.
6275
6276 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6277
6278         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6279         the streams to fix reading of invalid memory later.
6280
6281         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6282         to ease debugging.
6283
6284 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6285
6286         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6287         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6288
6289 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6290         * threads.h: Added MonoThreadManageCallback type and
6291         mono_thread_set_manage_callback prototype
6292         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6293         (used to store the mono_thread_manage callback).
6294         * threads.c: Added mono_thread_set_manage_callback, and handle
6295         "MonoThread->manage_callback" in build_wait_tids.
6296
6297 2008-03-26  Dick Porter  <dick@ximian.com>
6298
6299         * process.c (process_get_fileversion): Set FileVersionInfo strings
6300         to Empty when the resource doesn't have the particular info.
6301         Fixes bug 355717.
6302
6303 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6304
6305         * verify.c (mono_method_verify): Proper prefix validation.
6306
6307 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6308
6309         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6310         itself in a separate argument instead of throwing them. Fixes #373448.
6311
6312         * appdomain.c: Bump corlib version.
6313
6314 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6315
6316         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
6317
6318 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6319
6320         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
6321         version macros.
6322
6323 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6324
6325         * generic-sharing.c, class-internals.h: Code for putting
6326         reflection types into the runtime generic context.
6327
6328 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6329
6330         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
6331         Fixes #340662. 
6332
6333
6334 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
6335
6336         * verify.c (VerifyContext): Added instruction prefix data to the struct.
6337
6338         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
6339
6340         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
6341
6342         * verify.c (do_cast): Let the result value keep the boxed status.
6343
6344         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
6345
6346 2008-03-17  Jb Evain  <jbevain@novell.com>
6347
6348         * reflection.c: when running on a 2.0 runtime, emit
6349         unconditionally the #~ header version as 2.0, and the
6350         CLI header version as 2.5, for symmetry's sake with csc.
6351
6352 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6353
6354         * class.c: Remove the unused cache_interface_offsets stuff.
6355
6356         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
6357         profiler.c: Fix warnings.
6358
6359 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6360
6361         * generic-sharing.c, class-internals.h: Support for putting
6362         methods into the runtime generic context.
6363
6364 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * class.c (mono_class_setup_fields): Ignore calls made to this function for
6367         classes which are generic instances of not-yet finished typebuilders. Fixes
6368         #351172.
6369
6370         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
6371
6372 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
6373
6374         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
6375
6376         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
6377         field, replace it with a hash table in MonoDynamicImage.
6378
6379         * reflection.c (inflate_mono_method): Access the generic definition object from
6380         image->generic_def_objects instead of imethod->reflection_info.
6381
6382         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
6383
6384         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
6385         
6386         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
6387         function in reflection.c so it is easier to keep in sync with the dynamic image
6388         creation code.
6389
6390         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
6391         mono_image_close ().
6392
6393 2008-03-15  Mark Probst  <mark.probst@gmail.com>
6394
6395         * class.c (mono_class_generic_sharing_enabled): Disable generic
6396         sharing for all architectures except AMD64 and x86 to fix build.
6397
6398 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6399
6400         * verify.c: Use the generic definition MonoGenericContext when available.
6401         Remove code for checking generics instance compatibility in favor of
6402         mono_class_is_assignable_from.
6403
6404 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6405
6406         * marshal.c, marshal.h, metadata-internals.h, image.c,
6407         wrapper-types.h: New wrapper for invoking a shared static method
6408         without having to pass the runtime generic context argument.
6409
6410 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6411
6412         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
6413
6414 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6415
6416         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
6417         
6418         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
6419         create a token from a FieldOnTypeBuilderInst.
6420         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
6421         (resolve_object): Ditto.
6422
6423         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
6424         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
6425
6426 2008-03-14  Martin Baulig  <martin@ximian.com>
6427
6428         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
6429
6430         * debug-mono-symfile.h
6431         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
6432         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
6433
6434 2008-03-10  Martin Baulig  <martin@ximian.com>
6435
6436         * debug-mono-symfile.h
6437         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
6438         `lexical_block_table_offset'.
6439         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
6440         `lexical_blocks'.
6441         (MonoSymbolFile): Added `version'.
6442
6443         * mono-debug.h
6444         (MonoDebugLexicalBlockEntry): Removed.
6445         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
6446         `lexical_blocks'.
6447
6448         * mono-debug.c (mono_debug_add_method): Don't compute lexical
6449         blocks here; the debugger now does this internally.
6450
6451 2008-02-27  Martin Baulig  <martin@ximian.com>
6452
6453         * object.c (mono_runtime_exec_main): Call
6454         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
6455         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
6456
6457 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6458
6459         * verify.c (verify_type_compatibility_full): Allow native int to be converted
6460         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
6461
6462 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6463
6464         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
6465         ldftn with a virtual method.
6466
6467 2008-03-13  Geoff Norton  <gnorton@novell.com>
6468
6469         * decimal.c:  Only include memory.h if the platform has it.
6470
6471 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
6472
6473         * assembly.c, class.c, metadata-internals.h: make sure public key
6474         tokesns are compared in a case-insensitive way. Also, all
6475         the lookups in the GAC use a lowercase public key token
6476         (gaacutil already does the lowercasing on install). Fixes
6477         bug #369541.
6478
6479 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
6480
6481         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
6482         and return value.
6483
6484 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
6485
6486         * image.c: when someone loads a mscorlib from a file, return the
6487         currently loaded mscorlib (fixes bug #369253).
6488
6489 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6490
6491         * class.c: handle types with no parents by forcing them to have
6492         System.Object as a parent and marking them as broken (this currently
6493         allows the first part of bug #369173 to work as well, likely because
6494         we don't check for typeload exceptions everywhere yet).
6495
6496 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
6497
6498         * class.c: more complete check that types belong to corlib
6499         (fixes second part of bug #369173).
6500
6501 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
6502
6503         * generic-sharing.c:  Including glib.h for the MSVC builds to define
6504           "inline" to "__inline" before including mono-membar.h.
6505           
6506         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
6507           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
6508           MSVC builds.
6509
6510         Contributed under MIT/X11 license.
6511
6512 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6513
6514         * verify.c (do_invoke_method): Remove return type validation.
6515
6516         * verify.c (do_ret): Do return type validation at return site instead of
6517         call site.
6518
6519 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6520
6521         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
6522
6523         * verify.c: Some todos cleaned and improved a few error messages.
6524
6525 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
6526
6527         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
6528
6529 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
6532         system types correctly.
6533
6534         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
6535         function.
6536
6537 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6538
6539         * assembly.c (build_assembly_name): Fix a warning.
6540
6541 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6542
6543         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
6544         the called function takes an object type argument. Fixes storing or
6545         valuetypes across remoting as well as reducing memory usage.
6546         * image.c, metadata-internals.h: remove now unused ldfld_remote and
6547         stfld_remote wrapper caches.
6548
6549 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6550
6551         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
6552         is not found.
6553
6554         * reflection.c (mono_image_register_token): New helper function to save
6555         a token->object mapping.        
6556
6557         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
6558         managed code.
6559
6560         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
6561         one dimension arrays. Fixes #367670.
6562         (mono_reflection_get_type_internal): Ditto.
6563
6564 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6565
6566         * marshal.c: mono_load_remote_field_new() always returns object.
6567         so use the proper signature (fixes bug #366445).
6568
6569 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6570         
6571         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
6572         add an 'inline_failure' flag instead.
6573
6574 2008-03-04  Mark Probst  <mark.probst@gmail.com>
6575
6576         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
6577         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
6578         contains the location of "this", used for exception handling.
6579
6580 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6581
6582         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
6583         their size on all platforms for perf reasons.
6584
6585 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6586
6587         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
6588         object-internal.h
6589
6590         * object-internal.h: Same.
6591
6592 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6593
6594         * reflection.h: Fix the build I just broke.
6595
6596 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6597
6598         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
6599         Test if a token is valid, this remove explicit usage of 
6600         MonoDynamicImage::tokens from the verifier code.
6601
6602         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
6603
6604         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
6605         instead of direct access to MonoDynamicImage::tokens.
6606
6607 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6608
6609         * verify.c (token_bounds_check): Fix the build I just broke.
6610
6611 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6612
6613         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
6614
6615         * verify.c (verifier_load_method): Fixed the errors message.
6616
6617         * verify.c (mono_method_verify): Fixed a debug message.
6618
6619 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
6620
6621         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
6622         mono-perfcounters.h, class-internals.h: support for predefined
6623         writable counters, query of categories and counters, bugfixes.
6624
6625 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6626
6627         * verify.c (do_refanytype): Verify the refanytype opcode.
6628
6629         * verify.c (mono_method_verify): Use do_refanytype.
6630
6631 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6632
6633         * verify.c (do_mkrefany): Verify the mkrefany opcode.
6634
6635         * verify.c (mono_method_verify): Use do_mkrefany.
6636
6637 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
6638
6639         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
6640         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
6641         implementation.
6642
6643 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6644
6645         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
6646         the type load exception.
6647
6648 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
6649
6650         * verify.c: Added a few FIXME for method signatures
6651
6652         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
6653         of mono_method_get_signature and get vararg call working. Removed unused
6654         checks for return value.
6655
6656         * verify.c (do_refanyval): Verify the refanyval opcode.
6657
6658         * verify.c (mono_method_verify): Implemented verification of arglist and
6659         use do_refanyval.
6660
6661 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6662
6663         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
6664         vtypes to marshal.c.
6665
6666         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
6667         it works for AOT as well.
6668
6669 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6670
6671         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
6672         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
6673         the system time is adjusted.
6674
6675 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
6676
6677         * icall.c, icall-def.h: use the new time functions (fixes the
6678         non-monotonic behaviour of TickCount).
6679
6680 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
6681
6682         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
6683         it breaks the build.
6684         
6685         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
6686         cattr is not finished yet.
6687
6688 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6689
6690         * verify.c: Proper token validation for field, method and type.
6691
6692 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6693
6694         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
6695
6696         * loader.c (method_from_memberref): Generate type load error instead of method missing
6697         if the type is not found.
6698
6699 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
6700
6701         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
6702         some of the conversions caused the generation of a marshal directive exception.
6703
6704 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6705
6706         verify.c: Report which exception should be thrown by the JIT.
6707         Added a lot of FIXME notes.
6708
6709 2008-02-22  Mark Probst  <mark.probst@gmail.com>
6710
6711         * generic-sharing.c: Runtime generic context slots are not
6712         instantiated on init anymore.  Instead, provide function to do the
6713         instantiating on demand.
6714
6715         * class-internals.h: Added vtable to runtime generic context.
6716         Macros for encoding direct and indirect slot offsets in one
6717         guint32.
6718
6719 2008-02-21  Mark Probst  <mark.probst@gmail.com>
6720
6721         * object.c, generic-sharing.c: Moved some generic sharing code
6722         from object.c to generic-sharing.c.
6723
6724         * generic-sharing.c: Added support for extensible runtime generic
6725         context.
6726
6727         * metadata-internals.h: Two new hash tables in MonoImage for
6728         extensible runtime generic context support.
6729
6730         * domain.c: Unregister generic vtables upon domain unloading.
6731
6732         * image.c: Destroy new hash tables upon image unloading.
6733
6734         * metadata.c: Unregister generic subclasses upon image unloading.
6735
6736         * class-internals.h: New data structure for runtime generic
6737         context template.  New fields in the runtime generic context for
6738         extensible part.
6739
6740         * Makefile.am: Added generic-sharing.c.
6741
6742 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6743
6744         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
6745         there is a pending loader exception, raise it.
6746
6747         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
6748         same.
6749
6750         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
6751         same.
6752
6753         Fixes #363450.
6754
6755 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
6756
6757         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
6758
6759         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
6760         
6761         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
6762         ref-only requests for compatibility with MS.
6763
6764 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
6765
6766         * reflection.c (mono_custom_attrs_from_method): Don't silently
6767         return an empty list for generic method instances.
6768         (mono_custom_attrs_from_param): Likewise.
6769
6770 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
6771             Raja R Harinath  <harinath@hurrynot.org>
6772
6773         Fix #354757
6774         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
6775         * class.c (mono_class_inflate_generic_method_full): Initialize it
6776         when a fully-open method is instantiated.
6777         * metadata.c (inflated_method_equal, inflated_method_hash): Update
6778         to new field.
6779         * reflection.c (inflate_mono_method): Don't create a temporary context.
6780
6781 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
6782
6783         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
6784         Compute correct value, to prepare for imethod->reflection_info going away.
6785
6786 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
6787
6788         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
6789
6790 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
6791
6792         * verify.c: Implement skip visibility flag.
6793
6794 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
6795
6796         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
6797         which contains an extra field to tell the kind of exception that should be thrown.
6798
6799         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
6800
6801 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
6802
6803         * loader.c (mono_method_get_param_names): Initialize 'klass' after
6804         'method' is updated.
6805
6806 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
6807
6808         * class.c (mono_class_layout_fields): Set class->min_align for classes using
6809         explicit layout as well. Fixes #360375.
6810
6811 2008-02-11  Geoff Norton  <gnorton@novell.com>
6812
6813         * loader.c: Guard and dereference against inflated generic methods
6814
6815 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
6816
6817         * class.c: Include Retargetable spec in assembly name.
6818         * assembly.c: Always include PublicKeyToken spec in assembly name
6819         (with value "null" if assembly is not signed), and include
6820         Retargetable spec.
6821         * icall-def.h: Added icall for Assembly.get_fullname.
6822         * icall.c: Added icall returning the fullname of an assembly.
6823
6824 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
6825
6826         * class.c (mono_class_setup_vtable_general): Add a missing call to
6827         mono_class_setup_methods () which is needed in the AOT case.
6828
6829 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
6830
6831         * verify.c (mono_type_get_stack_name): Added. Return the name for the
6832         stack type of the given MonoType.
6833
6834         * verify.c (verify_type_compatibility_full): Handle the void type.
6835
6836         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
6837         way stack merging works.
6838
6839         * verify.c (store_local): Improved verification message.
6840
6841         * verify.c (do_branch_op): If the merging is invalid, the method
6842         is unverifiable and not invalid. Improved error message.
6843
6844         * verify.c (merge_stacks): Properly merge a boxed valuetype and
6845         a reference type diferent than System.Object. Improved error
6846         message.
6847
6848 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
6849
6850         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
6851
6852         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
6853         type of an enum even if the argument is byref.
6854
6855         * verify.c: Replace all explicit uses of enumtype and enum_basetype
6856         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
6857
6858         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
6859
6860         *verify.c (verify_type_compatibility_full): Make enum types
6861         compatible with their base types.
6862
6863         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
6864         types are compatible for the special case of a boxed valuetype and
6865         System.Object.
6866
6867         * verify.c (verify_stack_type_compatibility): The function
6868         is_compatible_boxed_valuetype was extracted from here.
6869
6870         * verify.c (push_arg): Only set ctx->has_this_store if the method
6871         is not static.
6872
6873         * verify.c (do_ldelem): Fixed a typo in an error message and added
6874         strict check for mixing int32 and native int as the array type
6875         and ldelem type.
6876
6877         * verify.c (merge_stacks): Consider boxed valuetypes in the
6878         compatibility checks.
6879
6880 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
6881         * profiler.h: (MonoGCEvent): Added start-stop the world events.
6882
6883 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
6884         *class.c: use_new_interface_vtable_code: renamed the env var to have
6885         a "MONO_" prefix, and fix the logic to enable it by default.
6886
6887 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
6888         *class.c:
6889         mono_class_setup_vtable_general: rewrote the way in which interface
6890         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
6891         makes the code more maintainable.
6892         For now the old code is still there, and can be activated setting
6893         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
6894
6895 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
6896
6897         * verify.c: guarded some debug functions around and #ifdef.
6898
6899         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
6900
6901 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
6904         changes for now since they seem to break too many things.
6905
6906 2008-02-05  Mark Probst  <mark.probst@gmail.com>
6907
6908         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
6909         mono_marshal_find_nonzero_bit_offset): Added macro and function
6910         for finding the byte- and bit-offset of a bitfield within a
6911         struct.
6912
6913 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
6914
6915         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
6916         (mono_marshal_get_struct_to_ptr): Ditto.
6917
6918         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
6919         cctor_signature.
6920
6921 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
6922
6923         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
6924         between methods for non-corlib types.
6925
6926 2008-02-02  Geoff Norton  <gnorton@novell.com>
6927
6928         * loader.c (mono_method_get_param_names): Populate the parameter name for 
6929         generic parameters as well. (Fixes #342536)
6930
6931 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
6932
6933         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
6934
6935         * verify.c (do_invoke_method): Fix for calling with byref structs.
6936
6937         * verify.c (do_cast): push a boxed value type based on the type token and not
6938         the type of stack.
6939
6940 2008-01-31  William Holmes  <billholmes54@gmail.com>
6941
6942         * process.c (process_module_string_read): Check the size returned form 
6943           VerQueryValue to avoid out of memory exception. 
6944
6945 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
6946
6947         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
6948         Handle properly modules which are not in the moduleref table. Fixes
6949         #356938.
6950
6951 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
6952
6953         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
6954         the dynamic case which is now in managed code.
6955         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
6956
6957         * marshal.c (mono_string_to_bstr): Fix a warning.
6958         (init_com_provider_ms): Ditto.
6959
6960         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
6961
6962         * exception.c (mono_get_exception_out_of_memory): New helper function.
6963
6964 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
6965
6966         * marshal.c: Add support for BSTR marshalling
6967         using other COM systems.
6968
6969         Code is contributed under MIT/X11 license.
6970
6971 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
6972
6973         * object.c (mono_runtime_invoke_array): reverted previous
6974         commit as it breaks the build.
6975
6976 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
6977
6978         * object.c (mono_runtime_invoke_array): Verify arguments for
6979         invalid types. Fixes #348522.
6980
6981 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
6982
6983         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
6984         non-final virtual calls using call. 
6985
6986         * verify.c (do_invoke): fixed some TODOs.
6987
6988         * verify.c (push_arg): set has_this_store for "ldarga 0".
6989
6990 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
6991
6992         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
6993         which belong to an inflated class. Fixes #356531.
6994
6995 2008-01-26  Robert Jordan  <robertj@gmx.net>
6996
6997         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
6998         which resort to FindFirstFile when a certain error condition
6999         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7000         Code is contributed under MIT/X11 license.
7001
7002 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7003
7004         * marshal.c (emit_marshal_string): Fix out string marshalling
7005         to use specified encoding. Fixes #323900.
7006
7007         Code is contributed under MIT/X11 license.
7008
7009 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7010
7011         * class.c (mono_class_inflate_generic_method_full): Don't modify
7012         iresult->context after cache check.
7013
7014 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7015
7016         * class.c (mono_class_inflate_generic_method_full): Change the
7017         struct assignments to memcpy for better visibility and add some comments.
7018
7019 2008-01-23  Dick Porter  <dick@ximian.com>
7020
7021         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7022         procedure, and make it work on windows.
7023
7024 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7025
7026         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7027         a MonoReflectionTypeBuilder since it is always of that type.
7028
7029         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7030
7031         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7032
7033         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7034         
7035         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7036
7037         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7038
7039         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7040         instantiations from the type cache.
7041
7042 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7043
7044         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7045
7046         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7047
7048 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7049
7050         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7051
7052         * verify.c (mono_method_verify): removed old TODO
7053
7054 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7055
7056         * verify.c (do_newobj): add visibility check.
7057
7058 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7059
7060         * verify.c (do_load_function_ptr): add visibility check.
7061
7062 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7063         *class.c:
7064         mono_generic_class_get_class: hook profiler events.
7065         mono_field_get_offset: added to support heap-shot in the new profiler.
7066         *class.h: exported mono_field_get_offset.
7067         * reflection.c:
7068         mono_reflection_setup_internal_class: hook profiler events.
7069
7070 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7071
7072         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7073         argument here too and use it to avoid checking for pending exceptions if 
7074         possible.
7075
7076 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7077
7078         * assembly.c (build_assembly_name): add arg for passing the assembly
7079         flags. Do not consider a PublicKey with value "null" valid.
7080         (mono_assembly_name_parse_full): added boolean argument that will be
7081         set if the assembly name contains a PublicKeyToken spec. Added support
7082         for the Retargetable spec for which only Yes or No are allowed as valid
7083         value. Consider assembly name invalid if Retargetable spec is set, but
7084         either version, culture or public key (token) are not specified.
7085         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7086         with implementation in assembly.c.
7087         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7088         from MonoAssemblyName.
7089         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7090         introduced argument for mono_assembly_name_parse_full to know if the
7091         assembly name has a PublicKeyToken spec, and if it has instruct
7092         fill_reflection_assembly_name to use default value for keyToken (if
7093         PublicKeyToken is null).
7094
7095 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7096
7097         * verify.c (mono_method_verify): fixed ovf ops with
7098         float values. They are unverifiable now.
7099
7100 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7101
7102         * class.c (set_failure_from_loader_error): add BadImageException to the
7103         list of exceptions that can cause a type to fail to load.
7104
7105         * class.c (mono_class_get_exception_for_failure): same.
7106
7107 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7108
7109         * verify.c (in_any_exception_block): added, check if offset
7110         is part of any exception handling clause.
7111
7112         * verify.c (get_stack_type): added VAR and MVAR types.
7113
7114         * verify.c (do_stobj): better error messages.
7115
7116         * verify.c (do_cpobj): added, check cpobj.
7117
7118         * verify.c (do_initobj): added, check initobj.
7119
7120         * verify.c (do_sizeof): added, check sizeof.
7121
7122         * verify.c (do_localloc): added, check localloc.
7123
7124         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7125
7126 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7127
7128         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7129         save_lmf/restore_lmf opcodes.
7130
7131         * threads.c (mono_threads_install_notify_pending_exc): New function to
7132         install a callback notifying the JIT there is a pending exception on a thread.
7133         (mono_thread_request_interruption): Call the new callback.
7134         (mono_thread_get_and_clear_pending_exception): New function to return the
7135         exception pending on a thread.
7136
7137         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7138         to turn off checking for pending exceptions.
7139         (mono_marshal_get_native_wrapper): Ditto.
7140
7141 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7142
7143         * threads-types.h: Get rid of the unnecessary extern declarations.
7144
7145 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7146
7147         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7148         return field from parent class if not private.
7149         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7150         returns fields from parent class if they are not private.
7151         (method_nonpublic): added function to determine if a given method
7152         should be considered non-public. Returns false for private methods
7153         on parent class, and internal methods from parent on the 1.0 profile.
7154         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7155         use method_nonpublic function to determine whether method should be
7156         returned.
7157         (property_accessor_public): use newly introduced method_nonpublic
7158         function to determine whether accessor is non-public. 
7159         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7160         event from parent class if not private. Only return static event if
7161         Static flag is set, and only return static event from parent class if
7162         FlattenHierarchy flag is set.
7163         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7164         include non-private events from parent class.
7165
7166 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7169         warning.
7170
7171 2008-01-16  Wade Berrier <wberrier@novell.com>
7172
7173         * security.c: Add assembly.h header to appease some warnings
7174
7175 2008-01-16  Dick Porter  <dick@ximian.com>
7176
7177         * process.c (process_module_string_read): Remove trailing null
7178         when saving string.
7179
7180 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7181
7182         * class-internals.h: A new data structure describing the layout of
7183         a runtime generic context (MonoRuntimeGenericContextTemplate).
7184
7185         * metadata-internals.h: Added a hash table to MonoDomain that maps
7186         from open generic classes to their runtime generic context
7187         templates.
7188
7189         * object.c: Building of the runtime generic context, including
7190         proper handling of generic type arguments of superclasses.
7191         Building of the runtime generic context according to the template.
7192
7193 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7194
7195         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7196         Fixes #350856.
7197
7198         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7199         mono_portability_find_file (). Fixes #325466.
7200         (mono_image_get_public_key): Fix a warning.
7201
7202 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7203
7204         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7205         Fixes #353550.
7206         (mono_class_from_name_case): Ditto.
7207
7208 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7209
7210         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7211           common storage for the tables used in the System/NumberFormatter class.
7212
7213 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7214
7215         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7216
7217 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7218
7219         * verify.c (get_boxable_mono_type): check if the token is valid.
7220
7221         * verify.c (set_stack_value): changed to add an error if an
7222         invalid type is set on stack. Changed all callers due to signature change.
7223
7224         * verify.c (do_stobj): implement stobj validation.
7225
7226 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7227
7228         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7229         set container->is_method, it was set earlier.
7230
7231         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7232         generic methods.
7233
7234         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7235         is_method of the generic container to TRUE for methods.
7236
7237 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7238
7239         * metadata.c (type_in_image): Handle type parameters properly.
7240
7241         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7242         memory ownership of this structure.
7243
7244 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7245
7246         * verify.c (get_boxable_mono_type): make typedref types been just
7247         unverifiable. check for void type.
7248
7249         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7250
7251         * verify.c (do_load_function_ptr): accept method spec tokens.
7252
7253 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7254
7255         * marshal.c (mono_class_native_size): Always set *align even if this is called
7256         recursively.
7257
7258 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7259
7260         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7261         out-of-date.
7262
7263 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7264
7265         * verify.c: removed some old unused tables. A huge bunch of small fixes
7266         to things found while testing the verifier with mono basic.
7267
7268         * verify.c (dump_stack_value): dump null literal flag to.
7269
7270         * verify.c (verify_type_compatibility_full): fix comparison
7271         for types that have a generic super type.
7272
7273         * verify.c (verify_stack_type_compatibility): fix compatibility
7274         between null literals and reference types. fix compatibility between
7275         boxed valuetypes and object. fix corner case test for enums.
7276
7277         * verify.c (do_cmp_op): proper verification of cgt.un in case
7278         of reference types.
7279
7280         * verify.c (do_invoke_method): fix error message.
7281
7282         * verify.c (do_store_indirect
7283
7284         * verify.c (check_is_valid_type_for_field_ops): proper verification
7285         of managed pointers to valuetypes and boxed valuetypes. proper verification
7286         of null literals.
7287
7288         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7289         allow token to be a reference type.
7290
7291         * verify.c (do_cast): proper handling of boxes valuetypes.
7292
7293         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7294         in object[].
7295
7296         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7297         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7298         fixed the decoding of unbox_any
7299
7300 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7303
7304 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7305
7306         * verify.c (do_newobj): do delegate verification.
7307
7308         * verify.c (verify_delegate_compatibility): perform delegate
7309         verification.
7310
7311         * verify.c (verify_ldftn_delegate): perform tests related to
7312         ldftn delegates.
7313
7314         * verify.c (mono_delegate_signature_equal): perform the
7315         slightly diferent signature comparison required by delegates.
7316
7317         * metadata.c (mono_metadata_type_equal_full): added and exported
7318         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
7319         allows signature only comparison.
7320
7321         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
7322         as MONO_INTERNAL.
7323
7324 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7325
7326         * verify.c: added a bunch of stack_slot_* functions to
7327         make access to stack slot type easier. This is required to
7328         allow optional flags, like null literal, boxed value and
7329         this pointer.
7330         All access paths to IlStackDesc::stype have been changed 
7331         to use these new funcions.
7332         Removed a bunch of unused functions and cleared all warnings.
7333         This patch introduces the usage of the this pointer and 
7334         boxed value flags.
7335
7336 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
7337
7338         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
7339
7340 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7341
7342         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
7343         match managed version.
7344
7345         * appdomain.c: Bump corlib version.
7346         
7347         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
7348         argument.
7349
7350 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
7351
7352         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
7353         Set public key token to zero-length byte array if assembly is not
7354         strongnamed.
7355
7356 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
7359         writing a vtype array elem.
7360
7361 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
7362
7363         * assembly.c (build_assembly_name): return FALSE if length of token is
7364         not 16 (if not "null").
7365         (mono_assembly_name_parse_full): return FALSE if value of version,
7366         culture, token or key is 0.
7367         * icall.c (fill_reflection_assembly_name): add boolean arguments to
7368         specify whether public key and public key token must be set to default
7369         value (zero-length byte array) if not available. Set versioncompat to
7370         SameMachine. If public key is available or the default is set, then
7371         set PublicKey flag.
7372         (ves_icall_System_Reflection_Assembly_FillName): if no public key
7373         is available, use empty byte array as default value. On the 2.0
7374         profile, use default value for public key token if not set.
7375         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
7376         profile, use default value for public key if not set. On the 2.0
7377         profile, use default value for public key token if not set.
7378         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
7379         default values for public key and public key token.
7380
7381 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7382
7383         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
7384         field to keep it in synch with the managed object.
7385
7386         * marshal.c (emit_marshal_object): Add support for byref marshalling of
7387         delegates. Fixes #351520.
7388
7389         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
7390         contains defined memory.
7391         
7392         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
7393
7394         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
7395         
7396         * sgen-gc.c (check_consistency): New helper function to do a consistency check
7397         of the GC data structures.
7398
7399         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
7400
7401         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
7402         
7403         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
7404         barrier.
7405         (mono_array_clone_in_domain): Ditto.
7406         (mono_array_clone_in_domain): Ditto.
7407
7408         * threads.c (start_wrapper): Register the thread start argument as a GC root.
7409         (cache_culture): Use a write barrier.
7410
7411         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
7412         (ves_icall_get_property_info): Ditto.
7413
7414         * object.h (MONO_STRUCT_SETREF): New macro.
7415
7416         * class-internals.h (MonoStats): Add some GC statistics.
7417
7418         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
7419
7420 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
7421
7422         * exception.c (mono_exception_from_name_two_strings):
7423         Break from loop after method is found.
7424
7425 2008-01-04  Dick Porter  <dick@ximian.com>
7426
7427         * process.c (process_module_string_read): Rename variable to
7428         reflect correct usage, after fixing bug 345972.
7429
7430 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
7431
7432         * verify.c (mono_type_create_fnptr_from_mono_method): 
7433         created a MonoType function pointer instance to be used during
7434         verification. The verifier releases this memory at end.
7435
7436         * verify.c (mono_method_is_constructor): extracted repeated
7437         checks for constructor into a single class.
7438
7439         * verify.c (do_push_field): use new extracted method
7440         for constructor check.
7441
7442         * verify.c (do_newobj): same.
7443
7444         * verify.c (do_ldftn): renamed to do_load_function_ptr
7445         and make it verify ldvirtftn too.
7446
7447         * verify.c (mono_method_verify: proper verification
7448         of ldvirtftn. release created MonoMethod instances.
7449
7450 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7451
7452         * verify.c (token_bounds_check): added.
7453
7454         * verify.c (do_ldftn): added.
7455
7456         * verify.c (mono_method_verify): proper verificartion of ldftn.
7457
7458 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7459
7460         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
7461         than the table row count. It's the resposibility of the caller to
7462         make the bounds check and raise the correct error.
7463
7464         * metadata.c (mono_metadata_decode_row_col): Same.
7465
7466         * loader.c (mono_get_method_from_token): perform bounds check
7467         on token for methoddef table.
7468
7469 2007-12-29  Miguel de Icaza  <miguel@novell.com>
7470
7471         * icall.c
7472         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
7473         assert into a negative result, the managed code already coped with
7474         that.
7475
7476         Some folks on Windows reported this error. 
7477
7478 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
7479
7480         * appdomain.c: Bump corlib version.
7481         * icall.c:
7482         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
7483         CultureInfo.CreateCulture to create CultureInfo for name.
7484         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
7485         create CultureInfo for name. Fixes bug #347174.
7486
7487 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7488
7489         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
7490         flags.
7491
7492         * verify.c (is_valid_branch_instruction): allow branching to the
7493         first instruction of the protected block.
7494
7495         * verify.c (is_valid_cmp_branch_instruction): same.
7496
7497         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
7498         avoid double initialization.
7499
7500         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
7501         detect which cases the eval stack should just be copied.
7502
7503         * verify.c (mono_method_verify): check if the eval stack
7504         is empty when entering a protected block.
7505
7506 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7507
7508         * verify.c: added is_clause_in_range, is_clause_inside_range,
7509         is_clause_nested and verify_clause_relationship. They perform
7510         the verifications stated in P1 12.4.2.7.
7511
7512         * verify.c (mono_method_verify): remove some unused variables,
7513         add the new exception clause checks, add instruction border
7514         checks for protected block start/end, improved some error 
7515         messages and fixed a bug in the way invalid instruction access
7516         is detected.
7517
7518 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7519
7520         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
7521         from GC 7.0 if available.
7522
7523         * object.c: Remove an unused define.
7524         
7525         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
7526
7527         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
7528
7529         * null-gc.c (mono_gc_make_descr_for_array): Implement.
7530
7531         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
7532
7533         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
7534         to take the same arguments as the other make_descr functions.
7535
7536         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
7537
7538         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
7539         directly.
7540
7541         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
7542         mini.c.
7543
7544         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
7545         call to boehm-gc.c.
7546
7547         * boehm-gc.c (mono_gc_register_root): Fix a warning.
7548
7549         * null-gc.c (mono_gc_register_root): Fix a warning.
7550
7551         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
7552
7553         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
7554         (mono_gc_base_init): Call GC_init ().
7555
7556         * null-gc.c: Define mono_gc_register_root () as a no-op.
7557
7558         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7559
7560 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
7561
7562         * verify.c: add prototype for merge_stacks at top
7563
7564         * verify.c (do_switch): added.
7565
7566         * verify.c (merge_stacks): on some cases the stack merging
7567         was not happening properly. Unequal stack sizes at merge
7568         points should be invalid.
7569
7570         * verify.c (mono_method_verify): added more debug info on stack state.
7571         verify switch properly.
7572
7573 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * method-builder.h: New file, moved the mono_mb_ declarations here from 
7576         marshal.h.
7577
7578         * boehm-gc.c marshal.c: Include method-builder.h.
7579
7580         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
7581
7582         * marshal.c: Remove some code which is now in method-builder.c.
7583
7584 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7585
7586         * method-builder.c: New file, extraction of the method builder functionality 
7587         from marshal.c.
7588
7589         * marshal.c: Move the mb functions into method-builder.c.
7590
7591         * marshal.h marshal.c: Export some mono_mb_... functions.
7592
7593         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
7594
7595         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
7596         the caller.
7597
7598         * class.c (mono_class_get_full): Check the token type in the dynamic case.
7599
7600         * loader.c (mono_field_from_token): Ditto.      
7601
7602         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
7603         type as well.
7604         
7605         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
7606         Fixes #342565.
7607
7608         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
7609         a helper function for setting it.
7610
7611         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
7612
7613         
7614         * assembly.c: Significally simplify code now that referenced assemblies are 
7615         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
7616
7617         * threads.h: Don't include  the internal threads-types.h header file. Fixes
7618         #349952.
7619
7620 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
7621
7622         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
7623         instructions that were target of branches or are at protected block boundaries.
7624
7625         * verify.c (in_same_block): handle filter clauses.
7626
7627         * verify.c (is_valid_branch_instruction): added. checks the target of
7628         instructions br or brtrue/false.
7629
7630         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
7631         binary branch instructions such as beq and bge.
7632
7633         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
7634         and made it pin the instruction as been part of the exception block.
7635
7636         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
7637         of in_same_block.
7638
7639         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
7640         of in_same_block.
7641
7642         * verify.c (do_ret): ret from a protected block is unverifiable and
7643         not invalid.
7644
7645         * verify.c (do_static_branch): verify br and br.s instructions.
7646
7647         * verify.c (merge_stacks): add extra param to support detection
7648         of branches in the middle of instructions.
7649         
7650         * verify.c (mono_method_verify): verify branches and exception blocks
7651         that target the middle of instructions. Proper verification of br and br.s.
7652
7653 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
7656         skip_visibility field.
7657         (reflection_methodbuilder_from_dynamic_method): Ditto.
7658
7659         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
7660         registrations. Fixes #348193.
7661
7662         * threads.h: Move the internal mono_thread_get_pending_exception () to
7663         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
7664
7665 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
7666
7667         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
7668         icall registration. Fixes #348193.
7669
7670         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
7671         for corlib classes into object. Fixes #349621.
7672
7673 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
7674
7675         * icall.c (property_accessor_nonpublic): new function to determine
7676         whether an accessor allows a property to be considered non-public.
7677         Returns false for private accessor(s) from parent class, and internal
7678         accessor(s) from parent on 2.0 profile (and higher).
7679         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
7680         to determine whether property should be included if NonPublic flag
7681         is set. Fixes bug #349078.
7682
7683 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
7684
7685         * verify.c (init_stack_with_value): added.
7686
7687         * verify.c (mono_method_verify): extracted common
7688         code for exception initialization into init_stack_with_value.
7689
7690         * verify.c (mono_method_verify): initialize the exception
7691         for handler clauses as well.
7692
7693         * verify.c (mono_method_verify): fix the exception clause
7694         ordering rules, it should use handler end offset and not
7695         start offset.
7696
7697 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
7698
7699         * rawbuffer.c: remove useless warning.
7700
7701 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
7702
7703         * threads.h, threads-types.h: move functions to the correct header
7704         (fixes bug#349952).
7705
7706 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7707
7708         * verify.c (mono_method_verify): proper verification
7709         of exception handling clauses ranges and fallthru in
7710         and out of protected blocks.
7711
7712 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7713
7714         * verify.c (mono_method_verify): fixed compilation issue.
7715
7716 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7717
7718         * verify.c (mono_method_verify): a printf slipped in, changed
7719         to use verifier debug macro.
7720
7721 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
7722
7723         * verify.c (is_correct_leave): check for filter clauses.
7724
7725         * verify.c (do_filter): added.
7726
7727         * verify.c (mono_method_verify): property verification of leave.
7728
7729
7730 2007-12-18  Mark Probst  <mark.probst@gmail.com>
7731
7732         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
7733         Win32 build, until we figure out how to do the proper thing on
7734         Win32.
7735
7736 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
7737
7738         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
7739         by the previous patch.
7740         
7741         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
7742         the assembly resolve handler for refonly assemblies.
7743
7744 2007-12-17  Mark Probst  <mark.probst@gmail.com>
7745
7746         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
7747         Make sure only one thread is allowed to commence shutdown, and
7748         don't allow new threads to be started once shutdown is in
7749         progress.
7750
7751 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
7752
7753         * verify.c (is_correct_endfilter): added.
7754
7755         * verify.c (is_unverifiable_endfilter): added.
7756
7757         * verify.c (do_endfilter): added.
7758
7759         * verify.c (mono_method_verify): property verification of endfilter
7760         and fixed a corner case or endfinally.
7761
7762 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
7763
7764         * verify.h: new flags to support fail fast of unverifiable code and
7765         do non-strict verification. Non-strict verification is required to
7766         have MS runtime compatibility. There are a huge amount of unverifiable
7767         code that it accepts as verifiable. The strict mode verifies the code
7768         as the specs says.
7769         Non-strict mode will be required in cases where code needs to be
7770         accepted as verifiable but fails under strict mode.
7771
7772         * pedump.c: added support to fail fast and non-strict verification.
7773
7774         * verify.c: added support for both fail fast and non-strict verification.
7775
7776 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
7777
7778         * verify.c (is_correct_endfinally): added.
7779
7780         * verify.c (mono_method_verify): property verification of endfinally.
7781
7782 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7783
7784         * verify.c (in_any_block): check for filter clauses.
7785
7786         * verify.c (is_correct_rethrow): added.
7787
7788         * verify.c (mono_method_verify): property verification of rethrow.
7789
7790         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
7791
7792 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7793
7794         * verify.c (do_throw): added.
7795
7796         * verify.c (mono_method_verify): property verification of throw
7797
7798 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
7801         assemblies. Fixes #346425.
7802
7803 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
7804
7805         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
7806         FieldBuilders.
7807
7808         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
7809
7810         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
7811         prevent asserts when this is called with a token which might not be valid.
7812
7813         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
7814         lookup_dynamic_token_class with valid_token == FALSE.
7815
7816         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
7817
7818         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
7819
7820         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
7821         
7822 2007-12-10  Mark Probst  <mark.probst@gmail.com>
7823
7824         * gc.c: Don't delay threadpool thread finalization unless Mono is
7825         shutting down.
7826
7827 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7828
7829         * threads.c: turn an assert into a non-fatal warning.
7830
7831 2007-12-09  Robert Jordan  <robertj@gmx.net>
7832
7833         * icall.c (GetVirtualMethod): Add missing argument validation.
7834
7835 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7836
7837         * verify.c (do_cast): added.
7838
7839         * verify.c (mono_method_verify): property verification of castclass and isinst.
7840
7841
7842 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7843
7844         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
7845
7846         * verify.c (do_stelem): added.
7847
7848         * verify.c (mono_method_verify): property verification of stelem.X.
7849
7850 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7851
7852         * class.c, class-internals.h: Introduce an environment variable
7853         (MONO_GENERIC_SHARING) through which the extent of generic code
7854         sharing can be controlled (share all classes, share only corlib
7855         classes, or share nothing).
7856
7857         * object.c: Only create runtime generic context for classes for
7858         which sharing is enabled.
7859
7860 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7861
7862         * verify.c (do_ldelem): refactor it to work with ldelem.any.
7863
7864         * verify.c (mono_method_verify): property verification of ldelem.any.
7865
7866 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7867
7868         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
7869         added ldelem.X opcodes.
7870
7871         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
7872
7873         * verify.c: proper verification of ldelem.X 
7874
7875 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
7878
7879 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7880
7881         * verify.c (mono_method_verify): null literal requires special handling,
7882         the value pushed on stack need to be flagged as so.
7883
7884         * verify.c (do_ldelema): Verify ldelema properly.
7885
7886 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7887
7888         * verify.c: Verify ldlen properly.
7889
7890 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
7893         to the target object's type. Fixes #346160.
7894
7895 2007-12-05  Dick Porter  <dick@ximian.com>
7896
7897         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
7898         Solaris needs the same workaround as BSD-derived systems.  Fixes
7899         bug 323524, patch by Burkhard Linke
7900         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
7901
7902 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
7903
7904         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
7905         handle to use when error dialog is shown; otherwise, update mask
7906         to show no error dialog when an error occurs.
7907
7908 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
7909
7910         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
7911
7912         * class.c (mono_class_get_field_default_value): New helper function to initialize
7913         field->def_type and field->data.
7914
7915 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
7916
7917         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
7918         the general one.
7919
7920         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
7921
7922         * marshal.c: Avoid depending on delegate->method_info being set.
7923
7924         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
7925         
7926         * object.c (mono_delegate_ctor): Set delegate->method.
7927
7928         * object-internals.h (struct _MonoDelegate): Add 'method' field.
7929
7930         * appdomain.c: Bump corlib version.
7931
7932 2007-11-27  Raja R Harinath  <harinath@gmail.com>
7933
7934         * metadata.c (mono_generic_inst_equal_full): Short-circuit
7935         equality check if we're comparing canonicalized MonoGenericInsts.
7936
7937 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
7938
7939         * class.c (generic_array_methods): Call mono_class_setup_methods () before
7940         accessing class->methods.
7941
7942 2007-11-22  Dick Porter  <dick@ximian.com>
7943
7944         * threads.c: Ensure that the synch_cs is set before trying to use
7945         it.
7946
7947 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
7948
7949         * profiler.c: r89126 broke the statistial profiler, unbreak.
7950
7951 2007-11-22  Martin Baulig  <martin@ximian.com>
7952
7953         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
7954
7955         * mono-debug.c
7956         (mono_debug_debugger_version): Bump to 3.
7957         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
7958         -> mono_debugger_class_initialized().
7959
7960         * mono-debug-debugger.c
7961         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
7962
7963         * class.c
7964         (mono_debugger_start_class_init_func): Removed.
7965         (mono_debugger_class_loaded_methods_func): Added.
7966         (mono_class_setup_methods): Call it here.
7967
7968 2007-11-22  Martin Baulig  <martin@ximian.com>
7969
7970         * mono-debug.c
7971         (mono_debug_add_delegate_trampoline): New public method.
7972         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
7973
7974         * mono-debug.h
7975         (MonoSymbolTable): Added `global_data_table'.
7976         (MonoDebuggerTypeKind): Removed.
7977
7978 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
7979
7980         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
7981         these methods.
7982
7983         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7984         
7985 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
7986
7987         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
7988
7989 2007-11-20  Martin Baulig  <martin@ximian.com>
7990
7991         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
7992
7993         * mono-debug-debugger.c
7994         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
7995         (mono_debugger_remove_breakpoint): Likewise.
7996         (mono_debugger_check_breakpoints): Likewise.
7997         (mono_debugger_register_class_init_callback): New public method.
7998         (mono_debugger_remove_class_init_callback): Likewise.
7999         (mono_debugger_add_type): Likewise.
8000
8001         * mono-debug-debugger.h
8002         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8003
8004 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8005
8006         * class.c: more interface implementations needed for the
8007         array enumerator (fixes bug #341112).
8008
8009 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8010
8011         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8012         fix ParamName of ArgumentNullExceptions.
8013
8014 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8015
8016         * reflection.c (mono_reflection_encode_sighelper): Generate the
8017         modopts and modreqs.   I have a useless test that crashes monodis,
8018         but that shows the code working.
8019
8020 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8021
8022         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8023         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8024
8025 2007-11-15  Dick Porter  <dick@ximian.com>
8026
8027         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8028         When joining a thread, it's the thread that's calling Join that
8029         gets WaitSleepJoin state not the target.  Fixes the standalone
8030         test case in bug 334740, and hopefully the whole bug too.
8031
8032 2007-11-15  Dick Porter  <dick@ximian.com>
8033
8034         * process.c: Read file version info from the files pointed at by
8035         process modules, not the current process.  Fixes bug 315969.
8036
8037         Use windows typedef names in some places to fix warnings on the
8038         windows build.
8039
8040 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8041
8042         * image.c, metadata-internals.h: Added a generic_class_cache hash
8043         to MonoImage for looking up generic classes when sharing generics.
8044
8045 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8046
8047         * sgen-gc.c: warning cleanups.
8048
8049 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8050
8051         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8052         inherited properties.
8053
8054 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8055
8056         * object.c, class-internals.h: Added more information to the
8057         runtime generic context.
8058
8059 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8060
8061         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8062         instead of just the target method. Generalize the abstract method handling to
8063         handle any non-static method.
8064
8065         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8066         mono_marshal_get_delegate_invoke () signature change.
8067
8068 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8069
8070         * class.c, class-internals.h: Made
8071         mono_type_get_basic_type_from_generic () public.  Fixed member
8072         access check for shared generics.
8073
8074         * loader.c: Don't insert field into field cache if it's part of a
8075         non-inflated generic class.
8076
8077         * domain.c, domain-internals.h: The generic sharing context is now
8078         part of the jit info data structure.  Added two accessor
8079         functions.
8080
8081 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8082
8083         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8084         the array Get/Set/Address methods, since the JIT inlines them.
8085
8086         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8087
8088         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8089         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8090
8091         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8092         mono_marshal_get_delegate_invoke signature change.
8093
8094         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8095         an additional argument. Add support for invoking abstract methods.
8096
8097         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8098
8099         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8100
8101 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8102
8103         * class.c: Do field layout for open generic classes as well.
8104
8105 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8106
8107         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8108         other objects, because the threadpool is still around.  Put them
8109         in a list instead and after finalizing all other objects in the
8110         root domain shut down the thread pool and then finalize the
8111         threads.  Fixes bug #337383.
8112
8113         * threads.c, thread-types.h: New mono_thread_create_internal()
8114         function for marking a thread with the threadpool flag before it
8115         started.  Set synch_cs to NULL after freeing it.
8116
8117         * threadpool.c: Mark threadpool threads before they start.
8118
8119 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8120
8121         * reflection.h, reflection.c: don't export random functions
8122         and lazy load dbnull and missing objects.
8123
8124 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8125
8126         * class.c: Initialize COM types if COM interfaces
8127         are present (not just COM classes).
8128         
8129         Code is contributed under MIT/X11 license.
8130
8131 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8132         * reflection.c:
8133         create_dynamic_mono_image: hook module profiler events (dynamic case).
8134         mono_image_basic_init: hook assembly profiler events (dynamic case).
8135
8136 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8137         * profiler.c:
8138         simple_appdomain_unload: completely terminate the profiler
8139         instead of only processing the statistical samples.
8140         simple_shutdown: make sure this is really called exactly once,
8141         even in multithreaded applications, and always listen to
8142         appdomain events.
8143         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8144         here, the "[un]load" functions will do it.
8145         Fixes bugs #333791 and #325261.
8146
8147 2007-11-07  Geoff Norton  <gnorton@novell.com>
8148
8149         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8150         rather than depend on __APPLE__.
8151
8152 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8153
8154         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8155
8156 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8157
8158         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8159         UTF16 MonoString. Fix the crash from bug #335488
8160
8161 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8162
8163         * marshal.c: Correct (for non-Win32 OS) length != size in 
8164         mono_string_from_bstr. Fix #339530.
8165
8166 2007-11-06  Geoff Norton  <gnorton@novell.com>
8167
8168         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8169         to succeed
8170
8171 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
8172
8173         * process.c: Added run-time GetProcessId API detection for Windows.
8174
8175 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8176
8177         * reflection.c  (mono_param_get_objects): If a parameter has the
8178         attribute [System.Runtime.InteropServices.Optional] we should
8179         set the DefaultValue of the ParameterInfo to be
8180         System.Reflection.Missing instead of DBNull.
8181
8182         See bug #339013.
8183
8184         (mono_get_reflection_missing_object): New method,
8185         returns the System.Reflection.Missing.Value singleton instance.
8186
8187 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8188
8189         * culture-info-table.h : regenerated.
8190
8191 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8192
8193         * icall.c: Use GetEnvironmentStrings on windows
8194         so we are using the same environment block as 
8195         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8196         #333740.
8197         
8198         Code is contributed under MIT/X11 license.
8199
8200 2007-10-31  Martin Baulig  <martin@ximian.com>
8201
8202         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8203
8204         * mono-debug-debugger.h
8205         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8206
8207 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8210         classes.
8211
8212 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8213
8214         * culture-info-table.h : regenerated.
8215
8216 2007-10-30  Robert Jordan  <robertj@gmx.net>
8217
8218         * icall-def.h, icall.c:
8219         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8220
8221         Code is contributed under MIT/X11 license.
8222
8223 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8224
8225         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8226         inflated class instead of inflating them again.
8227         
8228         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8229         dynamic case.
8230
8231         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8232         Call setup_supertypes () after klass->parent is set.
8233         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8234
8235         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8236         for inflated instances of not yet created dynamic generic classes.
8237         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8238         times from inflated_method.
8239         (methodbuilder_to_mono_method): Ditto.
8240
8241 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8242
8243         * gc.c: code cleanup and removed old untested option of not creating the
8244         finalizer thread.
8245
8246 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8247
8248         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8249         creating a jump trampoline for dynamic methods.
8250
8251 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8252
8253         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8254         generic TypeBuilders when called from another method of the same type (bug #335131).
8255
8256
8257 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8258
8259         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8260         doesn't seem to work perfectly.
8261         
8262         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8263         called multiple times.
8264         (methodbuilder_to_mono_method): Ditto.
8265         (resolve_object): Inflate FieldBuilder's.
8266
8267 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8268
8269         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8270         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8271         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8272
8273 2007-10-26  Dick Porter  <dick@ximian.com>
8274
8275         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8276         Thread initialisation changes
8277
8278 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8279
8280         * verify.c: fix compatibility check between arrays and System.Array
8281
8282 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8283
8284         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8285         too. Fixes #336999.
8286
8287 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8288
8289         * object.c (mono_value_box): Use typed allocation here.
8290
8291 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8292
8293         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8294         trampoline instead of compiling the method right away.
8295
8296         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8297
8298 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8299
8300         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8301         related fields for dynamic classes. Fixes #334493.
8302
8303 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8306         
8307         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8308
8309         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8310         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8311
8312         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8313
8314         * reflection.c (create_generic_typespec): Initialize klass->generic_container
8315         if needed.
8316         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
8317
8318 2007-10-18  Jonathan Chambers <joncham@gmail.com>
8319
8320         * marshal.c: Use correct key when removing item
8321         from ccw_hash.
8322         
8323         Code is contributed under MIT/X11 license.
8324
8325 2007-10-17  William Holmes  <billholmes54@gmail.com>
8326
8327         *marshal.c: Adding a case to marshal booleans to U1
8328
8329         Code is contributed under MIT/X11 license.
8330
8331 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
8332
8333         * class.c (mono_class_from_name): Search the modules compromising dynamic
8334         assemblies. Fixes #331601.
8335
8336 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
8337
8338         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
8339         exception if the type name contains an assembly component. Fixes #334203.
8340
8341         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
8342         modules inside dynamic assemblies. Fixes #334200.
8343         
8344         * reflection.c: Set image->public_key and image->public_key_length;
8345
8346         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
8347         fields.
8348
8349         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
8350         
8351 2007-10-16  Mark Probst  <mark.probst@gmail.com>
8352
8353         * metadata.c: Implemented correct comparing of generic classes.
8354         An inflated generic class can be equal to a non-inflated one if it
8355         is inflated with generic type variables as type arguments.  Fixes
8356         bug #333798.
8357
8358 2007-10-15  Dick Porter  <dick@ximian.com>
8359
8360         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
8361         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
8362         81646.
8363
8364         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
8365         instead of a monitor lock.  This means that monitor_try_enter and
8366         co can set the thread state safely.
8367         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
8368         thread_interrupt_requested, so interrupt actually works.
8369
8370         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
8371         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
8372         state accessor function
8373
8374 2007-10-15  Martin Baulig  <martin@ximian.com>
8375
8376         * mono-debug.h
8377         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
8378         the debugger with the current runtime.
8379
8380 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8381
8382         * object.c, object-internals.h: added the ability to set a single
8383         trampoline for all the slots in a vtable.
8384
8385 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8386
8387         * marshal.c: deal with a possible race condition during multicast
8388         delegate invocation.
8389
8390 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8391
8392         * class.c: ensure value type methods don't have the synchronized
8393         flag set.
8394
8395 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8396
8397         * string-icalls.c, string-icalls.h: reverted unapproved patch that
8398         breaks the build.
8399
8400 2007-10-11  Joel Reed  <joelwreed@comcast.com>
8401
8402         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
8403         to take an options parameter so that empty entries can be removed during
8404         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
8405
8406 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8407
8408         * marshal.c: make sure we don't store the signature from a dynamic
8409         method into the runtime invoke cache (bug #327189).
8410
8411 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8412
8413         * marshal.c: make sure the wrapper methods are properly initialized.
8414
8415 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8416
8417         * metadata.c, metadata-internals.h: Generalized
8418         mono_type_stack_size() to mono_type_stack_size_internal() which
8419         takes an additional argument specifying whether it allows open
8420         types.
8421
8422 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8423
8424         * verify.c (do_invoke_method): handle typedbyref params
8425         correctly and check for unverifiable return values.
8426
8427         * verify.c (do_newobj): fix a warning.
8428
8429 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8430
8431         * verify.c: don't tread typedbyref as allways unverifable,
8432         so uses, like (ld/st)loc.0 are valid. verify for the cases
8433         that it matters, like boxing related operations.
8434
8435 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8436
8437         * verify.c: add verification of the newobj opcode. verification
8438         of delegate instantation still missing due ldftn and virldftn not
8439         pushing the function type on stack
8440
8441 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8442
8443         * class-internals.h: Runtime generic context data structure
8444         definition.
8445
8446         * object.c: Initialization of runtime generic context at runtime
8447         vtable creation time.
8448
8449 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
8450         * class.c (mono_class_create_from_typedef,
8451         mono_class_from_generic_parameter, mono_ptr_class_get,
8452         mono_fnptr_class_get, mono_bounded_array_class_get)
8453         * domain.c (mono_domain_create, mono_domain_free)
8454         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
8455         * image.c (do_mono_image_load, mono_image_close):
8456         Hooked up load-unload profiler events.
8457
8458 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8459
8460         * domain.c: track statistics about the actual amount of native code
8461         allocated.
8462
8463 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8464
8465         * class.c: the valuetype enumerators don't have the additional
8466         supertypes interfaces.
8467
8468 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8469
8470         * class.c: need more interfaces setup for the IEnumerator<T>
8471         object created for arrays (tests/ienumerator-interfaces.2.cs).
8472
8473 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
8474
8475         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
8476
8477 2007-10-05  Alp Toker  <alp@atoker.com>
8478
8479         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8480         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8481         #315863.
8482
8483 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8484
8485         * verify.c (verify_type_compatibility_full): verification of
8486         compatibility improved, validates correctly non-strict checks between
8487         native int and I4 types different than (unsigned)int32.
8488
8489         * verify.c (do_store_indirect): added, do all verification of
8490         ldind.X opcodes. 
8491
8492         * verify.c (get_load_indirect_mono_type): renamed to
8493         get_indirect_op_mono_type, as it now returns the MonoType for 
8494         ldind.X and stind.X opcodes.
8495
8496 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8497
8498         * reflection.c: Fix the encoding of generic type definition for
8499         TypeBuilders.
8500
8501         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
8502         mono_image_typedef_or_ref but allows to specify if typespec lookups should
8503         be made. Typespec check is done prior to typeref cache lookup.
8504
8505         * reflection.c (mono_image_typedef_or_ref): now just delegate to
8506         mono_image_typedef_or_ref_full.
8507
8508         * reflection.c (encode_generic_class): encode the generic class
8509         directly instead of calling encode_type.
8510
8511         * reflection.c (encode_type): encode the generic type definition
8512         MonoClass as a generic instantiation.
8513
8514         * reflection.c (create_typespec): cache typespec tokens in
8515         the assembly->typespec cache. Don't create typespec for a generic
8516         instance MonoClass. Create typespec for the generic type defintion.
8517
8518         * reflection.c (create_generic_typespec): encode the generic
8519         class directly instead of calling encode_type.
8520
8521         * reflection.c (mono_image_create_token): encode the generic
8522         type definition not using a typespec for MonoType instances.
8523
8524
8525 2007-10-04  Raja R Harinath  <rharinath@novell.com>
8526
8527         Fix #328812
8528         * class.c (mono_image_init_name_cache): Don't return nested
8529         'protected internal' classes.
8530         (mono_class_from_name_case): Likewise.
8531
8532 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
8533
8534         * icall-def.h, icall.c : get_bundled_machine_config() is now the
8535           common function used by both DefaultConfig in System.dll and
8536           InternalConfigurationHost in System.Configuration.dll.
8537
8538 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8539
8540         * class.c: automatically add to vectors only a few essential explicit
8541         generic interfaces. The rest of the interfaces that arrays should
8542         provide are currently implicitly added (but still not lazily, see the
8543         design in the discussion of bug#325495 for the details of what is
8544         needed for that). Additionally, implicit interfaces are assigned the
8545         same vtable slot as the explicit interfaces (as they are compatible):
8546         this enables huge memory savings since we don't need to instantiate
8547         as many memthods and as large vtables anymore. Also, Since
8548         GetEnumerator<T> returns an instance of a type that is required to
8549         support a similarly large set of interfaces as arrays, we add
8550         implicit interfaces and interface offset sharing support to those
8551         types, too. This change adds all the required interfaces so that
8552         the anonarray.cs test case in the bug report works (we don't add
8553         all the interfaces to arrays of arrays 3-level deep and more because
8554         of the memory requirements explained in the bug and since they are much
8555         less common: the lazy-loading support will enabled them to work, too).
8556
8557 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8558
8559         * verify.c (merge_stacks): major clean up, all type compatibility
8560         checks are done by verify_type_compatibility. This fix my earlier lack
8561         of understanding of the CLR type system and merge_stacks no longer looks
8562         scary.
8563
8564         * verify.c: fixed some bad spelling.
8565
8566 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8567
8568         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
8569         a given stack slock.
8570         
8571         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
8572         verify_type_compatibility_full. This removed a near indentical function and fixed
8573         handling of Int32 and IntPtr across all opcodes.
8574
8575 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8576
8577         * class.c: only vectors have the additional generic interfaces.
8578
8579 2007-10-01  Jonathan Chambers <joncham@gmail.com>
8580
8581         * mono-config.c: Use g_strcasecmp instead of
8582         strcasecmp like everywhere else to fix
8583         compilation with MSVC.
8584         
8585         Code is contributed under MIT/X11 license.
8586
8587 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8588
8589         * object.c, object-internals.h: refactored the IMT code to enable
8590         building a single slot at a time and lazily creating the IMT trampolines
8591         and thunks.
8592
8593 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
8594
8595         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
8596
8597         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
8598         Fixes #328501.
8599         
8600 2007-09-29  Raja R Harinath  <harinath@gmail.com>
8601
8602         * loader.c (method_from_methodspec): Rearrange to avoid
8603         un-necessary exposition.  Don't assert out if the method's
8604         declaring type is a generic type definition.
8605
8606 2007-09-28  Martin Baulig  <martin@ximian.com>
8607
8608         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
8609
8610 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
8611
8612         * class-internals.h: optimize field layout of MonoClass to
8613         requires less cachelines at runtime and save a few bytes on 64 bit
8614         systems.
8615
8616 2007-09-28  Jb Evain  <jbevain@novell.com>
8617
8618         * reflection.c: when encoding type names in custom attributes,
8619         if the type is a closed generic type, its generic arguments
8620         have to be serialized as AssemblyQualifiedName, so that when
8621         they are deserialized, it's possible to re-create them properly.
8622         Fixes #329450.
8623
8624
8625 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8626
8627         * object.c, class-internals.h: added delegate-creation counter.
8628
8629 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8630
8631         * class.c: cleanup of the code that synthetizes interfaces for
8632         arrays in 2.0: saves quit a bit of corlib mempool memory.
8633         Code to fix bug #325495 ifdeffed out for now until the issues
8634         with memory usage and O(n^2) behaviour are fixed.
8635
8636 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8637
8638         * marshal.c: when possible, do not duplicate the name of the methods
8639         in the method builder and in the generated MonoMethod.
8640
8641 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8642         * verify.c: added support for type checking ldind_* opcodes.
8643
8644 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8645
8646         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
8647         which is used to distinguish the fully open instantiation of a TypeBuilder
8648         with the rest. This temporary hack is required to restore the property that
8649         the fully open instantiation is the same type of the generic type definition.
8650
8651         * class-internals.h (mono_generic_class_is_generic_type_definition):
8652         new function as part of the internal API.
8653
8654         * class.c (inflate_generic_type): return NULL when the generic inst is
8655         fully open. The fully open generic type is now the same as the generic type
8656         definition for non TypeBuilder types.
8657
8658         * class.c (mono_generic_class_get_class): removed assert since it is
8659         no longer valid, gklass->cached_class can point to the generic type definition.
8660
8661         * class.c (mono_generic_class_is_generic_type_definition): new.
8662
8663         * metadata.c (mono_generic_class_hash): added is_tb_open field
8664         to the hash calculation.
8665
8666         * metadata.c (free_generic_class): if the generic class is associated
8667         with the generic type definition, its field will come from the mempool and
8668         must not be freed.
8669
8670         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
8671         new, this function identifies the corner case of a TypeBuilder fully open
8672         instantiation.
8673
8674         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
8675         for lookup. Set gclass->cached_class to be the container class in case of
8676         the fully open instantiation of non TypeBuilder types.
8677
8678         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
8679         to compare generic classes.
8680
8681         * reflection.c (method_encode_methodspec): remove assert that
8682         no longer is valid.
8683
8684         * reflection.c (mono_reflection_generic_class_initialize): add
8685         an aditional assert to ensure the proper type is used.
8686
8687 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
8688
8689         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
8690         to enjoy it.
8691
8692 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8693
8694         * verify.c (push_arg): Fixed support for ldarga
8695         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
8696         MonoType used as first arg in case of instance calls.
8697
8698 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8699
8700         * verify.c: Support for verifying VAR and MVAR types, 
8701
8702 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
8703
8704         * icall.c (ves_icall_get_property_info): Set the reflected type of the
8705         accessors correctly.
8706
8707 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8708
8709         * threads.c: support OSX and other systems in
8710         mono_thread_get_stack_bounds (bug #328026).
8711
8712 2007-09-25  Martin Baulig  <martin@ximian.com>
8713
8714         * mono-debug.h
8715         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
8716
8717 2007-09-24  Martin Baulig  <martin@ximian.com>
8718
8719         * mono-debug.h
8720         (MonoDebugClassEntry): Moved the definition of this struct into
8721         mono-debug.c to make it private.
8722
8723         * mono-debug.c
8724         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
8725         type table per symbol file, we don't need to store the symfile id
8726         any longer.
8727
8728 2007-09-24  Martin Baulig  <martin@ximian.com>
8729
8730         Create one type table per symbol file, since a `MonoClass *' gets
8731         invalid when its image is unloaded.
8732
8733         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
8734         (MonoDebugHandle): Added `type_table'.
8735
8736 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
8737
8738         * mempool.c, mempool.h: added mono_mempool_new_size () API
8739         to be able to specify a smaller initial size for the pool.
8740         Adjusted the code to slowly increase pool size before using
8741         the previous default size.
8742         * image.c: use a small initial size for image mempools.
8743
8744 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
8745
8746         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
8747         Fixes ##320990.
8748
8749         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
8750         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
8751
8752 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
8753
8754         * metadata.c (mono_type_create_from_typespec): Remove an invalid
8755         free. Fixes #327438.
8756
8757 2007-09-21  Raja R Harinath  <harinath@gmail.com>
8758
8759         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
8760         generic instantiations, etc.
8761         <MONO_TYPE_ARRAY>: Likewise.
8762
8763 2007-09-21  Martin Baulig  <martin@ximian.com>
8764
8765         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
8766         these structs were never defined.
8767         (MonoDebugHandle): Removed the `_priv' field, it was never used.
8768
8769 2007-09-21  Martin Baulig  <martin@ximian.com>
8770
8771         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
8772
8773 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
8774
8775         * image.c: removed the guid hash tables: we can get the same info
8776         without the additional memory usage hit (partially fixes also bug #327052).
8777
8778 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
8779
8780         * profiler.h, profiler-private.h, profiler.c: add a new profiler
8781         event to handle unloading methods. After the event is called, the
8782         corresponding MonoMethod* must be considered invalid.
8783         * loader.c (mono_free_method): call the new mono_profiler_method_free
8784         event.
8785
8786 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8787
8788         * domain-internals.h: New flag in MonoJitInfo which marks shared
8789         generic methods.  New hash table (shared_generics_hash) in
8790         MonoDomain to keep track of shared generic methods.  Prototypes
8791         for functions to register and lookup shared generic methods.
8792
8793         * domain.c: Support for registering and looking up shared generic
8794         methods via a hash table (shared_generics_hash) in MonoDomain.
8795
8796         * class-internals.h: New exception to signal failure of shared
8797         compilation of a generic method.  New counters for generics
8798         sharing in MonoStats.
8799
8800 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
8801
8802         * image.c, metadata-internals.h: don't keep a file descriptor open
8803         for loaded assemblies (bug#325988).
8804
8805 2007-09-19  Raja R Harinath  <rharinath@novell.com>
8806
8807         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
8808         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
8809         use the corresponding datatypes.
8810         (type_in_image): Update to changes.
8811         (CleanForImageUserData): Simplify.
8812         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
8813         Avoid quadratic behaviour in handling the "stolen" list by
8814         separating the filter predicate out, and by prepending the stolen
8815         items rather than appending them.
8816         (steal_ginst_in_image): Likewise.
8817         (mono_metadata_clean_for_image): Update to changes.
8818
8819 2007-09-19  Martin Baulig  <martin@ximian.com>
8820
8821         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
8822
8823 2007-09-19  Martin Baulig  <martin@ximian.com>
8824
8825         * mono-debug.c (mono_debug_cleanup): Don't call
8826         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
8827
8828 2007-09-19  Raja R Harinath  <harinath@gmail.com>
8829
8830         Fix crash on 'make run-test' in mcs/errors
8831         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
8832         Avoid more potential allocations in mono_class_from_mono_type.
8833         (ginst_in_image): Update to changes.
8834         (gclass_in_image): Rearrange slightly.
8835
8836 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * class.c (mono_class_init): Move the code that sets up class->methods to 
8839         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
8840
8841         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
8842         canonical instance of an inflated generic signature.
8843         (mono_type_create_from_typespec): Remove an invalid free.
8844
8845         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
8846
8847 2007-09-18  Marek Habersack  <mhabersack@novell.com>
8848
8849         * domain-internals.h: added a declaration of the
8850         mono_assembly_load_full_nosearch internal function.
8851
8852         * assembly.c (mono_assembly_load_with_partial_name): use
8853         mono_try_assembly_resolve return value properly.
8854         (mono_assembly_load_full_nosearch): copied the function body from
8855         mono_assembly_load_full, without the code to invoke assembly
8856         search hooks.
8857         (mono_assembly_load_full): calls the above new function and if the
8858         assembly is not resolved, invokes the search hooks.
8859
8860         * appdomain.c (mono_runtime_init): restore the global postload
8861         assembly search handlers.
8862
8863 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8864
8865         * class.c (mono_class_init): Make sure class->methods and class->properties
8866         are never NULL in the generics case.
8867
8868         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
8869
8870 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
8871
8872         * metadata.c (free_generic_class): Disable some code to fix the build.
8873
8874         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
8875
8876         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
8877         from the image mempool.
8878
8879         * metadata.c (free_generic_class): Free more data from the inflated class.
8880
8881         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
8882
8883         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
8884         mempool.
8885         (mono_type_create_from_typespec): Ditto.
8886
8887         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
8888         MonoImage to the caller.
8889         (mono_init_internal): Save the opened image in a global variable.
8890         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
8891
8892         * reflection.c (resolve_object): Fix a leak.
8893
8894         * metadata.c: Fix the freeing of data in the generics caches.
8895         
8896         * metadata.c (free_generic_inst): Comment this out to fix the build.
8897         (free_generic_class): Ditto.
8898
8899         * metadata.c: Free cached generic methods, instantinations and classes when
8900         they are removed from the caches.
8901         (mono_metadata_free_type): Free the type itself.
8902
8903         * class.c: Free the result of mono_class_inflate_generic_type () in a few
8904         places.
8905
8906 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
8907
8908         * boehm-gc.c: restrict managed allocs to __thread supporting
8909         architectures.
8910
8911 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
8912
8913         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
8914         (mono_generic_class_get_class): Fix a leak.
8915
8916         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
8917         mono_metadata_free_type ().
8918         (mono_metadata_inflate_generic_inst): Fix a leak.
8919
8920 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8921
8922         * mono-debug.c (free_header_data): Fix a leak missed earlier.
8923
8924         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
8925         mempool.
8926
8927         * mono-debug.c (mono_debug_close_image): Fix call to 
8928         g_hash_table_remove ().
8929
8930 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
8931
8932         * icall-def.h: redirect all the string ctor to the managed
8933         CreateString () methods.
8934         * string-icalls.c, string-icalls.h: removed dead code for string
8935         ctors and icalls.
8936
8937 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8938
8939         * mono-debug.c: Fix memory leaks.
8940
8941 2007-09-14  Jonathan Chambers <joncham@gmail.com>
8942
8943         * threads-types.h: Implement mono_hazard_pointer_set and 
8944         mono_hazard_pointer_clear macros using do/while(0) to fix
8945         compilation with MSVC.
8946         
8947         Code is contributed under MIT/X11 license.
8948
8949 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8950
8951         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
8952         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
8953
8954 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8955
8956         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
8957         icalls.
8958
8959 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8960
8961         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
8962         managed-code allocated as well.
8963
8964 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
8965
8966         * class.c (mono_class_is_assignable_from): Add support for generic variance.
8967
8968 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
8969
8970         * boehm-gc.c: fixed the build after the AOT changes.
8971
8972 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
8973
8974         * wrapper-types.h: Add an ALLOC wrapper type.
8975
8976         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
8977         reference managed allocator methods.
8978
8979 2007-09-12  Marek Safar  <marek.safar@gmail.com>
8980
8981         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
8982         of Type array and not MonoType, a fix suggested by Hari.
8983         
8984 2007-09-12  Jonathan Chambers <joncham@gmail.com>
8985
8986         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
8987         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
8988         
8989         Code is contributed under MIT/X11 license.
8990
8991 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
8992
8993         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
8994
8995 2007-09-12  Marek Habersack  <mhabersack@novell.com>
8996
8997         * image.c (do_mono_image_open): if assembly file fails to open and
8998         MONO_IOMAP is in effect, try to find the path in a
8999         case-insensitive way.
9000
9001         * appdomain.c (mono_runtime_init): do not install postload hooks -
9002         tests show that MS.NET doesn't use anything of that sort to
9003         trigger the AppDomain.AssemblyResolve event.
9004         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9005         made non-static.
9006         (mono_runtime_init): init portability helpers here.
9007
9008         * assembly.c (mono_assembly_load_with_partial_name): if other   
9009         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9010         to resolve the assembly.
9011
9012         * domain-internals.h: added mono_try_assembly_resolve and marked
9013         it as internal.
9014
9015 2007-09-11  Jb Evain  <jbevain@novell.com>
9016
9017         * object-internals.h (MonoReflectionDynamicMethod): add
9018         a `MonoReflectionType *owner` field. The owner is used
9019         * reflection.c:
9020         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9021         method as the class declaring the dynamic method.
9022         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9023         dynamic method to the declaring type of the methodbuilder.
9024
9025 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9026
9027         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9028         rules for calling methods via reflection.
9029
9030 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9031
9032         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9033         Inflate MonoType's.
9034
9035 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9036
9037         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9038         provide a managed method that does fast allocations without needing
9039         a managed->unmanaged transition. Boehm GC implementation currently
9040         enabled for ptrfree objects on sane architectures.
9041
9042 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9043
9044         * marshal.c, marshal.h: exported a couple of useful functions and
9045         added mono_mb_get_label () to easily handle backward branches.
9046
9047 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9048
9049         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9050
9051 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9052
9053         * loader.c (find_method): Fixed the regression introduced while
9054         fixing bug #81466.
9055
9056 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9057
9058         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9059         well.
9060         
9061         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9062         icall.c reflection.c: Pass a MonoGenericContext argument to 
9063         mono_lookup_dynamic_token ().
9064
9065         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9066         #82744.
9067         
9068 2007-09-09  Robert Jordan  <robertj@gmx.net>
9069
9070         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9071         for generic methods.
9072
9073         * object.c (mono_object_get_virtual_method): Handle generic methods.
9074         Fixes bug #78882.
9075
9076         Code is contributed under MIT/X11 license.
9077
9078 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9079
9080         * image.c: fix locking in mono_image_load_file_for_image ().
9081
9082 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9083
9084         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9085         used only as a cache: added an icall to fill it.
9086
9087 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9088
9089         * reflection.h: exposed mono_reflection_free_type_info
9090         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9091         since mono_reflection_bind_generic_parameters makes a copy of it.
9092         * reflection.c (free_type_info): subinfos should be freed.
9093         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9094         made non static.
9095         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9096         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9097         this fixes #82695 and #81726.
9098    
9099
9100 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9101
9102         * process.h, process.c:  added support for user profile/info in
9103           ProcessStartInfo. For now only Windows works.
9104
9105 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9106
9107         * metadata.c: consider the generic arguments when comparing
9108         signatures (bug #82614).
9109
9110 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9111
9112         * cil-coff.h, image.c: updated assembly loader to cope with the
9113         PE32+ 64 bit file format.
9114
9115 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9116
9117         * assembly.c, class.c, domain.c, loader.c: remove useless
9118         inclusion of cil-coff.h.
9119
9120 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9121
9122         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9123         if interface is marked with CoClassAttribute. 
9124    
9125         Code is contributed under MIT/X11 license.
9126
9127 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9128
9129         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9130         if it's seen twice in major collections.
9131
9132 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9133
9134         * sgen-gc.c: big objects are not copied to the gray area, but they
9135         need to be considered for scanning, too, if they are brought alive
9136         by an object ready for finalizations or a survived one.
9137
9138 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9139
9140         * sgen-gc.c: properly account the number of disappearing links when
9141         they are nullified.
9142
9143 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9144
9145         * sgen-gc.c: share the code to scan the registered roots between the
9146         different types of collections.
9147
9148 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9149
9150         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9151
9152 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9153
9154         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9155         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9156
9157 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9158
9159         * security-manager.c (mono_security_manager_get_methods):
9160         LinkDemandSecurityException now has 2 arguments instead of 3.
9161
9162 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9163
9164         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9165         platforms which need it.
9166
9167 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9168
9169         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9170         dtor.
9171
9172 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9173
9174         * threads.c: free the thread static data on thread exit.
9175
9176 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9177
9178         * class.c: walk the hierarchy to find the generic definition for
9179         a class (fixes runtime part of bug #82498).
9180
9181 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9182
9183         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9184         ...
9185
9186         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9187
9188 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9189
9190         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9191
9192 2007-08-24  Robert Jordan  <robertj@gmx.net>
9193
9194         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9195
9196 2007-08-24  Jb Evain  <jbevain@novell.com>
9197
9198         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9199         for byref types.
9200
9201 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9202
9203         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9204         #82286.
9205
9206 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9207
9208         * assembly.c: Fix a warning.
9209         
9210 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9211
9212         * appdomain.c: parse the <runtime> section looking for the probing
9213         element with the 'privatePath' attribute, which sets additional
9214         directories in which the runtime should look for assemblies.
9215
9216 2007-08-23  Robert Jordan  <robertj@gmx.net>
9217
9218         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9219         Fixes #82499.
9220
9221 2007-08-23  Martin Baulig  <martin@ximian.com>
9222
9223         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9224         _mono_debug_init_corlib() and remove it from the header file.
9225
9226 2007-08-23  Martin Baulig  <martin@ximian.com>
9227
9228         * mono-debug-debugger.c
9229         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9230         don't notify the debugger about it.
9231
9232         * mono-debug-debugger.h
9233         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9234
9235 2007-08-23  Robert Jordan  <robertj@gmx.net>
9236
9237         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9238         Code is contributed under MIT/X11 license.
9239
9240 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9241
9242         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9243
9244 2007-08-22  Martin Baulig  <martin@ximian.com>
9245
9246         * mono-debug.c: Store debugging info on a per-domain basis and
9247         free it on domain unload.  Add support for unloading symbol files.
9248
9249         * mono-debug.h
9250         (MonoDebugList): New typedef.
9251         (MonoSymbolTable):
9252         - add `data_tables and `type_table'.
9253         - replace 'symbol_files' and `num_symbol_files' with a
9254           `MonoDebugList *'.
9255         (mono_debug_data_table): Removed.
9256         (mono_debug_list_add): New public function.
9257         (mono_debug_list_remove): New public function.
9258         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9259         (mono_debug_init_2_memory): Renamed into
9260         mono_debug_open_image_from_memory().
9261         (mono_debug_close_image): New public function.
9262         (mono_debug_domain_create): Likewise.
9263         (mono_debug_domain_unload): Likewise.
9264         (MONO_DEBUGGER_VERSION): Bump to 60.
9265
9266         * mono-debug-debugger.h
9267         (MonoDebuggerEvent):
9268         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9269         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9270         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9271         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9272           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9273         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9274           meaning.
9275         (mono_debugger_add_symbol_file): Removed.
9276         (mono_debugger_add_type): Removed.
9277         (mono_debugger_lookup_type): Removed.
9278         (mono_debugger_lookup_assembly): Removed.
9279
9280         * domain.c
9281         (mono_domain_create): Call mono_debug_domain_create().
9282         (mono_init_internal): Call mono_debug_init_corlib().
9283
9284         * assembly.c
9285         (mono_assembly_close): Call mono_debug_close_image().
9286
9287 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9288
9289         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9290         mmap call.
9291
9292 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9293
9294         * sgen-gc.c: ensure section->pin_queue_end is initialized
9295         correctly when non pinning objects in the section have been found.
9296
9297 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9298
9299         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9300         containing a list of directories separated by ':'. MSDN docs say
9301         the directories should be separated with ';'. Part of a bugfix for
9302         bug #81446
9303
9304 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9305
9306         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9307         it should MonoType and not MonoClass.
9308
9309 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9310
9311         * culture-info-table.h : regenerated.
9312
9313 2007-08-20  William Holmes  <billholmes54@gmail.com>
9314
9315         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
9316          to call ReplaceFile Kernel32 on windows or in io-layer.
9317         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
9318         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
9319          as an internal call.
9320
9321         Code is contributed under MIT/X11 license.
9322
9323 2007-08-20  Jb Evain  <jbevain@novell.com>
9324
9325         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
9326         and MONO_EXCEPTION_FIELD_ACCESS.
9327
9328         * debug-helpers.[c|h]: new mono_field_full_name function.
9329
9330 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9331
9332         * class.c: Removed class_security_level() and moved it to
9333         security-core-clr.c.
9334
9335         * security-core-clr.c, security-core-clr.h: class_security_level()
9336         is now public and renamed to mono_security_core_clr_class_level().
9337         It also looks for security attributes in the classes a class is
9338         nested in.
9339
9340 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9341
9342         * security-core-clr.c, security-core-clr.h: CoreCLR security
9343         utility functions.
9344
9345         * Makefile.am: Added security-core-clr.[ch].
9346
9347         * security-manager.c, security-manager.h: Functions and enum for
9348         setting and getting the security mode.
9349
9350         * class.c: CoreCLR security checks.
9351
9352 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9353
9354         * icall-def.h, process.c, process.h: implemented icall to get
9355         user/system processor times.
9356
9357 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9358
9359         * domain.c, threads.c, class-internals.h, domain-internals.h: New
9360         reader-lock-free jit_info_table.
9361
9362 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
9363
9364         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
9365
9366         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
9367
9368         * object-internals.h (MonoException): Add missing _data member.
9369
9370 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9371
9372         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
9373         checking that only methods with matching qname or fqname are picked
9374         from implemented interfaces.
9375
9376 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9377
9378         * verify.c (do_newarr):added, do type verification of
9379         newarr ops, push the right value on the eval stack.
9380         * verify.c (mono_method_verify): use do_newarr
9381
9382
9383 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9384
9385         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
9386         factored the common code into get_boxable_mono_type, which
9387         is now using mono_type_get_full, this fixed byref related tests.
9388
9389 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9390
9391         * class.c: added mono_type_get_full, this function has the same
9392         behavior of mono_class_get_full but the returned MonoType has
9393         all metadata of the associated token in case of a typespec token.
9394         * class.c: added mono_type_retrieve_from_typespec, used by 
9395         mono_type_get_full to retrieve the token type.
9396         * class.c (mono_class_create_from_typespec): changed to use
9397         mono_type_retrieve_from_typespec.
9398         * class.c (mono_ldtoken): changed to use mono_type_get_full
9399         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
9400         * class-internals.h: exported mono_type_get_full for internal use.
9401
9402 2007-08-16  Jb Evain  <jbevain@novell.com>
9403
9404         * domain.c (supported_runtimes): add entry for
9405         the 'moonlight' runtime version.
9406
9407 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9408
9409         * verify.c (mono_method_verify): small typo sliped in.  
9410
9411 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * verify.c (do_unbox_value): added, do type verification of
9414         unboxing ops
9415         * verify.c (mono_method_verify): use do_unbox_value
9416
9417
9418 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9419
9420         * verify.c (dump_stack_value): fixed typo, was printing string
9421         instead of object on stack.
9422         * verify.c (do_box_value): moved the byref check up as it leads
9423         to invalid code and should be done earlier.
9424         * verify.c: improved error messages for and ldobj
9425
9426 2007-08-15  William Holmes  <billholmes54@gmail.com>
9427
9428         * marshal.c (emit_marshal_custom): Omit the call to 
9429           marshal_native_to_managed when calling native to managed 
9430           and the argument is specified as an out argument.
9431
9432         Code is contributed under MIT/X11 license.
9433
9434 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9435
9436         * verify.c: fixed the type checks for generics, function pointers and vectors.
9437         Added type verification for ldobj and ldtoken. The verifier
9438         would segfault if header or signature of a method contained references
9439         to non-existant types.
9440
9441 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9442
9443         * marshal.c (cominterop_get_ccw): Patch from
9444         Bill Holmes to no walk up interface hierarchy. 
9445         All parent methods should be present in the interface for COM.
9446    
9447         Code is contributed under MIT/X11 license.
9448
9449 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9450
9451         * marshal.c (emit_marshal_com_interface): Patch from
9452         Bill Holmes to handle COM Interfaces as return values
9453         for native->managed calls.
9454    
9455         Code is contributed under MIT/X11 license.
9456
9457 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
9458
9459         * marshal.c (cominterop_get_idispatch_for_object): Implement
9460         for runtime callable wrappers.
9461    
9462         Code is contributed under MIT/X11 license.
9463
9464 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
9465
9466         * pedump.c (main): changed from mono_init to mono_init_from_assembly
9467         so 2.0 types are accessible
9468
9469
9470 2007-08-13  Miguel de Icaza  <miguel@novell.com>
9471
9472         * domain.c (mono_init_internal): Call mono_assembly_load_friends
9473         once we load mscorlib.   Due to the order in which we initialize,
9474         the mono_assembly_load_full routine that loads mscorlib did not
9475         load friends.   We now load it once we load the
9476         mono_defaults.internals_visible_class class. 
9477
9478         * assembly.c: Expose the mono_load_friend_assemblies method.
9479
9480 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
9481
9482         * verify.c: improved the handling of boxing, better
9483         type checking for unary ops and conversion. Fix bug
9484         regarding managed pointer compatibility checking
9485
9486 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9487
9488         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
9489
9490         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
9491
9492 2007-08-09  Raja R Harinath  <rharinath@novell.com>
9493
9494         * reflection.c (dup_type): Remove.
9495         * class.c (dup_type): Remove.
9496         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
9497         instead of the dodgy 'dup_type'.
9498         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
9499         handle the case where 'dup_type' needed the second argument.
9500
9501 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9502
9503         * domain.c: Fix a warning.
9504
9505 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9506
9507         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
9508         checking that methods with the same fqname are not overridden
9509         with a method from an ancestor.
9510
9511 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
9512
9513         * threads.c (free_thread_static_data_helper): Avoid a crash if
9514         thread->static_data is not yet set.
9515
9516 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
9517
9518         * marshal.c: Use correct image when emitting
9519         native wrapper for COM calls.
9520    
9521         Code is contributed under MIT/X11 license.
9522
9523 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
9524
9525         * icall-def.h, security.c, security.h :
9526           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
9527
9528 2007-08-07  Martin Baulig  <martin@ximian.com>
9529
9530         * mono-debug-debugger.h
9531         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
9532
9533         * domain.c (mono_domain_free): Call
9534         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
9535
9536 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9537
9538         * verify.c (check_underflow, check_overflow): error message now returns IL offset
9539         * verify.c (in_same_block): code should test if either offset is inside the clauses
9540         * verify.c (mono_method_verify): push the exception into the eval stack of exception
9541         and filter blocks
9542
9543 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * image.c (mono_image_close): Fix a leak.
9546
9547         * object.c (mono_runtime_invoke_array): Avoid using alloca.
9548
9549         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
9550
9551 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9552
9553         * domain.c, threads.c, threads-types.h: fix memory retention issue
9554         with thread static variables not being cleared on domain unload.
9555         Reuse thread static slots after domain unload.
9556
9557 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9558
9559         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
9560         nullable type.
9561
9562         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
9563         now done in mono_runtime_invoke_array.
9564
9565         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
9566         receiver is a nullable type.
9567
9568         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
9569         generic parameter.
9570
9571 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
9572
9573         * marshal.c: Implement COM Objects as return type for 
9574         managed->unmanaged calls. Added Release calls for COM Object
9575         out/return values in managed->unmanaged calls.
9576
9577         Code is contributed under MIT/X11 license.
9578
9579 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9580
9581         * threads.h, threads-type.h: move the hazard pointer declarations
9582         to the private header.
9583
9584 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9585
9586         * file-io.c, appdomain.c: memory leak fixes.
9587
9588 2007-08-02  Dick Porter  <dick@ximian.com>
9589
9590         * socket-io.c
9591         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
9592         SO_REUSEADDR setting into io-layer/sockets.c.
9593
9594 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9595
9596         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
9597         from Object when called on a generic parameter. Fixes #82211.
9598
9599 2007-08-01  Dick Porter  <dick@ximian.com>
9600
9601         * file-io.c (convert_share): Test FileShare values bit-by-bit.
9602         Fixes bug 79250 yet again.
9603
9604 2007-07-30  Martin Baulig  <martin@ximian.com>
9605
9606         Merged the `debugger-dublin' branch.
9607
9608         * mono-debug.h
9609         (MonoDebugDataTable): New typedef.
9610         (MonoDebugMethodAddressList): New typedef.
9611         (MonoDebugWrapperData): Removed.
9612         (MonoDebugSymbolTable): Removed `current_data_table',
9613         `current_data_table_size', `current_data_table_offset'.
9614         (MonoDebugDataItemType): Moved into mono-debug.c.
9615         (MonoDebugMethodJitInfo): Remove `address'.
9616         (mono_debug_data_table): New global variable.
9617         (mono_debug_lookup_method_addresses): New public function.
9618         (mono_debug_find_method): Take a `MonoMethod *', not a
9619         `MonoDebugMethodInfo *'.
9620
9621         * mono-debug.c: Drop support for the old symbol tables.
9622
9623 2007-06-28  Martin Baulig  <martin@ximian.com>
9624
9625         * mono-debug.c (mono_debug_debugger_version): New public variable.
9626
9627 2007-07-31  William Holmes  <billholmes54@gmail.com>
9628
9629         * metadata.c Changed mono_type_create_from_typespec to not insert
9630           the type into the hash map until after
9631           do_mono_metadata_parse_type has completed.
9632         Fixes Bug #82194
9633         Code is contributed under MIT/X11 license.
9634
9635 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9636
9637         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
9638         generic parameter. Fixes #82211.
9639
9640 2007-07-27  Jb Evain  <jbevain@novell.com>
9641
9642         * pedump.c (dump_metadata, dump_metadata_header): dump
9643         versions contained in the metadata header.
9644
9645 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9646
9647         * threads.c: register small_id_table with the GC.
9648
9649 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9650
9651         * threads.c, threads.h, class-internals.h, object-internals.h:
9652         Hazard pointers, to be used by lock-free parallel algorithms.
9653
9654 2007-07-26  Dick Porter  <dick@ximian.com>
9655
9656         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
9657         routine on non-windows platforms, as I've not managed to think of
9658         a non-kludgy way of doing this.  Finishes off bug 78739.
9659
9660 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9661
9662         * object.c: properly setup interface_bitmap in proxy vtables.
9663
9664 2007-07-25  Marek Habersack  <mhabersack@novell.com>
9665
9666         * appdomain.c (get_shadow_assembly_location): do not use TickCount
9667         to create unique shadow copy target directories, use the domain's
9668         serial number instead. Each domain gets a unique target directory
9669         that way.
9670
9671         * domain.c (mono_domain_create): added code to increment domain
9672         shadow copy serial number and cache the value in the current
9673         domain structure.
9674
9675         * domain-internals.h (struct _MonoDomain): added a new field -
9676         shadow_serial to hold the serial number used in generation of
9677         shadow-copy directories. This is to make sure that the directory
9678         name is unique for each and every domain created. We avoid a race
9679         condition with overriding assemblies already in use by other app
9680         domains.
9681
9682 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
9683
9684         * class.c (mono_bounded_array_class_get): fixed memory leak when 
9685         binding generic parameters.
9686
9687 2007-07-24  Raja R Harinath  <rharinath@novell.com>
9688
9689         * metadata.c (do_mono_metadata_parse_generic_class): Use
9690         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
9691         error.
9692
9693 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9694
9695         * loader.c, class-internals.h, reflection.c: removed the per-method
9696         generics hashtable: we use the global one through the call of
9697         mono_class_inflate_generic_method ().
9698
9699 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9700
9701         * class.c, metadata.c, class-internals.h: introduce yet another
9702         generics global cache for inflated methods (fixes 98% of the perf
9703         issue in bug #81806).
9704
9705 2007-07-23  Raja R Harinath  <rharinath@novell.com>
9706
9707         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
9708         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
9709         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
9710         return a MonoGenericInst containing (a copy) of those types.
9711         (mono_metadata_inflate_generic_inst): Update to changes.
9712         (mono_metadata_parse_generic_inst): Likewise.
9713         (mono_get_shared_generic_inst): Likewise.
9714         * reflection.c (mono_class_bind_generic_parameters): Likewise.
9715         (mono_reflection_bind_generic_method_parameters): Likewise.
9716         * metadata-internals.h: Likewise.
9717         * icall.c (free_generic_context): Kill.
9718         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
9719
9720         * reflection.c (reflection_methodbuilder_to_mono_method): Use
9721         mono_metadata_type_dup.
9722         * marshal.c (mono_mb_create_method): Likewise.
9723
9724         * metadata.c (mono_metadata_type_dup): Rename from
9725         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
9726         MonoImage.  Handle a few more cases, esp. when no mempool is given.
9727         * marshal.c, metadata-internals.h: Update to changes.
9728
9729 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9730
9731         * class.c: fixed a small leak for array classes and removed warning.
9732
9733 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9734
9735         * loader.c (mono_method_get_param_token): Make this work on generic methods.
9736         Return 0x8000000 for return parameters. Fixes #82161.
9737
9738 2007-07-21  Marek Habersack  <grendello@gmail.com>
9739
9740         * appdomain.c (get_shadow_assembly_location): append the current
9741         ticks value to the path. Avoids overwriting the same assemblies by
9742         several threads at the same time.
9743
9744 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9745         and Raja R Harinath  <rharinath@novell.com>
9746
9747         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
9748         Simplify slightly.
9749         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
9750         property for testing if a method is a generic method definition.
9751
9752 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9753
9754         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
9755
9756 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9757
9758         * verify.c: used function from private branch, reverted to the one in class.h 
9759
9760 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9761
9762         * verify.c: a typo slipped in and the code wont compile
9763
9764 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
9767         disabled box instruction as it is doing the wrong thing
9768         improved stack dump messages, now it is easier to debug type related issues
9769
9770
9771 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
9772
9773         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
9774
9775 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9776
9777         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
9778         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
9779         grouped with class and valuetype. This change will simply 
9780         the code as it should be handled just like unmanaged pointers.
9781
9782 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9783
9784         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
9785
9786 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9787
9788         * verify.c: several stack merge issues fixed, reference comparisons now
9789         check the type size. strict type check now works correctly.
9790         added more uses of IS_MANAGED_POINTER macro.
9791         fixed issues pointed by running the test suite against .net.
9792         
9793
9794 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9795
9796         * class.c, loader.c, class-internals.h: Removed the
9797         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
9798         defines.
9799
9800         * icall.c: Better error checking in some internal reflection
9801         methods.
9802
9803 2007-07-18  William Holmes  <billholmes54@gmail.com>
9804
9805         * filewatcher.c : removed unused variable 'filename' in 
9806           ves_icall_System_IO_FSW_SupportsFSW
9807
9808 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9809
9810         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
9811         obsolete, removed.
9812
9813 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9814
9815         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
9816         
9817         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
9818
9819 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
9822         Implement generics support.
9823         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
9824
9825         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
9826         type_args and method_args arguments.
9827         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
9828         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
9829         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
9830
9831 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
9832
9833         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
9834           It adds a rootimage parameter to mono_reflection_get_type_internal,
9835           adds new function mono_reflection_get_type_with_rootimage and use
9836           the rootimage to resolve the types instead of the current image
9837
9838 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9839
9840         * culture-info-table.h: Forgot to update after r78304.
9841
9842 2007-07-13  Raja R Harinath  <rharinath@novell.com>
9843
9844         * class.c (mono_class_is_open_constructed_type)
9845         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
9846
9847 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
9848
9849         * class.c (mono_bounded_array_class_get):  method fails if used with
9850         an incomplete TypeBuilder enum (no basetype field), fixed it by 
9851         avoiding calculating the size for such array as it cannot be instantiated.
9852         Fix bug #82015
9853
9854 2007-07-12  Raja R Harinath  <rharinath@novell.com>
9855
9856         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
9857         field.
9858         * metadata.c, reflection.c: Update to changes.
9859
9860 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
9861
9862         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
9863         mono_class_is_valid_enum, they are used to valide a enum when loading.
9864         * reflection.c: used new functions to throw TypeLoadException when and
9865         invalid enum is build with TypeBuilder. Fixes #82018
9866   
9867 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9868
9869         * object.c: forgot commit of mono_class_setup_methods () to access
9870         iface->methods.
9871         * object-internals.h: added a few more handy fields to
9872         MonoIMTCheckItem.
9873
9874 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9875
9876         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
9877         iface->methods.
9878
9879 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9880
9881         * class-internals.h, object-internals.h, object.c: IMT-based
9882         interface invocation core from Massimiliano Mantione
9883         (massi@ximian.com) with a reworked arch-specific interface,
9884         bsearch implementation and a few bugfixes and memory savings by me.
9885
9886 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
9887
9888         * class.c (mono_class_create_from_typedef): mono would segfault if 
9889         an enum did not have a __value field. It now throws a TypeLoadException
9890         for such cases. Fix bug #82022
9891
9892 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9893
9894         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
9895
9896 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9897
9898         * class.c (mono_class_init): If a class is already inited but has
9899         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
9900
9901 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9902
9903         * class.c: Properly handle the case of an unimplemented interface
9904         method.  Fixes: 81673.
9905
9906 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9907
9908         * class-internals.h, object.c: cleanup patch from massi: use
9909         MonoVTable->interface_bitmap since the vtable interfaces offset array
9910         is going away.
9911
9912 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9913
9914         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
9915         GetMDStreamVersion icall instead.
9916
9917 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9918
9919         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
9920         not use mono_dl_build_path() with a full library name: makes
9921         fallbacks to libgaim and libfam work.
9922
9923 2007-07-06  William Holmes  <billholmes54@gmail.com>
9924
9925         * assembly.c: Added a continue statement in probe_for_partial_name when
9926          parse_assembly_directory_name fails.  Fixes : 82002
9927
9928 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
9929
9930         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
9931         and added a verification  for TYPEDBYREF.
9932         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
9933         make native int interchangeable with int32 and some small cleanup and formating.
9934         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
9935         handle byref of byref.
9936         * verify.c (push_local): handle byref of byref.
9937         * verify.c (do_binop): invalid mix of values is unverifiable
9938         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
9939         added visibility checks
9940         * verify.c (field related method): added visibility checks
9941         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
9942
9943 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
9944
9945         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
9946         string.
9947
9948 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9949
9950         * profiler.c (mono_profiler_load): Fix an off-by-one error.
9951
9952         * marshal.c (emit_marshal_string): When returning a string from managed code,
9953         allways make a copy even for unicode strings. Fixes #81990.
9954
9955 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
9956
9957         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
9958         of byref generic inst types (bug #81997).
9959
9960 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9961
9962         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
9963         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
9964
9965 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
9966
9967         * marshal.c (emit_marshal_string): Add support for unicode strings in
9968         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
9969
9970 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
9971
9972         * verify.c: field load/store are now verified, missing only access checks now
9973
9974 2007-06-28  Martin Baulig  <martin@ximian.com>
9975
9976         * mono-debug.c (mono_debug_debugger_version): New public variable.
9977
9978 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
9979
9980         * locales.c: When constructing DateTimeFormat or NumberFormat for
9981         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
9982         MonoCultureInfo contructed from the current locale is always
9983         read-only and has UseUserOverride set to true. All MonoCultureInfo
9984         instances returned for GetCultures have both IsReadOnly and
9985         UseUserOverride set to true. Fixes part of bug #81930.
9986
9987 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
9988
9989        * icall-def.h: Update System.__ComObject icalls
9990        * marshal.c: Avoid managed transition (and object creation)
9991        when looking up COM interface in RCW.
9992        * marshal.h: Ditto.
9993        
9994        Code is contributed under MIT/X11 license.
9995
9996 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
9997
9998         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
9999         to avoid crashes during assembly unloading.
10000
10001 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10002
10003         Fix MethodInfo.IsGenericMethodDefinition
10004         * reflection.c (mono_reflection_bind_generic_method_parameters):
10005         Rearrange code to ensure we always uses a generic method definition.
10006         * class.c (mono_class_inflate_generic_method_full): Set
10007         'generic_container' field only for generic method definitions.
10008         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10009         Use presense of 'generic_container' field as indication of being a
10010         generic method definition.
10011
10012 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10013
10014         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10015
10016         * object-internals.h: Reflect changes in the layout of the managed Delegate
10017         class.
10018         
10019         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10020         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10021         runtime memory used by the dynamic method. Fixes #77146.
10022
10023 2007-06-21  Dick Porter  <dick@ximian.com>
10024
10025         * file-io.h: 
10026         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10027         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10028         81767.
10029
10030 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10031
10032         * reflection.c (method_encode_methodspec): Add a tripwire.
10033         * class.c (inflate_generic_type): The fully open generic type is
10034         not the same as the generic type definition.
10035
10036 2007-06-21  Martin Baulig  <martin@ximian.com>
10037
10038         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10039
10040         * mono-debug-debugger.h
10041         (MonoDebuggerBreakpointInfo): Removed.
10042         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10043         (mono_debugger_remove_breakpoint): Likewise.
10044         (mono_debugger_breakpoint_callback): Likewise.
10045         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10046
10047 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10048
10049         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10050         generic type is not the same as the generic type definition.
10051         * class.c (mono_generic_class_get_class): Likewise.
10052
10053 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10054
10055         * icall.c: The second argument to 
10056         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10057         is a MonoType not a MonoClass.
10058
10059 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10060
10061         * verify.c: support for function pointers in the verifier
10062
10063 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10064
10065         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10066
10067 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10068
10069         * assembly.c: removed Mono.Data.SqliteClient from the list of
10070         forward-compatible assemblies as it breaks the ABI (bug #81899).
10071
10072 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10073
10074         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10075         lookup/update with the loader lock.
10076         * reflection.c (mono_class_bind_generic_parameters): No need to
10077         protect mono_metadata_lookup_* with the loader lock.
10078         * class.c (inflate_generic_type): Likewise.
10079         
10080         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10081         on a generic instantiated type.
10082
10083 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10084
10085         *verify.c: produce meanfull error messages on verification error
10086         *verify.c: fixed some cases of verification errors reported as validation errors
10087         *pedump.c: fixed the error name array, now it shows validation errors properly
10088         *verify.h: fixed the contant that should be used for verification errors
10089
10090 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10091
10092         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10093         for bug #77596, 81858 and 80743 (generics data structures on domain
10094         unload).
10095
10096 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10097
10098         Avoid allocating 'MonoGenericContext' on the heap.
10099         * class-internals (_MonoMethodInflated::context): Make field
10100         inline, not a pointer.
10101         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10102         stack.  Use the context embedded within the inflated method as the
10103         hash key, rather than 'new_context'.
10104         * class.c (inflate_generic_context): Simplify.  Return a struct
10105         rather than allocating on the heap.
10106         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10107         doesn't salt away a copy of the context -- simplifying the
10108         lifetime rules of a 'MonoGenericContext *'.
10109         (mono_method_get_context): Return pointer to embedded context.
10110         (setup_generic_array_ifaces): Allocate temporary context on stack.
10111         * reflection.c (inflate_mono_method): Likewise.
10112         (mono_reflection_bind_generic_method_parameters): Likewise.
10113         Use the context embedded within the inflated method as the hash key.
10114
10115         Avoid a source of allocation of 'MonoGenericContext'.
10116         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10117         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10118         * class.c: Update to changes.
10119         (mono_generic_class_get_context): Simplify drastically.  Now just
10120         returns a pointer to the field.
10121         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10122         argument as a const pointer.
10123         (mono_metadata_generic_context_equal): Likewise.
10124         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10125         Update to changes.
10126
10127 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10128
10129         * verify.c improved the handling of brtrue/brfalse, factored out common code
10130
10131 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10132
10133         Kill MonoGenericMethod.
10134         * class-internals.h (MonoGenericContext::method_inst): Rename from
10135         'gmethod' and convert to a MonoGenericInst.
10136         (MonoGenericMethod): Remove.
10137         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10138         * loader.c (method_from_methodspec): Update to changes.  Use a
10139         MonoGenericContext as the key to the hashtable.
10140         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10141         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10142         (mono_metadata_generic_context_hash): Likewise from
10143         'mono_metadata_generic_method_hash'.  Change hash function.
10144         (mono_metadata_load_generic_params): Update to changes.
10145         (mono_get_shared_generic_method): Remove.
10146         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10147         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10148         (inflate_generic_context): Likewise.
10149         (mono_class_inflate_generic_method_full): Likewise.
10150         (setup_generic_array_ifaces): Likewise.
10151         (mono_class_create_from_typespec): Likewise.
10152         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10153         (method_encode_methodspec): Update callsite.
10154         (reflection_methodbuilder_to_mono_method): Update to changes.
10155         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10156         MonoGenericContext as the key to the hashtable.
10157         (inflate_mono_method): Update to changes.
10158
10159         * class-internals.h (MonoGenericMethod::container): Remove.
10160         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10161
10162 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10163
10164         * profiler-private.h, profiler.c, profiler.h: added API to profile
10165         exception events.
10166
10167 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10168
10169         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10170
10171 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10172
10173         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10174         Fixed overflow and underflow not aborting the verification process.
10175
10176 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10177
10178         * class-internals.h (MonoStats): Added stats entries for dynamic
10179         code allocations.
10180
10181 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10182
10183         * loader.c (mono_free_method): Free header->locals and header->clauses.
10184
10185         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10186         dynamic case.
10187
10188         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10189
10190         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10191
10192 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10193
10194         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10195         the tables.
10196
10197 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10198
10199         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10200
10201 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10202
10203         MonoGenericMethod on a diet
10204         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10205         here ...
10206         (_MonoGenericMethod::reflection_info): ... from here.
10207         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10208         Update to changes.
10209         * reflection.c (inflate_mono_method): Likewise.
10210         (mono_reflection_bind_generic_method_parameters): Likewise.
10211
10212 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10213
10214         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10215         *verify.c: factored long ldarg forms to share code with short forms
10216
10217 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10218
10219         *verify.c: fixed code formating factored some duplicate code
10220         into a new function
10221
10222         *verify.h: fixed binary incompatibility introduced earlier
10223
10224         *pedump.c: fixed formating
10225
10226 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10227
10228         Fix assertion when disassembling Mono.C5.dll
10229         * loader.c (method_from_methodspec): Avoid inflating a method
10230         twice with the same context.  If the methodref is inflated, use
10231         the declaring method instead.
10232
10233         * class.c (mono_class_from_generic_parameter): Fix case similar to
10234         bug #81830 handled below, but for method containers.
10235
10236 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10237
10238         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10239         get_shared_generic_class.  Directly inflate the instance.
10240         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10241         (inflate_generic_class): Delete.
10242         (get_shared_generic_class): Delete.  Move setting of
10243         'cached_class' and 'cached_context' ...
10244         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10245
10246         * metadata.c (mono_metadata_lookup_generic_class): Change
10247         signature to take the components of a MonoGenericClass rather than
10248         an allocated MonoGenericClass.  Change semantics to be intern-like.
10249         * reflection.c (mono_class_bind_generic_parameters): Update to
10250         changes.  Make locking region tighter.
10251         * class.c (inflate_generic_class): Update to changes.
10252         (get_shared_generic_class): Likewise.
10253         * metadata-internals.h: Likewise.
10254
10255         * reflection.c (mono_class_bind_generic_parameters): Take and
10256         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10257         (mono_reflection_bind_generic_parameters): Use
10258         'mono_class_bind_generic_parameters' rather than duplicate the code.
10259         * class.c (mono_bounded_array_class_get): Update to changes.
10260         * object-internals.h: Likewise.
10261
10262         * reflection.c (mono_class_bind_generic_parameters): Only support
10263         parameterizing generic type definitions.  Remove support for other
10264         open types.
10265
10266 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10267
10268         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10269
10270         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10271         in the dynamic case.
10272
10273 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10274
10275         * threads.c: When cleaning up thread, reset the Background bit.
10276         Fixes bug #81720.
10277
10278 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10279
10280        * metadata.c: Move variable declarations to top of scope.
10281        * verify.c: Move variable declarations to top of scope.
10282
10283        Code is contributed under MIT/X11 license.
10284
10285 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10286
10287         * reflection.c (mono_class_bind_generic_parameters): Replace
10288         open-coded loop with mono_metadata_inflate_generic_inst.
10289
10290         * class.c (get_shared_generic_class): Don't call
10291         mono_get_shared_generic_inst.  Use the container's own
10292         'class_inst'.
10293
10294         * metadata.c (mono_metadata_load_generic_params): Move
10295         initialization of 'context' field here from ...
10296         * class.c (mono_class_create_from_typedef): ... here, and ...
10297         * loader.c (mono_get_method_from_token): ... here.
10298
10299         * class.c (get_shared_generic_class): Rename from
10300         mono_get_shared_generic_class and make static.
10301         (mono_get_shared_generic_inst): Move to metadata.c.
10302         * loader.c (mono_get_shared_generic_method): Likewise.
10303         * class-internals.h, metadata-internals.h: Update to changes.
10304
10305         Fix #81830
10306         * class.c (mono_class_from_generic_parameter): Don't assume a
10307         generic container owner exists.  Generic containers from monodis
10308         don't have any.
10309
10310 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10311
10312         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10313         * verify.h: new typedefs to returns the non-verifiable status
10314         * verify.c: initial implementation of generics, stack merging and object compatibility check
10315
10316 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10317
10318         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10319         a MonoInternalHashTable again (fixed bug in internal hash table
10320         code).
10321
10322 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10323
10324         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10325         MonoInternalHashTable again (fixed bug in internal hash table
10326         code).
10327
10328 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10329
10330         * class.c, image.c, class-internals.h, domain.c,
10331         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
10332         changes.  Have to figure out what makes them break the SWF
10333         regression.
10334
10335 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10336
10337         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10338         a MonoInternalHashTable now.
10339
10340 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10341
10342         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10343         MonoInternalHashTable now.
10344
10345 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10346
10347         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
10348         invoke_impl code.
10349
10350         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
10351
10352         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
10353         dependent trampoline.
10354
10355         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10356
10357         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
10358
10359 2007-05-29  Robert Jordan  <robertj@gmx.net>
10360
10361         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
10362
10363 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
10364
10365         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
10366
10367 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
10368
10369        * marshal.c: Fix interface lookup loops for
10370        cominterop_get_com_slot_for_method and 
10371        cominterop_get_method_interface. Only need to lookup
10372        if type is a class, else use interface type method is on.
10373
10374        Code is contributed under MIT/X11 license.
10375
10376 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
10377
10378         * reflection.c: HasSecurity can be present even if no specially 
10379         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
10380         SecurityAttribute). Fix CAS regression tests on buildbot.
10381
10382 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10383
10384        * appdomain.c: Add configure checks for header files.
10385        * image.c: Add configure checks for header files.
10386        * file-io.c: Add configure checks for header files.
10387        * debug-mono-symfile.c: Add configure checks for header files.
10388        * threadpool.c: Add configure checks for header files.
10389        * console-io.c: Add configure checks for header files.
10390        * profiler.c: Add configure checks for header files.
10391        * rawbuffer.c: Add configure checks for header files.
10392        * icall.c: Add configure checks for header files.
10393        * rand.c: Add configure checks for header files.
10394        * socket-io.c: Add configure checks for header files.
10395
10396        Code is contributed under MIT/X11 license.
10397
10398 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
10399
10400         * reflection.c (mono_custom_attrs_from_builders): Remove the 
10401         assertion as it breaks the build.
10402         
10403         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
10404
10405         * reflection.c (lookup_custom_attr): Make a copy here too.
10406
10407         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
10408         dynamic images.
10409
10410         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
10411         images.
10412
10413         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
10414         info.
10415
10416 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
10419         (load_cattr_value): Ditto.
10420
10421 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
10424
10425 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
10426
10427         * threads.c: In "start_wrapper", set apartment_state to MTA if
10428         apartment_state is Unknown and we're running on 2.0 profile or
10429         higher.
10430         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
10431         to main method, then set apartment_state to Unknown on 1.0 profile,
10432         and MTA on 2.0 profile.
10433
10434 2007-05-16  Jb Evain  <jb@nurv.fr>
10435
10436         * class-internals.h (MonoDefaults): Add an attribute_class and
10437           customattribute_data_class.
10438         * domain.c (mono_init_internal): Populate them.
10439         * reflection.c: Use them to remove duplicates. Make a vew
10440         MonoClass variables `static'.
10441
10442 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10443
10444         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
10445         step in implementing IMT, so that all isinst checks now can go
10446         through the bitmap.
10447         This was needed because vtables for TransparentProxy need to look
10448         like the vtable of the "target" class, so they need to point to
10449         its interface bitmap directly.
10450
10451         * object.c: inside "mono_class_create_runtime_vtable" and
10452         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
10453
10454 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
10455
10456         * object-internals.h
10457           culture-info.h : added territory field in MonoCulture and
10458           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
10459         * locales.c : fill territory field above too.
10460         * culture-info-table.h : regenerated.
10461
10462 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10463
10464         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
10465         Fixes #81599.
10466
10467 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
10468
10469         * object.c: Always initialize apartment, even if 
10470         there is no custom attributes on entry point.
10471         
10472         Code is contributed under MIT/X11 license.
10473
10474 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
10475
10476         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
10477         * metadata.c: If no encoding is set, check for unicode
10478         on class.
10479         
10480         Code is contributed under MIT/X11 license.
10481
10482 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10483
10484         * threads.c: Handle if mono_thread_current returns NULL 
10485         
10486         Code is contributed under MIT/X11 license.
10487
10488 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10489
10490         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
10491         in start_wrapper. Added mono_thread_init_apartment_state and
10492         mono_thread_cleanup_apartment_state.
10493         * object.c: Initialize thread apartment state on main thread
10494         by checking for STAThreadAttribute on entry point.
10495         * object-internals.h: Add apartment_state field to MonoThread.
10496         * threads-types.h: Add unmanaged definition of 
10497         System.Threading.ApartmentState, MonoThreadApartmentState.
10498         
10499         Code is contributed under MIT/X11 license.
10500         
10501 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
10502
10503         * class.c: Fix windows build.
10504         * class-internals.h: Fix windows build.
10505         
10506         Code is contributed under MIT/X11 license.
10507
10508 2007-05-08  Robert Jordan  <robertj@gmx.net>
10509
10510         * process.c (CreateProcess_internal):
10511         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
10512         .CreateNoWindow was specified. Fixes #81496.
10513
10514 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10515
10516         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
10517         step in implementing IMT, replaced it with two compact arrays
10518         (interfaces_packed and interface_offsets_packed) and a bitmap that
10519         is used for isinst checks (interface_bitmap).
10520
10521         * class.c: (compare_interface_ids): compare function to pass to
10522         bsearch when looking for an interface with a given id.
10523         (mono_class_interface_offset): reimplemented using bsearch on
10524         interfaces_packed, getting the offset from interface_offsets_packed.
10525         (print_implemented_interfaces): utility debugging function.
10526         (setup_interface_offsets): reworked to initialize interfaces_packed,
10527         interface_offsets_packed and interface_bitmap.
10528
10529         * object.c: replaced all accesses to "MonoClass.interface_offsets"
10530         with uses of interfaces_packed and interface_offsets_packed.
10531
10532 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10533
10534         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
10535         mono_class_interface_offset prototype to wrap all accesses to
10536         "MonoClass.interface_offsets".
10537
10538         * class.c: Implemented mono_class_interface_offset, and wrapped all
10539         accesses to "MonoClass.interface_offsets".
10540
10541         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
10542         "MonoClass.interface_offsets".
10543
10544 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
10545
10546         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
10547         GetMethodFromHandle overloads (bug #78637).
10548
10549 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10550
10551         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
10552         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
10553
10554 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
10555
10556         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
10557         #81498.
10558
10559         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
10560         gracefully.
10561         (mono_custom_attrs_from_index): Ditto.
10562
10563         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
10564         Fixes #81501.
10565
10566 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10567
10568         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
10569         is now allocated from a mempool.
10570
10571 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
10572
10573         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
10574         caller holds threads_lock, leading to deadlocks. Fixes #81476.
10575
10576 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10577
10578         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
10579         mono_loader_clear_error () too late. Fixes #81463.
10580
10581 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
10582
10583         * culture-info-table.h : regenerated.
10584
10585 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10586
10587         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
10588         is missing.
10589
10590 2007-04-25  Dick Porter  <dick@ximian.com>
10591
10592         * Makefile.am: Put the mingw enforced-optimisation back into the
10593         PLATFORM_WIN32 section.
10594
10595 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10596
10597         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
10598         patch.
10599
10600         * image.c (mono_image_load_module): New API function to load a module reference.
10601
10602         * image.c (load_modules): Load modules lazily. Fixes #80812.
10603
10604         * class.c (mono_class_from_typeref): Use mono_image_load_module.
10605         
10606         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
10607
10608         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
10609         to mono_image_load_module_dynamic.
10610
10611 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
10612
10613         * marshal.c: Fix calling convention for CCW on non-windows
10614         platforms. STDCALL on windows, CDECL everywhere else to work 
10615         with XPCOM and MainWin COM.
10616         
10617         Code is contributed under MIT/X11 license.
10618
10619 2007-04-23  Martin Baulig  <martin@ximian.com>
10620
10621         Fix #80969.
10622
10623         * loader.c
10624         (method_from_memberref): Added `gboolean *used_context' argument.
10625         (mono_get_method_from_token): Likewise.
10626         (mono_get_method_full): Don't insert the method in the cache when
10627         `used_context' is true.
10628
10629 2007-04-23  Raja R Harinath  <rharinath@novell.com>
10630
10631         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
10632
10633         * reflection.c (mono_reflection_bind_generic_parameters): Don't
10634         create new MonoTypes for returned types.
10635         * class.c (mono_generic_class_get_class): Export mono-internal.
10636         * class-internals.h: Update to changes.
10637
10638 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
10639
10640         * threadpool.c, threadpool.h, icall-def.h: patch from
10641         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
10642
10643 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
10644
10645         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
10646         
10647         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
10648
10649         * threads.c (mono_thread_get_stack_bounds): New helper function.
10650
10651         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
10652         Correctly compute stack bounds when attaching. Fixes #81394.
10653
10654 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
10655
10656         * reflection.c: fix handling of doubles in custom attributes
10657         for the arm-fpa format (bug #81368).
10658
10659 2007-04-18  Raja R Harinath  <rharinath@novell.com>
10660
10661         * reflection.c (assembly_add_win32_resources): Mildly relax an
10662         bounds check to let the end pointer point just past the end of the
10663         allocated buffer.  (may fix #81384)
10664
10665 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
10666
10667         * culture-info-table.h : regenerated.
10668
10669 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
10670
10671         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
10672         the thread is aborted early.
10673
10674 2007-04-05  Dick Porter  <dick@ximian.com>
10675
10676         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
10677         FindFirstFile()/FindNextFile() to find entries.  This lets the
10678         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
10679         81038.
10680
10681         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
10682         the parameters of
10683         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
10684
10685 2007-04-04  Martin Baulig  <martin@ximian.com>
10686
10687         * debug-helpers.c
10688         (mono_method_desc_full_match): Add support for nested classes.
10689
10690 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
10691
10692         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
10693
10694 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
10695
10696         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
10697         waiting for too many threads.
10698
10699 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
10700
10701         * environment.c: Fix return value check on uname so we can get the 
10702         executing version on Solaris operating systems.
10703
10704 2007-03-28  Jb Evain  <jbevain@gmail.com>
10705
10706         * class.c (mono_type_get_name_recurse): Complete the
10707         fix for the creation of assembly qualified names for
10708         pointer types. Fixes #81208.
10709
10710 2007-03-27  Dick Porter  <dick@ximian.com>
10711
10712         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
10713         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
10714         changed.
10715
10716         * threads.c
10717         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
10718         the value of ReleaseMutex().
10719
10720 2007-03-27  Dick Porter  <dick@ximian.com>
10721
10722         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
10723         in little-endian order, not network endian, so must be converted
10724         to host endian here.  Fixes bug 80593.
10725
10726 2007-03-22  Jb Evain  <jbevain@gmail.com>
10727
10728         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
10729         qualified names for pointer types. Fixes #81208.
10730
10731 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
10732
10733         * marshal.c: Add support for PreserveSigAttribute. 
10734         
10735         Code is contributed under MIT/X11 license.
10736
10737 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
10738
10739         * process.c: Fix endianness issues. Fixes #81126.
10740
10741         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
10742         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
10743
10744         * image.c (mono_image_lookup_resource): Make this work on big-endian
10745         machines.Change API contract so the caller needs to free the return value.
10746         
10747         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
10748         API change.
10749         
10750 2007-03-14  Martin Baulig  <martin@ximian.com>
10751
10752         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
10753         mono_type_get_desc() as well.
10754
10755 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10756
10757         * icall.c:  Fix environ access in VS.  
10758         
10759 2007-03-13  Alp Toker  <alp@atoker.com>
10760
10761         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
10762         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
10763         #63841.
10764
10765 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
10766
10767         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
10768         circular references among dynamic methods. Fixes #81091.
10769
10770         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
10771
10772 2007-03-09  Martin Baulig  <martin@ximian.com>
10773
10774         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
10775
10776 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
10777
10778         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
10779         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
10780         
10781         Code is contributed under MIT/X11 license.
10782         
10783 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
10784
10785         * loader.c: Reapply patch for bug #79424.
10786
10787 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10788
10789         * metadata.c (mono_type_to_unmanaged): Only convert object to
10790         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
10791
10792 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
10793
10794         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
10795         (and incorrectly set) is_reference field from MonoGenericInst.
10796
10797 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10798
10799         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
10800         a little earlier.
10801
10802         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
10803
10804         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
10805
10806 2007-03-05  Miguel de Icaza  <miguel@novell.com>
10807
10808         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
10809         FileOptions.1 value to mean "temporary", map that to
10810         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
10811
10812         Fixes 80688
10813
10814 2007-03-03  Marek Habersack  <mhabersack@novell.com>
10815
10816         * appdomain.c: implement MS .Net style shadow copying. Copies of
10817         the assemblies are made in a subdirectory of the dynamic base
10818         directory, the assembly names are preserved.
10819         Copy .mdb and .config files along with the assemblies being shadowed.
10820
10821 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
10822
10823         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
10824         (emit_marshal_handleref): Ditto.
10825
10826         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
10827         on Visual C++. Fixes #80671.
10828
10829 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10830
10831         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
10832         for clone operations.
10833
10834 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * marshal.c: Fix warnings.
10837
10838 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
10839
10840         * loader.c: allow case-insensitive matching of the dll name
10841         in dllmap handling when prefixed with "i:".
10842
10843 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
10844
10845         * threads.c: Fix #ifdef for dummy_apc function for VS.
10846
10847 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10848
10849         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
10850
10851 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
10852         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
10853         giving precedence to the methods with a fully qualified name
10854         (InterfaceName.MethodName) when building the interface sections
10855         of the vtable.
10856
10857 2007-02-16  Dick Porter  <dick@ximian.com>
10858
10859         * threadpool.c (append_job): Fix fast-path array handling, so it's
10860         less likely the array will grow exponentially when the load is
10861         heavy.
10862
10863 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
10864
10865         * metadata-internals.h, loader.c: fix dllmap lookup order
10866         for non-function maps, too, and prepare for fallback code.
10867
10868 2007-02-12  Robert Jordan  <robertj@gmx.net>
10869
10870         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
10871         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
10872         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
10873         GlobalFree. Fixes a part of bug #77075.
10874
10875 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
10876
10877         * loader.c: implemented typedef parent in field memberref.
10878
10879 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
10880
10881         * marshal.c: Fix warnings and remember to call Release on
10882         IUnknown of RCW.
10883         
10884         Code is contributed under MIT/X11 license.
10885
10886 2007-02-10  Miguel de Icaza  <miguel@novell.com>
10887
10888         * class-internals.h: Add MonoHandleRef definition, and
10889         handleref_class to mono_defaults. 
10890
10891         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
10892         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
10893
10894         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
10895         (do nothing on this stage)
10896         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
10897         (emit_marshal_handleref): New method, used for argument handling
10898         of HandleRefs. 
10899
10900 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
10901
10902         * class.c (mono_class_setup_parent): Lazily init com types.
10903         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
10904         init com types.
10905         * object.c (mono_remote_class_vtable): Lazily init com types.
10906         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
10907         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
10908         * domain-internals.h: Expose mono_init_com_types.
10909         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
10910         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
10911         Add support for COM Callable Wrapper marshalling.
10912         * marshal.h: Add icall definitions.
10913         * gc.c: Handle freeing of CCWs in finalizer code.
10914         
10915         Code is contributed under MIT/X11 license.
10916
10917 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
10918
10919         * reflection.c: changed all the signature encoding code to use
10920         a variable-sized buffer.
10921
10922 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10923
10924         * marshal.c: locking fixes: never take the loader lock
10925         or other runtime locks when holding the marshal lock
10926         (fixes bug#80664).
10927
10928 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
10929
10930         * marshal.c: make the delegate function pointer mapping
10931         work for the moving GC.
10932
10933 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
10934
10935         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
10936         for bug #80618.
10937
10938 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10939
10940         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
10941         gmodule.
10942
10943 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10944
10945         * threadpool.c: made the code moving-GC safe.
10946
10947 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
10948
10949         * assembly.c, boehm-gc.c, class-internals.h, class.c,
10950         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
10951         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
10952         warning cleanup.
10953         * reflection.c: warning cleanup, some threading and moving GC fixes.
10954
10955 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
10956
10957         * class.c, loader.c: create the needed Set/Get/Address array methods
10958         as well as the .ctors in mono_class_init (), fixes bug #80567.
10959
10960 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10961
10962         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
10963         we doesn't decrease its alignment. Should fix the sparc build.
10964
10965 2007-01-24  Dick Porter  <dick@ximian.com>
10966
10967         * socket-io.c
10968         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
10969         Create the returned object if we need to ignore an unsupported
10970         socket option.  Fixes a segfault reported by Atsushi.
10971
10972 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
10973
10974         * class.c, object.c: restrict GC-tracked fields to
10975         UIntPtr fields used inside corlib, so we provide better
10976         type info to the GC and also allow broken packing as in
10977         bug #80580.
10978
10979 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
10980
10981         * sgen-gc.c: removed duplicated function.
10982
10983 2007-01-19  Miguel de Icaza  <miguel@novell.com>
10984
10985         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
10986         value that means that the value is not supported, but that we
10987         should not return a failure, but instead report this as a
10988         successful operation.
10989
10990 2007-01-19  Raja R Harinath  <rharinath@novell.com>
10991
10992         Fix tests/bug79956.2.il
10993         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
10994         (mono_generic_class_get_class): If the generic definition in an
10995         enum, copy over other fields related to it.
10996
10997 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10998
10999         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11000         genericinst enums (bug #79215).
11001
11002 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11003         * class.c: Fix bug 80307.
11004
11005 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11006
11007         * image.c: if the file table is not present, try to load
11008         all the modules, since we don't have info about them
11009         having or not metadata (bug #80517).
11010         * assembly.c: allow mono_assembly_load_references () to
11011         work for netmodules.
11012
11013 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11014
11015         * image.c, metadata-internals.h, object.c: execute module
11016         cctors when running on the 2 runtime if present (bug #80487).
11017
11018 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11019
11020         * icall.c: optimized InitializeArray() on bigendian.
11021
11022 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11023
11024         * icall.c: fix for the broken ARM FPA double format.
11025
11026 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11027
11028         * icall.c: handle endian issues for r4 and r8 types, too, in
11029         the InitializeArray() icall.
11030
11031 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11032
11033         * loader.c (mono_loader_error_prepare_exception): Clear the error
11034         once we have extracted the information from it, do this before we
11035         call into the JIT's class loading mechanisms.
11036
11037         * object.c (mono_class_create_runtime_vtable): Do not clear the
11038         loader error before calling mono_class_get_exception_for_failure
11039         as the loader error is needed inside
11040         mono_class_get_exception_for_failure to throw the error (thinko).
11041
11042         Fixes #80521
11043         
11044 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11045
11046         * reflection.c: align fields rva data so it's faster to load at
11047         runtime.
11048
11049 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11050
11051         Prepare to simplify GenericMethod handling.
11052         * class-internals.h (mono_method_get_context): New accessor function.
11053         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11054         rather than directly accessing '->context' field.
11055
11056         * class-internals.h (_MonoGenericParam.method): Move ...
11057         (_MonoGenericContainer): ... here.  Add into union with klass field.
11058         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11059         Update to changes.
11060
11061 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11062
11063         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11064         the wrapper type enum and reduce relocations.
11065
11066 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11067
11068         * reflection.c (inflate_mono_method): Reuse method instantiation
11069         from the generic method, if available.
11070
11071 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11072
11073         * marshal.c (emit_marshal_variant): Fix conv_arg
11074         type in last commit, based on whether parameter is byref.
11075         
11076 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11077
11078         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11079         marshalling.
11080         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11081         MONO_TYPE_OBJECT back for VARIANT support.
11082
11083 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11084
11085         * marshal.c, marshal.h, icall-def.h: Implement 
11086         Marshal.ReAllocCoTaskMem.
11087
11088 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11089
11090         * marshal.c: memory retention fixes: use the proper
11091         image cache for runtime_invoke method lookups.
11092
11093 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11094
11095         * mempool.c: added code to help debug mempool allocations.
11096
11097 2007-01-11  Dick Porter  <dick@ximian.com>
11098
11099         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11100         support (experimenting with faking it with IP_MTU_DISCOVER for
11101         systems that don't have IP_DONTFRAGMENT.)
11102         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11103         icall.
11104
11105         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11106
11107         * socket-io.h: Add new fields to MonoSocketAsyncResult
11108         corresponding to the new ones in Socket.cs.
11109
11110 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11111
11112         Fix IronPython regression mentioned in #80249
11113         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11114         'cached_context' field, since it may have been initialized as a
11115         side-effect of metadata parsing.
11116
11117         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11118         (_MonoGenericClass.cached_class): Move here and rename from lone
11119         remaining field of ...
11120         (_MonoInflatedGenericClass): ... this.  Remove.
11121         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11122         to changes.
11123
11124         Fix mcs/tests/test-128.cs regression.
11125         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11126         2007-01-10 change below.
11127         [MONO_TYPE_OBJECT]: Recurse into array case.
11128
11129 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11130
11131         * class-internals.h (mono_get_inflated_generic_class): Remove.
11132         * class.c (mono_get_inflated_generic_class): Remove.
11133         (mono_generic_class_get_class): Rename from
11134         mono_class_create_generic.
11135         (mono_class_from_mono_type) [GENERICINST]: Use it.
11136         * reflection.c, metadata.c: Update to changes.  Use
11137         'mono_class_from_mono_type'.
11138
11139 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11140
11141         * reflection.c: use passed type when encoding an array element
11142         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11143
11144 2007-01-09  Robert Jordan  <robertj@gmx.net>
11145
11146         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11147         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11148         Fixes bug #80392.
11149
11150 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11151
11152         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11153
11154         * object.c (set_value): Avoid aliasing between type->data.klass
11155         and type->data.generic_class.
11156
11157         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11158
11159 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11160
11161         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11162         between type->data.klass and type->data.generic_class.
11163
11164 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11165
11166         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11167         value in out parameters.
11168
11169 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11170
11171         Simplify invariant for MonoGenericClass::klass field.
11172         * class.c (mono_class_create_generic): Verify 'klass' is null.
11173         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11174         initialize 'klass' field.
11175
11176 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11177
11178         Ongoing work to avoid redundant data and simplify invariants.
11179         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11180         'generic_class', and change type to a GenericInst.
11181         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11182         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11183
11184 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11185
11186         * class.c : skip io-layer under PLATFORM_WIN32.
11187
11188 2007-01-03  Tor Lillqvist  <tml@novell.com>
11189
11190         Fix #80305: In a bundled executable, look in the bundled exe
11191         assembly to determine the runtime version. Add the possibility to
11192         bundle also the machine.config file.
11193         
11194         * assembly.c (mono_assembly_open_from_bundle): Make
11195         non-static. Allow being called even if we have no bundled
11196         assemblies, and return NULL right away in that case.
11197
11198         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11199         here.
11200
11201         * domain.c (app_config_parse): Take an assembly exe file name as
11202         parameter instead of a config file name. Check for a bundled
11203         config file for that assembly by calling
11204         mono_config_string_for_assembly_file() (see below) before looking
11205         for one in the file system.
11206         (get_runtimes_from_exe): Corrsponding change to call of
11207         app_config_parse().
11208         (get_runtimes_from_exe): Check for bundled assembly exe file first
11209         by calling mono_assembly_open_from_bundle(). If no bundled
11210         assembly exe file is found, call mono_image_open() as before to
11211         look it up in the file system.
11212
11213         * mono-config.c: Add variable bundled_machinec_onfig.
11214         (mono_config_string_for_assembly_file): New function.
11215         (mono_config_for_assembly): Move code snippet that looks for a
11216         bundled assembly .config file into the above new function. Call
11217         it.
11218         (mono_register_machine_config, mono_get_machine_config): New
11219         functions to set and retrieve
11220
11221         * assembly.h: Declare mono_register_machine_config().
11222
11223         * mono-config.h: Declare mono_get_machine_config() and
11224         mono_config_string_for_assembly_file().
11225
11226         * icall.c: No declaration of environ necessary on Win32. It is
11227         declared (as a macro expanding to a function call) in stdlib.h.
11228         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11229         New internal mono function. Returns the value of
11230         mono_get_machine_config() as a Mono string.
11231
11232         * icall-def.h: Add get_bundled_machine_config().
11233
11234 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11235
11236         Remove redundant field
11237         * class-internals.h (_MonoGenericContext.container): Remove field.
11238         * loader.c (mono_method_get_signature_full): Don't parse a
11239         "container" for a signature parse when the signature is inflated
11240         immediately.
11241         (method_from_methodspec): Likewise, for a generic_inst.
11242         * class.c, metadata.c, reflection.c: Update to changes.
11243
11244 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11245
11246         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11247         'cached_context', and change semantics -- it starts off NULL, and
11248         is initialized on demand.
11249         * class.c (mono_generic_class_get_context): New accessor to
11250         replace 'context' field accesses.
11251         (mono_class_get_context): New helper.
11252         (*): Update to changes.
11253         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11254
11255 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11256
11257         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11258         before the memcpy.   Fixes Marshal2 regression.
11259
11260 2007-01-02  Jb Evain  <jbevain@gmail.com>
11261
11262         * blob.h: add a MONO_TYPE_ENUM definition
11263         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11264         fix the encoding of arrays of enums in custom attributes.
11265
11266         Fixes #79666.
11267
11268 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11269
11270         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11271         string is null terminated, but only cut the string short if it
11272         overflows the buffer.   
11273         
11274         (mono_string_to_byvalstr): Also fix this routine.   The code here
11275         was not properly terminating a string (it was only terminated
11276         because of the previous catch-all memset). 
11277
11278         I left the memset, because I do not know if applications expect
11279         the runtime to clear this region. 
11280
11281         Fixes #79944.
11282
11283         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11284         Clear the error before returning to unmanaged code to prevent the
11285         runtime from being confused later on (fixes  80420).
11286         (ves_icall_type_from_name): Always call mono_loader_clear_error
11287         after parsing a type that could have failed.
11288         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11289
11290         * loader.c (mono_loader_clear_error): Fix indentation.
11291
11292 2006-12-28  Martin Baulig  <martin@ximian.com>
11293
11294         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11295
11296 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11297
11298         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11299         getting a token for an EnumBuilder.
11300
11301 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11302
11303         * reflection.c: be more careful in case resource generation
11304         fails to create the data array.
11305
11306 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11307
11308         * sgen-gc.c: write barrier for clone and fix unregister handles.
11309
11310 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11311
11312         * reflection.c: some fixes needed in the generics code for the moving GC.
11313
11314 2006-12-22  Robert Jordan  <robertj@gmx.net>
11315
11316         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
11317         account. Fixes bug #80299.
11318
11319 2006-12-21  Raja R Harinath  <rharinath@novell.com>
11320
11321         Fix WaitHandle usage in delegates.
11322         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
11323         * object.c (mono_wait_handle_new): Use the property set method to
11324         initialize the handle.
11325         (mono_wait_handle_get_handle): New.
11326         * threadpool.c (mono_async_invoke): Use it.
11327         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
11328         Likewise.
11329         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
11330
11331 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
11332
11333         * marshal.c (emit_marshal): Call emit_marshal_variant and
11334         emit_marshal_com_interface when applicable.
11335         (emit_marshal_variant, emit_marshal_com_interface): Add
11336         methods for this case and remove if's from emit_marshal_object.
11337         
11338 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
11339
11340         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
11341
11342 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
11343
11344         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
11345         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
11346         and GlobalFree on Windows. Remove FIXME.
11347
11348 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11349
11350         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
11351         implementation for managed objects.
11352
11353 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11354
11355         * object.c: implemented code to be used for checking
11356         that no reference field overlaps with non-references.
11357
11358 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11359
11360         * threadpool.c: fix queue code to be compatible with the
11361         moving GC.
11362
11363 2006-12-18  Miguel de Icaza  <miguel@novell.com>
11364
11365         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
11366         in structures by throwing ArgumentNullException.
11367
11368         (emit_marshal_safehandle): Also when they are null parameters.
11369
11370         (emit_marshal_safehandle): Add support for ref
11371         SafeHandles parameters
11372
11373 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11374
11375         * profiler.c: updated to use the mono-dl API instead of
11376         gmodule.
11377
11378 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11379
11380         * profiler.c: updated to use the mono-dl dynamic loading
11381         API instead of gmodule.
11382
11383 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11384
11385         * profiler.c: use readlink, older versions of glib don't have
11386         g_file_read_link ().
11387
11388 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11389
11390         * profiler.c: try to detect the path to mono if libc fails to provide
11391         a useful name (bug #80286).
11392
11393 2006-12-16  Raja R Harinath  <rharinath@novell.com>
11394
11395         Fix #80242
11396         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
11397         instance, use the generic type definition instead.
11398         (ves_icall_Type_GetNestedTypes): Likewise.
11399         * class.c (mono_class_create_generic): Always set the
11400         nested_classes of a generic instance to NULL, even if the generic
11401         type definition has nested types.
11402
11403 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
11404
11405         * marshal.c (mono_string_from_bstr): Revert previous Windows change
11406         and fix on Linux.
11407         
11408 2006-12-15  Miguel de Icaza  <miguel@novell.com>
11409
11410         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
11411         my arguments were in the wrong order.   I also fixed the Windows
11412         version which seems to have had the same issue.
11413
11414         (mono_free_bstr): On Unix, this is g_free.
11415         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
11416         conversions (for the tests in corlib to pass).
11417
11418 2006-12-14  Miguel de Icaza  <miguel@novell.com>
11419
11420         * marshal.c (emit_ptr_to_object_conv): For now, ignore
11421         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
11422         exception if a ref SafeHandle in a struct has changed).
11423         
11424         (emit_struct_conv): Do not perform layout checks for classes
11425         derived from SafeHandle, as those are specially handled. 
11426
11427         (emit_object_to_ptr_conv): Add support for
11428         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
11429
11430         (emit_marshal_safehandle): Implement conversion of return values
11431         of safehandles (MARSHAL_ACTION_CONV_RESULT).
11432         
11433         * threads.c: WaitHandle now is compiled with two different handles
11434         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
11435         for 2.0.
11436         
11437         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
11438         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
11439         these routines to cope with both kinds of fields.
11440
11441 2006-12-12  Miguel de Icaza  <miguel@novell.com>
11442
11443         * metadata.c (mono_type_to_unmanaged): Handle the case where
11444         type->data.klass is a SafeHandle, and in that case, return the
11445         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
11446         MONO_MARSHAL_CONV_SAFEHANDLE. 
11447
11448 2006-12-11  Miguel de Icaza  <miguel@novell.com>
11449
11450         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
11451         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
11452         calling emit_marshal_object.
11453
11454         (emit_marshal_safehandle): Implement marshalling of
11455         SafeHandle parameters (no ref support yet).
11456
11457         (MarshalAction): Document the defines as I implement
11458         them for SafeHandle.
11459
11460         (emit_marshal_object): indentation police.
11461
11462         * class-internals.h: Define MonoSafeHandle.
11463         Add safehandle_class to MonoDefaults type.
11464
11465         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
11466         list of classes to check for fields. 
11467
11468         * domain.c (mono_init_internal): Add SafeHandle to the list of
11469         mono_defaults loaded.
11470
11471 2006-12-15  Raja R Harinath  <rharinath@novell.com>
11472
11473         Fix #80253
11474         * reflection.c (mono_reflection_bind_generic_parameters): If the
11475         generic type definition is a type builder, ensure that it is fully
11476         initialized before instantiating it.  Kill some dead code.
11477
11478 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11479
11480         * object.c: clear the loader_error () before loading
11481         more metadata stuff (bug #80258).
11482
11483 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
11484
11485         * icall.c, icall-defs.h: type modifiers icalls for
11486         parameters and properties.
11487
11488 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11489
11490         * object.c, icall.c: fixed warnings.
11491
11492 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11493
11494         * marshal.c: fixed a couple of leaks and coding style in a few places.
11495
11496 2006-12-08  Dick Porter  <dick@ximian.com>
11497
11498         * process.c: Cope with NULL ProcessStartInfo arguments on windows
11499         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
11500         80173.
11501
11502 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11503
11504         * process.c: ProcessStartInfo may have only filename set and
11505         arguments can be NULL.
11506
11507 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11508
11509         * icall.c: fix leak found by Robert Jordan.
11510
11511 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11512
11513         * marshal.c, marshal.h: generate managed method to access an element
11514         of a multi-dimensional array.
11515
11516 2006-11-30  Paolo Molaro (lupus@ximian.com)
11517
11518         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
11519
11520 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11521
11522         * icall.c: back out GetFields () fix until the serialization code is
11523         fixed to not depend on the incorrect behaviour.
11524
11525 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11526
11527         * profiler.c: provide defaults if none are set.
11528
11529 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11530
11531         * Makefile.am, attrdefs.h: new public header file with
11532         constants for attributes for use by embedders.
11533
11534 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11535
11536         * icall.c: GetFields () fix for bug #80064.
11537
11538 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
11539
11540         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
11541         removed long unused icalls.
11542
11543 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
11544   
11545         * marshal.c: 
11546                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
11547                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
11548                 can be generated without a delegate class.
11549                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
11550         
11551         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11552
11553 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11554
11555         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
11556         #80069.
11557
11558 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11559
11560         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
11561         icall-def.h: added icalls needed by System.GC.
11562
11563 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
11564
11565         * loader.c: ensure the class in catch clauses is handled
11566         correctly for generics methods (fixes bug#79980).
11567
11568 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11569
11570         * monitor.h, monitor.c: added mono_locks_dump () function
11571         to help debug deadlocks involving managed locks.
11572
11573 2006-11-13  Dick Porter  <dick@ximian.com>
11574
11575         * file-io.c (get_file_attributes): If the file is a symlink try
11576         and get the stat data for the target, but also add the
11577         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
11578         the specs for the windows symlink support, but will probably have
11579         to be reworked when I have test data from a vista machine.  Fixes
11580         bug 79887.
11581
11582 2006-11-13  Dick Porter  <dick@ximian.com>
11583
11584         * gc.c (mono_domain_finalize): 
11585         * marshal.c (mono_delegate_begin_invoke): 
11586         * threadpool.c (socket_io_init, mono_thread_pool_init)
11587         (mono_thread_pool_finish): 
11588         * monitor.c (mono_monitor_try_enter_internal): 
11589         * threads.c (mono_thread_resume, mono_thread_init)
11590         (mono_thread_suspend_all_other_threads)
11591         (mono_thread_execute_interruption): 
11592         * appdomain.c (mono_domain_unload): Check for NULL error returns
11593         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
11594         75733.
11595
11596 2006-11-11  Miguel de Icaza  <miguel@novell.com>
11597
11598         * process.c
11599         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
11600         Only close the handle if the value of the handle is not
11601         INVALID_HANDLE_VALUE.  This just makes the process a bit more
11602         robust.
11603
11604         Improvement for #75733, so that we do not run into this problem. 
11605
11606         
11607         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
11608         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
11609         internal variables.  Fixes #79462 
11610         
11611
11612 2006-11-09  Dick Porter  <dick@ximian.com>
11613
11614         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11615         Use poll() not select().  Fixes bug 79397.
11616
11617 2006-11-09  Raja R Harinath  <rharinath@novell.com>
11618
11619         Fix #79872
11620         * assembly.c (mono_assembly_load_from_full): Check that the given
11621         image has an assembly manifest.
11622
11623 2006-11-09  Ankit Jain  <jankit@novell.com>
11624
11625         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
11626         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
11627         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
11628
11629 2006-11-07  Dick Porter  <dick@ximian.com>
11630
11631         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11632         Put the old resolver behaviour back for pre-2.0 profiles.
11633
11634 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
11635
11636         * threadpool.c: precise GC and locking fixes.
11637
11638 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
11639
11640         * class.c: don't load types that have an explicit unaligned
11641         managed reference. Provide better info in the TypeLoad exception.
11642         Part of the fix for bug #79744.
11643         * object.c: use the correct check for class type load issues.
11644
11645 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11646
11647         * class.c: enforce alignment of fields with managed references
11648         even when Pack=1 is forced by the user (bug #77788).
11649
11650 2006-11-03  Dick Porter  <dick@ximian.com>
11651
11652         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11653         If the address reverse lookup fails, return it as the hostname
11654         anyway.  Fixes bug 79721.
11655
11656 2006-11-03  Dick Porter  <dick@ximian.com>
11657
11658         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
11659         Fix build on Windows.
11660
11661 2006-11-02  Dick Porter  <dick@ximian.com>
11662
11663         * icall-def.h: 
11664         * object-internals.h: 
11665         * exception.c (mono_get_exception_thread_interrupted): 
11666         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
11667         Fixes bug 74525.
11668
11669         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
11670         Check for pending Thread.Interrupt.
11671
11672 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
11673         * loader.c: Fixed bug 79684.
11674
11675 2006-10-27  Dick Porter  <dick@ximian.com>
11676
11677         * file-io.c (get_file_attributes): Force symlinks to directories
11678         to be returned as a regular file.  Fixes bug 79733.
11679 2006-10-26  Dick Porter  <dick@ximian.com>
11680
11681         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
11682         CreateFile to open a directory then we need to set the
11683         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
11684
11685 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11686
11687         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
11688         friends.
11689
11690 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11691
11692         * sgengc.c: small cleanup of timer code.
11693
11694 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11695
11696         * sgen-gc.c: fix some warnings and start adding support for
11697         complete object removal on domain unload.
11698
11699 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
11700
11701         * assembly.c: build_assembly_name should not consider a version
11702         number without build or revision number invalid. Fixes bug #79715.
11703
11704 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
11705
11706         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
11707         call kernel32 function OutputDebugString directly.
11708         
11709         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11710         
11711 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
11712
11713         * reflection.c: small cleanup, using a function to insert a MonoString
11714         in the string heap.
11715
11716 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
11717
11718         * reflection.c: moving GC fixes.
11719
11720 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11721
11722         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
11723         all the objects with finalizers belonging to an unloading appdomain.
11724
11725 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11726
11727         * sgen-gc.c: added ability to allocate even when the nursery is fully
11728         pinned and fixed a couple of bugs.
11729
11730 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11731
11732         * threads.h: Revert the last change for now.
11733
11734         * threads.h (mono_thread_get_pending_exception): Rename this to
11735         mono_thread_get_undeniable_exception ().
11736
11737 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
11738
11739         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
11740         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
11741         when fname does not refer to valid assembly. This result in a more
11742         meaningful error message.
11743         * exception.c: added mono_get_exception_bad_image_format2 which 
11744         constructs a BadImageFormatException using the ctor taking a custom
11745         message and the file name. Passing in a NULL msg results in a default
11746         message.
11747         * exception.h: define mono_get_exception_bad_image_format2 function.
11748         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
11749         when file name pointed to an invalid IL image. Use 
11750         mono_get_exception_file_not_found2 to construct FileNotFoundException,
11751         as this results in a more meaningful error message.
11752
11753 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11754
11755         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
11756         #79465.
11757
11758 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11759
11760         * metadata.c (mono_type_size): Change the align parameter to guint32 for
11761         consistency with the other _size functions.
11762         (mono_type_stack_size): Ditto.
11763
11764         * class.c object.c icall.c: Fix warnings caused by the above change.
11765
11766         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
11767
11768         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
11769
11770         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
11771
11772 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
11773
11774         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
11775         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
11776         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
11777         threadpool.h, threads-types.h: mark more internal functions.
11778
11779 2006-10-11  Dick Porter  <dick@ximian.com>
11780
11781         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11782         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
11783         reproduce the bug even before applying the fix.)
11784
11785 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
11786
11787         * reflection.c: allow retrieving attributes for arguments in generic
11788         methods (bug #79241).
11789
11790 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
11791
11792         * debug-mono-symfile.c: properly check fopen () result (found by
11793         coverity).
11794
11795 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
11796
11797         * reflection.c: make error message clearer and fixed two
11798         issuelets found by Coverity.
11799
11800 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
11801
11802         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
11803
11804 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
11805
11806         * object-internals.h, gc-internal.h, profiler-private.h:
11807         mark internal functions.
11808
11809 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11810
11811         * reflection.c: put data in the text section.
11812         * icall.c: recognize more types in type_from_typename ().
11813         * process.c, marshal.c: added some GC FIXMEs.
11814
11815 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11816
11817         * loader.c: check for NULL before initializing.
11818
11819 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
11820
11821         * gc.c (finalizer_thread): Use a non-alertable wait here.
11822
11823         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
11824         until the correct solution is found.
11825
11826 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * reflection.c (mono_module_get_object): Avoid an assert when operating on
11829         modules with no metadata. Fixes #79596.
11830
11831         * image.c (load_metadata_ptrs): Put back the error message when
11832         the #- heap is encountered since the support is not complete yet.
11833
11834 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11835
11836         * gc.c: do not allow the user to SuppressFinalize () a
11837         delegate because it would leak the trampoline if present.
11838
11839 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
11840
11841         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
11842         PropertyPtr table.
11843
11844 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11845
11846         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
11847
11848         * metadata.c (mono_metadata_get_param_attrs): Ditto.
11849
11850         * row-indexes.h: Add definitions for *Ptr tables.
11851
11852         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
11853
11854         * metadata.c (mono_metadata_translate_token_index): New helper function to
11855         translate table indexes used in uncompressed metadata.
11856         (mono_metadata_decode_table_row): Ditto.
11857         (mono_metadata_decode_table_row_col): Ditto.
11858
11859         * metadata.c: Add table schema for *Ptr tables.
11860
11861         * class.c loader.c: Use the new helper function to access the affected metadata
11862         tables.
11863         
11864         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
11865         #38532.
11866         
11867 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
11868
11869         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
11870         sequences which can be unbounded in size. Fixes #79583.
11871
11872 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11873
11874         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
11875         static initialization.
11876
11877         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
11878
11879         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
11880
11881         * domain.c (mono_domain_free): Free up type_init_exception_hash.
11882
11883         * object.c (mono_runtime_class_init): Implement correct semantics when a static
11884         ctor fails, i.e. throw the same exception on subsequent accesses.
11885         
11886 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
11887
11888         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
11889         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
11890         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
11891         Handle marshalling of interfaces and VARIANTs contained in structs.
11892         
11893         Code is contributed under MIT/X11 license.
11894         
11895 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11896
11897         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
11898         
11899         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
11900         mempool.
11901
11902 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11903
11904         * console-io.c: ignore previous SIGINT handler.
11905
11906 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11907
11908         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
11909         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
11910         #79460, #79461, #79485.
11911
11912         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
11913
11914         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
11915         #79217.
11916
11917 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11918
11919         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
11920         could be generated from it.
11921
11922 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
11923
11924         * rand.c: fix read loop to correctly handle EINTR.
11925
11926 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11927
11928         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
11929         internal calls are defined to keep methods closer to the declaring
11930         type and allow a significant reduction in runtime relocations and
11931         memory usage.
11932
11933 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
11934
11935         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
11936         exception message to have FileNotFoundException use the default
11937         assembly load error message. Fixes bug #79426.
11938         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
11939
11940 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11941
11942         * threadpool.c: (start_thread_or_queue) use the root domain when
11943         creating the thread instead of the async object one.
11944
11945 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
11946
11947         * class.c, object.c, class-internals.h, reflection.c:
11948         for arrays, store element_size inside MonoClass (speedup
11949         for array object creation).
11950
11951 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
11952
11953         * icall.c: fixed CodeBase to use the file name and not the module
11954         name (bug #79365).
11955
11956 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
11957
11958         * mono-debug.c, mono-debug.h: export find_method as
11959         mono_debug_find_method ().
11960
11961 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11962
11963         * debug-helpers.c, class-internals.h: added a few functions useful
11964         when debugging under gdb.
11965
11966 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11967
11968         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
11969         characters that need special handling.
11970
11971 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11972
11973         * mono-config.c: make the os/cpu specification more flexible,
11974         allowing lists and negation.
11975
11976 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
11977
11978         * marshal.c: COM Interop fixes. Handle case where method->klass.
11979         is interface. Handle BSTR/MonoString when null. Use CDECL as 
11980         calling convention on non-windows platforms. This is for
11981         compatibility with XPCOM and MainWin COM.
11982         
11983         Code is contributed under MIT/X11 license.
11984         
11985
11986 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
11987
11988         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
11989         correctly. Fixes #79217.
11990
11991         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
11992
11993 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
11994
11995         * mono-config.c: allow both an os and cpu attribute for dllmap
11996         and dllentry elemnets to enable a single config file to be used
11997         for multiple architectures.
11998
11999 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12000
12001         * loader.c: MonoLoaderError was cleared too soon on load failure.
12002         Fixes bug #79424.
12003
12004 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12005
12006         * icall.c: use the defining class vtable when accessing a
12007         static field, not a pobblibly derived class.
12008
12009 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12010
12011         * icall.c string-icalls.c: Remove references to unicode.h.
12012
12013         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12014
12015         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12016
12017         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12018         indicating the image where custom marshaller types should be looked up.
12019         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12020         custom marshallers, instead of corlib. Fixes #79425.
12021
12022 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12023
12024         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12025
12026 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12027
12028         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12029         Implement Environment.ProcessorCount.
12030         
12031         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12032         Implement Environment.ProcessorCount.
12033         
12034         * icall.c: 
12035         Add Environment.ProcessorCount icall.
12036         
12037         Patch by Jason McFall.
12038
12039 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12040
12041         * assembly.c: don't append .exe/.dll when the filename already contains
12042         one of those extensions.
12043
12044 2006-09-12  Martin Baulig  <martin@ximian.com>
12045
12046         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12047         to array interfaces.
12048
12049 2006-09-11  Martin Baulig  <martin@ximian.com>
12050
12051         * reflection.c (mono_image_build_metadata): Create the
12052         MethodImpl's after emitting all types and methods, so we don't
12053         need another fixup pass for them.
12054
12055 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12056
12057         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12058         change.
12059
12060 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12061
12062         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12063         unload.
12064
12065 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12066
12067         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12068         args is not set. Fixes #78926.
12069
12070 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12073
12074         * image.c (load_class_names): Move this to class.c, and rename it to 
12075         'mono_image_init_name_cache'.
12076         (load_modules): Fix a warning.
12077
12078         * class.c icall.c image.c: Initialize image->name_cache lazily.
12079
12080         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12081         on its name using information in the AOT file.
12082
12083         * class.c (mono_class_from_name): Use the new hook function.
12084
12085 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12086
12087         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12088         correctly.
12089
12090         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12091         Fixes #79289.
12092         
12093 2006-09-06  Martin Baulig  <martin@ximian.com>
12094
12095         * icall.c (mono_lookup_internal_call): Small fix.
12096
12097 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12098
12099         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12100         double g_free.
12101
12102 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12103
12104         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12105         when --debug is specified.
12106
12107 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12108
12109         * class.c (setup_generic_array_ifaces): Fix a warning.
12110
12111 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12112
12113         * Temporarily remove the patch to assemly.c that checks the
12114         assembly versions as it breaks our gacutil.
12115
12116 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12117
12118         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12119
12120         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12121         a net 1.0 runtime.
12122
12123         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12124         created using the default ctor. Fixes #79152.
12125         (mono_string_builder_to_utf16): Ditto.
12126
12127 2006-09-01  Martin Baulig  <martin@ximian.com>
12128
12129         Fix handling of the generic array interfaces.
12130
12131         * class-internals.h
12132         (MonoDefaults): Removed `generic_array_class' and added
12133         `generic_ilist' class.
12134
12135         * class.c
12136         (mono_bounded_array_class_get): Add the new generic array interfaces.
12137         (setup_generic_array_ifaces): New static method; create vtable
12138         entries for each method in the generic array interfaces.
12139
12140         * metadata.c
12141         (select_container): Allow "parent-less" generic methods.
12142
12143         * marshal.c
12144         (mono_marshal_get_generic_array_helper): New public method.
12145
12146         * icall.c
12147         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12148         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12149         moved the interncall into System.Array.
12150
12151 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12152
12153         A few more cases of avoiding work on types with ->byref set.
12154         Has the real fix for #79238
12155         * icall.c (is_generic_parameter): New helper.
12156         (ves_icall_Type_GetGenericParameterPosition): Use it.
12157         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12158         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12159         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12160         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12161         reference types.
12162         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12163         reference types.
12164         (ves_icall_Type_get_IsGenericInstance): Likewise.
12165         (ves_icall_Type_get_IsGenericType): Likewise.
12166
12167 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12170         class if possible.
12171
12172         * mempool.h (mono_mempool_get_allocated): New helper function.
12173
12174         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12175         change.
12176
12177         * mempool.c: Fix warnings and the calculation of stats.
12178
12179         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12180
12181         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12182
12183         * loader.c (mono_get_method_from_token): Update method_count stat.
12184
12185         * class-internals.h (MonoStats): Add some stats.
12186
12187 2006-08-31 Robert Jordan  <robertj@gmx.net>
12188
12189         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12190         with managed variants.
12191         All code is contributed under the MIT/X11 license.
12192         
12193 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12194
12195         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12196         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12197
12198         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12199
12200         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12201         with cycles in classes.
12202
12203         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12204
12205         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12206         missing a [MarshalAs] directive. Fixes #79203.
12207
12208         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12209         klass->marshal_info. Fixes #79217.
12210
12211 2006-08-30  Martin Baulig  <martin@ximian.com>
12212
12213         Committing a patch from Joachim Ante <joe@otee.dk>:
12214         Add support for binary data symbol stores.
12215
12216         * debug-mono-symfile.c
12217         (mono_debug_open_mono_symbol_file): Renamed into
12218         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12219         arguments.
12220
12221         * mono-debug.c
12222         (mono_debug_open_image): Added `raw_contents' and `size' args.
12223         (mono_debug_init_2_memory): New public function.
12224
12225 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12226
12227         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12228
12229 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12230
12231         * appdomain.c: implement support for ShadowCopyFiles.
12232
12233 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12234
12235         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12236         when value is NULL (and should remove CID #51).
12237
12238 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12239
12240         * image.c: moved 2 functions to ../utils.
12241
12242 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12243
12244         * gc.c: cope with the target object of a GC handle being NULL
12245         (bug #78877).
12246
12247 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12248
12249         * class.c: recursively check parent's explicit implementations
12250         of interface methods (fixes bug #79125).
12251
12252 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12253
12254         * filewatcher.c: Avoid warnings when building, do not redefine
12255         constants that are defined.
12256
12257         Remove warnings.
12258
12259 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12260
12261         * image.c: don't fail when the link points to an absolute path.
12262
12263 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12264
12265         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12266         Fix CID #3.
12267
12268 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12269
12270         * image.c (full_path): A new method used to obtain the actual path
12271         of an assembly even in the presence of symbolic links.  
12272
12273         This is necessary for the case where we are running a binary that
12274         has been GACed, but we are using the "published" path name
12275         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12276         file in the GAC.
12277
12278         This was the source of the failure for the `xsp' command with the
12279         recent AppDomain changes, as far as the runtime was concerned,
12280         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12281         $prefix/mono/gac/blah/version/blah.exe.
12282
12283         (do_mono_image_open): use full path
12284
12285 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12286
12287         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12288
12289 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12290
12291         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12292         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12293
12294 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12295
12296         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12297         small structures. Fixes #78990.
12298
12299 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12302
12303         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12304
12305 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12306
12307         * appdomain.c:
12308         * marshal.c: don't load all the assemblies from a domain into newly
12309         created ones. The new domains might have different rules and load
12310         assemblies from different locations. Fixes bug #76757.
12311
12312         Patch by Lluis. Conflicts resolved by Brian Crowell.
12313
12314 2006-08-16  Alp Toker  <alp@atoker.com>
12315
12316         * socket-io.c: First half of the fix for #79084.
12317         Set sa_size to the length of the content, not that of the struct.
12318         Don't add NULL suffix to the content, this should be done in
12319         managed code if needed.
12320
12321 2006-08-14  Raja R Harinath  <rharinath@novell.com>
12322
12323         Fix part of #79012
12324         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
12325         mono_metadata_parse_type returns NULL.
12326
12327 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
12328
12329         * normalization-tables.h : new file for string normalization data.
12330         * locales.c, locales.h, icall.c :
12331           added load_normalization_resource() for string normalization,
12332           and icall as well.
12333         * Makefile.am : added normalization-tables.h to the sources.
12334
12335 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
12336
12337         * marshal.c: Add more helper functions to reduce code duplication and use them
12338         everywhere.
12339
12340 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
12341
12342         * marshal.c: Fix non-x86 stdcall warnings.
12343         
12344         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
12345         them everywhere.
12346
12347 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
12348
12349         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
12350         type check on multi-dimensional arrays. Fixes #79000.
12351
12352 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12353
12354         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
12355         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
12356         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
12357         * class-internals.h: add is_com_object to class structure.
12358         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
12359         null checks to COM object marshalling. Fix .ctor call on RCW.
12360         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
12361         
12362         All code is contributed under the MIT/X11 license.
12363
12364 2006-08-09  Dick Porter  <dick@ximian.com>
12365
12366         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
12367         racing mono_monitor_allocator_lock() somewhere, so don't delete
12368         the critical section for now.  Found by running and exiting
12369         monodevelop.
12370
12371 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
12372
12373         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
12374         (ves_icall_System_ComObject_FindInterface): Ditto.
12375         (ves_icall_System_ComObject_CacheInterface): Ditto.
12376
12377         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
12378         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
12379
12380 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12381
12382         * threadpool.c: treat pipes from process asynchronous reads as sockets
12383         when reading from them, so we get select/poll or epoll to wait for
12384         data.
12385
12386 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
12387
12388         * loader.c: Fix a typo (CID #233) in the null check.
12389
12390 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
12391
12392         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
12393         Hopefully fixes #78949.
12394         
12395         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
12396         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
12397         bytes. Fixes #78972.
12398
12399 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12400
12401         * filewatcher.c: we need to set errno here.
12402
12403 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12404
12405         * filewatcher.c: let Win32Exception get the error value.
12406
12407 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12408
12409         * filewatcher.c: translate errno into win32 errors for Win32Exception
12410         to know what happened.
12411
12412 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12413
12414         * threadpool.c: Fix more warnings.
12415
12416         * assembly.c (search_loaded): Fix warnings.
12417
12418         * threadpool.c (mono_thread_pool_finish): Fix warnings.
12419         (mono_async_invoke): Ditto.
12420
12421 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
12422
12423         * object.c (mono_remote_class_vtable): Need to create proxy vtable
12424         entries for __ComObject type in addition to ComImport types.
12425         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
12426         about hash table.
12427         
12428         All code is contributed under the MIT/X11 license.
12429
12430 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12431
12432         * image.c: avoid tentative loading of modulerefs that contain
12433         no metadata (P/Invoke library names).
12434
12435 2006-07-28  Dick Porter  <dick@ximian.com>
12436
12437         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
12438         mono_loader_lock() somewhere, so don't delete the critical section
12439         for now.  Found by running and exiting monodevelop.
12440
12441 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12442
12443         * filewatcher.c: define the inotify syscalls when we're building on
12444         linux and have sys/syscall.h. The build system might not have support
12445         for inotify but the target system might have it.
12446
12447 2006-07-26  Miguel de Icaza  <miguel@novell.com>
12448
12449         * domain.c: Documentation updates.
12450
12451         * loader.c (mono_free_method): Do not release the method
12452         information if we are being profiled, as profilers will use this
12453         information at shut down to present some data to the user.
12454
12455         This is needed so that the profiler does not crash, as the
12456         profiler tends to keep MonoMethods around, and they might become
12457         invalid if we free these.
12458
12459         (mono_get_method_constrained): Return the original CIL stream
12460         method as well, so verification can be performed against it.
12461
12462 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12463
12464         * filewatcher.[ch]: support for inotify file system watcher.
12465         * icall.c: add new internal calls for the inotify file system watcher.
12466
12467 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12468
12469         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
12470         #78888.
12471
12472 2006-07-20  Dick Porter  <dick@ximian.com>
12473
12474         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
12475         warning.
12476
12477 2006-07-20  Dick Porter  <dick@ximian.com>
12478
12479         * threads.c (start_wrapper): Do the thread cleanup while we still
12480         hold a reference to its object.  Fixes bug 78123.
12481
12482 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
12483
12484         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
12485         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
12486           "managed-to-managed".
12487         * icall.c: Redirect string constructors that take sbyte* to
12488           ves_icall_System_String_ctor_RedirectToCreateString.
12489         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
12490           to CreateString () methods with matching signature.
12491         * reflection.c: Use original security informations for
12492           MONO_WRAPPER_MANAGED_TO_MANAGED.
12493         * security-manager.c: Use original security informations for
12494           MONO_WRAPPER_MANAGED_TO_MANAGED.
12495         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
12496           that is a placeholder and only its address should be used.
12497         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
12498           that is a placeholder and only its address should be used.
12499
12500 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12501
12502         Begin implementing COM Interop.
12503         * appdomain.c: Increment corlib version.
12504         * class.c: Set ComImport classes' parent to __ComObject.
12505         * loader.c: Mark cominterop methods as such.
12506         * domain.c: Add __ComObject class to MonoDefaults structure.
12507         * image.c: Add 2 hashtables to the image for COM Interop related methods
12508         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
12509         using the mempool allocator
12510         
12511         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
12512         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
12513         declaration for mono_metadata_type_dup_mp.
12514         
12515         * debug-helpers.c: Added strings for two additional wrapper types
12516         * object.c: Create proxy objects for ComImport classes
12517         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
12518         and added __ComObject class to MonoDefaults structure.
12519         
12520         * object-internals.h: Finish MonoRealProxy definition, and add definition of
12521         MonoComInteropProxy and MonoComObject.
12522         
12523         * marshal.c: Added support for COM Interop
12524         (signature_cominterop): Converts managed signature to corresponding
12525         unmanaged COM signature.
12526         (cominterop_get_function_pointer): gets unmanaged function pointer via
12527         COM object vtable
12528         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
12529         (cominterop_get_method_interface): returns interface type that method is defined on
12530         (mono_mb_emit_cominterop_call): emits native call to function pointer
12531         gotten from vtable
12532         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
12533         that matches signature of unmanaged function.
12534         (cominterop_get_native_wrapper): wrapper around adjusted method call.
12535         (cominterop_get_invoke): forwards call from proxy to __ComObject
12536         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
12537         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
12538         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
12539         
12540         * marshal.h: Added Marshal icall declarations.
12541         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
12542         so we can access them in finalizer
12543         
12544 2006-07-14  Dick Porter  <dick@ximian.com>
12545
12546         * object.c (mono_type_initialization_cleanup): Fix a race
12547         condition by temporarily commenting out the critical section
12548         deletion.
12549
12550 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
12551
12552         * reflection.c (create_custom_attr): Fix some warnings.
12553         (create_custom_attr_data): Ditto.
12554         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
12555         types. Fixes #78855.
12556
12557 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
12558
12559         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
12560
12561         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
12562
12563 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12564
12565         * reflection.c (resolve_object): Add support for DynamicMethod.
12566
12567         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
12568         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
12569
12570 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
12571
12572         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
12573         don't leak GPtrArray's pdata has we have no use (nor free) for it.
12574
12575 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
12576
12577         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
12578         Fixes #77888.
12579
12580 2006-06-30  Raja R Harinath  <rharinath@novell.com>
12581
12582         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
12583         slightly: remove a shadow local variable.
12584
12585 2006-06-29  Raja R Harinath  <rharinath@novell.com>
12586
12587         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
12588         definition that introduces the virtual function slot.
12589         Also fix Coverity #105.
12590
12591 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
12592
12593         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
12594         for dynamic assemblies. Fixes #78724.
12595
12596 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
12597
12598         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
12599         Fixes #78722.
12600
12601 2006-06-21  Martin Baulig  <martin@ximian.com>
12602
12603         * reflection.c
12604         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
12605         fixes #76484.
12606
12607 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12608
12609         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
12610
12611 2006-06-20  Raja R Harinath  <rharinath@novell.com>
12612
12613         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
12614         nor TYPEREFs.
12615         * class.c (mono_class_create_from_typespec): Add 'context' argument.
12616         Inflate result if necessary.
12617         (mono_class_get_full): Remove old version.  Rename from
12618         'mono_class_get' and add 'context' argument.  Pass it to
12619         ..._create_from_typespec.
12620         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
12621         (mono_ldtoken): Revert change below.
12622
12623 2006-06-20  Martin Baulig  <martin@ximian.com>
12624
12625         * class.c (mono_ldtoken): Don't pass the generic context to
12626         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
12627
12628 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
12629
12630         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
12631         and later freeing it. Fixes #78638.
12632
12633 2006-06-15  Miguel de Icaza  <miguel@novell.com>
12634
12635         * icall.c (mono_class_get_throw): Revert over-zealous error
12636         throwing, the caller for mono_class_get_throw will cope with
12637         errors when classes are not properly initialized already.
12638
12639         The code still copes with loader exceptions though.
12640
12641         Fixes the regression in reftype1 and reftype3 from the CAS tests.
12642         
12643 2006-06-14  Miguel de Icaza  <miguel@novell.com>
12644
12645         Fixes the `make run1' version of RuntimeAbort (to be commited,
12646         source is in Bugzilla).
12647         
12648         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
12649         FALSE on class loading failure instead of returning true.
12650
12651         * class.c (mono_class_create_from_typedef): It is possible for
12652         mono_metadata_interfaces_from_typedef_full to fail if a class is
12653         not found, cope with this.
12654         
12655
12656 2006-06-14  Dick Porter  <dick@ximian.com>
12657
12658         * socket-io.c: 
12659         * process.c: Fix a bunch of signed/unsigned warnings from gcc
12660         4.1.1
12661
12662 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
12663
12664         * culture-info-table.h : oops, forgot to make it nsync with r61548.
12665
12666 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12667
12668         * icall.c: Another fix for building mono in Visual Studio.
12669
12670 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12671
12672         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
12673         
12674 2006-06-09  Martin Baulig  <martin@ximian.com>
12675
12676         * debug-mono-symfile.c: Put this back and really fix it this
12677         time. Sorry for all the trouble.
12678
12679 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12680
12681         * icall.c (mono_class_get_throw): Fix a warning.
12682         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
12683         ReflectionTypeLoadException if needed. Fixes #78606.
12684
12685         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
12686         (mono_class_init): Ditto.
12687
12688         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
12689         ref_only exceptions.
12690         (mono_loader_clear_error): Make this work even if there is no error.
12691
12692 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
12693
12694         * object-internals.h marshal.c marshal.h icall.c: Implement method 
12695         Marshal.GetComSlotForMethodInfo using internal call.
12696
12697 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
12698
12699         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
12700         a function for signalling it.
12701
12702         * class.c (mono_class_from_typeref): Use the new kind of loader error when
12703         a referenced assembly is not found.
12704
12705         * loader.c (mono_loader_error_prepare_exception): Add support for 
12706         LOADER_ERROR_ASSEMBLY. Fix formatting.
12707
12708 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
12709
12710         * domain.c appdomain.c class-internals.h marshal.c: Add support 
12711         for VARIANT marshalling on windows and increment corlib version
12712         since Variant struct was added.
12713
12714 2006-06-03  Miguel de Icaza  <miguel@novell.com>
12715
12716         * debug-mono-symfile.c: Revert Martin's previous patch which broke
12717         stack trace line information:
12718
12719         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
12720         (Martin) when looking up B which is between A and C, return A not C.
12721
12722         Bug is #78573.
12723
12724         Thanks to Alexander Olk for tracking this down.
12725
12726 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12727
12728         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
12729         
12730         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
12731         avoid clobbering its value.
12732         (mono_string_to_lpstr): Fix a warning on windows.
12733
12734 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12735
12736         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
12737
12738         * reflection.c loader.c: Removed references to 'dummy' flag.
12739
12740         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
12741
12742         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
12743         it gets GC tracking.
12744
12745         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
12746         GC tracking.
12747         
12748         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
12749
12750         * marshal.c threadpool.c: Update callers of mono_async_result_new.
12751
12752         * appdomain.c: Bump corlib version.
12753
12754 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
12755
12756         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
12757         CEE_STIND_REF when working with object references.
12758
12759 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12760
12761         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
12762         Fixes #78539.
12763
12764 2006-05-30  Miguel de Icaza  <miguel@novell.com>
12765
12766         * loader.c (method_from_memberref): Fix argument value for
12767         mono_loader_set_error_method_load (I was passing the MonoClass
12768         instead of the class name char *).
12769
12770 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
12771
12772         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
12773         CEE_STIND_REF when working with object references.
12774
12775 2006-05-30  Martin Baulig  <martin@ximian.com>
12776
12777         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
12778         mono_method_full_name() change and replace the ':' with a '.'
12779         here.
12780
12781 2006-05-30  Martin Baulig  <martin@ximian.com>
12782
12783         * debug-mono-symfile.c
12784         (mono_debug_symfile_lookup_location): Fix the algorithm:
12785         when looking up B which is between A and C, return A not C.
12786
12787 2006-05-29  Martin Baulig  <martin@ximian.com>
12788
12789         * mono-debug.h
12790         (MonoDebugMethodInfo): Make the typedef public.
12791         (MonoDebugSourceLocation): New public struct.
12792
12793         * mono-debug.c
12794         (mono_debug_source_location_from_address): Removed.
12795         (mono_debug_source_location_from_il_offset): Removed.
12796         (mono_debug_il_offset_from_address): Removed.
12797         (mono_debug_address_from_il_offset): Removed.
12798         (mono_debug_lookup_method): New public function.
12799         (mono_debug_lookup_source_location): New public function; replaces
12800         the old mono_debug_source_location_from_*() functions; see the
12801         inline documentation.
12802         (mono_debug_free_source_location): New public function.
12803         (mono_debug_print_stack_frame): New public function; see the
12804         inline documentation.
12805
12806         * debug-mono-symfile.c
12807         (mono_debug_find_source_location): Renamed into
12808         mono_debug_symfile_lookup_location(); only take a
12809         `MonoDebugMethodInfo *' and an `offset' argument; added inline
12810         documentation.
12811         (mono_debug_find_method): Renamed into
12812         mono_debug_symfile_lookup_method().
12813
12814 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12815
12816         * assembly.c (mono_assembly_open_full): Dont overwrite the status
12817         returned by mono_image_open_full ().
12818
12819         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
12820         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
12821         #78517.
12822
12823         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
12824         #78518.
12825
12826 2006-05-27  Miguel de Icaza  <miguel@novell.com>
12827
12828         * class.c (mono_class_from_typeref): handle missing images
12829         earlier, deals with bug #78418.   Refactor code; 
12830
12831         Fix a warning introduced in my previous commit (some stale code
12832         from before I revisited my patch).
12833
12834         * class.c (mono_class_create_from_typedef): On failure, remove the
12835         class from the MonoImage->class_cache as the class is not
12836         initialized;   Fixes the leak pointed out by Paolo.
12837
12838 2006-05-25  Dick Porter  <dick@ximian.com>
12839
12840         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
12841         DeleteCriticalSections until I figure out which one may still be
12842         sometimes locked when mono_thread_cleanup is called.
12843
12844 2006-05-24  Dick Porter  <dick@ximian.com>
12845
12846         * threads.c (mono_thread_cleanup): Move the threading cleanup out
12847         of mono_thread_manage and back into its own function, so it can be
12848         called after the finalizer thread has finished.
12849
12850         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
12851
12852 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
12853
12854         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
12855         Fixes #78495.
12856
12857         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
12858         with non-blittable elements.
12859         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
12860
12861 2006-05-24  Martin Baulig  <martin@ximian.com>
12862
12863         * mono-debug-debugger.h (MonoDebuggerEvent): Added
12864         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
12865
12866         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
12867         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
12868         `mono_debugger_event_handler' to NULL.
12869
12870 2006-05-24  Martin Baulig  <martin@ximian.com>
12871
12872         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
12873
12874 2006-05-24  Martin Baulig  <martin@ximian.com>
12875
12876         * mono-debug-debugger.h
12877         (mono_debugger_create_notification_function): Added
12878         `MonoCodeManager *' argument.
12879
12880 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
12881
12882         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
12883
12884 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
12885
12886         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
12887         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
12888         implementation.
12889
12890 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
12891
12892         * icall.c: precise GC support: objects can't be stored in unmanaged
12893         memory anymore, even if they are kept alive by other references: since
12894         they can move the GC needs to be able to always find them.
12895
12896 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12897
12898         * object.c: precise GC support for static fields. Support
12899         for moving GCs: write barriers and pinned allocation for interned
12900         strings.
12901
12902 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12903
12904         * domain.c, domain-internals.h: precise GC support for the MonoDomain
12905         structure.
12906
12907 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12908
12909         * class.c, gc.c: sgen and precise GC updates.
12910
12911 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12912
12913         * marshal.h, marshal.c: added write barrier wrapper and precise type
12914         fixes.
12915
12916 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
12917
12918         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
12919         support.
12920
12921 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12922
12923         * reflection.c: precise and sgen GC updates.
12924
12925 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12926
12927         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
12928
12929 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
12930
12931         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
12932
12933 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
12934
12935         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
12936         MONO_TYPE_OBJECT. Fixes #78462.
12937
12938 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12939
12940         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
12941         and blittable types.
12942
12943 2006-05-17  Miguel de Icaza  <miguel@novell.com>
12944
12945         * class.c (mono_class_get_exception_for_failure): Implement parts
12946         of a TODO: if the loader error is set (instead of the class
12947         error), we return a Loader exception that can be properly thrown
12948         elsewhere.
12949
12950         This was exposed by some Winforms 2.0 code that I tried to run
12951         (Atsushi pointed me to it).
12952
12953 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
12956         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
12957         
12958         * marshal.c (emit_marshal_vtype): Add limited support for 
12959         UnmanagedType.LPStruct. Fixes #78427.
12960
12961         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
12962         Applied a patch from kangaroo to fix #77523.
12963
12964 2006-05-17  Martin Baulig  <martin@ximian.com>
12965
12966         * threads.c
12967         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
12968         (debugger_thread_created): Removed.
12969         (debugger_thread_exited): Removed.
12970
12971 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
12972
12973         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12974
12975         * object-internals.h (MonoReflectionResource): Sync with managed version.
12976
12977 2006-05-12  Wade Berrier <wberrier@novell.com>
12978
12979         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
12980
12981 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
12982
12983         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
12984         functions try to allocate from the image mempool.
12985
12986 2006-05-12  Dick Porter  <dick@ximian.com>
12987
12988         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
12989
12990 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
12991
12992         * object.c: The FieldGetter and FieldSetter methods require the full
12993         name of the class, not only the name. Fixes bug #78277.
12994
12995 2006-05-11  Miguel de Icaza  <miguel@novell.com>
12996
12997         * loader.c (method_from_memberref): Do not pass the NULL klass to
12998         mono_loader_set_error_() methods.  Pass the non-NULL value
12999         (class). 
13000
13001 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13002
13003         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13004         (mono_assembly_close): Null out assembly->image->references after freeing it.
13005
13006         * image.c (mono_image_close): Free image->references.
13007         
13008         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13009
13010 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13011
13012         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13013         before checking if it's NULL (g_assert).
13014
13015 2006-05-10  Martin Baulig  <martin@ximian.com>
13016
13017         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13018         I thought I already killed that two months ago, but now it somehow reappeared.
13019
13020 2006-05-10  Martin Baulig  <martin@ximian.com>
13021
13022         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13023
13024 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13025
13026         * reflection.c: Allocate memory for dynamically created methods in the image
13027         mempools.
13028
13029 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13030
13031         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13032         don't use the ad pointer before checking if it's NULL (g_assert).
13033
13034 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13035
13036         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13037         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13038
13039         * marshal.c: Allocate all signatures from mempools.
13040
13041         * marshal.c: Allocate some more signatures from mempools.
13042
13043 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13044
13045         * object.c (mono_load_remote_field): The code used to provide a
13046         temporary variable for returning results if the user did not
13047         provide a result pointer.  But our temporary variable was allocted
13048         on the satck.
13049
13050         Fix calling code to always pass a result area.   Coverity ID 103.
13051
13052 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13055         value, not the old. Fixes #78312.
13056         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13057
13058         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13059         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13060         per-image cache.
13061
13062         * assembly.c (mono_assembly_close): Free image->references.
13063
13064         * assembly.c (mono_assembly_names_equal): Fix a warning.
13065         (mono_assemblies_cleanup): Cleanup more global data.
13066
13067         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13068
13069         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13070         ptr_cache and image->modules.
13071
13072         * image.c (mono_image_init): Allocate array_cache lazily.
13073         
13074 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13075
13076         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13077         behavior was changed recently and has bad side effects.
13078
13079 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13080
13081         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13082         
13083         * assembly.c (mono_assembly_close): Remove a debug printf.
13084
13085         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13086
13087         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13088         to also allow for temporary references between mono_image_open ()/close ().
13089
13090         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13091
13092 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13093
13094         * marshal.c: Fix support for dynamic methods.
13095
13096         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13097
13098         * marshal.c (mono_marshal_cleanup): New cleanup function.
13099
13100         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13101         image mempools.
13102
13103         * class.c (mono_class_init): Fix leaking class->nested_classes.
13104
13105         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13106
13107         * image.c (mono_image_init): Initialize the new cashes.
13108
13109         * image.c (mono_image_close): Destroy the new cashes.
13110
13111         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13112
13113         * mempool.c (mono_mempool_strdup): New helper function.
13114
13115         * class-internals.h: Add prototype for mono_loader_unlock ().
13116
13117         * domain.c (mono_jit_info_table_find): Fix a warning.
13118         (mono_debugger_check_runtime_version): Ditto.
13119
13120         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13121         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13122         functions to these modules.
13123
13124         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13125         metadata modules.
13126         
13127         * marshal.c (mono_free_bstr): Fix a warning.
13128
13129         * assembly.c (mono_assembly_open_full): Fix another small leak.
13130
13131         * object.c: Fix some unload leaks in the remoting code.
13132
13133         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13134         function.
13135
13136         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13137
13138         * reflection.c: Fix some unload leaks in dynamic assemblies.
13139
13140 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13141
13142         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13143         * marshal.h: Add BSTR support on Win32
13144         * icall.c: Add BSTR icalls
13145         * metadata.h: Add BSTR enums
13146
13147 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13148
13149         Work to catch the crash from #76795 and turn it into an
13150         exception.   As I stubbed out pieces of the VisualBasic support,
13151         I found a number of places where the code was failing and I added
13152         checks to those places. 
13153         
13154         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13155         function return a status code.  If we fail to parse the signature
13156         from mono_metadata_parse_generic_inst, return FALSE.
13157
13158         * loader.c (mono_get_method_from_token): If we fail to load the
13159         method (mono_class_get) return NULL.   
13160
13161         * (method_from_memberref): Return NULL if we are unable to parse
13162         the method signature
13163
13164         (mono_loader_error_prepare_exception): Since we now use the
13165         loader_error flag internally to stop processing, and obtaining
13166         exceptions that might be thrown will walk this code path the
13167         proper way of going from a MonoLoaderError into a
13168         MonoException was convoluted.   This new routine encapsulates the
13169         process of turning the error into an exception and *clearing* the
13170         error afterwards.
13171         
13172 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13173
13174         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13175         with missing assemblies), and to cope with:
13176
13177                 * Missing fieldref from a non-existing assembly.
13178                 * Missing methodref from a non-existing assembly.
13179
13180         The first batch of work to address *some* of the issues from 76661.
13181         
13182         * object.c (mono_class_create_runtime_vtable): If we fail to
13183         initialize the class raise the exception here. 
13184
13185         * metadata.c (mono_class_get_overrides_full): If any methods fail
13186         to load return the failure to the caller.
13187
13188         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13189         flagging assemblies that failed to load.   
13190
13191         Do not crash if we are unable to load the assembly.
13192
13193         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13194         assemblies. 
13195
13196         * loader.c (mono_loader_set_error_type_load): Change the
13197         convention to always pass unallocated strings, so we make our own
13198         copies (I know our own code had duplicated strings before, but
13199         this keeps the normal conventions).
13200         (method_from_memberref): Call mono_loader_set_error_method_load
13201         for all possible failures of loading the class. 
13202         Remove assert, turn into a loader error.
13203
13204         (mono_loader_error_to_exception): Move this routine from mini
13205         (mini_loader_error_to_exception) there was no need to have that in
13206         mini. 
13207
13208         * class.c (mono_class_from_typeref): If we were not able to load
13209         the assembly with mono_assembly_load_reference, call the
13210         mono_loader_set_error_type_load to register the problem.
13211
13212         (mono_class_setup_fields): If we fail to load the type from
13213         mono_metadata_parse_type_full, call mono_class_set_failure and
13214         break from the loop.
13215
13216         If class->exception_type is set, we do not layout the fields as
13217         that might crash the runtime, and instead return (from breaking
13218         from the previous loop).
13219
13220         (mono_class_setup_vtable): This now returns a boolean indicating
13221         whether the table was properly setup.   The decision is driven by
13222         mono_class_get_overrides_full which might run into non-existing
13223         methods. 
13224         
13225         (mono_class_init): Returns TRUE on success or FALSE if there was a
13226         problem in loading the type (incorrect assemblies, missing
13227         assemblies, methods, etc).
13228
13229         When we call mono_class_setup_fields we also check for a potential
13230         error inside this call (either a class exception or a general
13231         loader exception).
13232
13233         (mono_class_create_from_typedef): If the parent fails to load
13234         (calling mono_class_get_full) return NULL.
13235         
13236         ** Important **
13237
13238         calls to mono_metadata_parse_type_full should be checked
13239         everywhere and set the mono_class_set_failure
13240         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13241
13242         The current patch checks the places where my manually constructed
13243         tests show the errors are showing up, but we should do it
13244         everywhere. 
13245
13246         ** Important2 **
13247
13248         mono_class_init return values should be tested everywhere, like
13249         the previous case this is something that we should audit
13250         everywhere and not only on the cases exposed by the tests I
13251         created. 
13252
13253 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13254
13255         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13256         boolean parameter and instead pass the information on `options'
13257         parameter (FileOptions).
13258
13259         * icall.c: Register the new signature for MonoIO.Open.
13260
13261         * debug-helpers.c (dis_one): Trying to understand how coverity
13262         works.  Fix Run 5, item 78.
13263
13264 2006-04-26  Dick Porter  <dick@ximian.com>
13265
13266         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13267         dereference.
13268
13269 2006-04-25  Martin Baulig  <martin@ximian.com>
13270
13271         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13272
13273         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13274         debugger_thread_created().
13275         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13276         special way.
13277         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13278         (mono_debugger_finalize_threads): New function; undo the effects
13279         of mono_debugger_init_threads().
13280         (mono_debugger_create_all_threads): Removed.
13281
13282 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13283
13284         * image.c (mono_image_close): Tidy up trace messages.
13285
13286         * assembly.c (mono_assembly_close): Ditto.
13287
13288         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13289         no longer references an already freed assembly. Fixes #78168.
13290
13291 2006-04-21  Dick Porter  <dick@ximian.com>
13292
13293         * threads.c (mono_thread_detach): Fix reference counting when
13294         detaching threads.
13295
13296 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13297
13298         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13299         #78155.
13300
13301 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13304         (mono_type_to_stind): Ditto.
13305
13306         * marshal.c: Use the new helper functions to simplify code.
13307
13308         * image.c (mono_image_close): Add some code for help debug assembly unloading
13309         problems.
13310
13311         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13312         image mempool.
13313
13314         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
13315         assembly was already loaded in another appdomain. Fixes #78083.
13316
13317 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
13318
13319         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
13320         referenced assemblies.
13321         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
13322
13323         * domain.c (mono_domain_free): Add a trace message.
13324
13325         * appdomain.c (add_assemblies_to_domain): Ditto.        
13326
13327         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
13328         field.  
13329
13330 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13331
13332         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
13333
13334 2006-04-12  Martin Baulig  <martin@ximian.com>
13335
13336         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
13337         `USE_INCLUDED_LIBGC'.   
13338
13339 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13340
13341         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
13342         the patch contains ../ and a small directory name later. Hopefully fixes
13343         #78035.
13344
13345 2006-04-10  Martin Baulig  <martin@ximian.com>
13346
13347         Clean up the debugger's thread-handling code.
13348
13349         The debugger's thread-handling code has been moved from
13350         ../mini/debug-debugger.c to threads.c.  We now iterate directly
13351         over the `threads' hash, keep track of exiting threads and also
13352         use proper locking.
13353
13354         We can now debug XSP and XSP based applications with the debugger.
13355
13356         * object-internals.h (MonoThread): Added `gpointer end_stack'.
13357
13358         * threads.h
13359         (MonoThreadCallbacks): Removed; this was only used by the debugger.
13360         (mono_install_thread_callbacks): Likewise.      
13361
13362         * threads.c (mono_thread_callbacks): Removed.
13363         (debugger_thread_created, debugger_thread_exited): New static functions.
13364         (start_wrapper): Call debugger_thread_created().
13365         (thread_cleanup): Call debugger_thread_exited().
13366         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
13367         (mono_debugger_init_threads): New public function.
13368         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
13369         iterate directly over the `threads' hash and also use proper locking.
13370
13371         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
13372
13373         * mono-debug-debugger.h
13374         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
13375
13376 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13377
13378         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
13379         argument type=array. Fixes #78057.
13380
13381 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
13382
13383         * culture-info-table.h : regenerated. Fixed bug #69652.
13384
13385 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13386
13387         * loader.c metadata.c: Reapply a variant r59116.
13388         
13389         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
13390
13391         * class.c (mono_class_setup_interface_offsets): New internal function.
13392
13393         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
13394         interfaces too. Fixes #77398.
13395
13396         * reflection.c (encode_cattr_value): Add support for 
13397         parameter type=object, argument type=array.
13398         (load_cattr_value): Ditto. Fixes #77916.
13399
13400         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
13401         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
13402
13403         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
13404         a byval char array and CharSet is Ansi.
13405
13406         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
13407
13408 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
13409
13410         * metadata.c: Add some locking comments.
13411         
13412         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
13413         mempool.
13414         (mono_metadata_free_method_signature): Don't free the signature itself.
13415
13416         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
13417
13418         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
13419         reference the same MonoImage.
13420         (mono_assembly_load_from_full): Add an assert.
13421
13422 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13423
13424         * image.c (mono_image_close): Don't put the image we are about to free into the
13425         loaded_images_guid_hash.
13426
13427         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
13428         to reduce code duplication.
13429
13430         * marshal.c: Register the native functions called by this module as icalls, to
13431         somewhat centralize the creation of MonoMethodSignature's.
13432
13433         * loader.c (mono_method_signature): Add a cache for method signatures.
13434
13435         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
13436         the parameter attributes of a method.
13437         (mono_metadata_parse_method_signature_full): Refactored the computation of
13438         parameter attributes into a separate function. Also avoid one allocation in
13439         most cases.
13440
13441         * assembly.c (mono_assembly_close): Ditto.
13442
13443         * image.c (mono_image_close): Log trace messages with INFO level.
13444
13445         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
13446
13447         * image.c reflection.c: Correct reference counting of image modules.
13448         
13449         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
13450         of this function from the image mempool.
13451         
13452         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
13453         to allow more cached types to be used.
13454
13455         * mono-debug.c (mono_debug_add_method): Appled patch from
13456         David S. Miller  <davem@sunset.davemloft.net>: Access 
13457         minfo->lexical_blocks[] entry elements using read32().
13458
13459 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13460
13461         * loader.c (mono_free_method): No longer free the method header for non-dynamic
13462         methods as it is allocated from the mempool.
13463
13464         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
13465         image mempool.
13466
13467         * metadata-internals.h: Add comments describing the reference counting scheme
13468         used for MonoImage and MonoAssembly.
13469
13470         * image.c assembly.c reflection.c: Rework reference counting of images and 
13471         assemblies so they are freed when the runtime is shut down. Free some 
13472         additional memory structures when an image is unloaded.
13473         
13474 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13475
13476         * class.c loader.c reflection.c: Allocate more data structures in
13477         the image mempool.
13478
13479 2006-03-31  Miguel de Icaza  <miguel@novell.com>
13480
13481         * icall.c
13482         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
13483         build on pre glib 2.4 systems.
13484
13485 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13486
13487         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
13488
13489         * icall.c: Fix some warnings.
13490
13491 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
13492
13493         * culture-info-table.h : regenerated.
13494
13495 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
13496
13497         * threads.c, object-internals.h, verify.c: changed the culture caching
13498         code to use a normal MonoArray for storage so the GC can keep track of
13499         them easily. Fixed bits of the cache logic, too and simplified the
13500         code.
13501
13502 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
13503
13504         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
13505         thread for non-Boehm GCs.
13506
13507 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
13508
13509         * domain.c, object.c, domain-internals.h: reduce the amount of memory
13510         needed to keep track of the data for static fields.
13511
13512 2006-03-29  Raja R Harinath  <rharinath@novell.com>
13513
13514         Fix #75172
13515         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
13516         for interface classes.  Use 'num_methods' instead.
13517         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
13518         before using '->vtable_size' field.
13519
13520 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13521
13522         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
13523         doesn't contain managed pointers, so use a normal hashtable.
13524
13525 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13526
13527         * reflection.c, class-internals.h, domain.c: fixed handling of types
13528         used as values for objects in custom attributes (bug #77915):
13529
13530 2006-03-24  Martin Baulig  <martin@ximian.com>
13531
13532         * class.c (mono_class_setup_fields): Added support for generic
13533         instances; fixes #77580.
13534
13535 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13536
13537         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
13538
13539 2006-03-24  Dick Porter  <dick@ximian.com>
13540
13541         * file-io.c (get_file_attributes): More stat macro breakage.
13542         Fixes bug 77759.
13543
13544 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
13545
13546         * profiler.c: added the file=filename option in the default profiler
13547         to output the profile data to filename.
13548
13549 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13550
13551         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
13552         bug #77877.
13553
13554 2006-03-22  Martin Baulig  <martin@ximian.com>
13555
13556         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
13557         allocated `MonoClassField *' in `fb->handle'.
13558
13559 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13560
13561         * class.c, image.c, metadata-internals.h: implemented new mechanism to
13562         allocate interface ID to save memory and allow better ID reuse on
13563         appdomain unload. setup_generic_vtable () removal from Martin.
13564
13565 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13566
13567         * object.h, appdomain.c, domain.c, exception.c, icall.c,
13568         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
13569         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
13570         write barriers for reference stores with managed objects accessed with
13571         C structures in the runtime and in embedding programs.
13572
13573 2006-03-20  Raja R Harinath  <rharinath@novell.com>
13574
13575         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
13576         'interface_id' and 'max_interface_id' fields of MonoClasses
13577         representing open generic types.
13578
13579 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
13580
13581         * object.h, object.c, icall.c: added functions to deal with
13582         storing valuetypes that contain references in managed objects.
13583         * reflection.c, string-icalls.c, threads.c, marshal.c: small
13584         fixes and comments around uses of mono_array_addr ().
13585
13586 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
13587
13588         * object.h, icall.c, monitor.c: object.GetHashCode ()
13589         implementation that supports the moving garbage collector.
13590
13591 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13592
13593         * icall.c, threads-types.h, threads.c: implemented finalizer for
13594         LocalDataStoreSlot.
13595
13596 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13597
13598         * metadata.c (mono_type_size): Add a fixme.
13599         (mono_type_stack_size): Ditto.
13600
13601         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
13602         'type_forwarders' field.
13603
13604         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
13605         attribute from net 2.0.
13606
13607         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
13608         from class.c.
13609
13610         * class.c (mono_class_setup_fields): Fix a warning.
13611         
13612         * class.c (mono_class_from_name): Add support for assemblyref entries
13613         in the EXPORTEDTYPE table.
13614
13615         * reflection.c: Add support for handling type forwarders under net 2.0.
13616
13617         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
13618         
13619 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13620
13621         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
13622         overwriting entries in ModuleBuild->types, also clean up the code
13623         a little. Fixes #77774.
13624
13625 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13626
13627         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
13628         load friend assembly info when present.
13629
13630 2006-03-14  Raja R Harinath  <rharinath@novell.com>
13631
13632         Fix crasher on gtest-158.cs.
13633         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
13634         the return value if the MonoClass we want is yet in an
13635         inconsistent state.
13636         * class.c (mono_class_create_from_typedef): Add an comment
13637         explaining an order dependency between mono_class_setup_parent and
13638         mono_class_setup_mono_type.
13639
13640 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13641
13642         * class.c: documentation updates and events bug fix.
13643
13644 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
13645
13646         * class.c: some cleanup, locking fixes.
13647
13648 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13649
13650         * class.c: fix the generics code to setup nested
13651         type info to the instantiated type (bug #77770).
13652
13653 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13654
13655         * marshal.c: fixed a few type correctness issues.
13656
13657 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13658
13659         * loader.c: the Set/Get/Addrtess array methods should be public.
13660
13661 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13662
13663         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
13664         
13665         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
13666         info->wrapper.
13667
13668 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13669
13670         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
13671
13672         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
13673
13674         * mempool.c (mono_mempool_alloc): Speed this up a bit.
13675         (mono_mempool_alloc0): Ditto.
13676
13677 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13678
13679         * socket-io.c:
13680         (create_object_from_sockaddr): it was allocating 4 extra bytes
13681         for the AF_UNIX data. Fixes bug #77747.
13682
13683 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13684
13685         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
13686
13687 2006-03-09  Dick Porter  <dick@ximian.com>
13688
13689         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
13690         Fixes bug 76966 again.
13691
13692 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
13693
13694         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
13695         names from r57532
13696         * appdomain.c: Bumped corlib version to 48 (due to r57532)
13697
13698 2006-03-07  Martin Baulig  <martin@ximian.com>
13699
13700         * object.c
13701         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
13702
13703 2006-03-07  Martin Baulig  <martin@ximian.com>
13704
13705         * class.c
13706         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
13707         regression introduced in r56970; see gtest-252.cs.
13708
13709         * loader.c (mono_get_method_constrained): Correctly handle generic
13710         methods; see gtest-253.cs.
13711
13712 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13713
13714         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
13715
13716 2006-03-04  Martin Baulig  <martin@ximian.com>
13717
13718         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
13719         compute the parent type at runtime, just like we're already doing
13720         it for interfaces.
13721
13722         * reflection.c
13723         (mono_reflection_bind_generic_parameters): Don't compute the
13724         parent type anymore.
13725
13726         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
13727
13728 2006-03-04  Martin Baulig  <martin@ximian.com>
13729
13730         * mono-debug-debugger.h
13731         (mono_debugger_create_notification_function): Allocate memory at
13732         runtime and return a pointer to it.
13733
13734 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
13735
13736         * assembly.c: Fix windows build.
13737         
13738         * assembly.c: Fix build.
13739
13740         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
13741
13742         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
13743         
13744 2006-03-03  Dick Porter  <dick@ximian.com>
13745
13746         * process.c
13747         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
13748         Check parameters before dereferencing them.  Fixes Aaron's part of
13749         bug 77393.
13750
13751 2006-03-03  Raja R Harinath  <rharinath@novell.com>
13752
13753         Fix performance regression.
13754         * loader.c (find_method_in_class): Add 'from_class' argument.
13755         Rename 'klass' argument to 'in_class'.  The signature is compared
13756         against the method in 'in_class', and the corresponding method is
13757         returned from 'from_class'.
13758         (find_method): Walk both 'in_class' and 'from_class' in parallel.
13759         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
13760         type definition and generic instantiation in parallel.
13761         (mono_get_method_constrained): Update to changes.
13762
13763 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13764
13765         * threads.c: make sure the domain is correct, too when doing
13766         mono_thread_attach ().
13767
13768 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
13771         windows. Fixes #77683.
13772
13773 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13774
13775         * object.h, *: introduced specific way to set elements of an array
13776         of references to be used as write barrier. Still need to audit the
13777         uses of mono_array_addr.
13778
13779 2006-03-01  Miguel de Icaza  <miguel@novell.com>
13780
13781         * object-internals.h: New field to cache the assmebly name, patch
13782         from Tambet Ingo (tambet@ximian.com)
13783
13784 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13785
13786         * decimal.h, class-internals.h, metadata-internals.h,
13787         file-io.h: mark a few function declarations as internal, to
13788         reduce the number of PLT entries.
13789
13790 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13791
13792         * file-io.c: fix typo in warning message.
13793
13794 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
13795
13796         * loader.c: on unix, lookup the "*A" version of a function
13797         if charset is auto as a second option before failing.
13798
13799 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13800
13801         * class.h (mono_class_inflate_generic_method): Revert to two
13802         argument version.
13803         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
13804         (mono_class_inflate_generic_method_full): Add.
13805         * class.c (mono_class_inflate_generic_method_full): Rename from
13806         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
13807         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
13808         * loader.c, reflection.c: Update to changes.
13809
13810 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13811
13812         * icall.c: const fixes and small improvements.
13813
13814 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13815
13816         * threadpool.c: for asynchronous connect(), enable the same workaround
13817         for BSD 6 as for the Mac. Fixes bug #77637.
13818
13819 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13820
13821         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
13822         formatted classes. Fixes #77524.
13823
13824 2006-02-24  Raja R Harinath  <rharinath@novell.com>
13825
13826         * class.c (inflate_generic_type): Add a couple more
13827         micro-optimizations.
13828         (inflate_generic_context): Don't use the 'gmethod' from
13829         'inflate_with'.
13830         (mono_class_inflate_generic_method): If the method has generic
13831         parameters, but the passed-in context doesn't have a 'gmethod',
13832         create one.  Use the possibly simplified generic instantiation
13833         from the declaring class instead of the one passed in.
13834
13835 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13836
13837         Make generic method signature and method header handling lazy.
13838         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
13839         (inflate_generic_header): Likewise.
13840         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
13841         parameter to avoid inflating types.
13842         (mono_get_inflated_method): Empty out.
13843         * class.h (mono_class_inflate_generic_method): Update to changes.
13844         * loader.c (mono_get_method_from_token): Don't parse signature for
13845         generic methods, nor methods of generic classes.
13846         (mono_method_signature): Rename from 'mono_method_signature'.
13847         Inflate signature on demand.
13848         (mono_method_get_header): Inflate method header on demand.
13849         * reflection.c: Update to changes.
13850
13851 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13852
13853         * metadata.c (mono_metadata_inflate_generic_inst): If the
13854         instantiation is closed, don't bother expanding it in the new
13855         context.
13856         * class.c (inflate_generic_class): If the generic instantiation
13857         doesn't change after inflation, return the argument itself.
13858         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
13859         Add bounds checks.
13860         (inflate_generic_context): If neither the generic class nor the
13861         generic method instantiations change, return the original context.
13862         * reflection.c (mono_method_get_object): Do
13863         'mono_get_inflated_method' before accessing the ->klass field.
13864         (inflate_mono_method): Don't create a MonoGenericMethod unless
13865         necessary.
13866         (inflate_method): Don't pass a constructed type as the declaring
13867         type of a methodbuilder.
13868
13869 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
13870
13871         * object.c: fix memory overwrite.
13872
13873 2006-02-22  Dick Porter  <dick@ximian.com>
13874
13875         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
13876         it doesn't work any more.
13877         (mono_threads_request_thread_dump): Fix unused variable warnings.
13878
13879 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13880
13881         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
13882         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
13883         the public header file.
13884
13885 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
13886
13887         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
13888
13889 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13890
13891         * class-internals.h, object.c: reduce the size of MonoVTable
13892         and store the interface_offsets array at negative offsets.
13893
13894 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13895
13896         * metadata.c: tweak table descriptors data structures to reduce
13897         size and runtime relocations.
13898
13899 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13900
13901         * marshal.c: fix some types and opcodes to be type-safe
13902         in marshaling wrappers.
13903
13904 2006-02-21  Ankit Jain  <jankit@novell.com>
13905
13906         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
13907
13908 2006-02-21  Raja R Harinath  <rharinath@novell.com>
13909
13910         * metadata.c (get_constraints): Relax debugging checks for monodis.
13911
13912 2006-02-21  Ankit Jain  <jankit@novell.com>
13913
13914         * metadata.c (mono_metadata_load_generic_params): Move the code
13915         checking for ambiguous generic params from here to mono/dis/get.c
13916         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
13917
13918 2006-02-21  Raja R Harinath  <harinath@gmail.com>
13919
13920         Fix assertion triggered when compiling nemerle.
13921         * class.c (mono_get_shared_generic_inst): Rename from
13922         get_shared_inst and make non-static.
13923         * loader.c (mono_get_shared_generic_method): New.  Used to create
13924         the MonoGenericContext-equivalent of a MonoGenericContainer.
13925         (mono_get_method_from_token): Initialize the 'context' field of
13926         the created MonoGenericContainer.
13927         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
13928         * metadata.c (get_constraints): Add sanity check.
13929         * class-internals.h: Add new internal methods.
13930
13931         * reflection.c (verify_safe_for_managed_space): New sanity check.
13932         Currently checks that owner-less generic parameters aren't allowed
13933         in managed space.
13934         (mono_type_get_object): Use it.
13935         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
13936         that are now in mono_type_get_object.
13937         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
13938
13939 2006-02-19  Raja R Harinath  <harinath@gmail.com>
13940
13941         * metadata.c (mono_type_create_from_typespec): Rename from
13942         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
13943         argument and caching of types in the generic container.
13944         (unwrap_arrays, find_generic_param): Remove.
13945         * metadata-internals.h: Update.
13946         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
13947
13948 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
13949
13950         * class.c (mono_class_get_exception_for_failure): Fix a warning.
13951
13952         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
13953         return values. Fixes #77581.
13954
13955         * class.c (mono_fnptr_class_get): Switch name and name_space.
13956
13957         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
13958         classes and add support for [In, Out] attributes.
13959         (mono_marshal_free_asany): Ditto. Fixes #77524.
13960
13961 2006-02-18  Raja R Harinath  <harinath@gmail.com>
13962
13963         * class.c (mono_class_from_generic_parameter): Make more robust to
13964         incomplete MonoGenericContainers from monodis.
13965
13966 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
13967
13968         * class-internals.h: added some more exception types.
13969         * class.c, metadata.c: added a few checks to handle missing
13970         types.
13971
13972 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13973
13974         Use owner-less generic-params some more.
13975         * class.c (my_mono_class_from_generic_parameter): Remove.
13976         (mono_class_from_generic_parameter): Handle null image,
13977         param->name and param->owner.
13978         (mono_class_from_mono_type): Update.
13979         (mono_class_create_from_typespec): Remove 'container' parameter.
13980         If that parameter is non-null, the result is always inflated by
13981         'mono_class_get_full' anyway.
13982         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
13983         parameter.
13984         (mono_class_get_full): Update.
13985
13986         * class.c (inflate_generic_type) [GENERICINST]: If the generic
13987         instance is not open, don't bother inflating.
13988         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
13989         parse metadata for inflated classes.
13990         (_mono_class_get): Change GenericContext* parameter to
13991         GenericContainer*.
13992         (mono_class_create_from_typespec): Likewise.  Simplify, and
13993         implement trivially.  All the cases are handled in
13994         mono_class_from_mono_type.  Don't inflate returned class.
13995         (mono_class_get_full): Delegate GENERICINST optimization to
13996         inflate_generic_type.
13997         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
13998
13999 2006-02-16  Dick Porter  <dick@ximian.com>
14000
14001         * socket-io.c (create_object_from_sockaddr): Fix typo.
14002         (create_sockaddr_from_object): Check array lengths before
14003         potentially accessing items off the end.
14004         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14005         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14006         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14007         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14008         length checks to avoid wraparound overflows.
14009         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14010         contents of the array of sockets
14011         (hostent_to_IPHostEntry2)
14012         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14013         Check return value of inet_ntop ().
14014         (addrinfo_to_IPHostEntry): Fix typo
14015
14016 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14017
14018         Type metadata parsing doesn't use generic-instantiation information.
14019         * metadata.c (mono_metadata_parse_array_full): Change
14020         MonoGenericContext* parameter to MonoGenericContainer*.
14021         (mono_metadata_parse_type_full): Likewise.
14022         (mono_type_create_from_typespec_full): Likewise.
14023         (mono_metadata_parse_mh_full): Likewise.
14024         (mono_metadata_parse_generic_inst): Likewise.
14025         (do_mono_metadata_parse_generic_class): Likewise.
14026         (do_mono_metadata_parse_type): Likewise.
14027         * metadata-internals.h: Update to changes.
14028         * class.c (mono_class_find_enum_basetype): Likewise.
14029         (mono_class_setup_fields): Likewise.
14030         (mono_class_create_from_typespec): Likewise.
14031         * loader.c (method_from_methodspec): Likewise.
14032         (mono_get_method_from_token): Likewise.
14033         (mono_method_get_header): Likewise.
14034
14035 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14036
14037         * marshal.c: handle additional GENERICINST case (patch from
14038         Thong Nguyen <tum@veridicus.com>).
14039         Fix a few cases where LDIND_I/STIND_I was used for references.
14040
14041 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14042
14043         * reflection.c (mono_reflection_get_token): Remove unused variable.
14044
14045 2006-02-16  Martin Baulig  <martin@ximian.com>
14046
14047         * reflection.c (mono_reflection_get_token): Add support for fields
14048         in instantiated generic types.
14049
14050         * icall.c
14051         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14052
14053 2006-02-15  Martin Baulig  <martin@ximian.com>
14054
14055         * icall.c
14056         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14057         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14058         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14059         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14060
14061 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14062
14063         * class.c, metadata.c, metadata.h, object.c, icall.c,
14064         marshal.c: changed mono_type_get_underlying_type () to do
14065         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14066         Fixed handling of instantiated generic valuetypes (bug #75479).
14067
14068 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14069
14070         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14071         Delegate to mono_metadata_decode_value, and work on the returned value.
14072
14073         * icall.c (ves_icall_MonoType_GetGenericArguments):
14074         Add consistency check here too.
14075         
14076 2006-02-15  Ankit Jain  <jankit@novell.com>
14077
14078         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14079         char/short etc.
14080
14081 2006-02-15  Ankit Jain  <jankit@novell.com>
14082
14083         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14084         signed values, used only for representing lower bounds of arrays.
14085         (mono_metadata_parse_array_full): Use new
14086         mono_metadata_decode_signed_value to decode lower bounds.
14087
14088 2006-02-14  Martin Baulig  <martin@ximian.com>
14089
14090         * reflection.c
14091         (mono_reflection_get_token): Support "MonoGenericMethod" and
14092         "MonoGenericCMethod" and allow generic instances / methods.
14093
14094 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14095
14096         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14097         to obtain the terminal size using an ioctl.
14098
14099         * object.c (mono_nullable_init): Revert this as nullable reference
14100         types are not valid.
14101         (mono_nullable_box): Ditto.
14102
14103 2006-02-09  Dick Porter  <dick@ximian.com>
14104
14105         * threads.c (mono_thread_detach): Drop a reference to the thread
14106         we're detaching.
14107
14108 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14109
14110         * object.c (mono_nullable_init): Handle nullable reference types.
14111         (mono_nullable_box): Ditto. Fixes #77446.
14112
14113 2006-02-07  Martin Baulig  <martin@ximian.com>
14114
14115         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14116
14117 2006-02-07  Ankit Jain  <jankit@novell.com>
14118
14119         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14120         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14121         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14122         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14123         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14124         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14125
14126 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14127
14128         * class.c (mono_class_create_generic): Set type_token as well.
14129
14130         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14131         compatible with MS.
14132
14133 2006-02-02  Martin Baulig  <martin@ximian.com>
14134
14135         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14136         has never been used so far.
14137
14138 2006-02-02  Martin Baulig  <martin@ximian.com>
14139
14140         * mono-debug-debugger.h: Changed comment at the top of this file;
14141         the header is not installed, but it's safe to #include it from
14142         within the JIT.
14143
14144         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14145         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14146
14147 2006-02-02  Martin Baulig  <martin@ximian.com>
14148
14149         * mono-debug.h
14150         (MonoSymbolTable): Removed the `metadata_info' field.
14151
14152         * mono-debug.c
14153         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14154
14155         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14156         (mono_debugger_add_builtin_types): Removed.
14157         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14158         (mono_debugger_create_notification_function): We now operate on a
14159         pre-allocated area; take a `gpointer' and return `void'.
14160
14161         * mono-debug-debugger.c
14162         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14163         (mono_debugger_add_builtin_types): Removed.
14164
14165 2006-02-02  Martin Baulig  <martin@ximian.com>
14166
14167         * threads.c (mono_debugger_create_all_threads): New public method.
14168
14169 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14170
14171         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14172         breaks on several platforms.
14173
14174 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14175
14176         * assembly.c: the VS.NET build doesn't supply default values for
14177         MONO_ASSEMBLIES and MONO_CFG_DIR.
14178
14179 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14180
14181         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14182         helper function.
14183
14184         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14185
14186         * loader.c (method_from_memberref): Fix a warning.
14187
14188         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14189
14190         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14191         with explicit layout. Fixes #77433.
14192
14193 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14194
14195         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14196         max_interface_id is initialized before using it. Fixes #77398.
14197         (ves_icall_Type_GetInterfaces): Ditto.
14198
14199 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14200
14201         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14202         allocate memory for parameter attributes when parsing memberref
14203         signatures.
14204         * loader.c (mono_loader_set_error_method_load): Don't warn.
14205         (method_from_memberref): Ensure MissingMethodException gets thrown
14206         if method is not found.  Make warning more informative.
14207
14208 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14209
14210         Fix #77397
14211         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14212         return true if is byref.
14213         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14214         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14215         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14216
14217 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14218
14219         Fix tests/find-method.2.il
14220         * loader.c (find_method, find_method_in_class): Remove is_inflated
14221         argument.  Revert 2006-01-18 change.
14222         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14223         is generic, search for method in its generic definition.
14224         * class.c (mono_class_setup_vtable_general): Print generic
14225         arguments of generic types in debugging printf.
14226
14227 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14228
14229         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14230
14231         * threads.c (mono_threads_request_thread_dump): New helper function.
14232
14233 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14234
14235         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14236
14237 2006-01-25  Ankit Jain  <jankit@novell.com>
14238
14239         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14240         move definition to ..
14241         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14242         
14243 2006-01-25  Ankit Jain  <jankit@novell.com>
14244             Raja R Harinath  <rharinath@novell.com>
14245
14246         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14247         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14248         as necessary.
14249
14250 2006-01-25  Martin Baulig  <martin@ximian.com>
14251
14252         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14253         `MonoDebuggerThread' into debug-debugger.c.
14254
14255 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14256
14257         * profiler.c: fix printing of data.
14258
14259 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14260
14261         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14262           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14263
14264 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14265
14266         * object.c: fix deadlock related to string interning.
14267
14268 2006-01-23  Martin Baulig  <martin@ximian.com>
14269
14270         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14271
14272         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14273
14274 2006-01-23  Martin Baulig  <martin@ximian.com>
14275
14276         * mono-debug.h: Moved the prototypes of some functions which are
14277         used by the JIT here from mono-debug-debugger.h.
14278
14279 2006-01-21  Martin Baulig  <martin@ximian.com>
14280
14281         * Makefile.am: Don't install mono-debug-debugger.h.
14282
14283 2006-01-21  Martin Baulig  <martin@ximian.com>
14284
14285         * mono-debug-debugger.h: Enforce the private status of this header
14286         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14287         Moved some stuff from mono-debugger-jit-wrapper.h here.
14288
14289 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14290
14291         * class.c (mono_class_from_typeref): Add a sanity test to help
14292         catch lack of assembly load/search hooks.
14293
14294 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14295
14296         * marshal.c (emit_struct_conv): Relax the fields with same offset
14297         check even more. Fixes #77230.
14298
14299 2006-01-18  Martin Baulig  <martin@ximian.com>
14300
14301         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14302         argument; if false, we compare the uninstantiated signatures.
14303         (method_from_memberref): Compare the uninstantiated signatures;
14304         fixes #76417.
14305
14306 2006-01-18  Robert Jordan  <robertj@gmx.net>
14307
14308         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14309         Clear the weak link. Fixes bug #77170.
14310
14311         * gc.c (mono_gchandle_free):
14312         Reflect *-gc.c changes (tiny optimization).
14313
14314 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
14315
14316         * metadata.c (mono_metadata_signature_dup): Applied patch from
14317         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
14318         Fixes #77288.
14319
14320 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14321
14322         * marshal.c (emit_struct_conv): Allow fields with the same offset when
14323         marshalling from native to managed code. Fixes #77230.
14324
14325 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14326
14327         * threadpool.c: fix problem (Mac only) when more than one asynchronous
14328         connect. Fixes bug #77020.
14329
14330 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14331
14332         * class.c: fixed id assignement for nested interfaces (bug #77275).
14333         Added also better info for --print-vtable debugging.
14334
14335 2006-01-12  Martin Baulig  <martin@ximian.com>
14336
14337         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
14338         interfaces on-the-fly; fixes #76625.
14339
14340         * class-internals.h
14341         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
14342         don't need that anymore.
14343
14344 2006-01-12  Miguel de Icaza  <miguel@novell.com>
14345
14346         * socket-io.c
14347         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14348         To avoid initing the nested_classes when not needed I turned the
14349         PeerCredData as a toplevel internal class, as it has to be shared
14350         anyways. 
14351
14352         Fixes the CASA issue.
14353
14354 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14355
14356         * domain.c: Accessors for MonoJitInfo
14357
14358         * profiler-private.h: Add jitinfo to the end jit hook
14359
14360         * profiler.[ch]: Define new hooks, called after jitting which give
14361         the MonoJitInfo that was compiled
14362
14363 2006-01-10  Martin Baulig  <martin@ximian.com>
14364
14365         * class.c (mono_class_setup_events): Add support for generic
14366         classes; fixes #76440.
14367
14368 2006-01-06  Raja R Harinath  <rharinath@novell.com>
14369
14370         Fix #77160.
14371         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
14372         on passed-in method.
14373
14374 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14375
14376         * object.c (mono_runtime_invoke_array): Add Nullable support.
14377
14378         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
14379
14380 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
14381
14382         * file-io.c: Don't consider sockets as directory and avoid an endless
14383         loop. Fix bug #76966.
14384
14385 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14386
14387         * object.c (mono_nullable_init): New helper function.
14388         (mono_nullable_box): Ditto.
14389
14390         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
14391
14392         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
14393
14394         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
14395         
14396 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
14397
14398         * class.c (mono_class_is_assignable_from): Make T assignable to 
14399         Nullable<T>.
14400
14401 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
14402
14403         * appdomain.c: Bump corlib version to 46.
14404         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
14405         serialization purpose) and changed ves_icall_System_Reflection_
14406         Assembly_get_code_base signature to accept a boolean (to escape, or 
14407         not, the assembly code base).
14408
14409 2005-12-23  Dick Porter  <dick@ximian.com>
14410
14411         * icall.c: 
14412         * threads-types.h: 
14413         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
14414         CreateEvent icall now returns "created" boolean parameter.
14415
14416 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14417
14418         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
14419         #76967.
14420
14421         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
14422         when attr_klass is an interface. Fixes #77045.
14423
14424 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
14425
14426         * marshal.c (emit_struct_conv): Fix previous patch.
14427         
14428         * marshal.c (emit_struct_conv): Add a check for fields with the same
14429         offset.
14430
14431 2005-12-20  Raja R Harinath  <rharinath@novell.com>
14432
14433         Fix regression in Mono.C5.
14434         * class.c (mono_class_create_generic): If 'klass' is an interface
14435         set up the interface offsets.
14436         (mono_class_is_assignable_from): Don't throw away generic arguments.
14437
14438 2005-12-19  Raja R Harinath  <rharinath@novell.com>
14439
14440         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
14441         type parameters.
14442
14443 2005-12-15  Raja R Harinath  <rharinath@novell.com>
14444
14445         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
14446         dead store.
14447         (do_mono_metadata_parse_generic_class): Don't pass the current
14448         generic context when parsing the type being instantiated: it
14449         cannot use it, anyway.
14450
14451         * loader.c (method_from_memberref): Don't inflate a signature if
14452         it doesn't contain any type parameters.
14453
14454 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14455
14456         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
14457
14458 2005-12-14  Martin Baulig  <martin@ximian.com>
14459
14460         * class.c
14461         (mono_type_get_name_recurse): Don't return null for type
14462         parameters and open generic classes.
14463         (mono_class_setup_methods): Don't exclude generic instances.
14464         (mono_get_unique_iid): Use different IDs for different
14465         instantiations of the same generic type.
14466         (mono_class_setup_vtable): Only use setup_generic_vtable() for
14467         open generic instances; create a normal vtable for closed generic
14468         instances.
14469         (mono_class_setup_vtable_general): We're now also called for
14470         closed generic instances.
14471
14472         * reflection.c
14473         (mono_reflection_bind_generic_parameters): Correctly use
14474         mono_metadata_lookup_generic_inst() everywhere.
14475
14476 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
14477
14478         * object.c (mono_class_create_runtime_vtable): Call 
14479         mono_class_setup_vtable ().
14480
14481         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
14482         function.
14483         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
14484         #76959.
14485
14486         * loader.c (mono_loader_set_error_type_load): Print the type load
14487         warnings to the console so they are more visible to the user.
14488         (mono_loader_set_error_method_load): Ditto.
14489
14490         * reflection.c (ensure_runtime_vtable): Revert the last change as it
14491         is still broken.
14492         
14493         * reflection.c (ensure_runtime_vtable): Fix build.
14494
14495         * reflection.c (ensure_runtime_vtable): Disable an optimization which
14496         doesn't work in all cases.
14497
14498 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
14499
14500         * object.c (mono_array_new_full): Treat a single dimensional array
14501         with 0 lower bounds as an szarray. Fixes #76973.
14502
14503         * reflection.c (custom_attr_visible): Really fix this.
14504
14505 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
14506
14507         * reflection.c (custom_attr_visible): Allow nested public attributes
14508         as well.
14509
14510         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
14511         interface check.
14512
14513 2005-12-12  Raja R Harinath  <harinath@gmail.com>
14514
14515         * class.c (set_generic_param_owner): Delete.
14516         (mono_class_create_from_typedef): Don't set ->owner field of
14517         generic parameters to "param containers" of enclosing classes.
14518         * reflection.c (mono_reflection_initialize_generic_parameter):
14519         Likewise.
14520
14521 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
14522
14523         * reflection.c (custom_attr_visible): Fix build.
14524
14525 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
14526
14527         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
14528         private attributes.
14529         
14530         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
14531         handling of null parameter defaults.
14532
14533 2005-12-09  Raja R Harinath  <rharinath@novell.com>
14534
14535         * class.c (mono_class_from_generic_parameter): Don't set
14536         klass->generic_container.
14537         (my_mono_class_from_generic_parameter): Likewise.
14538
14539 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14540
14541         * reflection.c (load_public_key): Fix a warning.
14542         (method_encode_code): Fix unaligned accesses.
14543
14544 2005-12-07  Martin Baulig  <martin@ximian.com>
14545
14546         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
14547
14548         * reflection.c
14549         (write_generic_param_entry): Encode our custom attrs.
14550
14551         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
14552
14553 2005-12-07  Martin Baulig  <martin@ximian.com>
14554
14555         * reflection.c (encode_new_constraint): Removed; we don't use the
14556         `NewConstraintAttribute' anymore.
14557
14558 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14559
14560         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
14561         not fire a TypeResolve event when Assembly.GetType () is called.
14562
14563 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14564
14565         Beginning of support for nullable types in the runtime. Parts of
14566         this patch are from Martin.
14567
14568         * appdomain.c (MONO_CORLIB_VERSION): Bump
14569
14570         * domain.c (mono_init_internal): get the nullable type
14571
14572         * class.c (mono_class_is_nullable): New method
14573         (mono_class_get_nullable_param): New mehod
14574         (mono_class_create_generic): In types T? set cast_class to T
14575
14576         * class-internals.h (MonoDefaults): new nullable default class
14577         (mono_class_get_nullable_param, mono_class_get_nullable_param):
14578         new methods.
14579
14580 2005-12-05  Raja R Harinath  <rharinath@novell.com>
14581
14582         * metadata.c (select_container): New.  Refactor code to select the
14583         appropriate GenericContainer given the type of generic parameter
14584         we are looking for.
14585         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
14586         not a MonoGenericContext.  Use select_container.  Update parameters.
14587         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
14588         and MONO_TYPE_MVAR.
14589         (unwrap_arrays): Remove duplicate tests.
14590         (find_generic_param): Rename from 'has_same_context'.  Now walks a
14591         generic instantiated class to find any arguments that are generic
14592         parameters.
14593         (mono_type_create_from_typespec_full): Use find_generic_param to
14594         avoid evicting some generic instantiations from the typespec
14595         cache.
14596
14597 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
14598
14599         * reflection.c: fixed writing of doubles on ARM FPA.
14600
14601 2005-12-02  Robert Jordan  <robertj@gmx.net>
14602
14603         * icall.c: Fixed EventInfo.ReflectedType (#76829).
14604
14605 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14606
14607         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
14608         least on SUSE 10 they are not the same (on debian, they are just the
14609         same thing).
14610
14611 2005-12-01  Raja R Harinath  <rharinath@novell.com>
14612
14613         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
14614         DeclaringType for VARs and MVARs.
14615         * class.c (set_generic_param_owner): Fix initialization of owner
14616         fields.
14617
14618 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
14619
14620         * icall.c: fixed Enum.ToObject() to correctly convert the values.
14621
14622 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14623
14624         * threadpool.c: workaround for a bug that shows up on the Mac:
14625         select()+connect() on a blocking socket is not like it should
14626         be, so we proceed to connect() in that case, wasting the I/O
14627         threadpool thread until connect succeedes. Fixes bug #75436.
14628
14629 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14630
14631         * threadpool.c: fix typo when setting file descriptor states.
14632
14633 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14634
14635         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
14636         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14637         create a temporary signature container.
14638         (mono_metadata_parse_generic_param): Update to changes.
14639         (mono_type_create_from_typespec_full): Update to changes.
14640         * loader.c (method_from_memberref): Don't use a
14641         MonoGenericContainer while parsing a memberref signature.
14642         (method_from_methodspec): Remove dead-store of the 'container'
14643         variable.  It's overwritten before use.
14644
14645         * metadata.c (mono_type_create_from_typespec_full): Make debugging
14646         checks tighter.
14647         (mono_metadata_parse_generic_param): Likewise.
14648         * loader.c (find_method_in_class): Does not need a
14649         MonoGenericContainer.  Use 'mono_method_signature' rather than
14650         'mono_method_signature_full'.
14651         (find_method, mono_get_method_constrained, method_from_memberref):
14652         Update to changes.
14653
14654         * metadata.c (mono_type_create_from_typespec_full): Ensure that
14655         owner-less generic-parameters are never evicted from the typespec
14656         cache.
14657
14658         * loader.c (method_from_memberref): Don't use the current context
14659         when parsing signatures.
14660         (method_from_methodspec, mono_get_method_from_token): Update to changes.
14661
14662         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
14663         side-effects in g_assert.
14664         * loader.c (mono_get_method_from_token): Resolve klass earlier so
14665         that we don't potentially lose information.
14666
14667 2005-11-26  Dick Porter  <dick@ximian.com>
14668
14669         * icall.c:
14670         * threads.c: icalls to implement basic (ie, not named)
14671         System.Threading.Semaphore.
14672
14673 2005-11-24  Dick Porter  <dick@ximian.com>
14674
14675         * process.c
14676         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14677         Use GetProcessId() if it's available.
14678
14679 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
14680
14681         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
14682
14683 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14684             Ankit Jain  <jankit@novell.com>
14685
14686         * loader.c (mono_get_method_from_token): Initialize 'method' field
14687         of all generic parameters before parsing the signature.  Remove
14688         code that "fixed"-up MVAR references.
14689
14690 2005-11-23  Ankit Jain  <jankit@novell.com>
14691
14692         * metadata.c (mono_metadata_has_generic_params):
14693         (mono_metadata_load_generic_param_constraints):
14694         (mono_metadata_load_generic_params): Move duplicate code ...
14695         (mono_metadata_get_generic_param_row): ... here. Returns the
14696         first row-id in GenericParam table for a given owner (token).
14697         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
14698         prototype.
14699
14700 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14701             Ankit Jain  <jankit@novell.com>
14702
14703         * metadata.c (mono_metadata_class_equal): Pass signature_only when
14704         comparing VARs too.
14705         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
14706         type->data.generic_param only if the type is an MVAR.
14707         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
14708         leak owner-less VARs and MVARs into managed space.
14709
14710 2005-11-21  Martin Baulig  <martin@ximian.com>
14711
14712         * class-internals.h
14713         (MonoMethod): Moved the `generic_container' here from
14714         `MonoMethodNormal' since we now also need it for
14715         `MonoMethodPInvoke';
14716         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
14717         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
14718         an union containing both `MonoMethodNormal' and
14719         `MonoMethodPInvoke'.
14720
14721         * loader.c
14722         (mono_get_method_from_token): Allow implementing generic methods
14723         as interncalls.
14724
14725         * threads.c
14726         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
14727         icall.
14728
14729 2005-11-17  Dick Porter  <dick@ximian.com>
14730
14731         * icall.c: 
14732         * process.h: 
14733         * process.c: Split the Process Start_internal icall into
14734         ShellExecuteEx_internal and CreateProcess_internal, which are
14735         called depending on whether UseShellExecute is true.  Fixes bug
14736         76670.
14737
14738         * appdomain.c (MONO_CORLIB_VERSION): Incremented
14739
14740 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14741
14742         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
14743         'msize' parameters, use the information in 'mspec' instead.
14744         (emit_object_to_ptr_conv): Ditto.
14745
14746         * marshal.c (emit_struct_conv): Handle explicit layout structs with
14747         fields out of order. Fixes #76733.
14748
14749 2005-11-17  Ankit Jain  <jankit@novell.com>
14750
14751         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
14752
14753 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
14754
14755         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
14756           bug #76575.
14757
14758 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
14759
14760         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
14761         for types with non-auto layout. Fixes #76717.
14762
14763 2005-11-16  Ankit Jain  <jankit@novell.com>
14764
14765         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
14766         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
14767         if generic_context is null.
14768           (mono_metadata_generic_param_equal): param->owner can be null.
14769           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
14770         null.
14771
14772 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
14773
14774         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
14775         the correct value.
14776
14777 2005-11-15  Martin Baulig  <martin@ximian.com>
14778
14779         * object.c (set_value): Use mono_class_from_mono_type() instead of
14780         the hack for generic instances; fixes #76136.
14781
14782 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
14783
14784         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
14785         fields.
14786
14787         * image.c (load_metadata_ptrs): Initialize the new fields.
14788
14789         * reflection.c (create_dynamic_mono_image): Ditto.
14790
14791         * reflection.c (build_compressed_metadata): Use the new fields.
14792
14793         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
14794         icall.
14795
14796         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
14797         icall.
14798         
14799 2005-11-15  Ankit Jain  <jankit@novell.com>
14800             Raja R Harinath  <harinath@gmail.com>
14801
14802         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
14803         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
14804         new per-generic_container cache if the cached MonoType's context matches
14805         the current context.
14806           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
14807         to the expected context.
14808           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
14809
14810 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14811
14812         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
14813         we changed the signature of an icall.
14814         * icall.c: Modify to mono_double_ParseImpl return true/false 
14815         depending on the success, instead of throwing the exception. This will
14816         help us in Double.TryParse methods.
14817         
14818 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
14819
14820         * marshal.c (emit_marshal_object): Throw an exception when
14821         marshalling 'object' instead of crashing. Fixes #76696.
14822
14823 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14824
14825         * class-internals.h: Add prototype for mono_type_get_full_name ().
14826
14827 2005-11-11  Dick Porter  <dick@ximian.com>
14828
14829         * threads.c (mono_thread_manage): Make sure the main thread has
14830         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
14831
14832 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14833
14834         * loader.c (mono_loader_set_error_type_load): Log a warning to the
14835         console about the missing type.
14836         (mono_loader_set_error_method_load): Ditto.
14837
14838 2005-11-09  Miguel de Icaza  <miguel@novell.com>
14839
14840         * mono-config.c (mono_get_config_dir): Set the system defaults if
14841         none is specified.
14842
14843         * assembly.c (mono_set_dirs): New API entry point to set the
14844         assembly and the config directory in one call
14845
14846 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
14847
14848         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
14849         the ftnptr was created from a delegate in a domain other than the
14850         current domain. Fixes #75377.
14851
14852         * exception.h exception.c: Add mono_get_exception_not_supported ().
14853
14854 2005-11-08  Martin Baulig  <martin@ximian.com>
14855
14856         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
14857
14858 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
14859
14860         * security-manager.h: Added definitions to deal with strongname key 
14861         pairs bigger (and smaller) than 1024 bits.
14862         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
14863         adjust wrt the public key length being used.
14864
14865 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14866
14867         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
14868           Windows build (r51396-51397).
14869
14870 2005-11-03  Martin Baulig  <martin@ximian.com>
14871
14872         * class.c (mono_class_setup_vtable_general): Also add generic
14873         methods to the vtable; fixes #76581.
14874
14875 2005-11-01  Miguel de Icaza  <miguel@novell.com>
14876
14877         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
14878         sure that we lookup GetString method from the System.Text.Encoding
14879         class, not the derived class or we get an empty method.
14880
14881         Fixed class #76612.
14882
14883 2005-10-25  Miguel de Icaza  <miguel@novell.com>
14884
14885         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
14886         if it has been previously set (embedders). 
14887
14888         Make mono_set_rootdir available also on Unix.
14889
14890 005-10-24  Robert Jordan  <robertj@gmx.net>
14891
14892         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
14893
14894 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14895
14896         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
14897         only calls which are made to native code use this flag.
14898
14899         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
14900
14901 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14902
14903         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
14904         Add support for FieldBuilders.
14905
14906 2005-10-29  Martin Baulig  <martin@ximian.com>
14907
14908         * mono-debug.c
14909         (mono_debug_using_mono_debugger): New public method; returns
14910         whether we're running inside the debugger.
14911
14912 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
14913
14914         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
14915         for Method/Constructor/FieldBuilders.
14916
14917 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14918
14919         * reflection.c (module_add_cattrs): Save custom attributes for global methods
14920         and fields as well.
14921
14922 2005-10-26  Martin Baulig  <martin@ximian.com>
14923
14924         * mono-debug-debugger.c
14925         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
14926
14927 2005-10-24  Raja R Harinath  <harinath@gmail.com>
14928
14929         * icall.c (base64_to_byte_array): Don't pass an out-of-range
14930         integer to isspace.
14931
14932 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14933
14934         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
14935         when passing valuetypes byref. Fixes #76502.
14936
14937 2005-10-19  Jackson Harper  <jackson@ximian.com>
14938
14939         * profiler.c: Don't put a . in front of types that are not in a
14940         namespace.
14941
14942 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
14943
14944         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
14945
14946 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
14947
14948         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
14949         #76436.
14950         (mono_marshal_get_ldflda_wrapper): Fix a warning.
14951
14952 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14953
14954         * assembly.c metadata-internals.h icall.c: Define an additional
14955         parameter for mono_assembly_name_parse_full, so we can avoid creating
14956         S.R.AssemblyName.Version when no version info wasn't passed.
14957         
14958 2005-10-09  Miguel de Icaza  <miguel@novell.com>
14959
14960         * class.c (mono_type_get_full_name): Reimplement method that was
14961         removed. 
14962
14963         * image.c: Some docs
14964
14965 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
14966
14967         * profiler.c (output_newobj_profile): Fix printing of Total memory
14968         on x86.
14969
14970 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14971
14972         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
14973
14974 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
14975
14976         * threads.c: remove debug output.
14977
14978 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14979
14980         * threads.c (mono_thread_manage): Fix crashes if more than 64
14981         threads need to be aborted. Hopefully fixes #75899.
14982
14983         * assembly.c (mono_stringify_assembly_name): New helper function.
14984
14985         * class.c: Use mono_stringify_assembly_name instead of the similar
14986         static function.
14987
14988         * assembly.h assembly.c: Add support for calling a postload search 
14989         hook if an assembly cannot be loaded.
14990
14991         * appdomain.c: Register new search hooks which call the AssemblyResolve
14992         events in AppDomain. Fixes #75231
14993
14994 2005-10-07  Martin Baulig  <martin@ximian.com>
14995
14996         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
14997         methods without debug info.
14998
14999 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15000
15001         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15002         wrappers.
15003
15004 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15005
15006         * file-io.c: now that we return symlinks, use lstat and, when the file
15007         is a symbolic link, stat, to get the file attributes. Also avoid the
15008         conversion to/from utf16/external.
15009
15010 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15011
15012         * class.c (mono_class_layout_fields): Compute klass->has_references
15013         correctly if an embedded valuetype is not yet initialized. Fixes
15014         #76331.
15015
15016 2005-10-04  Martin Baulig  <martin@ximian.com>
15017
15018         * metadata.c
15019         (mono_metadata_load_generic_param_constraints): New public
15020         function; splitted the constraints loading out from
15021         mono_metadata_load_generic_params().
15022
15023         * class.c (mono_class_create_from_typedef): Call
15024         mono_metadata_load_generic_param_constraints() after setting up
15025         the type and creating our parent; fixes #75329.
15026
15027 2005-10-04  Martin Baulig  <martin@ximian.com>
15028
15029         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15030         non-dynamic parent classes.
15031
15032 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15033
15034         * file-io.c : win32 build fix (ETXTBSY seems not found).
15035
15036 2005-10-04  Martin Baulig  <martin@ximian.com>
15037
15038         * reflection.c
15039         (mono_image_get_methodspec_token): Make the cache actually work;
15040         fixes #75974.
15041
15042 2005-10-04  Martin Baulig  <martin@ximian.com>
15043
15044         * class.c (mono_class_name_from_token): Removed the unneccessary
15045         `MonoGenericContext *' argument.
15046
15047 2005-10-04  Martin Baulig  <martin@ximian.com>
15048
15049         * loader.c
15050         (method_from_methodspec): Make the caching work again; fixes the
15051         performance regression from #76262.
15052
15053 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15054
15055         * file-io.c:
15056         * file-io.h:
15057         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15058         GetFileSystemEntries that performs the same work but without going
15059         into io-layer, locking, etc.
15060
15061 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15062
15063         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15064         ThreadState_Stopped as well. Fixes #76047.
15065
15066 2005-09-29  Martin Baulig  <martin@ximian.com>
15067
15068         * class.c
15069         (inflate_generic_context): If the new context has a `gmethod', set
15070         its `container' that that gmethod's `container'.
15071
15072         * metadata.c
15073         (mono_metadata_parse_generic_param): Simplify things;
15074         `generic_container = generic_context->container;' is just fine.
15075
15076         * loader.c (method_from_methodspec): Code cleanups.
15077
15078 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15079
15080         * decimal.c: fix warning (and let gcc generate correct
15081         code on ARM with optimizations).
15082
15083 2005-09-28  Martin Baulig  <martin@ximian.com>
15084
15085         * loader.c
15086         (method_from_memberref): Added `MonoGenericContext *class_context'
15087         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15088         (method_from_methodspec): If we're a memberref, use the enclosing
15089         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15090
15091 2005-09-28  Martin Baulig  <martin@ximian.com>
15092
15093         * object.c (mono_runtime_invoke_array): Added support for
15094         MONO_TYPE_GENERICINST; fixes #75917.
15095
15096 2005-09-27  Martin Baulig  <martin@ximian.com>
15097
15098         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15099         `k->byval_arg.type' to determine the actual type.
15100
15101         * loader.c (method_from_methodspec): Removed some hacks.
15102
15103 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15104
15105         * class-internals.h (mono_field_is_deleted): Do the test for
15106         rtspecialname before we check the actual name of the field. This
15107         prevents us from dereferencing a pointer into the string table,
15108         saving us from accessing a few pages
15109
15110         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15111         macros. This will allow a deadlock debugger to easily be plugged
15112         in.
15113
15114 2005-09-27  Martin Baulig  <martin@ximian.com>
15115
15116         * loader.c (method_from_methodspec): Create a "signature"
15117         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15118
15119 2005-09-27  Martin Baulig  <martin@ximian.com>
15120
15121         * class.c
15122         (inflate_generic_class): Correctly set the new context's
15123         container.
15124
15125         * loader.c
15126         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15127         instead of a `MonoGenericContext *'.
15128         (mono_method_signature_full): Take a `MonoGenericContainer *'
15129         instead of a `MonoGenericContext *'.
15130
15131         * metadata.c
15132         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15133         instead of a `MonoGenericContext *'.
15134         (mono_metadata_parse_method_signature_full): Likewise.
15135
15136 2005-09-26  Martin Baulig  <martin@ximian.com>
15137
15138         * class.c
15139         (mono_class_from_generic_parameter): Set `klass->generic_container'
15140         (mono_class_from_generic_parameter): Likewise.
15141         (mono_bounded_array_class_get): We inherit the generic container
15142         from the element class.
15143
15144         * loader.c
15145         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15146         argument rather than computing it here.
15147         (method_from_memberref): Correctly set the generic context before
15148         parsing the signature.  Fixes #75681.
15149
15150 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15151
15152         * object.c (mono_class_has_special_static_fields): Fix warnings.
15153
15154 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15155
15156         * assembly.c: Add parse_public_key function, to
15157         par the public keys. Also added mono_assembly_name_parse_full,
15158         to define it the parsed key should be freed or not.
15159         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15160         to parse a long format assembly name.
15161         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15162         private, since calling it to preserve the key requires
15163         freeing it manually.
15164         
15165 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15166
15167         * locales.c : removed HAVE_ICU part.
15168
15169 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15170
15171         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15172         field_is_special_static if the klass has no special static fields.
15173
15174         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15175         (MonoCachedClassInfo): Likewise.
15176
15177         * object.c (mono_class_has_special_static_fields): New helper function.
15178
15179 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15180
15181         * class.c (mono_class_create_from_typedef): Don't call 
15182         interfaces_from_typedef_full for enums.
15183         (mono_class_create_from_typedef): Compute the base types of enums directly
15184         without calling mono_class_setup_fields ().
15185         (mono_class_find_enum_basetype): New helper function.
15186
15187         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15188         one place inside the string heap.
15189         
15190 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15191
15192         * class.c: locking fixes, code cleanups, some docs added.
15193         Allocate some data structures in the image mempool.
15194
15195 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15196
15197         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15198         the example code.
15199         
15200 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15201
15202         * class-internals.h, class.c, reflection.c: reduce memory taken by
15203         MonoClass.
15204
15205 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15206
15207         * metadata.c, metadata.h, loader.h: documentation updates, code and
15208         API cleanups.
15209
15210 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15213         the example code.
15214
15215         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15216         page faults caused by the runtime while reading metadata.
15217
15218 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15219
15220         * socket-io.c: the field names were changed 3 months ago and no one
15221         realized until bug #76077 got filed!
15222
15223 2005-09-20  Martin Baulig  <martin@ximian.com>
15224
15225         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15226
15227 2005-09-20  Martin Baulig  <martin@ximian.com>
15228
15229         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15230         write the rank into the class entry.
15231
15232 2005-09-20  Martin Baulig  <martin@ximian.com>
15233
15234         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15235
15236 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15237
15238         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15239
15240         * icall.c (custom_attrs_defined_internal): New icall.
15241
15242         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15243         function.
15244         (mono_custom_attrs_construct_by_type): New helper function.
15245
15246 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15247
15248         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15249         terminate the resulting string. Fixes #76123.
15250
15251 2005-09-16  Martin Baulig  <martin@ximian.com>
15252
15253         * mono-debug.c
15254         (mono_debug_add_method): Ignore inflated methods for the moment.
15255
15256 2005-09-14  Martin Baulig  <martin@ximian.com>
15257
15258         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15259
15260 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15261
15262         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15263         return a success/failure indication.
15264         (mono_metadata_interfaces_from_typedef_full): Ditto.
15265         (get_constraints): Ditto.
15266
15267 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15268
15269         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15270         
15271         * marshal.c (emit_marshal_array): Add support for returning string
15272         arrays from delegates. Fixes #76063.
15273
15274         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15275
15276 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15277
15278         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15279         icall.
15280
15281 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15282
15283         * reflection.c icall.c: Fix after mono_get_exception_type_load
15284         signature change.
15285
15286         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15287         (mono_assembly_load_reference): Use the new helper.
15288
15289         * class-internals.h (MonoLoaderError): New structure containing 
15290         information about type loading errors.
15291
15292         * class-internals.h loader.c: Add APIs to store per-thread loader
15293         error information.
15294
15295         * loader.c class.c: Set the loader error if needed.
15296
15297         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15298
15299 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15300
15301         * decimal.c: fixed to handle the broken ARM fp format.
15302
15303 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15304
15305         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15306         broken.
15307
15308 2005-09-06  Martin Baulig  <martin@ximian.com>
15309
15310         * domain.c (supported_runtimes): Added v2.0.50727.
15311
15312 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15313
15314         * culture-info.h: reduce the size of some structures.
15315
15316 2005-09-05  Martin Baulig  <martin@ximian.com>
15317
15318         Reflect latest API changes in the August CTP.
15319
15320         * icall.c
15321         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
15322         ("MonoType.HasGenericArguments"): Removed.
15323         ("MonoMethod.BindGenericParameters"): Renamed to
15324         "MakeGenericMethod".
15325         ("MethodBuilder.BindGenericParameters"): Renamed to
15326         "MakeGenericMethod".    
15327
15328 2005-09-05  Martin Baulig  <martin@ximian.com>
15329
15330         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
15331
15332 2005-09-05  Martin Baulig  <martin@ximian.com>
15333
15334         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15335
15336         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
15337         generic_container is non-NULL.
15338
15339 2005-09-05  Martin Baulig  <martin@ximian.com>
15340
15341         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15342
15343         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
15344
15345 2005-08-29  Michal Moskal  <malekith@nemerle.org>
15346
15347         * reflection.c (encode_locals,
15348         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
15349         for large generic types.
15350
15351 2005-09-05  Martin Baulig  <martin@ximian.com>
15352
15353         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15354
15355         * class.c (mono_dup_array_type): New public method.
15356         (mono_metadata_signature_deep_dup): New public method.
15357         (dup_type): Correctly duplicate array and function types.
15358
15359 2005-09-05  Martin Baulig  <martin@ximian.com>
15360
15361         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15362
15363         * reflection.c (get_default_param_value_blobs): Handle generic types
15364         and generic methods.
15365
15366 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
15367
15368         * class.c: Fixed error reporting (method/class were inversed) for 
15369         inheritance demands.
15370         * security-manager.c|h: Added the AppDomain when calling the managed
15371         System.Security.SecurityManager.InheritanceDemand method.
15372
15373 2005-09-01  Raja R Harinath  <rharinath@novell.com>
15374
15375         * reflection.c (encode_marshal_blob): 'marshaltype' and
15376         'marshaltyperef' are alternate sources for the custom marshaler
15377         name.
15378
15379 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
15380
15381         * class.c: fix creation of array classes with rank == 1
15382         (patch by Ankit Jain <jankit@novell.com>).
15383
15384 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
15385
15386         * object.c: fix check for creating the bound data for arrays vs
15387         szarrays.
15388
15389 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15390
15391         * object.c: configuration file name is now based on the executable name,
15392         not the image name. Fixes bug #75931.
15393
15394 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15395
15396         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
15397         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
15398
15399 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15400
15401         * rand.c: Use wincrypt.h instead of WinCrypt.h.
15402
15403 2005-08-24  Ankit Jain  <jankit@novell.com>
15404             Raja R Harinath  <rharinath@novell.com>
15405
15406         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
15407           called by it recursively.
15408           (mono_class_init): Remove special case in pending_init handling, since it's
15409           superseded by the fix to mono_class_from_typeref.
15410
15411 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15412
15413         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
15414         BROKEN_THREAD_START stuff.
15415
15416 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15417
15418         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
15419         trampoline.
15420
15421         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
15422         
15423         * object.c (mono_delegate_ctor): Replace the original function address with
15424         a delegate trampoline.
15425
15426 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
15427
15428         * icall.c: add boolean argument to base64_to_byte_array and 
15429         InternalFromBase64String to control whether a whitespace-only string
15430         is allowed (or should casue a FormatException to be thrown). We need
15431         this as the behavior has changed between MS.NET 1.x and 2.0, and we
15432         to match the MS behaviour in both profiles.
15433         * appdomain.c: Bump corlib version.
15434
15435 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15436
15437         This patch implements a big portion of publisher policy
15438         support, used to bind assembly versions and redirect
15439         one assembly from version A to version B.
15440
15441         * assembly.c:
15442         New GSList loaded_assembly_bindings, for storing the cached
15443         assembly bindings.
15444         (assembly_binding_maps_name): New static function for checking if a 
15445         assembly binding information maps an assembly name.
15446         (mono_assembly_binding_info_free): New function for freeing
15447         assembly binding information resources.
15448         (get_publisher_policy_info): New static function for retrieving 
15449         assembly binding information from a MonoImage.
15450         (compare_versions): New static function for comparing an assembly
15451         binding information data and the version of an assembly name.
15452         (check_policy_versions): New static function for checking if an
15453         assembly binding info mapping an assembly name is valid for it.
15454         (mono_assembly_load_publisher_policy): New static function for
15455         loading the 'policy.major.minor.MyAssembly' image for an assembly
15456         with an assembly name 'aname'.
15457         (mono_assembly_bind_version): New static function for updating
15458         assembly redirection.
15459         (mono_assembly_apply_binding): New static function for applying
15460         assembly binding.
15461         (search_binding_loaded): New static function for searching 
15462         loaded assembly binding infos in the cache domain.
15463         (mono_assembly_load_full): Don't apply assembly binding for
15464         reflection only assemblies.
15465
15466         * metadata-internals.h: Add MonoAssemblyBindingInfo,
15467         which contains information about assembly binding. Also
15468         declare signature for mono_config_parse_publisher_policy ()
15469         function, used to retrieve pub policy info.
15470         
15471         * mono-config.c:
15472         (publisher_policy_start): New static function used to parse publisher 
15473         policy config files.
15474         (publisher_policy_parser): New static MonoParseHandler containing 
15475         the functions used when parsing config files.
15476         (mono_config_parse_publisher_policy): New function for parsing
15477         publisher policy files.
15478         
15479 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15480
15481         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
15482
15483         * marshal.c (mono_delegate_free_ftnptr): Ditto.
15484
15485         * object.c (mono_get_addr_from_ftnptr): New helper function.
15486
15487         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
15488
15489         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15490
15491 2005-08-19  Dick Porter  <dick@ximian.com>
15492
15493         * threads.c, threads.h, appdomain.c, appdomain.h,
15494         profiler-private.h, monitor.c, object.c, object-internals.h,
15495         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
15496         store the thread ID, so it can hold a 64 bit value if needed.
15497
15498 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15499
15500         * reflection.c (mono_reflection_create_dynamic_method): Store the
15501         handle class into the method references as well so ldtoken works in
15502         dynamic methods.
15503
15504         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
15505         types.
15506
15507 2005-08-19  Ankit Jain <jankit@novell.com>
15508
15509         Fix #75847.
15510         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
15511           here rather than using the method signature of a arbitrary function
15512           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
15513           two arguments.
15514           Hack done with Harinath.
15515
15516 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15517
15518         * threadpool.c: disable printing stack traces when we get a exception
15519         in a threadpool thread. I need to do more testing to figure out which
15520         cases actually print this. Fixes bug #75828.
15521
15522 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15523
15524         * icall.c: there might be ignored whitespace after the last '='. This
15525         fixes length computation and bug #75840.
15526
15527 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
15528
15529         * assembly.c (mono_assembly_load_full): Consider .exe extension as
15530         well. Fixes #75809.
15531
15532         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
15533         #75784.
15534         
15535         * reflection.c (create_custom_attr_data): Ditto.
15536
15537 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
15538
15539         * locales.c, culture-info.h : removed RegionLCIDMap.
15540         * culture-info-tables.h : regenerated.
15541
15542 2005-08-16  Martin Baulig  <martin@ximian.com>
15543
15544         * class.c (mono_type_get_name_recurse): Small fix.
15545
15546 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
15547
15548         * locales.c : indentation fixie.
15549
15550 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
15551
15552         * object-internals.h,
15553           locales.h,
15554           locales.c,
15555           culture-info.h,
15556           icall.c : added RegionInfo table support.
15557         * culture-info-table.h : regenerated for region support.
15558
15559 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
15560
15561         * reflection.c (resolve_object): handle all kinds of MonoMethod
15562         including generic ones
15563
15564 2005-08-12  Ankit Jain <jankit@novell.com>
15565
15566         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
15567           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
15568
15569 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
15570
15571         * process.c: Don't close a thread handle when it's NULL. This is a
15572         workaround for bug #75733.
15573
15574 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15575
15576         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
15577
15578 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
15579
15580         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
15581
15582 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15583
15584         * threadpool.c: if a work item in the thread pool has a callback that
15585         catches a exception, don't propagate it after invoking the callback.
15586         Fixes bug #75336.
15587
15588 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15589
15590         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
15591
15592         * class-internals.h (MonoCachedClassInfo): Add some new fields.
15593
15594         * class.c (mono_class_init): Load field info lazily in the AOT case.    
15595
15596         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
15597
15598 2005-08-03  Ankit Jain  <jankit@novell.com>
15599
15600         Fix #75683.
15601         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
15602           PInvoke calling convention is 0.
15603
15604 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
15605
15606         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
15607         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
15608
15609 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
15610
15611         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
15612         to handle threads not started by the GC (patch by Michael Meeks
15613         <michael.meeks@novell.com>).
15614
15615 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
15616
15617         * reflection.c: Make buffer used in emitting types larger for some
15618         big generic types (patch by Michal Moskal).
15619
15620 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15621
15622         * mono-debug.c: Fix some (not all) alignment problems.
15623
15624 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15625
15626         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
15627         Invoke mono_image_load_from_data_full passing the refonly
15628         parameter.
15629
15630         * assembly.c
15631         (mono_assembly_open_from_bundle): Add the refonly argument, 
15632         in order to pass it to other methods it calls to.
15633         (do_mono_assembly_open): Add the refonly argument, in order 
15634         to pass it to other methods it calls to.
15635         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
15636         the refonly parameter to it.
15637
15638         * image.c: Add loaded_images_refonly_hash and
15639         loaded_images_refonly_guid_hash to cache the reflection
15640         only loaded images.
15641         (mono_images_init): Initialize the hash tables used for
15642         caching the reflection only images.
15643         (load_modules): Invoke mono_image_open_full passing the refonly
15644         parameter to load the modules the correct way.
15645         (build_guid_table): Add the refonly argument, to re-build the 
15646         correct hash table.
15647         (do_mono_image_open): Added the refonly argument, in order to
15648         define it for the loaded image.
15649         (mono_image_loaded_full): New function, which receives an
15650         additional parameter to look for the image in the refonly or
15651         non-refonly section.
15652         (mono_image_loaded): Updated, using mono_image_loaded_full.
15653         (mono_image_loaded_by_guid_full): The same case that happens
15654         with mono_image_loaded_full.
15655         (mono_image_loaded_by_guid): Likewise.
15656         (register_image): Use the ref_only variable inside MonoImage
15657         to decide in which hash table store the current image.
15658         (mono_image_open_from_data_full): Rename
15659         mono_image_open_from_data to mono_image_open_from_data_full,
15660         adding the refonly argument, to define the ref_only variable 
15661         inside MonoImage.
15662         (mono_image_open_from_data): Return 
15663         mono_image_open_from_data_full.
15664         (mono_image_open_full): Rename mono_image_open to
15665         mono_image_open_full, receiving the new refonly argument,
15666         to pass it to inner methods.
15667         (mono_pe_file_open): Update this function, to open
15668         a MonoImage as a non-refonly image.
15669         (mono_image_close): Use the refonly variable inside
15670         MonoImage to remove the image from the correct caches.
15671
15672         * image.h: Add the signatures of mono_image_open_full,
15673         mono_image_open_from_data_full, mono_image_loaded_full,
15674         mono_image_loaded_by_guid_full.
15675
15676         * metadata-internals.h: Add the ref_only field to 
15677         MonoImage.
15678         
15679 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15680
15681         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
15682         Fix the last behavior, which used to load the assemblies and
15683         extract MonoReflectionAssemblyName information, instead of
15684         extract it from the metadata tables. Needed for Reflection
15685         Only assemblies.
15686         
15687 2005-07-29  Martin Baulig  <martin@ximian.com>
15688
15689         * mono-debug-debugger.c
15690         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
15691         not initialized.
15692
15693         * mono-debug.c
15694         (mono_debug_address_from_il_offset): Check whether we have
15695         debugging support before attempting to take the lock.
15696         (mono_debug_source_location_from_address): Likewise.
15697         (mono_debug_source_location_from_il_offset): Likewise.
15698         (mono_debug_il_offset_from_address): Likewise.
15699         (mono_debug_address_from_il_offset): Likewise.
15700
15701 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
15702
15703         * class.c (mono_class_from_name_case): Add support for dynamic images.
15704         Fixes #75650.
15705
15706         * object.c (mono_class_compute_gc_descriptor): Add a workaround
15707         for #75479.
15708
15709 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15710         
15711         * reflection.c (mono_method_get_object): Fix warning.
15712
15713 2005-07-28  Martin Baulig  <martin@ximian.com>
15714
15715         * mono-debug.c
15716         (mono_debug_add_wrapper): Also write the wrapper type.
15717
15718 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15719
15720         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
15721         
15722         * class.c (mono_class_init): Avoid reading nested classes if the AOT
15723         data indicates the class has none.
15724
15725 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
15726
15727         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
15728         loader lock with the debugger lock. Prevents deadlocks for beagle.
15729
15730         Beagle can now run on an smp box for a weekend without any
15731         issues. Woohoo!
15732
15733 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
15734
15735         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
15736         in a module. Fixes #75629.
15737
15738 2005-07-26  Martin Baulig  <martin@ximian.com>
15739
15740         * mono-debug.c (mono_debug_add_wrapper): New static method.
15741         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
15742         interncall or a wrapper.
15743
15744         * mono-debug.h (MonoDebugWrapperData): New public typedef.
15745         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
15746         (MONO_DEBUGGER_VERSION): Bump to 51.
15747
15748         * mono-debug-debugger.c
15749         (mono_debugger_add_type): Removed this empty function.
15750         (mono_debugger_add_method): Likewise.
15751
15752 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
15753
15754         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
15755         before accessing method->slot.
15756
15757 2005-07-21  Jb Evain  <jbevain@gmail.com>
15758
15759         * reflection.c (method_encode_clauses/class): Handle filters clauses.
15760         Fixes #75010.
15761
15762 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
15763
15764         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
15765         #75587.
15766
15767 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15768
15769         * image.h image.c: Add mono_image_get_guid () API function.
15770
15771 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
15772
15773         There were issues when multiple threads tried to load
15774         assemblies. A deadlock was created between assemblies_mutex and
15775         mono_domain_assemblies_lock. This fixes the issue by making the
15776         assembly ref counting be lock free. See bug 75586.
15777         
15778         * image.c (mono_image_close): The add ref function here was using
15779         Interlocked operations while the unref was using a mutex and a
15780         --. I don't think this was ever a bug that would be exposed in a
15781         non-pendantic way (ie, by an embedder doing a ref on one thread
15782         and an unref on another), but for the sake of correctness, this is
15783         now Interlocked.
15784
15785         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
15786         (mono_assembly_load_reference): Call mono_assembly_addref rather
15787         than touching the refcount ourselves.
15788         (mono_assembly_close): Use InterlockedDecrement to unref the
15789         assembly. Don't acquire the lock unless it is actually needed.
15790
15791 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
15792
15793         * class.c (mono_class_layout_fields): Fix calculation of has_references
15794         for generic types.
15795
15796 2005-07-12  Martin Baulig  <martin@ximian.com>
15797
15798         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15799
15800         * metadata.c
15801         (mono_type_hash): Provide better hashing for generic instances.
15802         (mono_generic_inst_hash): Improve hashing.
15803         (mono_generic_class_hash): Likewise.
15804
15805         * reflection.c (mymono_metadata_type_hash): Improve hashing for
15806         generic instances.
15807
15808 2005-07-12  Martin Baulig  <martin@ximian.com>
15809
15810         * reflection.c (mono_reflection_create_runtime_class): Remove the
15811         hack for generic type definitions and non-`Run' assemblies.
15812         (mono_reflection_bind_generic_parameters): Also use
15813         `klass->wastypebuilder' to check for TypeBuilders.
15814
15815 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
15816
15817         * class.c (mono_class_layout_fields): Fix calculation of has_references
15818         for generic types.
15819
15820         * class.c (inflate_generic_class): Fix a leak.
15821         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
15822         for generic types.
15823
15824 2005-07-11  Martin Baulig  <martin@ximian.com>
15825
15826         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
15827         on error.
15828
15829 2005-07-11  Martin Baulig  <martin@ximian.com>
15830
15831         * loader.c (find_method): Also lookup in
15832         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
15833
15834 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15835
15836         * appdomain.c (mono_domain_unload): Don't free the error message
15837         before passing it to mono_get_exception_...
15838
15839         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
15840         
15841 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
15842
15843         * threads.c: try to better guess an available RT signal (bug #75387).
15844
15845 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15846
15847         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
15848         and CACHE_OBJECT.
15849
15850 2005-07-07  Martin Baulig  <martin@ximian.com>
15851
15852         * class.c (mono_type_get_name_full): Return NULL for
15853         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
15854         fixes #75408.
15855
15856 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15857
15858         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
15859         exit the appdomain as well being aborted.
15860
15861         * threadpool.c: Create all threadpool threads inside the root appdomain, and
15862         change back to the root domain after calling managed code. This enables
15863         appdomains using threadpools to be unloaded.
15864
15865 2005-07-07  Martin Baulig  <martin@ximian.com>
15866
15867         * class-internals.h
15868         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
15869         into `MonoDynamicGenericClass' since we only need it for dynamic
15870         types.
15871
15872         * reflection.c (mono_class_bind_generic_parameters): We don't need
15873         to compute the `parent' here.
15874
15875 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
15876
15877         * culture-info-table.h : regenerated.
15878
15879 2005-07-06  Martin Baulig  <martin@ximian.com>
15880
15881         * icall.c
15882         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
15883
15884         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
15885
15886 2005-07-06  Martin Baulig  <martin@ximian.com>
15887
15888         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
15889         we're doing a signature-only comparision; fixes #74945.
15890
15891 2005-07-06  Martin Baulig  <martin@ximian.com>
15892
15893         * class-internals.h (MonoGenericClass): Moved some things out into
15894         a new `MonoInflatedGenericClass' type.  
15895         (MonoInflatedGenericClass): New type; the `klass' of a
15896         `MonoGenericClass' is now computed lazyly in
15897         mono_get_inflated_generic_class().      
15898
15899         * class.c (mono_get_inflated_generic_class): New public function.
15900         (mono_class_inflate_generic_method): Removed the unused
15901         `MonoClass *' argument.
15902         (setup_generic_vtable): Don't call mono_get_inflated_method() on
15903         all the methods.
15904         (mono_class_create_generic): Make this static and merge it with
15905         mono_class_create_generic_2(); we're now called automatically from
15906         mono_get_inflated_generic_class().
15907
15908         * loader.c (mono_method_signature): Call
15909         mono_get_inflated_method() here.
15910
15911 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
15912
15913         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
15914         type of fields with RVA.
15915
15916         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
15917         for this pseudo class.
15918         (my_mono_class_from_generic_parameter): Likewise.
15919         (mono_class_init): Allow interfaces to have cctors.
15920
15921 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15922
15923         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
15924         lazily for AOT methods.
15925
15926 2005-07-05  Martin Baulig  <martin@ximian.com>
15927
15928         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
15929         returns FALSE for a successful match, not TRUE.
15930
15931 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15932
15933         * loader.c (mono_method_get_index): Optimize this a bit.
15934
15935 2005-07-04  Martin Baulig  <martin@ximian.com>
15936
15937         * class.c
15938         (class_compute_field_layout): Move the check for generic type
15939         definitions into mono_class_layout_fields().  Fixes #74684.
15940         (mono_class_from_generic_parameter): Correctly compute
15941         `klass->parent'; fixes #75457.
15942
15943         * reflection.c (register_assembly, register_module): Make sure
15944         `domain->rejobject_hash' is already created.
15945
15946 2005-07-02  Martin Baulig  <martin@ximian.com>
15947
15948         * class-internals.h
15949         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
15950         `MonoDynamicGenericClass'.      
15951
15952 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
15953
15954         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
15955         returned by a field getter is null, since null is a valid value.
15956
15957 2005-07-01  Martin Baulig  <martin@ximian.com>
15958
15959         * reflection.c (mono_reflection_generic_class_initialize): Update
15960         the `dgclass->fields [i].parent' to the correct class.
15961         (mono_image_get_fieldref_token): Use the declaring type, not the
15962         reflected type.
15963
15964 2005-07-01  Martin Baulig  <martin@ximian.com>
15965
15966         * loader.c (find_method): Also look in the interfaces; fixes #75429.
15967
15968 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
15969
15970         * threads.c (thread_cleanup): assert that thread != NULL
15971         (wait_for_tids_or_state_change): We were using the wrong variable
15972         when accessing wait->threads. `i' was always out of the bounds of
15973         the array.
15974
15975 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15976
15977         * loader.c: map user32 and kernel32 to libMonoSupportW
15978
15979 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15980
15981         * appdomain.c (unload_thread_main): Mark this as WINAPI.
15982
15983 2005-06-28  Martin Baulig  <martin@ximian.com>
15984
15985         * loader.c (method_from_methodspec): Fix #75334.
15986
15987 2005-06-28  Martin Baulig  <martin@ximian.com>
15988
15989         Fix #74953 - Arrays now implement the generic IList<T> interface
15990         on the 2.0 platform.
15991
15992         * class-internals.h (MonoDefaults): Added `generic_array_class'.
15993
15994         * reflection.c (mono_class_bind_generic_parameters): New public
15995         function; similar to mono_reflection_bind_generic_parameters(),
15996         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
15997
15998         * domain.c (mono_init_internal): Try to initialize.
15999         `mono_defaults.generic_array_class' here; this'll only succeed if
16000         we're using the 2.0 corlib.
16001
16002         * icall.c
16003         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16004         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16005         (mono_lookup_internal_call): Added support for nested classes.
16006
16007         * loader.c
16008         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16009         we're an interncall and have generic arguments.
16010
16011         * class.c
16012         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16013         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16014         instance of System.Array.InternalArray<T> for arrays, so they
16015         implement the generic IList<T> interface.
16016
16017 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16018
16019         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16020         (chastamar@yahoo.com). Fixes #75374.    
16021
16022 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16023
16024         * culture-info-table.h: regenerated.
16025
16026 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16027
16028         * icall.c: handle spaces correctly for base64 strings.
16029
16030 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16031
16032         * *.c: Kill some warnings.
16033
16034 2005-06-23  Duncan Mak  <duncan@novell.com>
16035
16036         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16037         that this builds on Solaris 10 (x86).
16038
16039 2005-06-23  Martin Baulig  <martin@ximian.com>
16040
16041         * class.c
16042         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16043         generic type definitions.
16044
16045 2005-06-23  Martin Baulig  <martin@ximian.com>
16046
16047         Fix #75331.
16048
16049         * metadata.c (mono_class_get_overrides): Renamed to
16050         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16051         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16052         pass it to mono_get_method_full().
16053
16054 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16055
16056         * reflection.c (mono_reflection_create_runtime_class): take the
16057         mono_domain_lock in this method. Prevents deadlocks
16058
16059 2005-06-22  Martin Baulig  <martin@ximian.com>
16060
16061         * loader.c (method_from_methodspec): Fix #75330.
16062
16063 2005-06-22  Martin Baulig  <martin@ximian.com>
16064
16065         * reflection.c (type_get_qualified_name): Use
16066         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16067         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16068         argument; use it if we don't have an assembly name.
16069
16070 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16071
16072         * object.c: In mono_message_init, set "copy out" flag for in
16073         parameters with the [Out] flag.
16074
16075 2005-06-21  Martin Baulig  <martin@ximian.com>
16076
16077         * class.c
16078         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16079         and MONO_TYPE_PTR.
16080
16081 2005-06-21  Martin Baulig  <martin@ximian.com>
16082
16083         * class.c (mono_class_init): Don't initialize `class->fields' for
16084         generic instances since they're initialized again in
16085         compute_field_layout(). 
16086         (compute_field_layout): Set the field's `generic_info' here; fix
16087         #75320. 
16088
16089 2005-06-21  Martin Baulig  <martin@ximian.com>
16090
16091         * class-internals.h
16092         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16093
16094         * metadata.c (mono_metadata_generic_method_equal): Also
16095         distinguish the `generic_class'; fixes #75334.
16096
16097 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16098
16099         * domain.c:
16100         * appdomain.c:
16101         * domain-internals.h:
16102         * reflection.c: 'domain_assemblies' field is now protected by its own
16103         lock. Don't call into managed code to run the AssemblyLoad event if we
16104         now there are no registered delegates for it.
16105
16106 2005-06-20  Martin Baulig  <martin@ximian.com>
16107
16108         * class.c (mono_class_is_assignable_from): Use a custom version of
16109         mono_class_has_parent() to make things work for generic instances;
16110         fix #75300.
16111
16112 2005-06-20  Martin Baulig  <martin@ximian.com>
16113
16114         * loader.c (method_from_methodspec): Apply a patch from
16115         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16116
16117 2005-06-20  Martin Baulig  <martin@ximian.com>
16118
16119         * class.c (mono_class_init): Reverted Zoltan's last change; it
16120         breaks generics.
16121
16122 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16123
16124         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16125
16126 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16127
16128         * socket-io.c: fix the index in the socket array for writable/error
16129         sockets. Fixes bug #75306.
16130
16131 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16132
16133         * class.c (mono_class_init): Allow interfaces to have static ctors.
16134
16135 2005-06-17  Martin Baulig  <martin@ximian.com>
16136
16137         * loader.c (method_from_methodspec): Use `context->container' when
16138         parsing the `gmethod->inst'.
16139
16140 2005-06-17  Martin Baulig  <martin@ximian.com>
16141
16142         * class.c (mono_type_get_name_recurse): Don't add the assembly
16143         name for type arguments.
16144
16145 2005-06-15  Martin Baulig  <martin@ximian.com>
16146
16147         * reflection.c (mono_image_get_inflated_method_token): Encode
16148         correct klass; fixes #75260.
16149
16150 2005-06-13 Michal Moskal <malekith@nemerle.org>
16151
16152         * icall.c: Make GetCorrespondingMethod/Constructor take
16153         MonoReflectionMethod method not MonoMethod. Removed
16154         MonoType.GetCorrespondingField, and make
16155         MonoGenericType.GetCorrespondingField take name not
16156         MonoClassField.
16157
16158 2005-06-13  Michal Moskal <malekith@nemerle.org>
16159
16160         * reflection.c (field_encode_signature, encode_locals):
16161          Make sizes of buffers for types larger (for big generic types).
16162          (create_generic_typespec,
16163          mono_reflection_sighelper_get_signature_local,
16164          mono_reflection_sighelper_get_signature_field):
16165          Add asserts for too small buffers.
16166
16167 2005-06-15  Martin Baulig  <martin@ximian.com>
16168
16169         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16170         if our parent is not a dynamic type.
16171
16172 2005-06-15  Martin Baulig  <martin@ximian.com>
16173
16174         * class-internals.h (MonoTypeNameFormat): New enum.
16175
16176         * class.c
16177         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16178         (mono_type_get_full_name): Removed.
16179         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16180         argument instead of the boolean's.
16181
16182         * icall.c (ves_icall_System_MonoType_getFullName):
16183         Added `gboolean assembly_qualified'.    
16184
16185         * reflection.h
16186         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16187
16188         * reflection.c (mono_reflection_parse_type): Parse the new type
16189         name format.
16190
16191 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16192
16193         * icall.c: no need to convert from utf16 to utf8 and then back again
16194         after the call to GetLogicalDrives.
16195
16196 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16197
16198         * icall.c: frombase64. Fix problems exposed by new tests.
16199
16200 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16201
16202         * icall.c: added internal calls for converting char [] and strings in
16203         base64 into byte [].
16204
16205 2005-06-10  Martin Baulig  <martin@ximian.com>
16206
16207         * class.c (mono_class_create_generic_2): Read the nested classes
16208         from the metadata rather than from `gklass->nested_classes' since
16209         `gklass' might not be initialized yet.
16210
16211 2005-06-09  Duncan Mak  <duncan@novell.com>
16212
16213         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16214         all public headers. Fixes #74919.
16215
16216 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16217
16218         * domain.c: The key for proxy_vtable_hash is now a pointer
16219         array. Added new GHashFunc and GCompareFunc functions for this.
16220
16221         * class.h: The list of interfaces in MonoRemoteClass is known in
16222         advance and can't grow (we create a new MonoRemoteClass if needed),
16223         so now the interface array can be allocated together with
16224         MonoRemoteClass.
16225         
16226         * object.c: Added a new method create_remote_class_key.
16227         Fixed mono_remote_class so it does not depend on
16228         mono_upgrade_remote_class.
16229         Removed extend_interface_array.
16230         Added new method clone_remote_class(), which makes a copy of a remote
16231         class and adds a new interface or class to it.
16232         mono_upgrade_remote_class() now creates a new remote class (or gets
16233         it from the cache) if an vtable upgrade is needed. In this way
16234         we make sure that other objects sharing the same remote class
16235         don't get the new vtable with unwanted interfaces.
16236         
16237         * object-internals.h:
16238         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16239         
16240         * marshal.c: Track changes in mono_upgrade_remote_class().
16241
16242 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16243         * icall.c: Add runtime methods for obtaining members of inflated
16244         class, which were created from supplied non-inflated members. It
16245         is used in internal Get{Method,Constructor,Field} methods in
16246         System.Type
16247
16248 2005-06-09  Martin Baulig  <martin@ximian.com>
16249
16250         * reflection.c
16251         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16252
16253 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16254         * reflection.c (mono_image_basic_init): Define
16255         Version in MonoDynamicAssembly. 
16256         
16257 2005-06-08  Martin Baulig  <martin@ximian.com>
16258
16259         Fix #75136.
16260
16261         * loader.c
16262         (mono_method_signature_full): New public method; takes a
16263         `MonoGenericContext *'.
16264         (find_method): Use mono_method_signature_full() and pass the
16265         klass'es context to it.
16266
16267         * class.c (mono_class_is_inflated_method): Use
16268         mono_method_signature_full() and pass the context to it.
16269
16270 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16271
16272         * object.c: add proper locking in mono_remote_class_vtable(),
16273         fixes possible memory corruption.
16274
16275 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16276
16277         * marshal.c (mono_remoting_marshal_init): set
16278         initialized after initialization.
16279
16280 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16281
16282         * locales.c : hush.
16283
16284 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16285
16286         * object.c (extend_interface_array): fix really silly
16287         memory corrupting / comparison bug.
16288
16289 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16290
16291         * reflection.c: Functions added to support the creation
16292         of CustomAttributeData, which includes Attribute data
16293         used by ReflectionOnly methods.
16294
16295         * reflection.h:  mono_reflection_get_custom_attrs_data and
16296          mono_custom_attrs_data_construct added (functions exposed).
16297
16298          * icall.c: Added mono_reflection_get_custom_attrs_data
16299          as icall.
16300         
16301 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16302
16303         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16304         lupus's request.
16305
16306 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16307
16308         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16309
16310         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16311         dynamic DllImportAttribute.
16312
16313         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16314         dynamic DllImportAttribute.
16315
16316         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
16317         Fixes #75162.
16318
16319 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16320
16321         * threads.c: avoid segfault when an unstarted thread is aborted.
16322
16323 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
16324
16325         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
16326         Returns the name and version of the runtime for reporting.
16327
16328 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16329
16330         * appdomain.c: bump corlib version.
16331         * object-internals.h: new field in MonoReflectionAssembly.
16332
16333 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16334
16335         * object-internals.h: Carlos forgot to add this field.
16336
16337 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16338
16339         * icall.c: Added create_version to create instances
16340         of Version of MonoReflectionAssemblyName. This change helps
16341         the AssemblyName tests to keep running fine.
16342         
16343 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
16344   
16345         * object.c (mono_method_return_message_restore): A somehow less
16346         intrusive fix for #75138.
16347
16348 2005-06-03  Raja R Harinath  <rharinath@novell.com>
16349
16350         * object.c (mono_method_return_message_restore): Fix computation
16351         of expected number of out args.
16352
16353 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16354
16355         * reflection.c (mono_image_get_method_info): Fix the case when the
16356         charset is empty.
16357
16358 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
16359
16360         * object.c: Added missing null check in
16361           mono_method_return_message_restore.
16362
16363 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16364
16365         * reflection.c (mono_image_get_method_info): Handle the case when
16366         dllentry is empty.
16367
16368 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
16369
16370         * object.c: When creating the vtable for a proxy, take into account
16371         all inherited interfaces, not only the ones registered in
16372         iclass->interfaces. This fixs bug #74996.
16373         Also, in mono_method_return_message_restore, verify that the array
16374         of out args has the expected lengh.
16375
16376 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16377
16378         * socket-io.c: update the timeout in Poll when the call is interrupte.
16379
16380 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16381
16382         * socket-io.c: support abort/suspend in Select_internal after last
16383         change.
16384
16385 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16386
16387         * threadpool.c: remove warning.
16388
16389 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16390
16391         * icall.c:
16392         * socket-io.[ch]: Select_internal uses poll() now when available, thus
16393         removing the 1024 limit from select(). Runtime part of the fix for
16394         bug #71203.
16395
16396 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16397
16398         * socket-io.c: when resolving the addresses for the same
16399         host returned by gethostname(), get the local IPs from the interface
16400         list. Loopback addresses are discarded if the are interfaces up with
16401         non-loopback ones. Fixes bug #63265.
16402
16403 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
16404
16405         * appdomain.c, verify.c, object-internals.h, reflection.c:
16406         bumped corlib number to 36, and added new extra_flags field
16407         to ReflectionMethodBuilder and friends.  Fixes #75060.
16408
16409 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
16410
16411         * gc.c: register a new weak link only if the object is non-null
16412         (fixes bug#75047).
16413
16414 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16415
16416         * culture-info.h : short time pattern too.
16417
16418 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16419
16420         * culture-info.h : expand long time pattern string length.
16421
16422 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16423
16424         * culture-info-table.h : update (more French date format; #72788).
16425
16426 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
16427
16428         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
16429         the method is static. Fixes #75029.
16430
16431 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
16432
16433         * reflection.c: Update the table_idx field of method builders after
16434         saving the module, since it can change. This is a workaround for
16435         bug #74914. 
16436
16437 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16438
16439         * culture-info-table.h : update (additional French date format).
16440
16441 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16442
16443         * icall.c (ves_icall_type_Equals): Revert last change.
16444         
16445         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
16446
16447         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
16448
16449 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
16450
16451         * class-internals.h: Added executioncontext_class field to 
16452         MonoDefaults structure.
16453         * domain.c: Cache System.Threading.ExecutionContext class in 
16454         mono_defaults.
16455         * object.c: Capture the ExecutionContext for asynchroneous calls in
16456          mono_async_result_new.
16457         * object-internals.h: Added execution_context and original_context 
16458         fields to MonoAsyncResult. Added execution_context to MonoThread.
16459         * security-manager.c|.h: Added mono_get_context_capture_method to 
16460         return the capture method (if required by the security manager or by
16461         the framework version used).
16462         * threadpool.c: Apply capture (if present) ExecutionContext in 
16463         mono_async_invoke and revert to original context after it completes.
16464
16465 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
16466
16467         * culture-info-table.h : updated (real hacky solution for zh-CHT).
16468
16469 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
16470
16471         * culture-info-table.h : zh-CHT related workaround.
16472
16473 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16474
16475         * marshal.c (emit_marshal_custom): Add some error checking and call the
16476         methods in the ICustomMarshaler interface. Fixes #74875.
16477         
16478         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
16479         native->managed wrappers.
16480
16481 2005-05-12  Martin Baulig  <martin@ximian.com>
16482
16483         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
16484         here and use the loader lock.
16485
16486         * mono-debug.c: Properly lock when the debugger is not attached.
16487         (mono_debug_init): Release the initial lock if we're not running
16488         in the debugger.
16489
16490 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16491
16492         * marshal.c (emit_marshal_custom): Pass through NULL values without
16493         calling the custom marshalling routines.
16494
16495         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
16496         conversion in structures. Fixes #74882.
16497
16498 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
16499
16500         * culture-info-table.h : zh-* cultures were missing.
16501
16502 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
16503
16504         * threads.c: Added a new event background_change_event which is signaled
16505         when a thread changes its background mode.
16506         Moved here several checks previously done in managed code. The checks
16507         require the thread lock, and using the thread lock in managed code
16508         can result in deadlocks.
16509         Merged Start_internal and Thread_internal into a single method. Now 
16510         Thread_internal does all work of creating and starting a thread.
16511         Added icalls for setting and getting the state of the object. Moved from
16512         managed code to avoid locking there.
16513         Added wait_for_tids_or_state_change() which is called instad of
16514         wait_for_tids when waiting for non-backround threads to end. This method
16515         will return if one of the threads ends or the background_change_event
16516         is signaled.
16517         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
16518         the background mode. This method signals the background_change_event
16519         event.
16520         * icall.c:
16521         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
16522         removed Start_internal.
16523         
16524 2005-05-11  Martin Baulig  <martin@ximian.com>
16525
16526         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
16527         to order of some fields to get proper alignment on 64-bit machines.
16528
16529 2005-05-11  Martin Baulig  <martin@ximian.com>
16530
16531         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
16532         changes as they're broken and completely fuck up the debugger.
16533
16534         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
16535
16536 2005-05-10  Martin Baulig  <martin@ximian.com>
16537
16538         * reflection.c (mono_reflection_generic_class_initialize): Don't
16539         call mono_class_setup_parent() here.
16540
16541 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16542
16543         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
16544         send/receive timeout use an integer in milliseconds. We were using a
16545         struct timeval.
16546
16547 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16548
16549         * locales.c:
16550         (internal_get_cultures): reserve the first slot of the array for the
16551         InvariantCulture, which will be filled in managed code.
16552
16553 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
16554
16555         * reflection.c (mono_image_fill_module_table): Initialize the
16556         GENERATION field as well.
16557
16558 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16559
16560         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
16561         Monitor.Enter on the object.
16562
16563 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16564
16565         * threads.c: Enable the wait for running threads when exiting.
16566         * icall.c: Suspend all threads before exiting.
16567
16568 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16569
16570         * assembly.c (mono_assembly_load_reference): Fix warning.
16571
16572 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16573
16574         * threadpool.c: changed the default number of threads per cpu. From now
16575         on, the default will be 20 + (5 * number of cpus) instead of 50.
16576
16577 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
16578
16579         * loader.c (mono_method_get_signature_full): Add locking here.
16580
16581 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
16582
16583         * appdomain.c: Moved methods for parsing and freeing assembly
16584         names to assembly.c.
16585         * assembly.c, domain-internals.h: Created public methods for parsing
16586         assembly names. Fixed mono_assembly_load_with_partial_name:
16587         it now finds the best match, taking into account the version,
16588         token and culture specified in the partial name. Also return
16589         the latest version if no version information is specified.
16590
16591 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
16592
16593         * threadpool.c: replace check for SocketAsyncCall class.
16594
16595 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16596
16597         * threadpool-internals.h:
16598         * Makefile.am: added threadpool-internals.h
16599
16600         * threadpool.c: call mono_unhandled_exception on exceptions not handled
16601         that happen in threadpool threads (tested on MS).
16602         (mono_thread_pool_remove_socket): new function that dispatch any pending
16603         AIO call on a socket that is closing. By now only epoll really needs it,
16604         as select/poll wake up when the socket closes.
16605
16606
16607         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
16608
16609 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
16610
16611         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
16612
16613 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
16614
16615         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
16616
16617 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
16618
16619         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
16620         has an abort request, convert it into a suspend request.
16621
16622 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
16623
16624         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
16625         warning for the usage of `UnmanagedFunctionPointerAttribute' which
16626         is not supported yet.
16627
16628 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16629
16630         * image.c: register assemblies loaded from data (bundles) in the loaded
16631         assemblies hash. Fixes bug #74772.
16632
16633 2005-04-29  Martin Baulig  <martin@ximian.com>
16634
16635         * class.c (mono_type_get_name_recurse): Update to the new naming
16636         schema from the latest .NET 2.x beta2.
16637         (mono_class_setup_vtable_general): If we're a generic instance,
16638         copy the vtable from our generic type definition and inflate all
16639         the methods in it.
16640
16641         * loader.c (find_method): Update to the new naming schema from the
16642         latest .NET 2.x beta2.
16643
16644 2005-04-29  Raja R Harinath  <harinath@gmail.com>
16645
16646         * class.c (mono_class_init): Add a mono_loader_unlock to the
16647         #74734 fix.
16648
16649 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16650
16651         * icall.c (ves_icall_System_Environment_Exit): Remove the 
16652         suspend_all_other_threads () call for the time being, since it can hang.
16653
16654         * threads.c (mono_thread_manage): Similarly, disable the waiting for
16655         the background threads to exit, since it can also hang.
16656
16657         * class.c (mono_class_init): Applied patch from Ankit Jain 
16658         (radical@gmail.com). Avoid pending init errors when a field refers
16659         to a nested class using a typeref. Fixes #74734.
16660
16661         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
16662         this for dynamic modules.
16663
16664 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16665
16666         * threads.c: don't wait for threads that are in the process of aborting
16667         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
16668         and waiting for background threads to finish. This makes xsp and
16669         mod-mono-server exit without random length delays and/or hangs.
16670
16671 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16672
16673         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
16674
16675 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
16676
16677         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
16678         dynamic types to prevent infinite loops. Fixes #74727.
16679
16680         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
16681         ..._is_assignable_to.
16682
16683 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
16684
16685         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
16686
16687 2005-04-25  Martin Baulig  <martin@ximian.com>
16688
16689         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
16690
16691         * domain.c
16692         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
16693
16694         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
16695
16696         * reflection.c (build_compressed_metadata): Set metadata header
16697         version to 2.0.
16698
16699 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16700
16701         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
16702         number into an integral and a decimal part. Fixes #70473.
16703
16704         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
16705
16706 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
16707
16708         * culture-info-table.h : reflected the latest locale-builder output.
16709
16710 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16711
16712         * threadpool.c: check for SuspendRequested too when deciding if
16713         mono_thread_interruption_checkpoint should be called.
16714
16715 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16716
16717         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
16718         * threads.c: remove interruption_mutex and use Interlocked instead. When
16719         suspending all the threads, wait for all the suspended events at once.
16720         If we're shutting down and get an APC that is going to be queued,
16721         call mono_thread_execute_interruption immediately, as the thread might
16722         be sleeping on a pthread condition or mutex.
16723
16724         * icall.c: call mono_runtime_set_shutting_down before suspending the
16725         threads.
16726
16727         Fixes bug #74693. And now xsp is happier when exiting.
16728
16729 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16730
16731         * loader.c (mono_stack_walk): Fix #74690.
16732
16733 2005-04-22  Martin Baulig  <martin@ximian.com>
16734
16735         * mono-debug.h (MonoDebugMethodJitInfo): Added
16736         `MonoDebugMethodJitInfo *jit'.
16737
16738         * mono-debug.c (mono_debug_read_method): Cache the
16739         MonoDebugMethodJitInfo in `address->jit'.
16740         (mono_debug_free_method_jit_info): New public method.
16741
16742 2005-04-22  Martin Baulig  <martin@ximian.com>
16743
16744         * class.c (mono_class_is_assignable_from): Disallow
16745         type parameter -> interface.
16746
16747 2005-04-21  Dick Porter  <dick@ximian.com>
16748
16749         * threads.c (mono_thread_create): Turn an assertion into an error.
16750
16751 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16752
16753         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
16754         
16755         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
16756         Fix some gcc 4.0 warnings.
16757
16758 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
16759
16760         * file-io.c: fix alt dir separator char on unix systems
16761         and cleanup (fixes bug #71214).
16762
16763 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
16764
16765         * marshal.c: Use CALLVIRT instead of CALL when dispatching
16766         a call to a remote domain, since the method may be an
16767         interface method in the client domain. This fixes bug #74192.
16768
16769 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16770
16771         * threadpool.c: recv/send are now performed before going back to managed
16772         code to save one transition.
16773
16774 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16775
16776         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
16777
16778         * metadata/threadpool.c: removed hack to workaround the bug above.
16779
16780         Fixes bug #74618.
16781
16782 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16783
16784         * reflection.c reflection.h: Fix handling of parameter defaults in
16785         dynamic methods. Also fixes handling of parameter attributes.
16786         Fixes #74609.
16787
16788         * mono-debug.c (mono_debug_close_image): Fix warning.
16789
16790 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16791
16792         * socket-io.h: replaced old unused field with new 'blocking'.
16793         * threadpool.c: restore socket blocking state on windows(tm).
16794
16795 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
16796
16797         * icall.c: don't return the codebase in the AssemblyName[] returned by
16798         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
16799         * object-internals.h: Removed FIXME (fields were presents) and fixed
16800         versioncompat declaration.
16801
16802 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16803
16804         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
16805         not closed, so don't cleanup when it happens.
16806
16807 2005-04-13  Chris Toshok  <toshok@ximian.com>
16808
16809         * mono-debug-debugger.h: change prototype for
16810         mono_debugger_lookup_type.
16811
16812         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
16813         this function, although it should probably be named
16814         mono_debugger_init_type.
16815
16816 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16817
16818         * threadpool.c: fix non-AIO case.
16819
16820 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16821
16822         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
16823         the built-in profiler to measure just JIT compilation times.
16824
16825 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16826
16827         * threadpool.c: the epollfd might be closed by another thread at
16828         any time, so ignore EBADF at treat it as a "we're closing" sign.
16829
16830 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16831
16832         * threadpool.c: release the semaphores with a count equals to the number
16833         of working threads in both IO and regular pools. Fixed typo that messed
16834         up the count of IO pool threads. Don't initialize the pipe handles if
16835         we're using epoll.
16836
16837 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16838
16839         * threadpool.c: some systems don't like a NULL when deleting the socket
16840         from epoll.
16841
16842 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16843
16844         * threadpool.c: fix semaphore allocation.
16845
16846 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16847
16848         * threadpool.c: added epoll() based implementation for asynchronous IO
16849         that is used instead of the default poll() when available.
16850         It can be disabled by setting MONO_DISABLE_AIO.
16851
16852 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16853
16854         * threadpool.c: windows needs 'closesocket' and instead of returning
16855         0 when the stream is closed while in select, it returns -1. Fixes bug
16856         #74573.
16857
16858 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
16859
16860         * class.c (class_compute_field_layout): Fix the regression caused by
16861         the previous try.
16862
16863 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16864
16865         * threadpool.c: separate pool for socket async. IO.
16866         * threadpool.h: mono_max_worker_threads is not a global any more.
16867
16868 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16869
16870         * class.c (class_compute_field_layout): Fix #74549.
16871
16872 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16873
16874         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
16875         use 2 connected sockets instead.
16876
16877 2005-04-08  Miguel de Icaza  <miguel@novell.com>
16878
16879         * mono-config.c: Add new entry point for mkbundle
16880         mono_config_parse_memory. 
16881
16882 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16883
16884         * threadpool.c: removed another unused function.
16885
16886 2005-04-08  Ankit Jain  <radical@corewars.org>
16887
16888         * reflection.c (get_default_param_value_blobs): Add 'types'
16889         parameter to get the types encoded in the constant table.
16890         (mono_param_get_objects): Use the type from the constant table,
16891         not the type of the parameter, when creating default values.
16892         Handle null default values correctly.
16893
16894 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16895
16896         * file-io.c:
16897         * file-io.h:
16898         * threadpool.c:
16899         * threadpool.h:
16900         * icall.c:
16901         * socket-io.c: removed dead code for async IO.
16902
16903 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16904
16905         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
16906
16907         * threadpool.c: intercept socket async. calls and pass them to a thread
16908         that is polling and dispatching the job items to the threadpool as
16909         socket become ready. Fixes bugs #71217, #71933.
16910
16911         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
16912         between char and short/ushort arrays.
16913
16914         * socket-io.c: remove dead code.
16915
16916 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
16917
16918         * locales.c,
16919           icall.c : removed InternalToUpper_Comp() and
16920           InternalToLower_Comp().
16921
16922 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
16923
16924         * char-conversions.h : The tables were incorrectly generated. Should
16925           be generated against invariant culture.
16926
16927 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16928
16929         * object.c (mono_runtime_invoke_array): Fix return value when 
16930         passing pre-created valuetype objects to ctors.
16931
16932         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
16933         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
16934         Fixes #74338.
16935
16936 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
16937
16938         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
16939         only used with --security and hides the wrong corlib version error.
16940
16941 2005-03-30  Joshua Tauberer  <tauberer@for.net>
16942
16943         * class.c: Changed mono_class_name_from_token so that types
16944         outside of a namespace don't have an initial period.  Improved
16945         the g_warning message used in _mono_class_get when loading
16946         fails.
16947         * assembly.c: In mono_assembly_load_reference, when an assembly
16948         can't be found, "No such file or directory" is misleading and
16949         unhelpful because a few paths were checked for the presence of
16950         the assembly.  When that happens (ENOENT), display a nicer
16951         message indicating the directories that were searched.  In all
16952         cases, the warning is made easier to read for non-hackers.
16953
16954 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16955
16956         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
16957         project/solution.
16958         * appdomain.h|domain.c: Removed inline from functions.
16959         * appdomain.c: Reduced warnings when compiling on windows.
16960         * icall.c: Fixed output_debug declaration to gunichar2*.
16961         * mono-config.c: Reduced warnings when compiling on windows.
16962         * rand.c: Added missing "windows.h". Added missing return value.
16963         * rawbuffer.c: Added missing winsock2.h for windows.
16964         * sysmath.h: Added mono-compiler.h header to allow/ease 
16965         compilation with non-GCC compilers.
16966         * threads.c: Fixed declarations to compile with VS.NET C compiler.
16967         Removed cast warnings.
16968
16969         Adapted from the work of J Lothian (for VC6).
16970
16971 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16972
16973         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
16974         from default_path.
16975
16976 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16977
16978         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
16979         the 2.0 profile.
16980
16981 2005-03-27  Raja R Harinath  <harinath@gmail.com>
16982
16983         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
16984         has to be in $(exec_prefix).  $(prefix) is for arch-independent
16985         stuff, and it would probably use $(prefix)/share rather than
16986         $(prefix)/lib.
16987
16988 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16989
16990         * console-io.c: added 2 includes that might be missing.
16991
16992 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16993
16994         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
16995         profile.
16996
16997         * reflection.c (create_custom_attr): Allocate the params array using
16998         alloca so it gets GC tracking.
16999
17000 2005-03-23  Chris Toshok  <toshok@ximian.com>
17001
17002         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17003         out some spew.
17004
17005 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17006
17007         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17008         changes to pick up any changes in prefix, etc.
17009
17010 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17011
17012         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17013         
17014         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17015         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17016
17017 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17018
17019         * class-internals.h object-internals.h class.c reflection.c: Extend the
17020         mono_lookup_dynamic_token () function to return the class of the
17021         token as well. 
17022
17023         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17024         well. Fixes #73848.
17025
17026 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17027
17028         * security-manager.c: Skip inheritance checks for intra-corlib
17029         class inheritance and method overrides. This skips a lot of checks
17030         and (anyway) permissions cannot work until corlib is loaded.
17031
17032 2005-03-23  Martin Baulig  <martin@ximian.com>
17033
17034         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17035         MONO_TYPE_GENERICINST.  
17036
17037 2005-03-23  Martin Baulig  <martin@ximian.com>
17038
17039         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17040
17041 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17042
17043         * class.c: added locking comments to some functions.
17044         Cache the interface offsets arrays (saves about 20 KB
17045         of runtime memory in a typical app).
17046         Reduce the time overhead in mono_class_setup_supertypes ().
17047
17048 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17049
17050         * icall.c: speedup and fix leaks in GetMethodsByName and
17051         GetPropertiesByName.
17052
17053 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17054
17055         * reflection.c: some locking fixes.
17056
17057 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17058
17059         * metadata.c: added missing break in case statement.
17060
17061 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17062
17063         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17064         typedbyref return values. Fixes #73941.
17065
17066 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17067
17068         * security-manager.c|h: Added demandunmanaged method and 
17069         suppressunmanagedcodesecurity class to MonoSecurityManager.
17070         Renamed aptc class to allowpartiallytrustedcallers.
17071
17072 2005-03-17  Martin Baulig  <martin@ximian.com>
17073
17074         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17075
17076 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17077
17078         * file-io.c: disabled file async. IO using aio_*. It uses the
17079         threadpool now. Workaround for bug #73718.
17080
17081 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17082
17083         * assembly.h, mono-config.c: added code to deal with bundled configs
17084         for bundled assemblies.
17085
17086 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17087
17088         * *.c, private.h: cleanup, removing old private.h header file.
17089
17090 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17091
17092         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17093         and throw_on_unmappable_char attributes.
17094
17095 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17096
17097         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17098         _ProcessName_internal.
17099
17100 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17101
17102         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17103         #73631.
17104
17105         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17106         are no longer used.
17107
17108 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17109
17110         * object.c (compute_class_bitmap): Add support for generics. Fixes
17111         #73527.
17112
17113 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17116
17117 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17118
17119         * filewatcher.c: commented out the code for windows watcher, as we don't
17120         use it (we use the managed implementation instead).
17121
17122 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17123
17124         * object-internals.h (MonoThread): Remove 'unused1' field.
17125
17126         * appdomain.c: Bump corlib version.
17127
17128         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17129
17130         * reflection.c (mono_reflection_create_runtime_class): Remove the
17131         AssemblyBuilder.Save optimization since it causes too many problems.
17132
17133 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17134
17135         * exception.c|h: Added mono_get_exception_reflection_type_load to
17136         create a ReflectionTypeLoadException object.
17137         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17138         to return NULL is a InheritanceDemand fails during reflection. Updated
17139         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17140         ReflectionTypeLoadException if an InheritanceDemand fails during 
17141         reflection. Added icall mapping for GetLinkDemandSecurity.
17142         * security-manager.c|h: Added ves_icall_System_Security_
17143         SecurityManager_GetLinkDemandSecurity internal call to return the
17144         class and methods permissions set for a LinkDemand. Removed unused
17145         fields in MonoSecurityManager.
17146
17147 2005-03-10  Martin Baulig  <martin@ximian.com>
17148
17149         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17150         it's a generic instance.
17151
17152 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17153
17154         * reflection.c (mono_get_object_from_blob): Applied patch from
17155         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17156
17157         * class.c (mono_class_is_assignable_from): Another try at fixing 
17158         #73469 without breaking anything.
17159
17160 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17161
17162         * class.c: (mono_class_is_assignable_from): Revert the last changes
17163         since they don't work with generics.
17164         
17165         * class.c (mono_class_is_assignable_from): Fix build bustage.
17166
17167         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17168         the managed IsAssignableFrom method. Fixes #73469.
17169
17170         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17171         function.
17172
17173 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17174
17175         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17176         memory when the remoting callback does not sets the out arguments.
17177         Fixes #73007.
17178
17179         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17180         by mistake.
17181
17182         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17183
17184         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17185
17186         * appdomain.c: Bump corlib version.
17187
17188 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17189
17190         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17191         function.
17192
17193         * threads.c (mono_thread_attach): Detect threads which are not started
17194         by the GC pthread wrappers.
17195
17196 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17197
17198         * icall.c: Added new icall for RNG.
17199         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17200         single handle on Linux to access /dev/urandom and fix #73183.
17201
17202 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17203
17204         * object.c: setting the new vtable in a transparent proxy object must
17205         not change the GC descriptor.
17206
17207 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17208
17209         * object.c: fixed compilation without GCJ support.
17210         * reflection.c: for runtime-created types ensure klass->has_references
17211         is correct (bug #73215).
17212
17213 2005-03-02  Martin Baulig  <martin@ximian.com>
17214
17215         * class.c (mono_class_is_assignable_from): Make this work if
17216         `oklass' is a generic instance; fixes #72831.
17217
17218 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17219
17220         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17221         with hasthis set.
17222         
17223         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17224
17225         * marshal.c: Reorganize native->managed marshalling code to also use
17226         the emit_marshal_... functions.
17227
17228 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17229
17230         * object.c: typed allocs have issues with bitmap sizes > 30,
17231         so check for max_set >= 30.
17232
17233 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17234
17235         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17236         managed code. Fixes #73012.
17237
17238         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17239
17240         * metadata.c reflection.c: Load/Emit elem_mult as well.
17241         
17242         * metadata.h (MonoMarshalSpec): Add comment.
17243
17244         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17245
17246         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17247         num_elem to -1 if not given.
17248
17249         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17250
17251         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17252         given values.
17253
17254 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17255
17256         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17257
17258 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17259
17260         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17261
17262         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17263
17264 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17265
17266         * object.c: generalized the reference bitmap creation
17267         and added hooks for the new GC.
17268         * class-internals.c: removed the gc_bitmap field from MonoClass.
17269
17270 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17271
17272         * domain.c: help the compiler to produce better code
17273         in mono_jit_info_table_find ().
17274
17275 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17276
17277         * object.c: make all allocations look typed.
17278
17279 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17280
17281         * socket-io.c: load Mono.Posix if it's not loaded already
17282         (fixes bug#73033).
17283
17284 2005-02-24  Martin Baulig  <martin@ximian.com>
17285
17286         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17287         * reflection.c (dup_type): Likewise.
17288
17289 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17290
17291         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17292         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17293
17294 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17295
17296         * domain.c, threads.c, object-internals.h: make the critical thread
17297         local vars use the fast access mode (even when we're compiled in
17298         a lib). Provide accessors to be used by the jit during codegen.
17299
17300 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17301
17302         * appdomain.c: Changed hook functios behavior to include
17303         support for the reflection only assemblies. Some icalls were changed
17304         to support the mentioned assemblies too. Signatures of static methods
17305         try_assembly_resolve and real_load now have an additional parameter:
17306         refonly.
17307
17308         * assembly.c: General changes to mono_assembly_ methods to support
17309         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17310         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17311         suffix, to support an additional gbool parameter to specify whether
17312         the assembli is reflection only or not. Created some new hook functions 
17313         to add support for reflection only assemblies. Signatures of static 
17314         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
17315         have now an additional parameter: refonly.
17316
17317         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
17318         indicating whether the assembly is reflection only or not.
17319
17320         * exception.c: Add mono_get_exception_invalid_operation.
17321
17322         * icall.c: Throw an InvalidOperationException when trying to invoke
17323         a property/method/event, or trying to set/get the value of a field.
17324         Also add an icall to retrieve the ref_only flag to the
17325         MonoReflectionAssembly.
17326
17327 2005-02-23  Chris Toshok  <toshok@ximian.com>
17328
17329         Part of fix for #72827.
17330         * mono-debug.c (mono_debug_add_method): add lexical block data to
17331         the info we write.  Kind of a hack at the moment - we copy the
17332         lexical block info from the MonoDebugMethodInfo to the
17333         MonoDebugMethodJitInfo here, before writing it.
17334         (mono_debug_read_method): read the lexical block info.
17335
17336         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
17337
17338         * debug-mono-symfile.h: add lexical block support.
17339
17340         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
17341         support.
17342
17343 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17344
17345         * loader.c (mono_lookup_pinvoke_call): Fix warning.
17346
17347         * object.c (mono_runtime_free_method): Call mono_free_method () and
17348         put the TODOs there.
17349
17350         * loader.c (mono_free_method): Free up most memory allocated for 
17351         dynamic methods.
17352
17353 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17354
17355         * reflection.c: properly flag a Type argument to a
17356         named custom attr value (bug #72248).
17357
17358 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17359
17360         * reflection.c: reduce code duplication in named custom
17361         attribute encoding.
17362
17363 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
17364
17365         * reflection.c: properly encode custom attrs of type object
17366         (bug #72649).
17367
17368 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17369
17370         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
17371
17372 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
17373
17374         * socket-io.c: load System.dll if it's not loaded already
17375         (bug #72850 and #70477).
17376
17377 2005-02-21  Martin Baulig  <martin@ximian.com>
17378
17379         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17380         generic instances.
17381
17382 2005-02-21  Martin Baulig  <martin@ximian.com>
17383
17384         * reflection.c (mono_image_build_metadata): We also need to
17385         "fixup" the MethodImpl table after we computed the final method
17386         indices.  Call fixup_methodimpl() to do that.
17387         (fixup_methodimpl): New private method.
17388
17389 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17390
17391         * assembly.c: special case mscorlib.dll (bug#72536),
17392         patch from Carlos Alberto Cortez.
17393
17394 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17395
17396         * threads-types.h threads.c: Fix build bustage.
17397
17398         * threads.c: Use a union for long<->double conversions.
17399
17400         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
17401         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
17402
17403         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
17404         containing the checkpoint call with NOT_TAKEN.
17405         
17406         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
17407         checkpoint before pushing the arguments, so they won't have to be
17408         spilled to stack.
17409
17410 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17411
17412         * domain.c, assembly.c, domain-internals.h: make some data
17413         const and relocation-free.
17414
17415 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17416
17417         * object.c, appdomain.c, class-internals.h: introduce the
17418         MonoClassRuntimeInfo structure to hold the info needed to
17419         use a class at runtime. Made mono_class_vtable() lock-free
17420         for all the appdomains.
17421
17422 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
17423
17424         * metadata-internals.h, image.c: introduce a per-image mempool to
17425         be used for memory that has the same lifetime as the image.
17426
17427 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
17428
17429         * domain.c: In mono_init_internal(), instead of selecting the first
17430         runtime version supported by an executable, get a list of all
17431         supported versions and select the one for which an mscorlib exists
17432         (since even if the runtime supports a given version, it doesn't mean
17433         that the framework for that version is installed).
17434         Modified get_runtimes_from_exe to support this behavior.
17435         In supported_runtimes, added information about additional system
17436         assembly versions.
17437         
17438         * assembly.c: Added support for more than one system assembly version
17439         per runtime version. Updated the assembly list.
17440         In mono_assembly_remap_version, removed the initial version check,
17441         since we don't know to which version we need to compare until we
17442         get the version set on which the assembly is based.
17443         Moved the code for loading corlib into the new method
17444         mono_assembly_load_corlib(), so it can be used by the initialization
17445         code.
17446         
17447         * domain-internals.h: Updated data structures and added declaration
17448         for mono_assembly_load_corlib.
17449
17450 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17451
17452         * reflection.c (resolve_object): Fix the creation of the signature in 
17453         the SignatureHelper case.
17454
17455         * assembly.c (mono_assembly_remap_version): Fix binary search.
17456         
17457 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
17458  
17459         * class.c: Added inheritance check when a method is overloaded (from a
17460         virtual method or when implementing an interface) and when a class is
17461         inherited. Added functions to set a failure for a class and to 
17462         retreive the exception from a failure.
17463         * class-internals.h: Added fields to MonoClass to keep the exception
17464         information status for inheritance (or other exceptions) to be thrown
17465         later (i.e. not at load time).
17466         * object.c: Throw the inheritance SecurityException when a type is to 
17467         be created with either class or method inheritance violations.
17468         * reflection.c|h: Fix when getting declsec from a class. Removed 
17469         unrequired code for class. Improved sanity in parameter naming.
17470         * security-manager.c|h: Added functions to check for class and method
17471         inheritance.
17472
17473 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17474
17475         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
17476         and has_finalize in dynamic types as well.
17477
17478 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
17479
17480         * culture-info-table.h : fixed currency format for en-GB (and so on).
17481
17482 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
17483
17484         * gc.c: ensure the GC handles never have 0 as a value.
17485
17486 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17487
17488         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
17489         a pointer to a struct to unmanaged code. Fixes #72625.
17490
17491 2005-02-16  Martin Baulig  <martin@ximian.com>
17492
17493         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
17494
17495 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17496
17497         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
17498
17499 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17500
17501         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
17502
17503         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
17504         UnmanagedFunctionPointerAttribute, use it for determining calling convention
17505         etc. Fixes #71471.
17506
17507         * reflection.c (mono_custom_attrs_get_attr): New helper function.
17508
17509         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
17510
17511 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
17512
17513         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
17514         changes to make the current context a field in MonoThread.
17515
17516 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17517
17518         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
17519         the last change.
17520         
17521         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
17522         extracted from mono_marshal_get_native_wrapper.
17523
17524         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
17525         to create wrappers around native functions.
17526
17527         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
17528         delegates for arbitrary function pointers. Fixes #71472.
17529
17530 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17531
17532         * threads.c: cleaned up the code a little.
17533
17534 2005-02-15  Martin Baulig  <martin@ximian.com>
17535
17536         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
17537         the data table.
17538
17539         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
17540         allocate larger chunks if needed.
17541
17542 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17543
17544         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
17545         in by mistake.
17546
17547 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
17548
17549         * domain.c: keep the domains in an array and ensure the domain ids
17550         are kept small, so they can be used as indexes to domain-specific data
17551         with a small memory overhead.
17552
17553 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * icall.c: Handle byref types in Type icalls. Fixes #72544.
17556
17557 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
17558
17559         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
17560
17561 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17562
17563         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
17564
17565         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
17566         values.
17567
17568         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
17569         
17570 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17571
17572         * domain-internals.h: add the hashtable here.
17573
17574         * class-internals.h: Remove `info' from MonoMethod
17575
17576         * domain.c: Add a new hashtable, jit_trampoline_hash
17577
17578 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17579
17580         * object.c: don't set the value of static fields
17581         (fixes bug#72494).
17582
17583 2005-02-11  Martin Baulig  <martin@ximian.com>
17584
17585         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
17586         (mono_debug_add_method): Silently ignore the method if it's too big.
17587         (mono_debug_add_type): Likewise.
17588
17589 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
17590
17591         * threads.c, appdomain.c: remove #ifdefs from the code.
17592
17593 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17594
17595         * metadata-internals.h: Added flags to MonoAssembly to cache the most
17596         common security informations. This allows us to stay in unmanaged code
17597         when doing LinkDemand and it's special cases (except for the first 
17598         time for initialization). The flags a very much used with --security.
17599         * reflection.c|h: Added code to get declarative security attributes 
17600         for LinkDemand and InheritanceDemand. This required to refactor the
17601         existing code for Demand.
17602         * security-manager.c|h: Added new method fields for the special cases
17603         of LinkDemand.
17604
17605 2005-02-10  Martin Baulig  <martin@ximian.com>
17606
17607         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
17608         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
17609
17610 2005-02-10  Martin Baulig  <martin@ximian.com>
17611
17612         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
17613         debugging code; this is almost a complete rewrite.
17614
17615         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
17616
17617 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17618
17619         * domain.c, object.h: expose mono_string_equal () and 
17620         mono_string_hash ().
17621         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
17622         it's implemented in managed code.
17623
17624 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17625
17626         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
17627         lo leak objects between appdomains.
17628
17629 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17630
17631         * assembly.c: old compilers compilation fix from 
17632         robertj@gmx.net (Robert Jordan).
17633
17634 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
17635
17636         * class-internals.h: Little reminder for the future.
17637
17638         * debug-helpers.c: Fix up wrapper_type_names
17639
17640 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17641
17642         * image.c, metadata-internals.h: when loading an image from a file,
17643         mmap all of it and use the same codepaths as when using a
17644         in-memory image: the code is simpler and we use less memory
17645         (both writable and readonly).
17646
17647 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17648
17649         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
17650         API to alloc runtime data structures that need to be tracked by the
17651         GC and contain pointers.
17652         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
17653         make the code more readable and eventually use a different GC.
17654
17655 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
17656
17657         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
17658         for out arguments.
17659         
17660 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
17661
17662         * object.c: In release_type_locks(), don't release the cctor lock
17663         if it has already been released. This fixes a crash in the
17664         thread5 test.
17665
17666 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17667
17668         * gc.c, marshal.c, icall.c: register a delegate for finalization
17669         only when the native function pointer has been allocated for it.
17670
17671 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17672
17673         * object.c: cleaned up some code, allocate objects that are
17674         pointer free with the atomic malloc variant. Allocate memory
17675         for static data from the mempool if it's pointer-free.
17676         Allocate the bounds array at the end of the array data, when needed.
17677         * object-internals.h, object.h: move a private function in a private
17678         header.
17679         * class.c: handle missing case in tracking references in fields.
17680
17681 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17682
17683         * class.c, class-internals.h: keep track if a type has
17684         reference fields in either the instance or static fields.
17685
17686 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
17687
17688         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
17689         and renamed to MonoRuntimeInfo. Added fields to store the expected
17690         framework assembly version. Changed mono_get_framework_version and
17691         mono_get_runtime_version for a single mono_get_runtime_info method.
17692         
17693         * assembly.c: Added method to remap system assembly versions to the
17694         current executing runtime version. Removed old mapping code.
17695         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
17696         
17697         * icall.c, reflection.c: Track api changes.
17698
17699 2005-02-06  Miguel de Icaza  <miguel@novell.com>
17700
17701         * loader.c (method_from_memberref): Improve error reporting,
17702         produce the class name instead of the typeref/typedef index. 
17703
17704 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
17705
17706         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
17707
17708 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17709
17710         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
17711         stdcall and charset name mangling.  Reorganize the code and add
17712         some tracing stuff.
17713
17714 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17715
17716         * monodiet.c: More iters!
17717
17718         * marshal.c: Iter usage.
17719
17720         * icall.c: Iter usage.
17721
17722         * object.c: Use iters.
17723
17724         * debug-helpers.c: More iters
17725
17726 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17727
17728         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
17729         under win32.
17730
17731 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17732
17733         * mono-debug-debugger.c: use iters
17734
17735         * class.c, class-internals.h: mono_class_setup_events is static
17736         now
17737
17738         * All callers: use iters
17739
17740 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17741
17742         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
17743         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17744
17745 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17746
17747         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
17748
17749         * marshal.h: Add prototypes for ldfld/stfld_remote.
17750
17751         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
17752         this is called during startup.
17753         
17754 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17755
17756         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
17757         MonoThreadsSync struct private in monitor.c. Changed the way
17758         MonoThreadsSync is allocated so it's faster and there is no
17759         need to keep track of it with a finalizer and it uses less memory.
17760         This also finally allows us to allocate mono objects as ptrfree when
17761         there are no reference fields.
17762
17763 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
17764
17765         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
17766         disappearing link to the GC interface and use them to simplify
17767         the gchandles code.
17768
17769 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17770
17771         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
17772         stfld_remote which call mono_load/store_field_new. This allows methods
17773         calling ldfld/stfld wrappers to be AOTed.
17774
17775         * console-io.c: Include sys/filio.h under solaris.
17776         
17777         * console-io.c: Include curses.h if needed correctly.
17778
17779 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17780         
17781         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
17782         method->klass as well.
17783
17784         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
17785
17786         * class.c (mono_class_init): Switch on lazy initialization of 
17787         methods.
17788
17789         * class.c (mono_class_get_finalizer): Handle the case when the 
17790         finalizer is inherited.
17791
17792 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17793
17794         * console-io.c: <curses.h> is needed by term.h on solaris.
17795
17796 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
17797
17798         * icall.c, class-internals.h, monodiet.c, class.c: Remove
17799         mono_class_setup_properties where possible. Remove this ftn from
17800         the header file, and make it static.
17801
17802 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17803
17804         * loader.c: Add missing setup_... call.
17805
17806         * class.c: Add missing setup_... calls.
17807
17808         * class.c (mono_class_init): Switch on lazy initialization of 
17809         the generic vtable.
17810         
17811         * class.c (mono_class_init): Fix generics broken by the recent changes.
17812
17813         * monodiet.c (handle_type): Add missing setup_... calls.
17814
17815         * class.c: Back out garbage in previous patch.
17816         
17817         * class.c: Add missing setup_... calls.
17818
17819         * class.c (mono_class_get_method_from_name_flags): Avoid calling
17820         mono_class_setup_methods () if possible.
17821
17822         * class-internals.h (MonoClass): Add 'has_cctor' flag.
17823
17824         * class-internals.h (MonoCachedClassInfo): New structure.
17825
17826         * class.c: Initialize properties and events fields of MonoClass lazily.
17827
17828         * class.c: Add infrastructure for lazily initializing the methods and
17829         vtable fields of MonoClass. Not yet used.
17830
17831         * class.c (mono_class_get_finalizer): New helper function.
17832
17833         * class.c: Add infrastructure for loading some class related data from
17834         an AOT file.
17835
17836         * object.c: Add infrastructure for initializing the vtable from data
17837         in the AOT file.
17838
17839         * gc.c (run_finalize): Use mono_class_get_finalizer ().
17840
17841         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
17842         appropriate initialization function before accessing parts of the
17843         MonoClass structure.
17844
17845         * marshal.c: Fix warnings.
17846         
17847         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
17848
17849         * mono-debug-debugger.c (get_exception_message): Use 
17850         mono_class_get_method_from_name_flags ().
17851
17852 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
17853
17854         * reflection.c, appdomain.c: Replace a few manual searches that
17855         Zoltan missed. (Paolo approved this part of my initial patch).
17856
17857 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
17858
17859         * profiler.c: disable recording statistical events at report time.
17860
17861 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17862
17863         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
17864         to byteswap arrays of enum values, too (bug #72080).
17865
17866 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17867
17868         * appdomain.c (set_domain_search_path): Allow this to be called if
17869         domain->setup is not yet set.
17870
17871         * loader.c (mono_method_get_index): New helper function.
17872
17873         * loader.c reflection.c: Use mono_method_get_index ().
17874
17875         * class.c (mono_class_get_method_from_name_flags): New helper method.
17876
17877         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
17878         this.
17879
17880         * class.c (mono_class_get_cctor): New helper method.
17881
17882         * string-icalls.c object.c class.c marshal.c reflection.c: Use
17883         mono_class_get_method () to look up methods.
17884
17885 2005-02-01  Miguel de Icaza  <miguel@novell.com>
17886
17887         * console-io.c: Fix the build, this should work on Windows.
17888
17889 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
17890
17891         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
17892         be set to null to keep things valid
17893
17894 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17895
17896         * icall.c: added Console 2.0 icalls.
17897         * Makefile.am: added console-io.[ch]
17898         * console-io.[ch]: internal calls for Console 2.0 API.
17899
17900 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17901
17902         * class.c: make sure we consider all the interfaces
17903         when calculating max_interface_id (bug found by
17904         Jeroen Frijters running ikvm).
17905
17906 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17907
17908         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
17909         valuetype fields to null.
17910
17911         * object.c (set_value): Ditto. Fixes #71669.    
17912
17913 2005-01-31  Martin Baulig  <martin@ximian.com>
17914
17915         * metadata.c (mono_metadata_has_generic_params): New public
17916         function; checks whether something is a generic method.
17917
17918 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17919
17920         * appdomain.c: fix infinite recursion when adding assemblies.
17921
17922 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
17923
17924         * object.c: Fix small typo to return all items for Environment.
17925         GetCommandLineArgs.
17926
17927 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17928
17929         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
17930         reflection.c: more domain and assembly-unload related fixes
17931         and memory leaks plugs.
17932
17933 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17934
17935         * 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.
17936
17937 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17938
17939         * loader.c (mono_method_signature): Make this method lazy
17940         (mono_get_method_from_token): Don't computate the signature here.
17941
17942         Doing this saves quite a bit of memory. I got 90 kb on starting up
17943         monodoc. It should also save some disk reads on startup.
17944
17945         * *: MonoMethod->signature might be NULL now. You *MUST* use
17946         mono_method_signature.
17947
17948 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
17949
17950         * object.c (mono_runtime_get_main_args): Return an array from the
17951         current domain here. Fixes #71938.
17952
17953 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17954
17955         * monitor.c: formatting changes to comply with the
17956         mono coding style and remove #ifdefs from the code.
17957
17958 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17959
17960         * metadata.c, private.h: remove some unneeded data
17961         and use a more compact representation for table schemas.
17962
17963 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17964
17965         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
17966         to get a better distribution in hash tables.
17967         * *.c: use mono_aligned_addr_hash() where appropriate.
17968         * assembly.c: make var static.
17969
17970 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17971
17972         * domain-internals.h: Put MonoJitInfo on a diet.
17973
17974         * domain.c: Fix a warning.
17975
17976 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17977
17978         * gc.c: rework the gc handles code to reuse handles
17979         when freed.
17980
17981 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17982
17983         * domain.c: fixed long standing bug in mono_string_equal() which
17984         was brought to light with the ldstr changes.
17985
17986 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17987
17988         * reflection.c: Remove warning by adding missing include for marshal.h
17989
17990 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17991
17992         * domain.c, object.c: change the ldstr_table to hold
17993         MonoString* as keys: makes the runtime isinterned lookup
17994         faster and simplifies memory management.
17995
17996 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
17997  
17998         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
17999         possible to add imperative security checks before calling the icall.
18000         * reflection.c: Return security attributes on the original MonoMethod
18001         (and not the wrapped one). This fix permissions on icalls.
18002
18003 2005-01-25  Dick Porter  <dick@ximian.com>
18004
18005         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18006         the check for mktime() support actually test the mktime() return
18007         value.  "Fixes" bug 71682, though the output is still different to
18008         MS.
18009
18010 2005-01-25  Martin Baulig  <martin@ximian.com>
18011
18012         * class.c (mono_class_is_assignable_from): Make this work for
18013         generic instances.
18014
18015 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18016
18017         * marshal.c (mono_string_utf8_to_builder)
18018         (mono_string_builder_to_utf16): We might not have ownership of the
18019         string. In thise case, we need to create a new buffer.
18020
18021         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18022         be null, in which case, use the default capacity.
18023
18024 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18025
18026         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18027         GC events to the profiler.
18028
18029 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18030
18031         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18032         if you don't want the GC to run.
18033
18034 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18035
18036         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18037         start providing a GC API and keeping different implementations in
18038         their own file.
18039         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18040
18041 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18042
18043         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18044         mmap rather than allocating a huge buffer.
18045         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18046         above.
18047
18048 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18049
18050         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18051         and CheckExecutionRights.
18052         * reflection.c|h: Keep the index of the declarative security to be 
18053         used, instead of the pointer, when AOT compiler is used. Also add 
18054         class initialization when requesting demands.
18055         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18056         CheckExecutionRights. Both properties are now FALSE by default, and
18057         unmodifiable, unless the --security option is used.
18058
18059 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18060
18061         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18062         reflection.c: properly refcount images and assemblies, many leaks fixed.
18063
18064 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18065
18066         * threadpool.c: increase the timeout for threads in the thread pool to
18067         10s.  Fixes bug #67159.
18068
18069 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18070
18071         * class-internals.h: Sun's compiler insists on explicit
18072         signed on bit fields to handle then correctly.
18073
18074 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18075
18076         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18077         Make the size of the array fit only the number of invalid path
18078         chars that we have.
18079
18080         * class.c (_mono_class_get): Improve the error reporting when a
18081         class referenced is not found, to assist debugging. 
18082
18083 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18084
18085         * threads.c: fix off-by-one error.
18086         * domain.c: free data allocated in the domain.
18087
18088 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18089
18090         * reflection.c (mono_method_body_get_object): Fill out exception info
18091         as well.
18092
18093         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18094         structure.
18095         
18096 2005-01-19  Martin Baulig  <martin@ximian.com>
18097
18098         * loader.c (mono_get_method_constrained): Make this work again.
18099
18100 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18101
18102         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18103         guint16 to match the managed side.
18104
18105         * reflection.c (mono_reflection_body_get_object): Fill out local
18106         variables array.
18107
18108         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18109         as well.
18110
18111         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18112         'local_var_sig_token'.
18113
18114 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18115
18116         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18117         System.Drawing.
18118
18119         * reflection.c (mono_method_body_get_object): Handle abstract and
18120         runtime methods.
18121
18122 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18123
18124         * marshal.c, loader.c, class-internals.h, reflection.c:
18125         store the emthod data for a wrapper in an array instead of a list.
18126
18127 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18128
18129         * marshal.c: change the code to allocate memory more
18130         conservatively for method wrappers.
18131
18132 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18133
18134         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18135         fields from MonoClass to the marshal info structure where they belong.
18136
18137 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18138
18139         * class.c, object.c, class-internals.h, marshal.c: rearrange
18140         some fields and tweak some types to lower memory usage.
18141
18142 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18143
18144         * threads.c (signal_thread_state_change): Handle the case when the
18145         target thread is the current thread.
18146
18147         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18148
18149         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18150         emit_ptr_to_object_conv. 
18151
18152         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18153         marshalling. Fixes #71352.
18154
18155 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18156
18157         * metadata.h, blob.h: move table enum to blob.h so it can be included
18158         in any header.
18159         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18160         cut the size of MonoImage/MonoDynamicImage.
18161
18162 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18163
18164         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18165
18166 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18167
18168         * reflection.c, reflection.h, icall.c: add a function to check
18169         if an attribute type is defined for a metadata object.
18170
18171 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18172
18173         * object-internals.h: Added some needed fields from StringBuilder class.
18174         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18175
18176 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18177
18178         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18179         threads before shutting down the runtime.
18180
18181         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18182
18183 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18184
18185         * object-internal.h, threads.c: implement stacksize and 
18186         parameterized thread start functionality (requires
18187         matching corlib). Marked broken code for later removal.
18188
18189 2005-01-12  Martin Baulig  <martin@ximian.com>
18190
18191         * class-internals.h (MonoGenericClass): Moved the `initialized'
18192         flag to MonoDynamicGenericClass, removed `init_pending'.
18193         (MonoGenericInst): Added `is_reference' flag.
18194
18195 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18196
18197         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18198         inside the MSDOS header. Fixes #71201.
18199
18200         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18201         gc thread.
18202         (mono_domain_finalize): Ditto.
18203
18204 2005-01-12  Martin Baulig  <martin@ximian.com>
18205
18206         * class.c (mono_get_shared_generic_class): Use the cache for
18207         non-dynamic generic classes.
18208
18209         * class-internals.h (mono_class_create_generic_2): Removed
18210         function prototype, this function is now static inside class.c.
18211
18212         * class.c (mono_class_create_generic_2): Made this static, only
18213         call it from mono_class_init() and mono_class_setup_parent().
18214         (collect_implemented_interfaces_aux): Call mono_class_init() on
18215         the interfaces we collect.
18216         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18217
18218 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18219
18220         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18221         it a real thread handle.
18222
18223         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18224         MonoJitExceptionInfo, since each catch clause needs its own variable.
18225         
18226 2005-01-11  Dick Porter  <dick@ximian.com>
18227
18228         * image.c (mono_pe_file_open): New variant on mono_image_open()
18229         that does not set up the CLI metadata; used for FileVersionInfo so
18230         it can get the data for windows binaries too.
18231         
18232         * process.c (process_read_string_block): Don't read off the end of
18233         the StringTable block.
18234
18235         These both fix bug 70766.
18236
18237 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18238
18239         * gc.c: set some fields to NULL at GC cleanup time.
18240         * threads.c: if we quit the main thread, call exit ().
18241
18242 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18243
18244         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18245
18246 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18247
18248         * threads.h, threads.c, object.c: added accessor and settor for
18249         main_thread. Handle it specially when exiting from it: wait
18250         for other foreground threads to exit.
18251
18252 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18253
18254         * process.c, verify.c: remove some bloat.
18255
18256 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18257
18258         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18259         the calling convention to cdecl under win32.
18260
18261 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18262
18263         * object.c (mono_object_get_size): New function to get the size of
18264         an object instance.
18265
18266         * profiler.c (simple_allocation): Use above.
18267
18268 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18269
18270         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18271         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18272         get an appdomain by it's id and we can't assume the root's id is 0).
18273         * domain-internals.h: Change the function prototype to match.
18274         * icall.c: Change the icall table for AppDomain.
18275
18276 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18277
18278         * locales.c (string_invariant_compare_char): Only compute
18279         GUnicodeTypes in the case where we need them.  Test for ordinality
18280         first and return if so.
18281
18282         From the commit:
18283
18284                 /*
18285                  * FIXME: here we must use the information from c1type and c2type
18286                  * to find out the proper collation, even on the InvariantCulture, the
18287                  * sorting is not done by computing the unicode values, but their
18288                  * actual sort order.
18289                  */
18290
18291 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18292
18293         * loader.c: for P/Invoke methods, allow the "Internal" shared
18294         library name to refer to the calling process symbol namespace.
18295
18296 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18297
18298         * Makefile.am: Add the security manager to the build.
18299         * security-manager.c|h: New. Initialization of the security manager.
18300
18301 2005-01-07  Dick Porter  <dick@ximian.com>
18302
18303         * threads.c: 
18304         * monitor.c: Update thread state during Monitor and WaitHandle
18305         waits.  Fixes bug 71031.
18306
18307 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18308
18309         * reflection.c (property_encode_signature): Correctly handle when the
18310         property has no methods.
18311
18312 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18313
18314         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
18315         
18316         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
18317         fields from mb, not rmb. Fixes #71017.
18318
18319         * marshal.c (emit_ptr_to_str_conv): Add support for 
18320         ByValTStr -> string conversion. Fixes #71015.
18321
18322         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
18323
18324         * mempool.c (mono_mempool_contains_addr): New helper function.
18325
18326 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18327
18328         * metadata.c (mono_metadata_compute_size): Fix size calculation of
18329         HasSematics encoded fields.
18330         
18331         * metadata.c (mono_type_to_unmanaged): Improve error message for 
18332         invalid string marshalling.
18333
18334         * metadata.c: Fix warnings.
18335         
18336 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18337
18338         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
18339         profiler support.
18340
18341 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18342
18343         * domain.c object.c domain-internals.h: Revert part of r38077 since the
18344         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
18345         tests.
18346
18347 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18348
18349         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
18350         so methods containing these can be AOTed.
18351
18352 2005-01-03  Martin Baulig  <martin@ximian.com>
18353
18354         * loader.c (find_method): Removed the hack for generic instances.
18355         (method_from_memberref): If our parent is a generic instance, pass
18356         its generic type definition to find_method() and then inflate the
18357         method.
18358         (mono_get_method_constrained): Pass the generic type definition to
18359         find_method() and inflate the method later.
18360
18361         * class-internals.h (MonoStats): Added `generic_class_count'.
18362
18363         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
18364         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
18365
18366         * reflection.c (mono_custom_attrs_from_params): Don't ignore
18367         generic type definitions.
18368
18369 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18370
18371         * loader.c icall.c: Fix warnings.
18372
18373 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
18374
18375         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
18376         blittable types. Fixes #70864.
18377
18378 2004-12-29  Martin Baulig  <martin@ximian.com>
18379
18380         * icall.c
18381         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
18382
18383         * reflection.c (mono_method_get_object): Create a
18384         "System.Reflection.MonoGenericMethod" for inflated methods; don't
18385         call mono_get_inflated_method().
18386
18387         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
18388
18389 2004-12-27  Martin Baulig  <martin@ximian.com>
18390
18391         * class-internals.h (MonoMethod): Added `is_inflated' flag.
18392         (MonoMethodInflated): Added `inflated' field.
18393
18394         * class.c (mono_class_inflate_generic_method): Don't really
18395         inflate the method here; just set the `is_inflated' flag in the
18396         MonoMethod.
18397         (mono_class_get_inflated_method): Actually inflate the method here
18398         if it's not already inflated; we use the MonoMethodInflated's new
18399         `inflated' field as a cache.
18400
18401 2004-12-26  Martin Baulig  <martin@ximian.com>
18402
18403         * class.c
18404         (inflate_generic_class): Moved some code out of inflate_generic_type().
18405         (mono_class_inflate_generic_method): If we're already inflated,
18406         inflate the context and use the declaring method; ie. make sure
18407         the declaring method of an inflated method is always the generic
18408         method definition.
18409         (mono_class_create_from_typedef): Create
18410         `class->generic_container->context->gclass'.
18411
18412 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18413
18414         * metadata-internals.h, marshal.c, reflection.c: More
18415         MonoGHashTable->GHashTable.
18416
18417         * domain-internals.h, class.c: Change MonoGHashTable's into
18418         GHashTables for some cases where no gc stuff is used
18419
18420         All users: update apis
18421
18422 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
18423
18424         * metadata.c (builtin_types): Make this `const'. Makes this get
18425         put into the shareable section.
18426         (mono_metadata_init): Casts to make gcc happy.
18427
18428 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
18429
18430         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
18431
18432 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
18433
18434         * icall.c: Added an internal call to retrieve the position and length
18435         of assembly-level declarative security attributes (RequestMinimum, 
18436         RequestOptional and RequestRefuse). This is used by the Assembly class
18437         to re-create the corresponding permission sets.
18438
18439 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18440
18441         * marshal.c: fix the stelemref wrapper to be type correct
18442         (and faster).
18443
18444 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18445
18446         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
18447         to do key & 0x7fffffff. Hashtable already does this. It just
18448         results in longer code.
18449
18450 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18451
18452         * appdomain.c: Bump corlib version.
18453         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
18454         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
18455         * reflection.c|h: Add functions to get declarative security infos
18456         (blob position and length) for assemblies, classes and methods.
18457
18458 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
18459
18460         * reflection.c: sort the constant table (bug #70693).
18461
18462 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
18463
18464         * object-internals.h, threads.c, domain.c: add accessors for
18465         the MonoThread and MonoDomain tls keys.
18466
18467 2004-12-18  Martin Baulig  <martin@ximian.com>
18468
18469         * class.c (inflate_generic_type): If we're inflating a generic
18470         instance, set `ngclass->context->container = context->container';
18471         ie. the container we inflated into.
18472
18473         * metadata.c (mono_metadata_parse_generic_param): Reflect above
18474         inflate_generic_type() changes.
18475
18476 2004-12-17  Martin Baulig  <martin@ximian.com>
18477
18478         * class-internals.h
18479         (MonoGenericClass): Replaced `MonoType *generic_type' with
18480         `MonoClass *generic_class'.  Removed `dynamic_info'; if
18481         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
18482         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
18483
18484 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18485
18486         * exception.c (mono_exception_from_token): New helper function.
18487
18488 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18489
18490         * assembly.c (mono_assembly_load_with_partial_name): Call 
18491         mono_assembly_loaded before invoking the preload hooks. Fixes
18492         #70564.
18493
18494         * object-internals.h (MonoThread): Change culture_info and 
18495         ui_culture_info into an array.
18496
18497         * threads.c: Cache culture info objects from more than one appdomain.
18498
18499         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
18500         current UI culture.
18501
18502 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18503
18504         * threads.h threads.c appdomain.c: Clear the culture_info field of
18505         all threads during unloading if they point to an object in the dying
18506         appdomain.
18507
18508 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
18509
18510         * culture-info.h (TextInfoEntry): New struct
18511         * object-internals.h: sync with managed
18512         * locales.c: fill the `text_info_data' field
18513         * culture-info-tables.h: update
18514
18515 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18516
18517         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
18518         collector.
18519
18520 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
18521
18522         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
18523         (ves_icall_ModuleBuilder_getMethodToken): Ditto
18524
18525 2004-12-12  Martin Baulig  <martin@ximian.com>
18526
18527         * mono-debug-debugger.c (write_type): If we're an enum and the
18528         builtin types have already been initialized, call mono_class_init().
18529
18530 2004-12-11  Martin Baulig  <martin@ximian.com>
18531
18532         * metadata.c (mono_metadata_load_generic_params): Added
18533         `MonoGenericContainer *parent_container' argument; automatically
18534         compute `container->is_method'; pass the correct owner to
18535         get_constraints().      
18536
18537         * reflection.c (compare_genericparam): Sort the GenericParam table
18538         according to increasing owners. 
18539
18540 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18541
18542         * profiler.c: allow disabling the default profiler.
18543
18544 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
18545
18546         * decimal.c, icall.c: allow disabling System.Decimal support.
18547
18548 2004-12-09  Marek Safar <marek.safar@seznam.cz>
18549
18550         * reflection.c: Add support for null attribute arguments.
18551
18552 2004-12-09  Martin Baulig  <martin@ximian.com>
18553
18554         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
18555         names to get rid of compiler warnings.
18556
18557 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18558
18559         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
18560         mono_marshal_load_type_info (). Fixes #69625.
18561         (mono_marshal_get_ptr_to_struct): Likewise.
18562
18563 2004-12-08  Martin Baulig  <martin@ximian.com>
18564
18565         * mono-debug.h: Bumped version number to 47.
18566
18567         * mono-debug-debugger.c
18568         (mono_debugger_event_handler, mono_debugger_event): Take two
18569         guint64 arguments insteed of a gpointer and a guint32.  
18570
18571 2004-12-08  Martin Baulig  <martin@ximian.com>
18572
18573         * debug-mono-symfile.h
18574         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
18575         `address' to `native_offset'.
18576
18577 2004-12-08  Martin Baulig  <martin@ximian.com>
18578
18579         * class.c (mono_class_create_from_typespec): Only inflate if we
18580         either have `context->gclass' or `context->gmethod'.
18581
18582 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18583
18584         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
18585
18586         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
18587
18588         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
18589
18590         * reflection.c (mono_assembly_get_object): Remove the workaround put
18591         in for the release.
18592         
18593         * appdomain.c: Use the corlib_internal field from MonoAssembly.
18594
18595         * appdomain.c: Bump corlib version.
18596
18597         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
18598         be visible in other appdomains.
18599
18600 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
18601
18602         * threads.c: Interlocked inc and dec for longs were messed up,
18603         use a KISS based impl for this. Fixes 70234
18604
18605 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18606
18607         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
18608
18609 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18610
18611         * icall.c: fix to follow policy not to allow struct
18612         arguments in icalls.
18613
18614 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18615
18616         * process.c: make the patch that handles spaces in file paths work
18617         on mono/windows too.
18618
18619 2004-12-06  Martin Baulig  <martin@ximian.com>
18620
18621         * class.c (mono_class_create_generic): Call
18622         mono_class_setup_supertypes() if we're dynamic.
18623         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
18624
18625 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18626
18627         * object-internals.h: Add new fields to MonoThread.
18628
18629         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18630
18631         * icall.c threads-types.h threads.c: Add new icalls.
18632
18633         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
18634
18635         * object-internals.h (MonoReflectionAssembly): Sync object layout with
18636         managed side.
18637
18638         * appdomain.c: Bump corlib version.
18639
18640         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
18641         internal assemblies. Fixes #69181.
18642
18643 2004-12-05  Martin Baulig  <martin@ximian.com>
18644
18645         * class.c (mono_class_inflate_generic_signature): Make this a
18646         no-op if `context' is NULL or we don't have any type parameters;
18647         also copy `sentinelpos'.        
18648
18649 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
18650
18651         * image.c: Add unbox_wrapper_cache.
18652
18653         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
18654
18655         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
18656         function generator.
18657         
18658         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
18659         Fixes #70173.
18660
18661         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
18662         
18663 2004-12-04  Martin Baulig  <martin@ximian.com>
18664
18665         * loader.c (mono_method_get_signature_full): New public function;
18666         like mono_method_get_signature(), but with an additional
18667         `MonoGenericContext *' argument.
18668
18669         * class.c (mono_class_inflate_generic_signature): Formerly known
18670         as inflate_generic_signature(); make this public.
18671
18672 2004-12-04  Martin Baulig  <martin@ximian.com>
18673
18674         * metadata.c
18675         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
18676         instead of a `MonoGenericContainer *'.  
18677         (mono_metadata_parse_array_full): Likewise.
18678         (mono_metadata_parse_signature_full): Likewise.
18679         (mono_metadata_parse_method_signature_full): Likewise.
18680         (mono_metadata_parse_generic_inst): Likewise.
18681         (mono_metadata_parse_generic_param): Likewise.
18682         (mono_metadata_parse_mh_full): Likewise.
18683         (mono_type_create_from_typespec_full): Likewise.
18684
18685 2004-12-03  Martin Baulig  <martin@ximian.com>
18686
18687         * class-internals.h (MonoGenericContainer): Replaced the
18688         `MonoGenericContext * pointer with a `MonoGenericContext'
18689         structure and made it the first element.
18690
18691 2004-12-03  Martin Baulig  <martin@ximian.com>
18692
18693         * class.c
18694         (inflate_generic_type): Set the `context->container' when creating
18695         a new MonoGenericContext.
18696         (mono_class_inflate_generic_method): Likewise.
18697         (mono_class_create_from_typespec): Just use `context->container'
18698         to get the container.
18699
18700         * loader.c (method_from_methodspec): Set `context->parent' from
18701         `context->container' - and if that's a method container, use its
18702         parent.  Also set the `context->container' when creating a new
18703         MonoGenericContext.
18704         (mono_get_method_from_token): Use just `context->container' to get
18705         the container.
18706
18707         * metadata.c (do_mono_metadata_parse_generic_class): Also set
18708         `gclass->context->container'.
18709
18710         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
18711         the `context->container' when creating a new MonoGenericContext.
18712
18713 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
18714
18715         * reflection.c (compare_genericparam): Sort params with identical
18716         owner by their number. Fixes gen-111 on sparc.
18717
18718 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18719
18720         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
18721         around the domain changes.
18722
18723         * appdomain.c (mono_domain_unload): Handle the case when the thread
18724         calling Unload is itself being aborted during unloading. Fixes #70022.
18725
18726         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
18727
18728         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
18729         checkpoint_func as an icall so it gets a wrapper.
18730         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
18731         in the cross-appdomain wrappers too.
18732
18733         * threads.c (mono_thread_has_appdomain_ref): Make this public.
18734
18735         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
18736
18737         * reflection.c: Fix some memory leaks.
18738         
18739 2004-12-02  Martin Baulig  <martin@ximian.com>
18740
18741         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
18742
18743         * metadata.c (generic_class_cache): New static hashtable.
18744         (mono_metadata_lookup_generic_class): New public method.
18745
18746 2004-12-02  Martin Baulig  <martin@ximian.com>
18747
18748         * class.c (mono_class_create_from_typedef): Call
18749         mono_class_setup_parent() and mono_class_create_mono_type() before
18750         parsing the interfaces.
18751
18752 2004-12-02  Martin Baulig  <martin@ximian.com>
18753
18754         * metadata.c (generic_inst_cache): New static hashtable.
18755         (mono_metadata_lookup_generic_inst): New public function.
18756         (mono_metadata_inflate_generic_inst): New public function.
18757         (mono_metadata_parse_generic_inst): New public function.
18758         (do_mono_metadata_parse_generic_class): Use the new
18759         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
18760         since this'll also use the cache.
18761
18762         * reflection.c (mono_reflection_bind_generic_method_parameters):
18763         Use mono_metadata_lookup_generic_inst() to use the new cache.
18764
18765         * class.c (inflate_mono_type): Use
18766         mono_metadata_inflate_generic_inst() to inflate a generic
18767         instance; this'll also use the new cache.
18768
18769         * loader.c (method_from_methodspec): Use
18770         mono_metadata_parse_generic_inst() and
18771         mono_metadata_inflate_generic_inst() rather than parsing it
18772         manually, so we can use the new cache.
18773
18774 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18775
18776         * threads.c (wait_for_tids): Do not incorrectly free threads when 
18777         the wait times out.
18778
18779 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18780
18781         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
18782         iter->args based on whether parameters are passed in registers (i.e.
18783         MONO_ARCH_REGPARMS is defined)
18784
18785 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
18786
18787         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
18788         the exception message. Fixes #70070.
18789         (method_from_methodspec): Fix warnings.
18790
18791 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18792
18793         * process.c: (complete_path) return the path quoted
18794
18795 2004-12-01  Martin Baulig  <martin@ximian.com>
18796
18797         * class-internals.h (MonoGenericInst): New structure.
18798         (MonoGenericClass): Replaced `type_argc', `type_argv' and
18799         `is_open' with `MonoGenericInst *inst'.
18800         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
18801         `is_open' with `MonoGenericInst *inst'.
18802
18803 2004-11-30  Martin Baulig  <martin@ximian.com>
18804
18805         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
18806
18807         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
18808         to `generic_class_cache'.
18809
18810         * metadata.c
18811         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
18812         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
18813         (mono_generic_inst_is_valuetype): Renamed to
18814         mono_generic_class_is_valuetype().
18815
18816         * class-internals.h
18817         (MonoGenericInst): Renamed to MonoGenericClass.
18818         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
18819         (MonoClass): Renamed `generic_inst' to `generic_class'.
18820         (MonoGenericContext): Renamed `ginst' to `gclass'.
18821
18822         * object-internals.h
18823         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
18824
18825         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
18826         mono_reflection_generic_class_initialize().
18827
18828         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
18829         now known as "System.Reflection.MonoGenericClass".
18830         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
18831
18832 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
18833
18834         * class-internals.h: Added a flag field to MonoClass to cache the
18835         declarative security attributes actions associated with the class.
18836         * domain-internals.h: Added booleans to MonoJitInfo to cache the
18837         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
18838         applicable to the JITted method.
18839         * reflection.c|h: Added functions to extract (as flags) which security
18840         actions are available (declaratively) for a method, class or assembly.
18841         * metadata.c|h: Added functions to search the declarative security
18842         table in the metadata.
18843         
18844 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
18845
18846         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
18847         EXPORTEDTYPES are already in the class name cache, so there is no
18848         need to add extra code here to look at them. Just removes a bit of
18849         cruft.
18850
18851         (ves_icall_System_Environment_get_TickCount): No need for #if
18852         WINDOWS. We already have the code in io-layer.
18853
18854 2004-11-28  Martin Baulig  <martin@ximian.com>
18855
18856         * loader.c
18857         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
18858         Fixes gen-112.cs.
18859
18860 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
18861
18862         * assembly.c (do_mono_assembly_open): Instead of having a
18863         conditional WITH_BUNDLE, incorporate support for bundles here, by
18864         having a global `bundles' variable holding a pointer to the actual
18865         bundles. 
18866
18867         (mono_register_bundled_assemblies): New API call used by the
18868         bundle code. 
18869
18870         See mkbundle.1 for details.
18871         
18872 2004-11-27  Martin Baulig  <martin@ximian.com>
18873
18874         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
18875         the vtable for generic methods.
18876
18877 2004-11-26  Martin Baulig  <martin@ximian.com>
18878
18879         * metadata.c
18880         (mono_metadata_generic_method_hash): New public function.
18881         (mono_metadata_generic_method_equal): Likewise.
18882
18883         * class-internals.h
18884         (MonoGenericContainer): Added `GHashTable *method_hash'.
18885
18886         * reflection.c (ReflectionMethodBuilder): Added
18887         `MonoGenericContainer *generic_container'.
18888         (reflection_methodbuilder_to_mono_method): Don't create a new
18889         MonoGenericContainer each time we're called.
18890         (mono_reflection_bind_generic_method_parameters): Use
18891         `container->method_hash' to cache the results so we don't create a
18892         different method if we're called several times with the same
18893         arguments.
18894
18895         * loader.c (method_from_methodspec): Use the new
18896         `container->method_hash' here, too.
18897
18898 2004-11-26  Martin Baulig  <martin@ximian.com>
18899
18900         * class.c (inflate_generic_signature): Correctly compute
18901         `res->has_type_parameters'.
18902         (mono_class_vtable): Use the `has_type_parameters' flag to
18903         determine whether we're a generic method.
18904
18905         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
18906
18907 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18908
18909         * object.c (mono_runtime_run_main): Fix a small memory leak.
18910
18911 2004-11-25  Martin Baulig  <martin@ximian.com>
18912
18913         * class.c (set_generic_param_owner): Fixed the loop.
18914
18915 2004-11-25  Martin Baulig  <martin@ximian.com>
18916
18917         * object.c (mono_class_vtable): Don't create any JIT wrappers for
18918         generic methods.
18919
18920 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18921
18922         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
18923         names. Fixes #69787.
18924
18925 2004-11-24  Martin Baulig  <martin@ximian.com>
18926
18927         * class.c (mono_class_create_generic_2): If we don't have a
18928         `ginst->parent', inflate `gklass->parent' to get our parent.
18929
18930 2004-11-24  Martin Baulig  <martin@ximian.com>
18931
18932         * reflection.c (compare_genericparam): Correctly sort the
18933         GenericParam table; fixes #69779.
18934
18935 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
18936
18937         * reflection.c: When writing a PE file, don't create a huge
18938         buffer in memory. Just write the arrays we have to the file.
18939         This reduces memory usage.
18940
18941         * metadata-internals.h: MonoDynamicStream pefile is no longer used
18942         globally.
18943
18944 2004-11-17  Martin Baulig  <martin@ximian.com>
18945
18946         * class.c (mono_class_init): Don't setup `class->parent' for
18947         dynamic instances; moved this to mono_class_generic_2().
18948         (mono_class_create_generic): Also set `klass->inited' for dynamic
18949         generic instances.
18950         (mono_class_create_generic_2): Don't do anything for dynamic
18951         generic instances.  Set `klass->parent' here and also call
18952         mono_class_setup_parent() here. 
18953
18954         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
18955         `MonoType *parent' argument; set `ginst->parent' before calling
18956         mono_class_create_generic_2(), so we set the correct parent.
18957
18958 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
18959
18960         * reflection.c: allow getting attributes from ModuleBuilder
18961         (used by ikvm).
18962
18963 2004-11-17  Martin Baulig  <martin@ximian.com>
18964
18965         * class.c (mono_class_create_from_typedef): If a type parameter is
18966         inherited from an outer class, set its owner to that class.
18967
18968 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
18969
18970         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
18971           for (int*) written size. This fixes bug #69592.
18972
18973 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18974
18975         * icall.c: Added IsAuthenticodePresnet internal call.
18976         * image.c|h: New function that check a MonoImage for an Authenticode
18977         signature in the certificate PE data directory.
18978         * security.c|h: New internal call to ask the runtime if an 
18979         Authenticode signature seems referenced in the PE header.
18980
18981 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
18982
18983         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
18984
18985         * reflection.c (mono_image_create_pefile): Free the assembly streams
18986         after writing out the assembly file.
18987
18988         * object.c (mono_runtime_run_main): Fix small memory leak.
18989
18990         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
18991         property access modifiers. Fixes #69389.
18992
18993 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18994
18995         * domain.c, object.c, object-internals.h, domain-internals.h,
18996         object.h, marshal.c: keep dynamic code info per domain.
18997
18998 2004-11-15  Martin Baulig  <martin@ximian.com>
18999
19000         * class.c (mono_type_get_name_recurse): Put type arguments in
19001         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19002         see bug #68387.
19003
19004 2004-11-15  Martin Baulig  <martin@ximian.com>
19005
19006         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19007         (mono_class_setup_vtable): When computing `the_cname' for a
19008         generic instance, don't include the namespace since we'd otherwise
19009         add it twice.
19010
19011 2004-11-15  Martin Baulig  <martin@ximian.com>
19012
19013         * class.c (mono_class_create_generic): Changed return type to void.
19014         (mono_class_create_generic_2): New public function; setup
19015         `class->method', `class->field' and `class->interfaces' here
19016         instead of in mono_class_init().
19017
19018         * class.h (mono_class_create_generic): Moved to class-internals.h.
19019
19020 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19021
19022         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19023         rather than writing to memory, write to this file. Right now,
19024         we are just writting into a buffer, and copying that. However
19025         we can avoid the buffer later.
19026
19027         (mono_dynamic_stream_reset): new function
19028
19029         * icall.c, object-internals.h: update for the above.
19030
19031 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19032
19033         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19034         have been using gc'd memory. First it is slower, unlikely
19035         the comment in the source code said, secondly, it increases
19036         our footprint to do it in the gc.
19037
19038         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19039         the method so that it does not have to copy to managed code.
19040
19041 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19042
19043         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19044
19045 2004-11-12  Martin Baulig  <martin@localhost>
19046
19047         * reflection.c (mono_image_create_token): Allow generic method
19048         definitions here, since they may appear in an `.override'; see
19049         gen-98/gen-99 for an example.
19050
19051 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19052
19053         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19054         #69365.
19055
19056         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19057         descriptive.
19058
19059 2004-11-11  Martin Baulig  <martin@ximian.com>
19060
19061         * class.c (mono_class_setup_vtable): In an explicit interface
19062         implementation, the method name now includes the arity.
19063
19064 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19065
19066         * object.c (mono_array_full_copy): Fix warning.
19067
19068 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19069
19070         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19071         mono_class_get_method_from_name() instead.
19072         
19073         * class-internals.h: Added two new types of wrappers. 
19074         Added MonoRemotingTarget enum. Added new trampoline function type, which
19075         takes an additional MonoRemotingTarget value as parameter, so it is
19076         possible to request a trampoline for a specific target.
19077         
19078         * class.c: Added new mono_class_get_method_from_name() method.
19079         
19080         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19081         general remoting sinks and one specific for cross domain calls.
19082         
19083         * debug-helpers.c: Added new wrapper names.
19084         
19085         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19086         of a remote class.
19087         
19088         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19089         
19090         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19091         with several other methods (mono_marshal_get_xappdomain_dispatch,
19092         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19093         and others) can generate a fast remoting wrapper for cross domain calls.
19094         More information can be found in docs/remoting.
19095         Other changes: Removed mono_find_method_by_name, and used
19096         mono_class_get_method_from_name instead.
19097         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19098         is stored in the remoting invoke hashtable.
19099         
19100         * marshal.h: published the new method for getting the xdomain wrapper,
19101         and also added a method for getting the adequate wrapper for a given
19102         method and target.
19103         
19104         * object-internals.h, object.c: Added a couple of methods for capying and
19105         cloning arrays.
19106         Modified mono_install_remoting_trampoline, which takes the new remoting
19107         trampoline that has a remoting target as parameter.
19108         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19109         will return the most suitable vtable for the target.
19110         Added mono_remote_class_vtable, which returns the vtable of a remote class
19111         (which can be the normal remoting vtable or the xdomain vtable).
19112         
19113         * threads.c: the xdomain invoke and dispatch wrappers must also be
19114         protected against interruptions.
19115
19116 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19117
19118         * icall.c: use memmove in BlockCopyInternal when the source and
19119         destination arrays are the same.
19120
19121 2004-11-09  Martin Baulig  <martin@ximian.com>
19122
19123         * class-internals.h (MonoGenericContainer): Removed `method' and
19124         `signature', replaced them with `is_method' and `is_signature'
19125         flags.  Added `context'.
19126
19127         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19128         instead of a `MonoGenericContainer *'.
19129
19130         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19131         for dynamic type parameters.
19132         (mono_metadata_load_generic_params): Setup `container->context'.
19133
19134         * reflection.c (mono_reflection_setup_generic_class): Setup
19135         `tb->generic_container->context'.
19136         (do_mono_reflection_bind_generic_parameters): Use
19137         mono_class_inflate_generic_type() to correctly inflate types,
19138         rather than using our own hack just for MONO_TYPE_VAR.
19139
19140 2004-11-09  Martin Baulig  <martin@ximian.com>
19141
19142         * class.c (mono_class_inflate_generic_method): Small fix; don't
19143         crash here.
19144
19145         * icall.c
19146         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19147         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19148         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19149         (ves_icall_Type_BindGenericParameters): Likewise.
19150         (ves_icall_Type_get_IsGenericInstance): Likewise.
19151         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19152         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19153         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19154         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19155
19156 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19157
19158         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19159         assembly versions and public key tokens. Fixes #69113.
19160
19161 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19162
19163         * metadata.c: fix bug introduced with the type cache changes
19164         on 2004-11-06.
19165
19166 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19167
19168         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19169         the MonoClass pointer instead of the token in exception clauses.
19170         * reflection.c: updates for the above and make the code not depend
19171         on the structure of MonoExceptionClause.
19172
19173 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19174
19175         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19176         Add support for dynamic assemblies. Fixes #69114.
19177
19178         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19179
19180 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19181
19182         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19183         since most only those methods use it. the code member of
19184         MonoMethodPInvoke was dead, so that can be removed too. Also,
19185         remove inline_count (again, not used), and move slot so that it
19186         can share bits with some other flags. This saves 8 bytes in the
19187         structure and gives us about 50 kb back for mcs helloworld.cs
19188
19189         * *.[ch]: Do naming changes for the above.
19190
19191         * loader.c (mono_method_get_header): Lazily init the header
19192         on first access.
19193         (mono_get_method_from_token): don't init the header here
19194         (mono_free_method): the header may never be allocated
19195
19196         Overall, this saves 150 kb of unmanaged allocations
19197         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19198         memory at runtime.
19199         
19200         * loader.c, loader.h (mono_method_get_header): new accessor.
19201
19202         * *.[ch]: use the above method. Prepares us to lazily load
19203         the header.
19204
19205         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19206         three warnings, which are actual bugs (see 69206).
19207
19208         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19209         unused. Saves a cool 4 bytes / method.
19210
19211 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19212
19213         * metadata.c (builtin_types): Add types for System.Object here.
19214         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19215         for a class or valuetype from klass->this_arg or klass->byval_arg.
19216
19217         On mcs for a hello world, this gets us down from 21836 MonoType's
19218         to 14560.
19219
19220         (mono_metadata_free_type): Account for the above change.
19221
19222 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19223
19224         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19225         exception instead of asserting if name is null.
19226         (ves_icall_System_AppDomain_GetData): Ditto.
19227
19228 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19231         EnumBuilder.
19232
19233         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19234         Return NULL when the domain does not have entry_assembly set.
19235
19236         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19237         Add a 'resource_modules' argument.
19238         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19239
19240         * reflection.c (mono_reflection_create_runtime_class): Move setting
19241         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19242         for enums too.
19243
19244         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19245         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19246         Throw an ArgumentNullException if 'ptr' is null.
19247
19248         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19249         assemblies here. Fixes #69020.
19250
19251 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19252
19253         * reflection.c (build_compressed_metadata): Fix the previous patch for
19254         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19255         the stack.
19256
19257 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19258
19259         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19260         the cultures is false. Fixes #69090.
19261
19262         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19263         detected by valgrind.
19264         
19265         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19266         TypeResolve multiple times for the same type. Fixes #65577.
19267
19268 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19269
19270         * marshal.c: Avoid using ldftn to call managed functions. It is
19271         much slower than just a call.
19272
19273         * reflection.c (mono_module_get_object): free the basename we
19274         allocate here from glib.
19275         
19276         * reflection.c (ensure_runtime_vtable): make sure to free
19277         overrides.  Also, we were allocating an array of MonoMethod not an
19278         array of MonoMethod*.
19279
19280         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19281
19282         * image.c (mono_image_close): free image->guid here.
19283
19284 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19285
19286         * reflection.c: Fix some spec conformance issues with the PE file
19287         structures so mcs compiled apps run on the Net 2.0 beta.
19288
19289 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19290
19291         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19292         Implement this. Fixes #67264.
19293
19294         * debug-helpers.h debug-helpers.c marshal.c: Move 
19295         mono_find_method_by_name to debug-helpers.c.
19296
19297 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19298
19299         * object.c (mono_release_type_locks): type_initialization_hash is
19300         a GHashTable.
19301
19302         * reflection.c object.c object-internals.h: Fix warnings.
19303
19304         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19305         without accessors. Fixes #61561.
19306
19307         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19308         application base from the root domain if not set. Fixes #65641.
19309         (mono_runtime_init): Fix warning.
19310
19311 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19312
19313         * appdomain.c: call mono_thread_pool_init.
19314         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
19315         of worker threads based on the number of CPUs and the environment
19316         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
19317         for non-windows (windows) systems.
19318
19319 2004-10-27  Chris Toshok  <toshok@ximian.com>
19320
19321         * mono-debug-debugger.c (write_class): don't call mono_class_init
19322         here, as even with the check for (!klass->init_pending), we get
19323         into a situation where we're hitting cycles in class
19324         initialization.  Fixes #68816.
19325
19326 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19327
19328         * image.c: Avoid overwriting values in the loaded_images_hash when an
19329         assembly is loaded multiple times. Fixes #61152.
19330
19331         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
19332         so multiple satellite assemblies for the same name can be loaded.
19333         Fixes #68259.
19334
19335         * mono_domain_assembly_preload: Actually return the loaded assembly, 
19336         not NULL.
19337
19338         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
19339         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
19340
19341         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
19342         pending finalizers are not invoked after the appdomain has been 
19343         unloaded. Fixes #67862.
19344
19345 2004-10-22  Martin Baulig  <martin@ximian.com>
19346
19347         * mono-debug-debugger.c
19348         (mono_debugger_runtime_invoke): Don't box valuetypes.
19349
19350 2004-10-22  Chris Toshok  <toshok@ximian.com>
19351
19352         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
19353         don't hide private methods.
19354
19355 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
19356
19357         * icall.c: Allows the runtime to "share" (when known) the public key
19358         token of an assembly. This avoid the need to recalculate the token 
19359         (from the public key) in managed code.
19360
19361 2004-10-21  Chris Toshok  <toshok@ximian.com>
19362
19363         * debug-helpers.c (append_class_name): argh, revert last patch.
19364         
19365 2004-10-21  Chris Toshok  <toshok@ximian.com>
19366
19367         * debug-helpers.c (append_class_name): use '+' as the delimiter,
19368         not '/', so that it matches what the debugger uses to look up
19369         methods.
19370
19371 2004-10-21  Martin Baulig  <martin@ximian.com>
19372
19373         * mono-debug-debugger.c (mono_debugger_throw_exception): New
19374         public method; this is called each time an exception is thrown and
19375         allows the debugger to use exception catch points.
19376
19377 2004-10-21  Martin Baulig  <martin@ximian.com>
19378
19379         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
19380         the stack pointer and the exception object in some struct and pass
19381         that to the debugger.
19382
19383 2004-10-21  Chris Toshok  <toshok@ximian.com>
19384
19385         * mono-debug-debugger.c (do_write_class): add instance/static
19386         event support.  We don't expose "raise" or "other" yet.
19387         (event_is_static): new method.
19388
19389 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
19390
19391         * mono-debug-debugger.c
19392         (mono_debugger_handle_exception): Remove
19393         bogus return value for fussy compilers.
19394
19395 2004-10-20  Martin Baulig  <martin@ximian.com>
19396
19397         * mono-debug-debugger.c
19398         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
19399         (mono_debugger_handled_exception): Likewise.
19400
19401 2004-10-20  Martin Baulig  <martin@ximian.com>
19402
19403         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19404         MONO_DEBUGGER_EVENT_EXCEPTION.
19405
19406         * mono-debug-debugger.c (mono_debugger_handle_exception): New
19407         public function to send the debugger a notification for an
19408         exception and inform it about a catch/finally clause.
19409
19410 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
19411
19412         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
19413         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
19414         fix 2.95 build. 
19415
19416         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
19417
19418 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19419
19420         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
19421         marshalled as [In,Out]. Fixes #58325.
19422
19423 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
19424
19425         * reflection.c (mono_method_body_get_object): Implement some fields.
19426
19427 2004-10-12  Martin Baulig  <martin@ximian.com>
19428
19429         * reflection.c (mono_reflection_bind_generic_parameters): Small
19430         fix, correctly retrieve our parent from a generic instance.
19431
19432 2004-10-12  Martin Baulig  <martin@ximian.com>
19433
19434         * metadata.c (mono_metadata_generic_param_equal): We always have
19435         an owner.
19436
19437         * class.c
19438         (mono_class_from_generic_parameter): We need to have an owner.
19439         (my_mono_class_from_generic_parameter): Likewise.
19440
19441         * reflection.c (mono_reflection_setup_generic_class): Renamed to
19442         mono_reflection_create_generic_class() and added a new
19443         mono_reflection_setup_generic_class().  
19444         (mono_reflection_initialize_generic_param): If we're a nested
19445         generic type and inherited from the containing class, set our
19446         owner to the outer class.
19447
19448 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
19449
19450         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
19451
19452         * reflection.c (mono_method_body_get_object): New function to create
19453         a MethodBody object.
19454
19455         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
19456
19457 2004-10-11  Martin Baulig  <martin@ximian.com>
19458
19459         * metadata.c (_mono_metadata_type_equal): Renamed to
19460         do_mono_metadata_type_equal() and made static.
19461
19462 2004-10-11  Martin Baulig  <martin@ximian.com>
19463
19464         * appdomain.c: Bump corlib version number to 28.
19465
19466 2004-10-10  Martin Baulig  <martin@ximian.com>
19467
19468         * class-internals.h
19469         (MonoGenericInst): Added `MonoGenericContainer *container'.
19470         (MonoGenericMethod): Likewise.
19471         (MonoGenericContext): Likewise.
19472         (MonoGenericParam): Added `MonoGenericContainer *owner'.
19473
19474         * metadata.c
19475         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
19476         (do_mono_metadata_parse_generic_inst): Likewise.
19477         (mono_metadata_parse_type_full): New public method.  This is the actual
19478         mono_metadata_parse_type() implementation - with an additional
19479         `MonoGenericContainer *' argument.
19480         (mono_metadata_parse_array_full): Likewise.
19481         (mono_metadata_parse_signature_full): Likewise.
19482         (mono_metadata_parse_method_signature_full): Likewise.
19483         (mono_metadata_parse_mh_full): Likewise.
19484         (mono_type_create_from_typespec): Likewise.
19485         (mono_metadata_interfaces_from_typedef_full): New public method;
19486         this is similar to the other _full() methods, but we take a
19487         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
19488         (mono_metadata_parse_generic_param): Take an additional
19489         `MonoGenericContainer *' argument and lookup the MonoGenericParam
19490         from that container.
19491         (mono_metadata_generic_param_equal): New static method to compare
19492         two type parameters.
19493         (_mono_metadata_type_equal): New static method; takes an
19494         additional `gboolean signature_only' argument - if true, we don't
19495         compare the owners of generic parameters.
19496         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
19497         with a TRUE argument - do a signature-only comparision.
19498
19499         * loader.c: Use the new _full() methods and pass the
19500         MonoGenericContainer to them.
19501
19502         * object-internals.h (MonoReflectionTypeBuilder): Added
19503         `MonoGenericContainer *generic_container' field.
19504         (MonoReflectionMethodBuilder): Likewise.
19505
19506 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19507
19508         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
19509         case initial images of dynamic assemblies.
19510
19511         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
19512
19513         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
19514
19515         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
19516         length of event->other array.
19517         (typebuilder_setup_events): Ditto.
19518
19519         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
19520         'assembly_by_name' and add an 'assemblies' list.
19521
19522         * assembly.h assembly.c: Add a new search hook for determining whenever
19523         an assembly is already loaded. Use this instead of searching in the
19524         loaded_assemblies list.
19525
19526         * domain.c appdomain.c: Implement the new search hook so loaded 
19527         assemblies are now scoped by appdomain. Fixes #67727.
19528
19529 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
19530
19531         * threads.c (mono_thread_attach): Initialize synch_lock field so
19532         mono_thread_detach works again.
19533
19534         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
19535         'lib' too. Fixes #63130.
19536
19537 2004-10-06  Jackson Harper  <jackson@ximian.com>
19538
19539         * culture-info-tables.h: regenerated.
19540
19541 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
19542
19543         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
19544         implemented by other interfaces in the result. Fixes #65764.
19545         
19546         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19547         Handle unloadable modules without crashing.
19548
19549         * image.c (load_modules): Revert the previous patch since modules must
19550         have a fixed index inside the array.
19551         
19552         * image.c (load_modules): Don't include native modules in the modules
19553         array.
19554
19555 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * reflection.h: Add param_defaults field.
19558
19559         * reflection.c: Add support for parameter defaults in dynamic methods.
19560         Fixes #64595.
19561
19562         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
19563         an empty string when a type has no namespace. Fixes #64230.
19564
19565 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
19566
19567         * tabledefs.h: Added "internal" security actions to support non-CAS
19568         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
19569         Note: they do not seems to be used anymore in 2.0 (new metadata format)
19570
19571 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
19572
19573         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
19574         constructor of abstract class. Fixes #61689.
19575
19576 2004-10-04  Martin Baulig  <martin@ximian.com>
19577
19578         * class-internals.h (MonoGenericContainer): New type.
19579         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
19580         `MonoGenericContainer *generic_container'.
19581         (MonoClass): Replaced `gen_params' and `num_gen_params' with
19582         `MonoGenericContainer *generic_container'.
19583
19584         * metadata.c (mono_metadata_load_generic_params): Return a
19585         `MonoGenericContainer *' instead of a `MonoGenericParam *';
19586         removed the `num' argument.
19587
19588 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19589
19590         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
19591         for dynamic images.
19592
19593         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
19594         machine fields.
19595
19596         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
19597
19598         * reflection.c: Save pe_kind and machine values into the generated
19599         image file.
19600
19601         * appdomain.c: Bump corlib version number.
19602
19603         * object-internals.h: Reorganize layout of LocalBuilder.
19604
19605         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
19606         New helper function.
19607
19608         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
19609         created MonoType for dynamic types. Fixes #66180.
19610
19611 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
19612
19613         * threadpool.c: the ares hashtable needs a critical section around it.
19614         this prevents some nasty segfaults
19615
19616 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19617
19618         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
19619         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
19620         bug 67324).
19621         
19622 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
19625         
19626 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19627
19628         * image.c: Always canonicalize image file names, to avoid loading
19629         the same assembly twice when referenced using a relative path.
19630
19631 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19632
19633         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
19634
19635         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
19636
19637         * marshal.c: Fix warnings.
19638
19639 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
19640
19641         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
19642         attempting to marshal the delegate_trampoline as the method_addr.
19643         This patch has a static hashtable of marshalled delegates so that 
19644         we can map delegate_trampoline addresses back to delegates.  This
19645         allows a delegate passed to managed code to be passed back into native
19646         code.  Fixes #67039
19647
19648 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19649
19650         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
19651
19652         * reflection.c (method_encode_code): Align method headers properly.
19653         Fixes #66025.
19654
19655 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19656
19657         * marshal.c: In the runtime invoke wrapper, reset the abort
19658         exception if it is cached. This avoids the automatic rethrowal of 
19659         the exception after the catch of the wrapper. Also check for pending
19660         interruptions before calling the managed method. This is done using
19661         the new method emit_thread_force_interrupt_checkpoint, since the
19662         normal checkpoint method is ignored when running the invoke wrapper.
19663         * object.c: If the abort exception is rethrown, set the abort_exc
19664         field of the thread, so it will be rethrown aftere every catch.
19665         * threadpool.c: Only run an interruption checkpoint if what has been
19666         requested is a stop of the thread (aborts will be ignored).
19667         * threads.c: By default, a thread will now never be interrumped while
19668         running the runtime invoke wrapper (this ensures that runtime_invoke
19669         will always return to the caller if an exception pointer is provided).
19670         There is a new special method mono_thread_force_interruption_checkpoint()
19671         to force an interruption checkpoint even if running a protected
19672         wrapper, which is used by the same runtime invoke wrapper to do a check
19673         at a safe point.
19674
19675 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19676
19677         * object.c, object-internals.h: Implemented mono_release_type_locks,
19678         which releases the cctor locks held by a thread.
19679         * threads.c, threads.h: In thread_cleanup, release cctor locks held
19680         by a thread. Added mono_thread_exit() method to be used to safely stop
19681         a thread.
19682
19683 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19684
19685         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19686         Move null check before dereference.  Avoid indexing beyond the end
19687         of the 'modules' array.
19688
19689 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19690
19691         * metadata-internals.h (MonoImage): Add module_count field.
19692         * image.c (load_modules): Set image->module_count.
19693         (mono_image_load_file_for_image): Use image->module_count.
19694         * reflection.c (mono_image_load_module): Append to image->modules array 
19695         of dynamic assembly.
19696         (mono_module_get_object): Fix loop to actually increment index.
19697         Use image->module_count.
19698         * assembly.c (mono_assembly_load_references): Use image->module_count.
19699         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
19700         Likewise.
19701
19702 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19703
19704         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
19705         Avoid assert on generic types.
19706
19707 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
19708
19709         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
19710
19711         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
19712
19713         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
19714         function to convert a MarshalSpec structure to its managed counterpart.
19715
19716         * reflection.c: Fix warnings.
19717         
19718         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
19719         field.
19720
19721         * icall.c (mono_create_icall_signature): Fix build.
19722
19723 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19724
19725         * icall.c: Add MakePointType icall.
19726
19727         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
19728         warnings.
19729
19730 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19731
19732         * threadpool.c: reuse allocated slots in the queue.
19733
19734 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19735
19736         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
19737
19738         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
19739
19740         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
19741         previous change.
19742
19743         * tabledefs.h: Add constants for pinvoke attributes BestFit and
19744         ThrowOnUnmappableChar.
19745
19746         * icall.c (ves_icall_Type_GetPacking): New icall.
19747
19748 2004-09-24  Martin Baulig  <martin@ximian.com>
19749
19750         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
19751
19752 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19753
19754         * appdomain.c:
19755         (mono_domain_set): allow setting a domain that is being unloaded.
19756         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
19757         being unloaded.
19758
19759 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19760
19761         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
19762         the GetCustomAttributes icall.
19763
19764 2004-09-23  Martin Baulig  <martin@ximian.com>
19765
19766         * object-internals.h (MonoReflectionGenericParam): Replaced
19767         'has_ctor_constraint', `has_reference_type' and `has_value_type'
19768         with `guint32 attrs'.
19769
19770 2004-09-23  Martin Baulig  <martin@ximian.com>
19771
19772         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
19773
19774 2004-09-23  Martin Baulig  <martin@ximian.com>
19775
19776         * object-internals.h (GenericParameterAttributes): New enum.
19777
19778 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19779
19780         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
19781         
19782         * class.c (init_events): Fill out event->other field.
19783
19784         * class.c: Fix warnings.
19785
19786         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
19787
19788 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
19789
19790         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
19791         walk which doesn't supply the IL offset.
19792
19793 2004-09-22  Martin Baulig  <martin@ximian.com>
19794
19795         * reflection.c (mono_reflection_setup_internal_class): If we're
19796         System.ValueType, System.Object or System.Enum, set
19797         `klass->instance_size' and create the vtable.
19798         (mono_reflection_create_internal_class): If we're an enum type,
19799         get the base class from our current corlib.
19800
19801 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
19802
19803         * reflection.h (MonoResolveTokenError): New type.
19804
19805         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
19806         icall.
19807
19808         * icall.c: Add an 'error' argument to the ResolveToken icalls.
19809
19810 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
19811
19812         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
19813         Support also calling constructors, but only for already allocated objects.
19814
19815 2004-09-17  Geoff Norton <gnorton@customerdna.com>
19816
19817         * reflection.c (type_get_qualified_name): If the klass is null
19818         return the typename to avoid a NullRefEx.
19819         (encode_cattr_value): Get the qualified name of the boxed type,
19820         not the underlying enumtype.  Fixes #62984.
19821
19822 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
19823
19824         * marshal.c: Fix problems with previous checkin.
19825
19826 2004-09-21    <vargaz@freemail.hu>
19827
19828         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
19829         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
19830
19831         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
19832
19833 2004-09-21  Geoff Norton <gnorton@customerdna.com>
19834
19835         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
19836         should only return a type for pointers, arrays, and passbyref types.
19837         Fixes bug #63841.
19838
19839 2004-09-21  Martin Baulig  <martin@ximian.com>
19840
19841         * domain.c (mono_debugger_check_runtime_version): New public
19842         function.
19843
19844         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
19845
19846 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
19847
19848         * reflection.c: Added missing sort to the declarative security 
19849         attributes table. MS implementation stops seeing the attributes if the
19850         token number regress in the table (as shown by ildasm and permview).
19851
19852 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * object-internals.h (MonoReflectionModule): Add 'token' field.
19855         
19856         * reflection.c (mono_reflection_get_token): Add support for Module
19857         and Assembly.
19858         (mono_module_get_object): Set 'token' field.
19859         (mono_module_file_get_object): Set 'token' field.
19860
19861         * icall.c: Add new Assembly and Module icalls.
19862
19863         * appdomain.c: Bump corlib version.
19864
19865 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * loader.h loader.c class.h class.c: Add helper functions for obtaining
19868         tokens of metadata objects.
19869
19870         * reflection.h reflection.c (mono_reflection_get_token): New function
19871         to obtain the token of a metadata object.
19872
19873         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
19874
19875 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19876
19877         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
19878         
19879         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
19880
19881 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
19882
19883         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
19884         * object-internals.h: Added 3 MonoArray* members to MonoReflection
19885         AssemblyBuilder to access the permissions set in the class lib.
19886         * reflection.c: Added security attributes encoding step in 
19887         mono_image_build_metadata.
19888         * tabledefs.h: Added new security actions defined in 2.0:
19889         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
19890
19891 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
19892
19893         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
19894         macro parameter.
19895
19896 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
19897  
19898         * locales.c: nullify the ICU_collator member of CompareInfo when it is
19899           finalized. There where random SIGSEVs at program termination, when
19900           an object being finalized was trying to do a string comparison and
19901           the current culture was already finalized.
19902  
19903 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19904
19905         * threads.c: call thread_cleanup before finishing the thread if we get
19906         there.
19907
19908 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
19909
19910         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
19911         assemblies from the parent. Fixes #65665.
19912
19913 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
19916         modifiers.
19917
19918 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
19919
19920         * reflection.h: add prototype for mono_get_dbnull_object
19921         * reflection.c: add prototypes for get_default_param_value_blobs 
19922         and mono_get_object_from_blob for fussier compilers
19923
19924 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
19925  
19926         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
19927         false deadlock checks in class initialization.
19928  
19929 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * image.c (mono_image_addref): Fix comment.
19932
19933         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
19934         possible.
19935
19936 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
19937
19938         * reflection.c (mono_param_get_objects): Modified to return
19939         ParameterInfo.DefaultValue object.
19940
19941         (get_default_param_value_blobs):
19942         (mono_get_object_from_blob):
19943         (mono_get_dbnull_object): New helper routines. 
19944
19945         * object.c (mono_get_constant_value_from_blob): New helper routine
19946         carved out from get_default_field_value ()
19947
19948         * object-internals.h (mono_get_constant_value_from_blob): Added
19949         function declaration.
19950
19951 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19952
19953         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
19954         referenced assemblies. Fixes #62135.
19955
19956         * exception.h exception.c (mono_get_exception_file_not_found2): New
19957         helper function.
19958
19959 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * class.h class.c: Add mono_type_get_underlying_type ().
19962
19963 2004-09-09  Geoff Norton <gnorton@customerndna.com>
19964
19965         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
19966         Fix GetTypes() to support dynamically created assemblies.
19967
19968 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
19969
19970         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
19971         
19972         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
19973         previous patch.
19974
19975         * reflection.h reflection.c loader.c: Allow dynamic construction of
19976         pinvoke methods. Fixes #65571.
19977         
19978         * reflection.c (mono_reflection_get_type): Revert previous change since
19979         it causes regressions.
19980
19981 2004-09-08  Martin Baulig  <martin@ximian.com>
19982
19983         * class.c (class_compute_field_layout): Don't call
19984         mono_class_layout_fields() for open generic instances.
19985
19986 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
19987         * threads.c appdomain.c: fix typo in GC macro
19988
19989 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19990
19991         * threads.c: don't call mono_thread_detach() in start_wrapper(),
19992         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
19993
19994 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
19995
19996         * image.c (mono_image_close): Applied patch from 
19997         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
19998         assembly is loaded multiple times from data.
19999         
20000         * image.c (mono_image_open): Fix warning.
20001
20002 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20003
20004         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20005         once. Fixes #58334.
20006         
20007         * reflection.c (mono_reflection_create_runtime_class): Initialize
20008         klass->nested_classes. Fixes #61224.
20009
20010 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20011
20012         * threads.c: sched_yield() on exit, to allow threads to quit.
20013
20014 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20015
20016         * object.c (mono_unhandled_exception): Remove leftover debug code.
20017
20018 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20019
20020         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20021
20022 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20023
20024         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20025         
20026         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20027
20028 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20029
20030         * marshal.c (emit_marshal_array): Null terminate string arrays.
20031         
20032         * marshal.c (raise_auto_layout_exception): Fix warning.
20033
20034         * reflection.c (mono_param_get_objects): Initialize the default value
20035         with DBNull.Value, not null. Fixes #62123.
20036
20037 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20038
20039         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20040         throw an exception with a cute explanation.
20041
20042 2004-09-06  Dick Porter  <dick@ximian.com>
20043
20044         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20045         Close the new process's thread handle, as we don't use it.  The
20046         handle stays around forever otherwise.
20047
20048 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20049
20050         * object.c (arith_overflow): Fix warning.
20051
20052         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20053         calling conventions in method refs. Fixes #65352.
20054
20055         * reflection.c: Fix warnings.
20056
20057 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20058
20059         * icall.c: Add a new icall for Array.Clear
20060
20061 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20062
20063         * object.c: When allocating an array, we have to throw
20064         an overflow exception if any of the lengths are < 0.
20065
20066 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20067
20068         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20069         properly. Also move implementation of string array marshalling to 
20070         managed code. Fixes #42316.
20071
20072 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20073
20074         * assembly.c: provide more information when loading an assembly fails.
20075
20076 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20077
20078         * filewatcher.c: don't expect the development fam package to be
20079         installed.
20080
20081 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20082
20083         * marshal.c: Make a copy of the signature cookie since it will be
20084         freed by the caller.
20085         
20086         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20087
20088         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20089
20090         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20091         marshal specs.
20092
20093         * marshal.c: More refactoring.
20094         
20095         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20096         smaller functions.
20097
20098 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20099
20100         * object.c: In mono_message_invoke, fill the output parameter array after
20101           calling the managed method (it was done before the call). This fixes
20102           bug #59299.
20103
20104 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20105
20106         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20107         as well.
20108
20109 2004-09-02  Martin Baulig  <martin@ximian.com>
20110
20111         * class.c (mono_class_instance_size): Don't allow generic type
20112         definitions or open generic instances.
20113         (mono_class_array_element_size): If we're a value type, call
20114         mono_class_instance_size() on the original class.
20115
20116         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20117         handle generic instances.
20118
20119         * mono-debug-debugger.c (write_type): Handle generic instances
20120         like classes.
20121
20122 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20123
20124         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20125         the allocation request fails. Fixes #65089.
20126
20127         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20128         
20129         * object.c (mono_runtime_free_method): New function to free a dynamic
20130         method.
20131
20132         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20133         delegate trampoline.
20134
20135         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20136         with hasthis as dynamic,
20137
20138         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20139
20140         * domain.c (mono_jit_info_table_remove): New function to remove an
20141         entry from the jit info table.
20142
20143         * class-internals.h (MonoMethod): Add 'dynamic' field.
20144
20145         * loader.c: Fix warnings.
20146
20147 2004-09-01  Martin Baulig  <martin@ximian.com>
20148
20149         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20150         instead of mono_debugger_lock() because the latter one is a no-op
20151         unless running in the debugger.
20152
20153 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20154
20155         * class.c (class_compute_field_layout): Classes with auto-layout or
20156         reference fields are not blittable.
20157         
20158 2004-09-01  Dick Porter  <dick@ximian.com>
20159
20160         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20161         mono_image_get_filename() to get the assembly location.
20162
20163         * icall.c:
20164         * metadata.h: Fix compile warnings
20165
20166 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20167
20168         * class.c (class_compute_field_layout): System.Object is blittable.
20169
20170         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20171         as in/out. Fixes #59909.
20172
20173 2004-09-01  Martin Baulig  <martin@ximian.com>
20174
20175         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20176         mono_metadata_generic_inst_is_valuetype() if we're a generic
20177         instance to check whether our underlying type is a reference type.
20178
20179 2004-09-01  Martin Baulig  <martin@ximian.com>
20180
20181         * metadata.c (mono_type_size): If we're a generic instance, call
20182         mono_class_value_size() for value types.
20183
20184 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20185
20186         * marshal.c: Implement more custom marshalling functionality. Fixes
20187         #64915.
20188
20189 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20190
20191         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20192
20193 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20194
20195         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20196
20197         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20198
20199         * icall.c: Fix some warnings.
20200
20201         * threads.c (abort_appdomain_thread): Fix unref errors.
20202         (mono_thread_current): Fix THREAD_DEBUG define.
20203
20204 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20205
20206         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20207
20208         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20209
20210 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20211
20212         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20213         string arrays.
20214
20215 2004-08-28  Martin Baulig  <martin@ximian.com>
20216
20217         * metadata.c
20218         (mono_metadata_generic_inst_is_valuetype): New public function.
20219
20220         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20221         mono_metadata_generic_inst_is_valuetype() if we're a generic
20222         instance to check whether our underlying type is a valuetype.
20223
20224 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20225
20226         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20227         #63768.
20228
20229 2004-08-25  Martin Baulig  <martin@ximian.com>
20230
20231         * loader.c (mono_get_method_from_token): Abstract methods can also
20232         be generic and thus have type parameters.
20233
20234         * metadata-internals.h
20235         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20236
20237         * reflection.c (mono_image_get_generic_param_info): Don't create a
20238         metadata row, just add an entry to the `gen_params' array.
20239         (build_compressed_metadata): Sort the `gen_params' array and then
20240         actually create the metadata.
20241
20242 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20243
20244         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20245
20246 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20247
20248         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20249
20250 2004-08-24  Martin Baulig  <martin@ximian.com>
20251
20252         * class.cs (mono_class_is_subclass_of): Like an interface, a
20253         generic instance also derives from System.Object.
20254
20255 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20256
20257         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20258         custom modifiers to be in any order. Fixes #61990.
20259
20260 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20261
20262         * object.c: Register mono_object_new_fast icall.
20263         
20264         * object.c (mono_class_get_allocation_ftn): Return to calling
20265         mono_object_new_fast, since it seems faster to compute the object 
20266         size in unmanaged code than passing it as a parameter.
20267
20268         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20269
20270         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20271         this function with Boehm as the oom handler, so we don't have to check
20272         the result of GC_malloc.
20273
20274         * object.c: Remove checks for oom.
20275
20276         * object.h object.c (mono_class_get_allocation_ftn): New function to
20277         return the icall which can be used to allocate an instance of a given
20278         class. 
20279
20280         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20281
20282         * class-internals.h: Add 'enabled' field.
20283
20284 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20285
20286         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20287
20288 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20289         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20290         value 0x0010.
20291
20292 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20293
20294         * appdomain.c: use the Tls function for appdomain too,
20295         at Zoltan's request. Actually return in mono_context_get
20296
20297         * appdomain.c, profiler.c, threads.c: use __thread
20298
20299 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20300
20301         * appdomain.c threads.c: Call GC_CreateThread on windows.
20302
20303         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20304         multiple libraries since this don't work on windows.
20305
20306 2004-08-18  Martin Baulig  <martin@ximian.com>
20307
20308         * class-internals.h
20309         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20310         MonoMethodHeader.
20311
20312         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20313         MonoMethodNormal since we also need it for abstract and interface
20314         methods.
20315
20316         * reflection.c
20317         (build_compressed_metadata): Sort the GenericParam table.
20318         (mono_image_create_token): Added `gboolean create_methodspec'
20319         argument; this is false when generating a MethodImpl token.
20320         (reflection_methodbuilder_to_mono_method): Abstract and interface
20321         methods may also have generic parameters.
20322
20323 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20324
20325         * appdomain.c: thread local alloc
20326
20327 2004-08-17  Martin Baulig  <martin@ximian.com>
20328
20329         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
20330
20331         * icall.c
20332         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
20333         argument.
20334
20335         * class.c (mono_type_get_full_name): New public function.
20336         (mono_type_get_name): Don't include the type arguments.
20337
20338 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20339
20340         * Makefile.am: Build static versions of libmetadata and libmonoruntime
20341         for inclusion into the mono executable.
20342
20343 2004-08-16  Martin Baulig  <martin@ximian.com>
20344
20345         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
20346         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
20347
20348 2004-08-14  Martin Baulig  <martin@ximian.com>
20349
20350         * class.c (dup_type): Also copy the `byref' field.
20351
20352 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20353
20354         * reflection.c (create_dynamic_mono_image): Revert the last change 
20355         since it breaks bootstrap.
20356
20357 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20358
20359         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
20360
20361         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
20362         not free them with g_free.
20363
20364 2004-08-11  Martin Baulig  <martin@ximian.com>
20365
20366         * reflection.c (mono_reflection_setup_internal_class): Also call
20367         mono_class_setup_mono_type() if we already have a `tb->type.type'.
20368
20369 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
20370
20371         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
20372         called during default (first) AppDomain creation. Keep track of
20373         Evidence when loading assemblies.
20374
20375 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20376
20377         * opcodes.c, opcodes.h: reduce runtime relocations.
20378
20379 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20380
20381         * culture-info.h, locales.c: fixes and chages to sue the new
20382         optimized format of the locale data.
20383         * culture-info-tables.h: regenerated.
20384
20385 2004-08-06  Geoff Norton <gnorton@customerdna.com>
20386         
20387         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
20388
20389 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
20390
20391         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
20392         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
20393         * domain-internals.h: icall declaration.
20394         * icall.c: icall registration.
20395         * object-internals.h: New fields in MonoAssembly for CAS.
20396
20397 2004-08-05  Duncan Mak  <duncan@ximian.com>
20398
20399         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20400         CEE_LDELEM_ANY.
20401
20402 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20403
20404         * reflection.c: fix to deal with object[] arrays in custom ctors
20405         (bug #62550).
20406
20407 2004-08-05  Martin Baulig  <martin@ximian.com>
20408
20409         * class.c (mono_class_array_element_size): Added support for
20410         generic instances and correctly handle "recursive" types.
20411
20412 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20413
20414         * assembly.c: Fix warnings.
20415
20416 2004-08-04  Martin Baulig  <martin@ximian.com>
20417
20418         * class.c
20419         (mono_type_get_name_recurse): Added `gboolean include_arity'
20420         argument specifying whether or not we should include the generic
20421         arity in the type name.
20422         (_mono_type_get_name): New static function.
20423         (mono_class_setup_vtable): If we're a generic instance, don't
20424         include the generic arity in the names of explicit method
20425         implementations.        
20426
20427 2004-08-03  Martin Baulig  <martin@ximian.com>
20428
20429         * class.c (mono_type_get_name_recurse): Enclose the generic type
20430         arguments in `<', '>'.
20431
20432 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20433
20434         * gc.c: make GC warning messages use the trace API, they are just
20435         noise to most of the users.
20436
20437 2004-08-03  Martin Baulig  <martin@ximian.com>
20438
20439         * debug-mono-symfile.c (read_string): Correctly read the string.
20440
20441 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20442
20443         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
20444         
20445         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
20446         icalls.
20447         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
20448
20449 2004-07-30  Martin Baulig  <martin@ximian.com>
20450
20451         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
20452         Reflect latest symbol writer changes.   
20453
20454 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20455
20456         * object.c: always create an object if null is passed
20457         to Invoke() where a valuetype is expected.
20458
20459 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20460
20461         * marshal.c (mono_marshal_init): make managed
20462         signatures match native ones better for 64bits.
20463
20464 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20465
20466         * appdomain.c: hack to build correctly the private bin path on windows.
20467         Fixes bug #61991.
20468
20469 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20470
20471         * assembly.c: Load mscorlib from the correct framework directory
20472           (mono/<version>/mscorlib.dll).
20473         * appdomain.h: Added prototypes for new functions.
20474         * internals.h: Added some prototypes.
20475         * domain.c: When initializing the runtime, get from the executable and
20476           the configuration files the runtime version that the app supports.
20477           Added support methods for reading app.exe.config. Added list of versions
20478           supported by the JIT. Added two new methods: mono_init_from_assembly,
20479           which initializes the runtime and determines the required version from
20480           the provided exe file, and mono_init_version, which initializes
20481           the runtime using the provided version.
20482         * icall.c: Get machine.config from version-specific directory.
20483         * reflection.c: When generating an image, embed the version number
20484           of the current runtime.
20485
20486 2004-07-28  Dick Porter  <dick@ximian.com>
20487
20488         * socket-io.c
20489         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
20490         returned sockaddr size before creating the remote address object.
20491         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
20492         61608.
20493
20494 2004-07-28  Dick Porter  <dick@ximian.com>
20495
20496         * locales.c (string_invariant_compare_char): Fix invariant char
20497         compares between upper and lower cases.  Fixes bug 61458.
20498
20499 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
20500         
20501         * marshal.c: actually cache stelem.ref wrappers.
20502         
20503 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20504
20505         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
20506         sections and remove the mono_cli_rva_map () function.
20507
20508 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20509
20510         * debug-mono-symfile.c: fix one more endianess issue, from a patch
20511         by Geoff Norton (<gnorton@customerdna.com>).
20512
20513 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20514
20515         * class.c: fix class loads for pointer types (typeof(int) !=
20516         typeof(int*)).
20517
20518 2004-07-27  Martin Baulig  <martin@ximian.com>
20519
20520         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
20521         reading the debugging information from an external ".mdb" file.
20522
20523 2004-07-24  Martin Baulig  <martin@ximian.com>
20524
20525         * reflection.c (mono_image_get_type_info): Only write a class
20526         layout entry if we actually have a size or a packing size.
20527
20528 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20529
20530         * reflection.c (type_get_fully_qualified_name): 
20531         insert cast to get type checking of ?: with non-gcc compilers
20532
20533 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20534
20535         * rand.c: use g_getenv for both lookups of
20536         MONO_EGD_SOCKET
20537
20538 2004-07-17  Martin Baulig  <martin@ximian.com>
20539
20540         * reflection.c (mono_reflection_bind_generic_method_parameters):
20541         Set `gmethod->reflection_info'.
20542
20543 2004-07-17  Martin Baulig  <martin@ximian.com>
20544
20545         * class.c (mono_class_create_from_typedef): Insert the newly
20546         created class into the hash table before computing the interfaces
20547         since we could be called recursively.
20548
20549 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20550
20551         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
20552         function to implement stelem.ref in managed code
20553         * class-internals.h, debug-helpers.c: a new wrapper type
20554         for the above.
20555
20556 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20557
20558         * gc.c: allow GC handles to work even when no GC is compiled in.
20559         Fix part of bug #61134 (GetAddrOfPinnedObject).
20560
20561 2004-07-13  Peter Williams  <peter@newton.cx>
20562  
20563         * process.c (complete_path): Make sure we don't attempt to execute
20564         directories.
20565  
20566 2004-07-12  Geoff Norton <gnorton@customerdna.com>
20567
20568         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
20569           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
20570           and will add/subtract the hour if needed
20571
20572 2004-07-12  Martin Baulig  <martin@ximian.com>
20573
20574         * reflection.c (mono_field_get_object): If we have
20575         `field->generic_info', take the attributes from
20576         `field->generic_info->generic_type'.    
20577
20578 2004-07-12  Martin Baulig  <martin@ximian.com>
20579
20580         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
20581         This function must be called before initializing the runtime.
20582         (mono_debug_init_1): New function; call this after initializing
20583         the runtime, but before loading the assembly.  It tells the
20584         debugger to load corlib and the builtin types.
20585
20586         * mono-debug-debugger.c: Did some larger changes in the debugging
20587         code; support recursive class declarations, make sure we actually
20588         add all classes.
20589
20590 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20591
20592         * debug-helpers.c: undo my previous patch and fixed the real issue in
20593         ../mini/exceptions-x86.c
20594
20595 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20596
20597         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
20598         when no HOME env. variable was set and a NullRef was thrown in a .cctor
20599         called from other .cctors.
20600
20601 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
20602
20603         * loader.c: Removed the mono_loader_wine_init hack now that we are
20604         doing a managed version of Windows.Forms.
20605
20606 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20607
20608         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
20609         threadpool.c, threads.c: remove static data from rootset.
20610
20611 2004-07-09  Dick Porter  <dick@ximian.com>
20612
20613         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
20614         Don't do any more processing if the matched length was 0.  It was
20615         increasing the size of the string before.  Fixes bug 61167.
20616
20617 2004-07-09  Dick Porter  <dick@ximian.com>
20618
20619         * socket-io.h:
20620         * socket-io.c
20621         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20622         Add support for SO_PEERCRED if its available.
20623
20624 2004-07-09  Peter Bartok <pbartok@novell.com>
20625         * loader.c: winelib.exe.so error message is now only displayed if
20626         MONO_DEBUG is set. To help us avoid questions when people are trying
20627         out the new Managed.Windows.Forms.
20628
20629 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20630
20631         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
20632         for isinst and castclass wrappers.
20633
20634         * class-internals.h icall.c: Move registration and lookup of JIT icalls
20635         to libmetadata from the JIT, so they could be used by the marshalling
20636         code and the interpreter.
20637
20638         * marshal.c: Register marshalling related JIT icalls here instead of
20639         in mini.c. Use CEE_MONO_ICALL instead of the family of 
20640         CEE_MONO_PROC<x> opcodes to call marshalling functions.
20641
20642         * metadata.h: Remove unneeded marshalling conversions.
20643
20644         * opcodes.c: Update for new opcodes.
20645         
20646 2004-07-08  Martin Baulig  <martin@ximian.com>
20647
20648         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
20649         (mono_debug_get_domain_data): Make this function static.
20650
20651 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20652
20653         * gc.c, object.h: add nice GC handle API for embedders.
20654
20655 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20656
20657         * reflection.c: more changes for the new api
20658
20659         * object.c: When we reflect on a field w/ a constant value, it
20660         will not have a memory location, so we must access metadata. Also,
20661         allow easier reading of strings so that we can read them from
20662         the constant data.
20663
20664         * class.c (mono_class_layout_fields): no need for literal fields here.
20665
20666         * class-internals.h: api changes for const fields
20667
20668         * icall.c (ves_icall_get_enum_info): use new apis for const fields
20669
20670 2004-07-06  Martin Baulig  <martin@ximian.com>
20671
20672         * mono-debug.h: Increment version number to 44.
20673
20674         * mono-debug.c (mono_debug_add_wrapper): The second argument is
20675         now a gpointer, rewrote this whole method.
20676
20677         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
20678         function.  Add information about the wrapper in a new "misc table".
20679
20680         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
20681         for the new misc table.
20682
20683 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20684
20685         * metadata-internals.h image.c: Add a cache for helper signatures.
20686
20687         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
20688
20689 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20690
20691         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
20692         delegates from a delegate. Fixes #61033.
20693         
20694         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
20695         marshalling of stringbuilder arrays. Fixes #59900.
20696
20697 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20698
20699         * icall.c: Add EnumBuilder:setup_enum_type icall.
20700
20701 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20702
20703         * icall.c: Added a new icall for the property version of
20704         OffsetOfStringData.
20705
20706 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20707
20708         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
20709         it has a constant size across platforms.
20710
20711         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
20712         stack trace.
20713
20714 2004-06-29  Martin Baulig  <martin@ximian.com>
20715
20716         * mono-debug.c (mono_debug_add_method): Protect the whole function
20717         in mono_debugger_lock(), not just parts of it.
20718
20719 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20720
20721         * reflection.c: make sure padding bytes in heaps are zeroed.
20722
20723 2004-06-24  David Waite  <mass@akuma.org>
20724
20725         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
20726         image.c, loader.c, locales.c, marshal.c, metadata.c,
20727         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
20728         string-icalls.c, threads.c: change to C90-style comments from C99 /
20729         C++ -style
20730
20731 2004-06-24  Dick Porter  <dick@ximian.com>
20732
20733         * threads.c
20734         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
20735         return createdNew.  Fixes bug 60412.
20736
20737         * threads-types.h: 
20738         * icall.c: Add createdNew parameter to CreateMutex icall
20739
20740 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20741
20742         * reflection.c, object-internals.h: save default value in params.
20743
20744 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20745
20746         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
20747         no need to build a new path combining that with the application base.
20748         Fixes bug #60442.
20749
20750 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20751
20752         * reflection.c: fixed minor standard compliance issues.
20753
20754 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20755
20756         * reflection.c: fixed issue with encoding some custom attributes
20757         (arrays in properties and fields, bug #60411).
20758
20759 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20760
20761         * reflection.c: fix start address when copying the public key token.
20762
20763 2004-06-23  Martin Baulig  <martin@ximian.com>
20764
20765         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
20766         the `exc' object in a static object to put it into the GC's root set.
20767
20768 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20769
20770         * reflection.c: make mono_reflection_setup_internal_class ()
20771         callable a second time to setup a new parent class.
20772
20773 2004-06-23  Dick Porter  <dick@ximian.com>
20774
20775         * threads.c: Check for WAIT_IO_COMPLETION return values.
20776
20777 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
20778
20779         * appdomain.c: Removed the g_free on the public key token. Now copy 
20780         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
20781         * assembly.c: Added public key token string value when loading 
20782         assemblies. Fix bug #60439.
20783         * icall.c: Added missing informations (like public key) in 
20784         GetReferencedAssemblies. Fix #60519.
20785         * image.h: Changed definition for public key token from const char*
20786         public_tok_value to guchar public_key_token [17];
20787         * reflection.c: Updated for changes to public key token.
20788
20789 2004-06-22  Lluis Sanchez Gual
20790
20791         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
20792         for the field in base classes.
20793
20794 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
20795
20796         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
20797         mark headers as not supported, they are installed only for use by the
20798         debugger.
20799
20800 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
20801
20802         * *.c, *.h: avoid namespace pollution in public headers.
20803
20804 2004-06-21  Martin Baulig  <martin@ximian.com>
20805
20806         * exception.c (mono_get_exception_security): It's in
20807         "System.Security", not in "System".
20808
20809         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
20810         the exception classes.
20811
20812 2004-06-21  Martin Baulig  <martin@ximian.com>
20813
20814         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
20815         Protect the exception object from being finalized.
20816
20817 2004-06-21  Martin Baulig  <martin@ximian.com>
20818
20819         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
20820         public function.
20821
20822 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
20823
20824         * reflection.c: Load the assembly in mono_reflection_type_from_name,
20825         if it was not loaded before. Fix parts of #60439.
20826
20827 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
20828
20829         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
20830         code that was broken since Ben's change: wrappers are now
20831         dependent on the method signature only again.
20832
20833 2004-06-21  Martin Baulig  <martin@ximian.com>
20834
20835         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
20836         added interface support.
20837
20838 2004-06-21  Martin Baulig  <martin@ximian.com>
20839
20840         * class.c (mono_vtable_get_static_field_data): New public method.
20841
20842 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
20843
20844         * filewatcher.c : Windows build fix to be compliant with API changes.
20845
20846 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20847
20848         * class.h, class.c: more accessors.
20849         * metadata.h, metadata.c: prepare for hiding MonoType and
20850         MonoMethodSignature: people should use the accessors from now on
20851         outside of the tree.
20852
20853 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20854
20855         * *.c, *.h: more API cleanups.
20856
20857 2004-06-18  Jackson Harper  <jackson@ximian.com>
20858
20859         * assembly.c: Trace loading assemblies.
20860         * loader.c: Trace loading native libraries.
20861         * mono-config.c: Trace loading config files.
20862         
20863 2004-06-18  Dick Porter  <dick@ximian.com>
20864
20865         * locales.c: Tell ICU the lengths of strings, it can cope with
20866         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
20867
20868 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20869
20870         * image.c: swapped name/filename;
20871
20872 2004-06-18  Martin Baulig  <martin@ximian.com>
20873
20874         * mono-debug-debugger.c (write_class): Write the parent class at
20875         the end of the header.
20876
20877 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20878
20879         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
20880
20881 2004-06-17  Raja R Harinath  <rharinath@novell.com>
20882
20883         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
20884         (bundle_obj): New conditional define.
20885         (BUILT_SOURCES): Remove.
20886         ($(bundle_srcs)): Make parallel-make safe.
20887         (libmonoruntime_la_LIBADD): Make unconditional.
20888         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
20889         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
20890
20891 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
20892
20893         * culture-info-tables.h: It was inconsistent with the latest
20894           supp info files.
20895
20896 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
20897
20898         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
20899         be loaded.
20900
20901         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
20902         with gcc 2.95.
20903
20904 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20905
20906         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
20907         cleaned up public header threads.h.
20908
20909 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20910
20911         * Makefile.am, *.c, *.h: more API cleanups.
20912
20913 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20914
20915         * Makefile.am: removed monosn from compilation.
20916         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
20917         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
20918         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
20919         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
20920         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
20921         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
20922
20923 2004-06-15  Jackson Harper  <jackson@ximian.com>
20924
20925         * assembly.c: Make locales lower case when searching the GAC for
20926         assemblies. gacutil will always make locales lowercase when
20927         installing so this effectively makes them case insensitive.
20928         
20929 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
20930
20931         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
20932         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
20933           parameter which allows to choose whether the wait can be interrupted or 
20934           not. Also added the method mono_monitor_enter(), which locks the monitor
20935           using an infinite wait and without allowing interruption.
20936           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
20937           interrupted.
20938         * object.h: Added new fields in MonoThread. suspend_event holds the event
20939           used to susped/resume the thread. synch_lock is the lock object to use for
20940           modifying the thread state.
20941         * threads.c: Use the new synch_lock object for locking, instead of "this",
20942           which can generate deadlocks.
20943           Moved thread state change in Thread.Sleep and Thread.Join from managed
20944           to unmanaged code. This avoids a deadlock when the thread was suspended
20945           just after acquiring the thread lock.
20946           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
20947           Implemented Thread.Suspend using an event instead of ThreadSuspend,
20948           which is not fully implemented in the io-layer.
20949         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
20950
20951 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
20952
20953         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
20954         threads-types.h: more API cleanups.
20955
20956 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20957
20958         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
20959         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
20960         threadpool.c, threads.c: first pass at the exported API cleanup.
20961
20962 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20963
20964         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
20965
20966 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20967
20968         * icall.c: added internalGetHome.
20969
20970 2004-06-14  Dick Porter  <dick@ximian.com>
20971
20972         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
20973         possible to return successfully when '.' or '..' were the only
20974         entries in a directory, but were skipped.  The MonoIOStat was not
20975         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
20976         Fixes bug 59574.
20977
20978 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20979
20980         * reflection.c: make binaries run on .Net 1.1 by default.
20981
20982 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20983
20984         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
20985
20986 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
20987
20988         * marshal.c: keep track of struct size with explicit layout
20989         (bug #59979).
20990
20991 2004-06-12  Martin Baulig  <martin@ximian.com>
20992
20993         * mono-debug-debugger.c: Comment out a debugging g_message().
20994
20995 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
20996
20997         * reflection.c, reflection.h: do not free custom attrs that are cached.
20998         * icall.c: use braces to make code clearer.
20999
21000 2004-06-11  Martin Baulig  <martin@ximian.com>
21001
21002         * class.h (MonoInflatedField): New type.
21003         (MonoClassField): Replaced `MonoType *generic_type' with
21004         `MonoInflatedField *generic_info'.
21005
21006         * icall.c
21007         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21008
21009 2004-06-11  Martin Baulig  <martin@ximian.com>
21010
21011         * reflection.c (mono_image_create_method_token): Correctly encode
21012         varargs methods.
21013
21014 2004-06-11  Martin Baulig  <martin@ximian.com>
21015
21016         * metadata.c (mono_metadata_parse_method_signature): When parsing
21017         a MethodDef which has VarArgs, also set sentinelpos if we don't
21018         have any parameters.
21019
21020 2004-06-11  Martin Baulig  <martin@ximian.com>
21021
21022         * verify.c (mono_method_verify): In CEE_CALL, use
21023         mono_method_get_signature() to get the method's signature, unless
21024         we're a PInvoke method.
21025
21026 2004-06-10  Jackson Harper  <jackson@ximian.com>
21027
21028         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21029         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21030         logical name as the supplied path is just a prefix to the gac not
21031         the direct path to it.
21032         
21033 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21034
21035         * reflection.c: make the token for a created method match
21036         the token of the MethodBuilder it was created from
21037         (IKVM requires this behaviour now).
21038
21039 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21040
21041         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21042         reflection.c, socket-io.c: leak fixes.
21043
21044 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21045
21046         * icall.c: handle sentinel pos in vararg methods in position different
21047         from 0.
21048
21049 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21050
21051         * culture-info-tables.h: freshly generated.
21052
21053 2004-06-09  Martin Baulig  <martin@ximian.com>
21054
21055         * loader.c (mono_get_method_constrained): Call `mono_class_init
21056         (constrained_class)'.   
21057
21058 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21059
21060         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21061         any methods. Fixes #59629.
21062
21063 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21064
21065         * culture-info-tables.h: reflecting locale-builder updates.
21066
21067 2004-06-08  Dick Porter  <dick@ximian.com>
21068
21069         * object.h:
21070         * locales.c: Fixed compile warnings, including a real bug in
21071         CompareInfo_internal_compare.
21072         
21073 2004-06-08  Dick Porter  <dick@ximian.com>
21074
21075         * locales.c
21076         (ves_icall_System_Globalization_CompareInfo_internal_index):
21077         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21078         Double-check the resuls of usearches, because ICU currently
21079         ignores most of the collator settings here.  Fixes bug 59720.
21080         
21081 2004-06-08  Dick Porter  <dick@ximian.com>
21082
21083         * locales.c
21084         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21085         Fix memory leak and segfault-causing typo.  No idea how this one
21086         lasted so long without being noticed.
21087
21088 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21089
21090         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21091         any methods. Fixes #59629.
21092
21093 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21094
21095         * assembly.c:
21096         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21097         own the critical section before). Removed dead code (that's done
21098         in the preload hook).
21099
21100         (mono_assembly_load_with_partial_name): call the preload hook.
21101
21102 2004-06-08  Martin Baulig  <martin@ximian.com>
21103
21104         * metadata.c (mono_metadata_signature_alloc): Default
21105         `sentinelpos' to -1.
21106
21107         * reflection.c (mono_image_get_array_token): Likewise.
21108
21109 2004-06-08  Martin Baulig  <martin@ximian.com>
21110
21111         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21112
21113         * metadata.c (mono_metadata_parse_method_signature): When parsing
21114         a MethodDef which has VarArgs, set sentinelpos.
21115
21116         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21117         `gint16' since we're using -1 for non-varargs methods.
21118
21119         * reflection.c
21120         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21121         (method_encode_signature): Added varargs support.
21122         (method_builder_encode_signature): Likewise.
21123         (mono_image_get_varargs_method_token): New static method.
21124         (mono_image_create_method_token): New public method; this is
21125         called via an icall instead of mono_image_create_token() when
21126         calling a varargs method.       
21127
21128 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21129
21130         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21131
21132 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21133
21134         * culture-info-tables.h : Reflecting the latest locale-builder that
21135           fixed empty array representation ({} to {0}).
21136
21137 2004-06-07  Jackson Harper  <jackson@ximian.com>
21138
21139         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21140         looking up extra gac paths. This allows MONO_GAC_PATH to act
21141         exactly like a prefix.
21142         
21143 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21144
21145         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21146         type name before modifying it. Fixes #59405.
21147
21148 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21149
21150         * culture-info.h: added fields for "all datetime patterns".
21151         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21152           _construct_datetime_format ()): fill xxx_patterns fields.
21153         * object.h: added fields for "all datetime patterns" to
21154           MonoDateTimeFormatInfo.
21155         * culture-info-tables.h: reflecting locale-builder updates.
21156
21157 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21158
21159         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21160         the event has no add and remove methods. Fixes #59629.
21161
21162 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21163
21164         * object.c: Fixed possible integer overflow when allocating large
21165         strings.
21166
21167 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21168
21169         * culture-info-tables.h: reflecting locale-builder updates.
21170
21171 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21172
21173         * culture-info-tables.h: reflecting locale-builder updates.
21174
21175 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21176
21177         * culture-info-tables.h: reflecting locale-builder updates.
21178
21179 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21180
21181         * threads.c: Made Thread.Sleep abortable.
21182
21183 2004-06-02  Martin Baulig  <martin@ximian.com>
21184
21185         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21186
21187         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21188
21189 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21190
21191         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21192
21193 2004-05-30  Jackson Harper  <jackson@ximian.com>
21194
21195         * reflection.c: Do not hardcode assembly versions or public key
21196         tokens anymore. All of this except the corlib section was dead
21197         code anyways.
21198         
21199 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21200
21201         * object.c (mono_runtime_invoke_array): Automatically create boxed
21202         objects for byref valuetypes if needed. Fixes #59300.
21203         
21204         * object.c (mono_method_return_message_restore): Handle 
21205         MONO_TYPE_OBJECT as well.
21206
21207 2004-05-28  Jackson Harper  <jackson@ximian.com>
21208
21209         * reflection.c: The modified type encoding was causing build
21210         problems. Reverted for now.
21211         
21212 2004-05-28  Jackson Harper  <jackson@ximian.com>
21213
21214         * reflection.c/h: Take an assembly ref so that we dont create
21215         fully qualified names when encoding types in the same assembly as
21216         the custom attribute being emitted.
21217         * appdomain.c: Increment version number.
21218         
21219 2004-05-26  Duncan Mak  <duncan@ximian.com>
21220
21221         * icall.c
21222         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21223         Set the full version number (major, minor, build, revision).
21224
21225 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21226
21227         * marshal.c (emit_struct_conv): increment src/dst after blit
21228         (mono_marshal_get_managed_wrapper,
21229         mono_marshal_get_native_wrapper): make sure we have marshalling
21230         info before marshalling params (info computation affects
21231         blittable)
21232
21233         * class.c (class_compute_field_layout): correctly deal with
21234         blittable
21235         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21236         value types (as per what windows dows by default)
21237         (mono_class_setup_mono_type): System.ValueType is blittable
21238         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21239         blittable
21240
21241         * marshal.c (mono_marshal_load_type_info): flag types  as
21242         non-blittable if the native layout doesn't match the managed
21243         layout
21244
21245 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21246
21247         * appdomain.c: don't add stuff in the private search path that is
21248         above the application base. If application base is not set, there's
21249         no private search path.
21250
21251 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21252
21253         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21254         byref struct arguments in native->managed marshalling.
21255
21256 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21257
21258         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21259         cache methods using signature (special case for methods
21260         that are value type or string class)
21261         
21262         * image.c (mono_image_close): clean up allocated GSList's
21263         in runtime_invoke_cache.
21264
21265 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21266
21267         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21268         there's no MONO_CFG_DIR environment variable defined.
21269
21270 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21271
21272         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21273
21274 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21275
21276         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21277           is interrumped.
21278         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21279           before waiting for it, and call CloseHandle after the wait to unref it.
21280           This will make sure that handles are not disposed too early.
21281
21282 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21283
21284         * appdomain.c:
21285         * appdomain.h:
21286         * icall.c: removed
21287         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21288         needed now.
21289
21290         * object.c: se the application_base only for the domain that runs
21291         Main. Fixes bug #59216,
21292
21293 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21294
21295         * appdomain.c:
21296         * object.c: only the domain in which Main is run have
21297         SetupInformation.ConfigurationFile set, so moved a few lines from
21298         appdomain.c to object.c.
21299
21300 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21301
21302         * appdomain.c: we tried to load [name].(dll|exe), but according
21303         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21304         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21305         There's a test case attached to bug #58922.
21306
21307 2004-05-27  Dick Porter  <dick@ximian.com>
21308
21309         * icall.c:
21310         * file-io.c: Implemented icalls for locking and unlocking regions
21311         in a file.
21312         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21313         FALSE on error (fixes both compiler warning and real bug.)
21314
21315 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
21316
21317         * culture-info-tables.h: reflecting locale-builder updates.
21318
21319           (Added missing ChangeLog entry for 05/26)
21320
21321 2004-05-27  Jackson Harper  <jackson@ximian.com>
21322
21323         * locales.c: Fix some cut and paste errors.
21324         
21325 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21326
21327         * mono-config.c: set the correct path for config. directory on windows.
21328
21329 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21330
21331         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
21332           on win32.
21333
21334 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21335
21336         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
21337         from pinvoke functions.
21338         
21339         * marshal.c (mono_ftnptr_to_delegate): Implement this.
21340
21341 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21342
21343         * culture-info-tables.h: reflecting locale-builder updates.
21344
21345 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21346
21347         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
21348         #59086.
21349
21350 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
21351
21352         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
21353         * icall.c: Modified icalls for RNG.
21354         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
21355         Windows (CryptoAPI).
21356
21357 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21358
21359         * locales.c: Fix build.
21360
21361 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
21362
21363         * culture-info-tables.h: reflecting locale-builder updates.
21364
21365 2004-05-25  Jackson Harper  <jackson@ximian.com>
21366
21367         * locales.c: When creating the current culture use the $LANGs
21368         specific culture. So DateTimeFormat and NumberFormat entries are created.
21369         
21370 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21371
21372         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
21373         a char array as parameter.
21374
21375 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
21376
21377         * image.c: In mono_image_open(), always use an absolute path name to
21378           look for already loaded images.
21379
21380 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
21381
21382         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
21383         missing in the windows build (like older cygwin include files).
21384
21385 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
21386
21387         * icall.c: Fixed check for possible integer overflow in Buffer_
21388         BlockCopy icall. Replaced comments style // by /* */.
21389
21390 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21391
21392         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
21393         
21394         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
21395         check after MONO_VTADDR. Fixes pinvoke2.exe.
21396
21397         * marshal.h marshal.c metadata.h: Add beginnings of support for
21398         ftnptr -> delegate marshalling.
21399
21400 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21401
21402         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
21403         * threads.c: Fix warnings.
21404
21405 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21406
21407         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
21408         * icall.c: Registered icalls for Suspend and Resume.
21409         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
21410           Thread.Abort.
21411         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
21412         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
21413         * process.c: Use WaitForSingleObjectEx.
21414         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
21415           checkpoints.
21416         * threads.c, threads.h: Make use of new Ex wait methods. Improved
21417           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
21418           for Suspend and Resume. Added new mono_thread_stop, used for stoping
21419           background threads. Added basic support for Abort in Windows.
21420           Start new threads using a managed delegate invoke wrapper. This wrapper
21421           has an interruption checkpoint that is needed since an interruption
21422           can be requested before the thread leaves the unmanaged code that starts 
21423           the thread.
21424         * marshal.c: Added interruption checkpoint after every native call, and
21425           also before managed calls for wrappers called from unmanaged code to
21426           go into managed code.
21427         * object.h: Added new field in MonoThread to keep track of interruption
21428           requests.
21429
21430 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21431
21432         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
21433         calls.
21434
21435 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21436
21437         * appdomain.c:
21438         * assembly.c:
21439         * gc.c:
21440         * locales.c:
21441         * mono-config.c:
21442         * rand.c: getenv -> g_getenv (windows!)
21443
21444         * process.c: complete_path is also used on non-windows platforms.
21445
21446 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21447
21448         * icall.c: new signature for Process_Start.
21449
21450         * process.[ch]: new signature for Process_Start. If we're on windows
21451         and UseShellExecute is false, we have to search for the program by
21452         ourselves if we don't get a full path.
21453
21454 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21455
21456         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
21457         marshalling and call CleanUpNativeData if needed. Fixes #58646.
21458
21459 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21460
21461         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
21462         Fixes bug #58373.
21463
21464 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21465
21466         * process.c: use double quotes to quote program name and arguments on
21467         windows. Fixes bug #58575.
21468
21469 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21470
21471         * file-io.c: don't return "." and ".." when using windows Find*File.
21472
21473 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
21474
21475         * marshal.c: Don't pass wrappers to message init because method 
21476         addressed used to lookup metadata. part of remoting[2|3] fix.
21477
21478 2004-05-15  Jackson Harper  <jackson@ximian.com>
21479
21480         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
21481         path is essentially the same as MONO_PATH except that it points to
21482         GACs instead of lib directories.
21483         * loader.h: The user gac is gone so we dont need function to
21484         enable/disable it.
21485         * mono-config.c: user gac option is now gone.
21486         
21487 2004-05-15  Jackson Harper  <jackson@ximian.com>
21488
21489         * culture-info.h: Make defines more consistent, add calendar data
21490         to the culture info table.
21491         * culture-info-tables.h: Add basic calendar data. Basically
21492         everyone gets default gregorian until all the data is
21493         updated.
21494         * locales.c: Use the new consistent defines. Set calendar data for
21495         culture info objects.
21496         * object.h: add a field for calendar data to CultureInfo
21497         
21498 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21499
21500         * image.c: image->runtime_invoke_cache is keyed on signatures now.
21501         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
21502         a signature.
21503         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
21504         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
21505         an extra param that is the pointer of the method to invoke. The IL for
21506         the invoke method is no longer specific to the method, but to the
21507         signature of the method. Thus, we can share the same code for multiple
21508         methods. This reduces the number of methods that have to be compiled.
21509
21510 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21511
21512         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
21513
21514         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21515
21516         * icall.c: Optimize Buffer.BlockCopy.
21517
21518 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21519
21520         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
21521         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
21522         quote). Changed them to "MMMM yyyy".
21523
21524 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
21525
21526         * rand.c
21527         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
21528
21529 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
21530
21531         * reflection.h: Updated after changes to managed structures.
21532
21533         * appdomain.c: Bump corlib version.
21534
21535 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21536
21537         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
21538         windows.
21539
21540 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21541
21542         * Makefile.am: link to ../os/libmonoos.la on windows.
21543
21544         * assembly.c:
21545                 -If MONO_DEBUG, warn about non-existing directories in
21546                 MONO_PATH.
21547                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
21548                 compile time variable.
21549                 -Removed init_default_path and call mono_set_rootdir from
21550                 libmonoos.a instead (windows only).
21551
21552         * assembly.h: declare mono_assembly_getrootdir().
21553
21554         * domain.c:
21555         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
21556
21557         * loader.c: s/getenv/g_getenv/
21558
21559 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21560
21561         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
21562
21563         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
21564
21565         * metadata.h: Add new marshalling conversions.
21566
21567         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
21568         function.
21569
21570         * reflection.c (mono_reflection_get_type): Lookup the type in all
21571         modules of a multi-module assembly. Fixes #58291.
21572
21573 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21574
21575         * threads.c: Before aborting a background, set the StopRequested
21576         state.  This avoids throwing the Abort exception.
21577         In mono_thread_manage, don't continue with the shutdown until all
21578         aborted threads have actually stopped.
21579
21580 2004-05-10  Jackson Harper  <jackson@ximian.com>
21581
21582         * locales.c: Remove the modifier from culture names.
21583         
21584 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21585
21586         * Makefile.am: monosn is not installed any more. It has been deprecated
21587         in favor of sn.
21588
21589 2004-05-07  Jackson Harper  <jackson@ximian.com>
21590
21591         * locales.c
21592         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
21593         Fix array construction, add bailout if the length is 0.
21594
21595 2004-05-07  Dick Porter  <dick@ximian.com>
21596
21597         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
21598         machine doesn't have a DNS entry.  Patch by Urs Muff
21599         (umuff@quark.com), fixes bug 57928.
21600
21601 2004-05-06  Jackson Harper  <jackson@ximian.com>
21602
21603         * reflection.c: Handle null PublicTokens properly. alloc mem for
21604         assembly names culture so we dont crash when freeing it.
21605         
21606 2004-05-06  Jackson Harper  <jackson@ximian.com>
21607
21608         * assembly.c: Check the usergac when loading with partial names.
21609         
21610 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21611
21612         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
21613         does nothing for now (not required for Linux/Windows) but the class
21614         library can call it (and a newer or modified runtime could need it).
21615         * icall.c: Registred icall.
21616
21617 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21618
21619         * loader.c: prints a message on module loading error we set MONO_DEBUG
21620         environment variable.
21621
21622 2004-05-05  Jackson Harper  <jackson@ximian.com>
21623
21624         * appdomain.c: Handle PublicKeyToken=null properly.
21625         
21626 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21627
21628         * environment.c|h: Added icall ves_icall_System_Environment_
21629         GetOSVersionString to get the current OS version as a string.
21630         * icall.c: Registred icall.
21631
21632 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
21633
21634         * object.c: in mono_object_get_virtual_method(), take into account that
21635         non-virtual methods don't have a slot in the vtable. Check needed when
21636         the object is a proxy.
21637
21638 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21639
21640         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
21641         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
21642
21643         * object.c (mono_class_compute_gc_descriptor): Fix warning.
21644
21645         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
21646         passed when a valuetype is expected.
21647
21648         * object.c (mono_unhandled_exception): Only set the exit code if the
21649         exception happens in the main thread. Fixes thread5.exe.
21650
21651         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
21652         invalid names. Fixes #58047.
21653
21654 2004-05-03  Jackson Harper  <jackson@ximian.com>
21655
21656         * assembly.c: This line was committed accidently and is unneeded.
21657         
21658 2004-05-03  Jackson Harper  <jackson@ximian.com>
21659
21660         * icall.c: Add new icall for Assembly::LoadWithPartialName
21661         * assembly.c/.h: new function that probes the GAC to load partial
21662         assembly names by Paolo Molaro.
21663         
21664 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21665
21666         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
21667         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
21668         (type_get_fully_qualified_name): Added PublicKeyToken when building a
21669         full type name.
21670
21671 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21672
21673         * appdomain.c: fixed check for 'neutral' culture and removed warning.
21674         * reflection.c: fix bug when parsing a full type name and Version is not
21675         the last thing in the string.
21676
21677 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
21678
21679         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
21680         crashes when it is freed.
21681
21682 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21683
21684         * assembly.c: print the compat warning to stderr.
21685
21686 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
21687
21688         * assembly.c (mono_assembly_load_references): Add a compatibility
21689         hack to run old applications that might be still referencing the
21690         3300-based assemblies, only do this for System.xxx.
21691
21692 2004-05-01  Jackson Harper  <jackson@ximian.com>
21693
21694         * appdomain.c: If the culture is neutral we set it to "".
21695         
21696 2004-04-29  Jackson Harper  <jackson@ximian.com>
21697
21698         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
21699
21700 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
21701  
21702         * string-icalls.c: added low overhead function for copying chars
21703         * icall.c: added needed icall for the above function
21704  
21705 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21706
21707         * icall.c: fix return value of get_global_assembly_cache.  Implemented
21708         Environment.GetLogicalDrives.
21709
21710 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
21711
21712         * rand.c: try and talk to egd or prngd
21713         for random bytes if opening devices fail.
21714
21715 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21716
21717         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
21718         alignment for the type using the native alignment of its members 
21719         instead of using klass->min_align.
21720
21721         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
21722
21723 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21724
21725         * file-io.c:
21726         * socket-io.c: added check for sys/aio.h.
21727
21728 2004-04-28  Dick Porter  <dick@ximian.com>
21729
21730         * threads.c: Don't abort a thread thats already aborting, when
21731         terminating everything.
21732
21733 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21734
21735         * icall.c: added 2 new async calls for Socket.
21736
21737         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
21738         IO on *nix systems.
21739
21740         * threadpool.c: removed unused variable.
21741
21742 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
21743
21744         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
21745
21746 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21747
21748         * locales.c: put back string_invariant_tolower () and
21749         string_invariant_toupper ().
21750
21751 2004-04-26 David Waite <mass@akuma.org>
21752
21753         * file-io.h:
21754         * socket-io.h:
21755         * threads.h:
21756         * unicode.h: remove comma from end of enumeration declarations
21757
21758 2004-04-26 David Waite <mass@akuma.org>
21759
21760         * debug-mono-symfile.h:
21761         * decimal.c:
21762         * mono_debug.h:
21763         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
21764
21765
21766 2004-04-26  Jackson Harper  <jackson@ximian.com>
21767
21768         * appdomain.c: Increment version number.
21769         
21770 2004-04-26  Jackson Harper  <jackson@ximian.com>
21771
21772         * appdomain.c: Set assembly references public token value when
21773         PublicKeyToken is specified, not the hash_value. Free public token
21774         values when free assembly name data. Previously the public key
21775         token was hex decoded, however we are using hex encoded public key
21776         tokens, so this is not neccasary.
21777         * assembly.c: Lookup assemblies in the gac if their public token
21778         value is set. Add function to allow enabling user gac
21779         lookups. Specify whether or not the assembly was loaded from the
21780         GAC. Compare full assembly names when checking the cache for
21781         assemblies (Temporarily disabled see comment in code). Remove
21782         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
21783         specifies trace-loader they get extra info to stdout on the
21784         loading of assemblies.
21785         * image.h: Add a field for an assembly references public token
21786         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
21787         whether an assembly has been loaded from the GAC.
21788         * image.c: Remove a corlib -> mscorlib name mapping.
21789         * loader.h: Add function to enable/disable the user gac.
21790         * mono-config.c: Check if the usergac is enabled in the config
21791         file.
21792         * icall.c: New icall to determine whether or not an assembly has
21793         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
21794         * tabldefs.h: Add constant for assemblyref flag that specifies a
21795         full public key is used instead of a public token.
21796         * reflection.c: Remove mscorlib -> corlib mappings. Set
21797         PublicTokenValue instead of hash value. This value is a hex
21798         string so it does not need to be expanded.
21799
21800 2004-04-26  Martin Baulig  <martin@ximian.com>
21801
21802         * mono-debug-debugger.c (mono_debugger_initialize): Set
21803         `mono_debugger_initialized' before calling mono_debug_lock().
21804
21805 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
21806
21807         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
21808           InternalToUpper/InternalToLower.
21809         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
21810           removed invariant culture shortcut.  This is now done in managed code.
21811         * locales.c: (string_invariant_toupper/tolower) removed.
21812
21813 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21814
21815         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
21816         Added Poll internal call.
21817
21818         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
21819         call for Poll. Select was too heavy for polling a single socket.
21820
21821         * threadpool.[ch]: added mono_threadpool_cleanup.
21822         * threads.c: use it. Don't use Thread_Abort on windows.
21823
21824 2004-04-23  Martin Baulig  <martin@ximian.com>
21825
21826         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
21827
21828 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
21829
21830         * icall.c: Registred new icalls for key pair protection and added an
21831         icall for Environment.GetFolderPath on Windows.
21832         * security.c|h: Added new icalls for key pair protection.
21833
21834 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21835
21836         * socket-io.c: don't display the non-supported family warning for known
21837         families. Now this is not displayed on windows when checking support
21838         for IPv4/IPv6.
21839
21840 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21841
21842         * class.c: don't display the layout warning for static fields.
21843
21844 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
21845
21846         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
21847         * locales.c, locales.h: Added new icalls for culture-specific
21848         Char.ToLower and Char.ToUpper.
21849
21850 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21851
21852         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
21853         by David Waite.
21854
21855 2004-04-20  Martin Baulig  <martin@ximian.com>
21856
21857         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
21858         of the type name before passing it to mono_reflection_type_from_name().
21859
21860 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21861
21862         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
21863         encodings here. Fixes #56965.
21864
21865 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
21866
21867         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
21868         fix test on strstr result not that I can see anything that
21869         relies on the result.
21870
21871 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21872
21873         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
21874         Fixes #57081.
21875
21876         * marshal.c (mono_marshal_get_string_encoding): New helper function.
21877
21878         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
21879         function to determine which marshalling to use for strings. Fixes
21880         #56965.
21881
21882         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
21883
21884         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
21885
21886 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
21887
21888         * icall.c: #include mono-config.h
21889
21890 2004-04-15  Jackson Harper  <jackson@ximian.com>
21891
21892         * culture-info-tables.h: Fix date formats for en-US culture.
21893         
21894 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
21895
21896         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
21897         ThreadPool.SetMinThreads.
21898         * threadpool.c: Implemented ThreadPool.GetMinThreads and
21899         ThreadPool.SetMinThreads.
21900
21901 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21902
21903         * mono-config.c: also load the .config file in the directory
21904         where the assembly was found.
21905
21906 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21907
21908         * assembly.c: load per-assembly config files.
21909         * icall.c: decrapified code to get the config dir and moved to
21910         mono-config.c.
21911         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
21912         per-assembly config files. When doing a dll map lookup give precedence
21913         to the per-assembly data.
21914
21915 2004-04-14  Martin Baulig  <martin@ximian.com>
21916
21917         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
21918         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
21919         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
21920
21921         * mono-debugger-debugger.c: While the debugger is locked, remember
21922         whether the symbol tables have changes and send one single
21923         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
21924
21925 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21926
21927         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
21928
21929         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
21930         function.
21931
21932         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
21933         account when marshalling string arrays. Fixes #56965.
21934
21935 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
21936
21937         * icall.c: Add new icalls mapping for security.
21938         * security.c|h: Add internal calls for WindowsIdentity,
21939         WindowsImpersonationContext and WindowsPrincipal.
21940
21941 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
21942
21943         * class.c: Added comment to ensure the System.MonoDummy class
21944         is removed when no longer necessary
21945
21946 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21947
21948         * appdomain.c: Pass arguments to the bootstraping exceptions to
21949         minimize JITed methods at boot
21950
21951         * metadata.c (mono_exception_from_name_two_strings): Allow for the
21952         second string to be null.
21953
21954         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
21955         Change the protocol to minimize the JIT methods at startup.  Now
21956         it Returns the internal codepage, if the value of "int_code_page"
21957         is 1 at entry, and we can not compute a suitable code page
21958         number, returns the code page as a string.
21959
21960 2004-04-13  Jackson Harper  <jackson@ximian.com>
21961
21962         * culture-info-tables.h: Fix number of decimal digits for all
21963         english locales.
21964
21965 2004-04-13  Jackson Harper  <jackson@ximian.com>
21966
21967         * icall.c: Clairfy out of sync error message. It is not always
21968         your corlib that is out of sync.
21969
21970 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
21971
21972         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
21973         properties when only the set accessor is overriden. Fixes #55874.
21974
21975 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
21976
21977         * assembly.c (mono_assembly_load_references): Make this thread safe.
21978         Fixes #56327.
21979
21980 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21981
21982         * monosn.c: Add missing initialization calls.
21983
21984 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
21985
21986         * locales.c:
21987         ves_icall_System_Globalization_CultureInfo_construct_number_format
21988         Fix g_assert so it compiles on fussier compilers re int/ptr
21989         mismatch
21990
21991 2004-04-08  Dick Porter  <dick@ximian.com>
21992
21993         * socket-io.h:
21994         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
21995         53992.  Also rearrange the code so that the internal calls return
21996         an error value and exceptions are thrown from managed code.
21997
21998         * icall.c: Add type info to the socket icalls.
21999
22000 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22001
22002         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22003         owes me a beer.
22004
22005 2004-04-07  Martin Baulig  <martin@ximian.com>
22006
22007         * class.c (mono_class_from_generic_parameter): Don't default
22008         `klass->parent' to `mono_defaults.object_type'.
22009
22010 2004-04-07  Martin Baulig  <martin@ximian.com>
22011
22012         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22013         `param->pklass->reflection_info'.       
22014
22015 2004-04-07  Jackson Harper  <jackson@ximian.com>
22016
22017         * culture-info-tables.h: Fix date separator symbol.
22018         
22019 2004-04-07  Martin Baulig  <martin@ximian.com>
22020
22021         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22022         from System.Type to System.MonoType.
22023
22024 2004-04-07  Martin Baulig  <martin@ximian.com>
22025
22026         * reflection.h
22027         (MonoReflectionGenericParam): Added `has_reference_type' and
22028         `has_value_type' fields.
22029
22030         * reflection.c (mono_image_get_generic_param_info): Encode the
22031         correct flags if we have the `class' or `struct' constraint.
22032
22033 2004-04-07  Martin Baulig  <martin@ximian.com>
22034
22035         * reflection.h
22036         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22037
22038 2004-04-07  Jackson Harper  <jackson@ximian.com>
22039
22040         * appdomain.c: Revert extra patches, just wanted to bump the
22041         version number.
22042         
22043 2004-04-07  Jackson Harper  <jackson@ximian.com>
22044
22045         * Makefile.am: Add culture-info private headers.
22046         * icall.c: Add new icalls for contructing locales.
22047         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22048         * locales.h: Declare new culture info construction methods.
22049         * object.h: Add new fields used to avoid the CultureMap to
22050         MonoCultureInfo.
22051         * culture-info.h: Definition of structs used in the culture info
22052         tables.
22053         * culture-info-tables.h: Autogenerated tables that contain culture
22054         info data. This file was generated with the locale-builder tool.
22055         * appdomain.c: Incement corlib version number.
22056         
22057 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22058
22059         * appdomain.c: (mono_runtime_init) move mono_thread_init
22060         to before mono_object_new calls so critical sections
22061         are initialized before use.
22062
22063 2004-04-07  Martin Baulig  <martin@ximian.com>
22064
22065         * icall.c
22066         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22067         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22068         (ves_icall_MonoGenericParam_initialize): Removed.
22069         (monogenericparam_icalls): Removed.
22070         (generictypeparambuilder_icalls): Added new table for
22071         System.Reflection.Emit.GenericTypeParameterBuilder.
22072
22073         * reflection.c
22074         (mono_reflection_define_generic_parameter): Removed.
22075         (mono_reflection_initialize_generic_parameter): This is now called
22076         from GenericTypeParameterBuilder's .ctor.
22077
22078 2004-04-06  Martin Baulig  <martin@ximian.com>
22079
22080         * class.c (mono_class_init): Don't inflate nested classes in a
22081         generic instance.
22082         (mono_type_get_name_recurse): Include the generic arguments for
22083         generic instances and generic type declarations.
22084         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22085         (_mono_class_get_instantiation_name): Removed.
22086         (mono_class_create_generic): Always use `gklass->name' as our name.
22087
22088         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22089
22090         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22091         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22092         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22093         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22094         closed generic methods here.
22095
22096         * reflection.c
22097         (mono_reflection_generic_inst_get_nested_types): Removed.
22098         (inflate_mono_method): Copy the generic parameters from the
22099         MonoMethodHeader into out MonoGenericMethod.
22100
22101 2004-04-06  Martin Baulig  <martin@ximian.com>
22102
22103         * row-indexes.h
22104         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22105
22106         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22107
22108         * reflection.c (build_compressed_metadata): If we have any entries
22109         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22110         set the header version to 1.1.
22111
22112 2004-04-06  Martin Baulig  <martin@ximian.com>
22113
22114         * class.c (mono_class_init): If we're a generic instance,
22115         initialize our nested classes, too.
22116         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22117         suffix. 
22118
22119 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22120
22121         * process.c: quote the argument passed to the shell on windows.
22122
22123 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22124
22125         * threads.c (mono_alloc_special_static_data): Allow this to be
22126         called during startup.
22127
22128 2004-04-02  Martin Baulig  <martin@ximian.com>
22129
22130         * icall.c
22131         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22132
22133 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22134
22135         * icall.c: Fix build.
22136
22137 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22138
22139         * Makefile.am: Added security.c|h.
22140         * icall.c: Added icall for get_UserName;
22141         * security.c: New file for security related icalls. Added function
22142         get_UserName for System.Environment (fix #56144).
22143         * security.h: New. Header file for security.c
22144
22145 2004-04-02  Dick Porter  <dick@ximian.com>
22146
22147         * icall.c: Deleted the icalls that were obsoleted some time ago
22148         by the ICU string code, and which were mixed into the icall
22149         rearranging.  Fixes bug 55969.
22150
22151         * string-icalls.h: 
22152         * string-icalls.c: Deleted the code that those icalls reference.
22153
22154 2004-04-01  Martin Baulig  <martin@ximian.com>
22155
22156         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22157
22158         * class.c (mono_class_from_generic_parameter): Don't set 
22159         TYPE_ATTRIBUTE_INTERFACE.
22160         (my_mono_class_from_generic_parameter): Likewise.
22161
22162 2004-04-01  Martin Baulig  <martin@ximian.com>
22163
22164         * loader.c (find_method): Added an optional `MonoClass *ic'
22165         argument to search in a specific interface.
22166         (mono_get_method_constrained): New public function.
22167
22168 2004-04-01  Martin Baulig  <martin@ximian.com>
22169
22170         * reflection.c (mono_image_get_generic_field_token): Use the
22171         `handleref' cache here.
22172
22173 2004-04-01  Martin Baulig  <martin@ximian.com>
22174
22175         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22176
22177         * reflection.c (create_generic_typespec): Use the `typespec' hash
22178         here, not the `typeref' one.    
22179
22180 2004-04-01  Martin Baulig  <martin@ximian.com>
22181
22182         * class.c (mono_class_inflate_generic_type): Moved the
22183         functionality into a new static inflate_generic_type() which
22184         returns NULL if it didn't do anything.  Only increment the
22185         `mono_stats.inflated_type_count' if we actually inflated
22186         something.
22187         (mono_class_get_full): Check the classes type to see whether we
22188         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22189
22190 2004-04-01  Jackson Harper  <jackson@ximian.com>
22191
22192         * reflection.c: Set culture for assembly references.
22193         
22194 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22195
22196         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22197
22198 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22199
22200         * assembly.c:
22201         (do_mono_assembly_open): the critical section also covers
22202         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22203
22204 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22205
22206         * threads.c:
22207         (mono_manage_threads): abort the background threads when finishing.
22208         Fixes bug #47232.
22209
22210 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22211
22212         * gc.c: only close the done_event handle if there was no timeout.
22213         C-ified comments.
22214
22215 2004-03-30  Martin Baulig  <martin@ximian.com>
22216
22217         * icall.c (icall_entries): It's called "System.Activator", not
22218         "System.Activation".    
22219
22220 2004-03-30  Martin Baulig  <martin@ximian.com>
22221
22222         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22223         (mono_class_create_from_typespec): Likewise.
22224
22225 2004-03-30  Martin Baulig  <martin@ximian.com>
22226
22227         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22228         `has_ctor_constraint' and `initialized'.
22229
22230 2004-03-30  Martin Baulig  <martin@ximian.com>
22231
22232         * reflection.c (encode_new_constraint): New static function to add
22233         the constructor constraint attribute to a type parameter.
22234         (encode_constraints): Call encode_new_constraint() if necessary.
22235
22236         * reflection.h
22237         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22238
22239         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22240         
22241 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22242
22243         * reflection.c, icall.c: add support for pinning variables. 
22244
22245 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22246
22247         * marshal.c (mono_marshal_get_managed_wrapper):
22248         init bool local with zero rather than null.
22249
22250 2004-03-29  Martin Baulig  <martin@ximian.com>
22251
22252         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22253         the "official" behavior here.
22254         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22255
22256 2004-03-29  Martin Baulig  <martin@ximian.com>
22257
22258         * icall.c: Reflect latest API changes.
22259
22260 2004-03-29  Martin Baulig  <martin@ximian.com>
22261
22262         * loader.c (mono_get_method_from_token): Also call
22263         mono_metadata_load_generic_params () for abstract and interface
22264         methods; replace the type arguments in the method signature with
22265         the ones which are loaded from the metadata.
22266
22267 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22268
22269         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22270         of the lock is not the current thread. MS.NET don't do it, in spite of
22271         what the documentation says. See bug #56157.
22272
22273 2004-03-28  Martin Baulig  <martin@ximian.com>
22274
22275         * class.c (mono_class_init): Don't call init_properties() and
22276         init_events() for generic instances; set `prop->parent' when
22277         inflating properties.
22278
22279         * reflection.c (mono_generic_inst_get_object): Call
22280         `mono_class_init (ginst->klass)'.
22281         (mono_type_get_object): Only create a MonoGenericInst if your
22282         generic type is a TypeBuilder.
22283         (do_mono_reflection_bind_generic_parameters): Only set
22284         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22285
22286 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22287
22288         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22289         Fixes #56091.
22290
22291 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22292
22293         * icall.c: added Kill_internal icall.
22294         * process.[ch]: added Kill_internal icall.
22295
22296 2004-03-25  Martin Baulig  <martin@ximian.com>
22297
22298         * class.h (MonoStats): Added `generic_instance_count',
22299         `inflated_method_count', `inflated_type_count' and
22300         `generics_metadata_size'.       
22301
22302 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22303
22304         * reflection.c: no warnings now.
22305
22306 2004-03-25  Martin Baulig  <martin@ximian.com>
22307
22308         * class.c (mono_class_get_full): New public function; does a
22309         mono_class_get(), but also takes a `MonoGenericContext *'.
22310
22311         * loader.c (mono_field_from_memberref): Renamed to
22312         `field_from_memberref', made static and added `MonoGenericContext *'
22313         argument.
22314         (mono_field_from_token): Added `MonoGenericInst *' argument.
22315         (method_from_memberef): Likewise.
22316         (mono_get_method_from_token): Likewise.
22317         (mono_get_method_full): New public function; does a
22318         mono_get_method(), but also takes a `MonoGenericContext *'.
22319
22320         * verify.c (mono_method_verify): Get the method's generic context
22321         and pass it to mono_field_from_token(), mono_get_method_full() and
22322         mono_class_get_full().
22323
22324 2004-03-25  Martin Baulig  <martin@ximian.com>
22325
22326         * class.c (mono_class_inflate_generic_type): Take a
22327         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
22328         `MonoGenericMethod *'.
22329
22330 2004-03-25  Martin Baulig  <martin@ximian.com>
22331
22332         * loader.h (MonoMethodInflated): Store the MonoGenericContext
22333         instead of the MonoGenericMethod here.
22334
22335 2004-03-25  Martin Baulig  <martin@ximian.com>
22336
22337         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
22338         each time we create a new MonoGenericInst, we also create a new
22339         context which points back to us.
22340
22341         * class.c (inflate_method): Use `ginst->context' instead of
22342         creating a new context.
22343
22344         * loader.c (method_from_memberref): Use
22345         `klass->generic_inst->context' instead of creating a new context.
22346
22347 2004-03-25  Martin Baulig  <martin@ximian.com>
22348
22349         * class.h (MonoGenericContext): New struct.
22350         (MonoGenericMethod): Removed `generic_inst'.
22351
22352         * class.c (mono_class_inflate_generic_method): Take a
22353         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
22354
22355 2004-03-25  Martin Baulig  <martin@ximian.com>
22356
22357         * loader.h (MonoMethodInflated): New typedef.
22358
22359         * metadata.h (MonoMethodSignature): Removed `gen_method', make
22360         `generic_param_count' consume just 30 bits, added `is_inflated'
22361         and `has_type_parameters' flags (one bit each).
22362
22363         * class.c (mono_class_inflate_generic_method): Create a
22364         MonoMethodInflated instead of a MonoMethodNormal and set
22365         `is_inflated' in the method signature.
22366
22367         * class.h (MonoGenericMethod): Removed `generic_method'.
22368
22369 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
22370
22371         * image.c: Make sure the name of a MonoImage is always an absolute path.
22372           This fixes bug #54415.
22373
22374 2004-03-24  Martin Baulig  <martin@ximian.com>
22375
22376         * class.c (mono_class_setup_vtable): If we're a generic instance,
22377         use our generic type's vtable size.
22378
22379 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22380
22381         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
22382         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
22383         problems.
22384
22385 2004-03-23  Martin Baulig  <martin@ximian.com>
22386
22387         * class.h (MonoDynamicGenericInst): Added `int count_events' and
22388         `MonoEvent *events'.
22389
22390         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
22391         (typebuilder_icalls): Added "get_event_info"; calls
22392         mono_reflection_event_builder_get_event_info(). 
22393
22394         * reflection.c (mono_reflection_generic_inst_initialize): Added
22395         `MonoArray *events'.
22396         (mono_reflection_event_builder_get_event_info): New function.
22397
22398 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
22399
22400         * object.h: add mono_type_initialization_init
22401
22402         * object.c (mono_runtime_class_init): 
22403         implement class constructor synchronization rules
22404         to cope with threading issues.  
22405         add mono_type_initialization_init
22406
22407         * appdomain.c (mono_runtime_init): call 
22408         mono_type_initialization_init
22409
22410         * class.h: removing initializing field from MonoVTable
22411
22412 2004-03-23  Martin Baulig  <martin@ximian.com>
22413
22414         * class.c (my_mono_class_from_generic_parameter): Use
22415         `param->name' if it's not NULL. 
22416
22417 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
22418
22419         * class.c: do not insert non-virtual methods in the vtable.
22420         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
22421         that means the method is non-virtual. This never would have
22422         happened before.
22423
22424 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22425
22426         * profiler.c: Added lock for accessing coverage_hash.
22427
22428 2004-03-22  Martin Baulig  <martin@ximian.com>
22429
22430         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
22431         `method->method->signature->generic_param_count != 0' to make it
22432         work for interface methods.
22433
22434 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22435
22436         * process.c: quote the string passed to the shell using g_shell_quote.
22437
22438 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22439
22440         * threads.c:
22441         (mono_threads_manage): don't remove the finalizer thread and self
22442         from the threads hash table so that mono_thread_manage can be called
22443         more than once.
22444
22445 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22446
22447         * process.c: quote the arguments when UseShellExecute is true. Fixes
22448         bug #55790.
22449
22450 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22451
22452         * threads.c: set mono_thread_detach as a cleanup routine for every
22453         thread. This way it's always executed upon thread termination, either
22454         aborted or finished normally. No more xsp hangs!
22455
22456 2004-03-17  Martin Baulig  <martin@ximian.com>
22457
22458         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
22459         `int count_nested' and a `MonoType **nested'.
22460
22461         * reflection.c (mono_reflection_bind_generic_parameters): Moved
22462         most of the functionality into a new static
22463         do_mono_reflection_bind_generic_parameters() and don't take a
22464         `MonoType *nested_in' argument any more.  Don't compute nested
22465         types here.
22466         (mono_reflection_generic_inst_get_nested_types): New public method
22467         to get nested types.
22468
22469         * class.c (mono_class_create_generic): Set `klass->nested_in' if
22470         we're a nested class.
22471
22472         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
22473         mono_reflection_generic_inst_get_nested_types() to compute the
22474         nested types.
22475
22476 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22477
22478         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
22479         descriptive error message under windows.
22480         
22481 2004-03-17  Martin Baulig  <martin@ximian.com>
22482
22483         * class.c (dup_type): Added `const MonoType *original' argument;
22484         copy the attrs from the original type.
22485
22486 2004-03-17  Martin Baulig  <martin@ximian.com>
22487
22488         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
22489         `m->generic_inst_cache' here.
22490
22491 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22492
22493         * exception.h exception.c: Add stack_overflow_exception.
22494
22495 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22496
22497         * threadpool.c:
22498         (overlapped_callback): call SetEvent *after* invoking the callback.
22499         No need to call CloseHandle.
22500
22501 2004-03-16  Martin Baulig  <martin@ximian.com>
22502
22503         * reflection.c (mono_image_get_fieldref_token): Take a
22504         `MonoReflectionField *' instead of a `MonoClassField *' and a
22505         `MonoClass *'; store the `MonoReflectionField *' in the hash.
22506
22507 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22508
22509         * appdomain.c: don't add the culture to the filename we're looking for
22510         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
22511
22512 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22513
22514         * locales.c: don't ignore symbols when doing case insensitive compares.
22515         Thanks Dick! Fixes bug #54046.
22516
22517         * threads.c: surround 'threads' usage with enter/leave in
22518         mono_thread_manage.
22519
22520 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22521
22522         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
22523         implicitly marshalled as [Out]. Fixes #55450.
22524
22525         (mono_marshal_get_runtime_invoke): Zero out the result if there is
22526         an exception.
22527
22528 2004-03-16  Martin Baulig  <martin@ximian.com>
22529
22530         * class.c (mono_class_from_generic_parameter): Use the actual
22531         parameter name. 
22532
22533 2004-03-16  Martin Baulig  <martin@ximian.com>
22534
22535         * reflection.c (type_get_signature_size): New static function.
22536         Compues the size of the type in a method signature.
22537         (method_get_signature_size): New static function; calls
22538         type_get_signature_size() to compute the actual size of the
22539         method's signature.
22540         (method_encode_signature): Use method_get_signature_size() to get
22541         the signature's size rather than using `nparams * 10'.
22542
22543 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22544
22545         * file-io.h: define here WapiOverlapped on windows. I don't want the
22546         regular OVERLAPPED one.
22547
22548         * file-io.c:
22549         * threadpool.c: somehow, BindIoCompletionCallback is not found.
22550         Disabling AIO on windows.
22551
22552 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22553
22554         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
22555         bug #55385.
22556
22557 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22558
22559         * appdomain.c: upgraded corlib version.
22560
22561         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
22562         and BeginWrite. Allow opening files for asynchrnous operations.
22563
22564         * file-io.h: new struct that maps FileStreamAsyncResult.
22565         * icall.c: added new icalls.
22566         * process.[ch]: support setting child process environment variables
22567         and use the SHELL or COMSPEC when UseShellExecute is true.
22568
22569         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
22570         callback for async. IO is here and also BindHandle.
22571
22572         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
22573         from here.
22574
22575 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22576
22577         * reflection.c (create_custom_attr): Allow len == 0.
22578
22579         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
22580         computation on big-endian machines.
22581
22582 2004-03-13  Martin Baulig  <martin@ximian.com>
22583
22584         * class.h (MonoGenericInst): Added `int count_ifaces'.
22585
22586         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
22587         `ginst->count_ifaces' instead `klass->interface_count' since we
22588         may get called before the vtable is created.
22589
22590         * loader.c (mono_method_get_param_names): If we're a generic
22591         instance, return and don't initialize the class.
22592
22593         * reflection.c (mono_reflection_setup_generic_class): Don't call
22594         ensure_runtime_vtable().
22595         (mono_reflection_bind_generic_parameters): Set
22596         `ginst->count_ifaces'.
22597
22598 2004-03-11  Jackson Harper <jackson@ximian.com>
22599
22600         * icall.c:
22601         * unicode.c:
22602         * unicode.h: Remove unused System.Char icalls.
22603         
22604 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
22605
22606         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
22607         code when we P/Invoke the first library in Windows.Forms, instead
22608         of when we first open the assembly.
22609
22610         * assembly.c: Drop the lookup from here.
22611
22612 2004-03-10  Martin Baulig  <martin@ximian.com>
22613
22614         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
22615         class for properties, fields and events.  Finally fixes #54945.
22616
22617 2004-03-10  Martin Baulig  <martin@ximian.com>
22618
22619         * metadata.c (mono_metadata_class_equal): New static function;
22620         checks whether two generic instances or two generic parameters are
22621         equal.
22622         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
22623         compare classes.        
22624
22625 2004-03-10  Martin Baulig  <martin@ximian.com>
22626
22627         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
22628
22629         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
22630         argument and write it into the `reflection_info' field.
22631
22632         * icall.c
22633         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
22634         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
22635
22636 2004-03-09  Jackson Harper  <jackson@ximian.com>
22637
22638         * char-conversions.h: use 8 bits for numeric data its all we need
22639         * icall.c: numeric data is only 8 bits now.
22640
22641 2004-03-09  Martin Baulig  <martin@ximian.com>
22642
22643         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
22644
22645         * class.c (init_properties, init_events): Initialize the new
22646         `parent' field.
22647
22648         * reflection.c (typebuilder_setup_properties): Likewise.
22649         (typebuilder_setup_events): Likewise.
22650
22651         * reflection.h (MonoEventInfo): Replaced `parent with
22652         `declaring_type' and `reflected_type'.
22653
22654         * icall.c (ves_icall_get_property_info): Distinguish between
22655         declaring and reflected type.
22656         (ves_icall_get_event_info): Likewise.
22657
22658 2004-03-09  Martin Baulig  <martin@ximian.com>
22659
22660         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
22661         (ves_icall_Type_GetField): Correctly set field->klass.
22662
22663 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22664
22665         * loader.h: Fix warning.
22666
22667 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
22668
22669         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
22670         library routine if present.  Notice that it will still continue
22671         executing even if its missing, for those working on the Gtk#
22672         edition of Windows.Forms.
22673
22674         * assembly.c (do_mono_assembly_open): If loading the
22675         System.Windows.Forms call mono_loader_wini_init.
22676
22677 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22678
22679         * class.h: Added MonoRemoteClass struct.
22680         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
22681         function for MonoStrings.
22682         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
22683         Added internal call for getting the proxy type.
22684         * marshal.c: Get the type of transparent proxies from its remote_class.
22685         Added methods that generate the IL for type checks and casts:
22686         mono_marshal_get_isinst, mono_marshal_get_castclass, 
22687         mono_marshal_get_proxy_cancast.
22688         * marshal.h: Declaration of the previous new methods.
22689         * object.c: Added new moethods for creating and updating MonoRemoteClass
22690         instances: mono_remote_class, mono_upgrade_remote_class, 
22691         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
22692         * verify.c: FIx transparent_proxy_fields layout.
22693         * appdomain.c: Bump corlib version.
22694
22695 2004-03-04  Jackson Harper  <jackson@ximian.com>
22696
22697         * icall.c: Add icall to access char conversion tables.
22698         * char-conversions.h: Character conversion tables.
22699         * Makefile.am: Add char-conversions.h private header file.
22700         
22701 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
22702
22703         * appdomain.c (unload_thread_main): Increase unloading timeout to
22704         10 sec as a temporary workaround for Nant problems.
22705
22706 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
22707
22708         * gc.c: Add checks for GC_enable and GC_disable.
22709
22710         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
22711         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
22712         (bug #54988).
22713         
22714 2004-02-27  Martin Baulig  <martin@ximian.com>
22715
22716         * reflection.c (mono_reflection_bind_generic_parameters): Take a
22717         `MonoReflectionType *' instead of a `MonoType *'.
22718
22719 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22720
22721         * gc.c (run_finalize): Avoid finalizing the object representing the
22722         finalizer thread.
22723         (finalizer_thread): Fix warning.
22724
22725 2004-02-25  Martin Baulig  <martin@ximian.com>
22726
22727         * class.c (_mono_class_get_instantiation_name): Added `int offset'
22728         argument for nested types.
22729         (mono_class_create_generic): Added support for nested generictypes.
22730
22731         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
22732         `GList *nested'.
22733
22734         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
22735
22736         * reflection.c (method_encode_signature): Increase the minimum
22737         value of `size' from 10 to 11.
22738         (mono_reflection_bind_generic_parameters): Take `int type_argc'
22739         and `MonoType **types' arguments instead of the `MonoArray
22740         *types'; added `MonoType *nested_in'.  Recursively instantiate
22741         nested classes. 
22742
22743 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22744
22745         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
22746         stack_overflow_ex members which are used by exception handling.
22747
22748         * appdomain.c (mono_runtime_init): Initialize the new members.
22749
22750         * gc.c (mono_gc_enable): New helper function.
22751         * gc.c (mono_gc_disable): New helper function.
22752
22753 2004-02-23  Martin Baulig  <martin@ximian.com>
22754
22755         * icall.c: I must have been really stupid - make it actually work
22756         this time ;-)
22757
22758 2004-02-23  Martin Baulig  <martin@ximian.com>
22759
22760         * loader.c (method_from_memberref): Only inflate the method if
22761         it's in another klass.
22762
22763 2004-02-23  Martin Baulig  <martin@ximian.com>
22764
22765         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
22766         (mono_class_init): If we're a generic instance and an interface,
22767         compute `class->interface_id'; also create `class->interfaces'
22768         here and inflate them.
22769
22770         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
22771         `ginst->is_open'.
22772         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
22773
22774         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
22775
22776 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
22777
22778         * reflection.c (method_encode_code): Improved the error message
22779         generated by the exception.
22780
22781 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22782
22783         * icall.c: Martin did not do what he said in the ChangeLog for
22784         2004-02-18, but put back the changes for properties and events.
22785         Commenting those changes out again and adding comment to bug #54518.
22786         
22787         * process.c: removed warning.
22788
22789 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * marshal.c (emit_struct_conv): Print an error message instead of
22792         asserting when a type does not have the StructLayout attribute.
22793
22794 2004-02-20  Martin Baulig  <martin@ximian.com>
22795
22796         * reflection.c (mono_type_get_object): Also use the cache for
22797         generic instances.
22798         (mono_reflection_bind_generic_parameters): Always compute
22799         `ginst->ifaces'.        
22800
22801 2004-02-20  Martin Baulig  <martin@ximian.com>
22802
22803         * class.h (MonoGenericMethod): Removed `klass'.
22804
22805         * class.c (mono_class_inflate_generic_method): Added `MonoClass
22806         *klass' argument.
22807
22808 2004-02-20  Martin Baulig  <martin@ximian.com>
22809
22810         * reflection.c (method_encode_methodspec): Actually use the
22811         uninflated signature for the memberref.
22812
22813 2004-02-20  Martin Baulig  <martin@ximian.com>
22814
22815         * class.h (MonoGenericMethod): Removed `declaring'.
22816
22817         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
22818         is NULL, compute it here.
22819
22820 2004-02-20  Martin Baulig  <martin@ximian.com>
22821
22822         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
22823
22824         * metadata.c (mono_metadata_generic_inst_hash): New method.
22825         (mono_metadata_generic_inst_equal): New method.
22826
22827         * reflection.c (mono_reflection_bind_generic_parameters): Use the
22828         `klass->image->generic_inst_cache' cache to avoid creating
22829         duplicate MonoGenericInst's.
22830
22831         * class.c (mono_class_inflate_generic_type): Use the cache.
22832
22833 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
22834
22835         * object.c: fixed gc descriptor calculation for embedded valuetypes.
22836
22837 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22838
22839         * icall.c: added Socket.WSAIoctl icall.
22840
22841         * socket-io.[ch]: implemented
22842         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
22843
22844 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
22845
22846         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
22847
22848 2004-02-18  Urs C Muff  <umuff@quark.com>
22849
22850         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
22851         this work on PPC and other big-endian architectures.
22852
22853         * debug-mono-symfile.h: Prepended the names of all the `guint32'
22854         fields with an underscore to make sure they're only accessed by
22855         the read32() macro.
22856
22857 2004-02-18  Martin Baulig  <martin@ximian.com>
22858
22859         * icall.c: Put the klass->refclass changes back for methods and
22860         fields, but not for properties and events.  We're currently not
22861         distinguishing between DeclaringType and ReflectedType for
22862         properties and events, that's what caused the regressions.
22863
22864 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22865
22866         * object.c:
22867         (mono_async_result_new): the handle can be NULL.
22868
22869         * threadpool.c: Use an event instead of a semaphore, don't initialize
22870         it until needed. This saves quite a few semaphores from being created
22871         when using the threadpool.
22872
22873 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
22874
22875         * object.c (mono_string_is_interned_lookup): Fix interning of long
22876         strings. Fixes #54473.
22877
22878         * domain.c (ldstr_equal): Optimize if the two strings are equal.
22879
22880         * icall.c: Revert the klass->refclass changes since they introduce
22881         regressions (bug #54518).
22882
22883 2004-02-18  Martin Baulig  <martin@ximian.com>
22884
22885         * class.c (mono_class_init): If we're a generic instance and don't
22886         come from a TypeBuilder, inflate our members here.
22887         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
22888         (mono_class_create_generic): New public method.
22889         (mono_class_initialize_generic): Removed.
22890         (get_instantiation_name): Renamed to
22891         _mono_class_get_instantiation_name() and made it public.
22892
22893 2004-02-18  Martin Baulig  <martin@ximian.com>
22894
22895         * class.c (mono_class_inflate_generic_type): Clear the new
22896         instance's `nginst->klass' when inflating a generic instance.
22897         (mono_class_is_subclass_of): Added (basic) support for generic
22898         instances.
22899
22900 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
22901
22902         * appdomain.h, domain.c: use a MonoCodeManager instead of a
22903         MonoMempool to hold compiled native code.
22904
22905 2004-02-17  Martin Baulig  <martin@ximian.com>
22906
22907         * class.h (MonoDynamicGenericInst): Added `count_properties' and
22908         `properties'.
22909
22910         * reflection.c (mono_reflection_generic_inst_initialize): Added
22911         `MonoArray *properties' argument.
22912
22913         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
22914
22915 2004-02-17  Martin Baulig  <martin@ximian.com>
22916
22917         * icall.c (ves_icall_Type_GetFields): Renamed to
22918         ves_icall_Type_GetFields_internal() and added a
22919         `MonoReflectionType *rtype' argument; pass it to
22920         mono_field_get_object() to set the field's "reflected" type.
22921         (ves_icall_Type_GetConstructors): Likewise.
22922         (ves_icall_Type_GetEvents): Likewise.
22923         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
22924         argument; pass it to mono_method_get_object() to set the method's
22925         "reflected" type.       
22926
22927 2004-02-17  Martin Baulig  <martin@ximian.com>
22928
22929         * class.h (MonoDynamicGenericInst): New type.
22930         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
22931
22932         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
22933         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
22934         (ves_icall_MonoGenericInst_GetFields): New interncall.
22935
22936         * class.c (mono_class_from_generic): Don't call
22937         mono_class_initialize_generic() if this is a dynamic instance;
22938         ie. it's being created from a TypeBuilder.
22939         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
22940         `class->byval_arg.type'.
22941
22942         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
22943         to `inflate_method' and made static.
22944         (mono_reflection_inflate_field): Removed.
22945         (mono_reflection_generic_inst_initialize): New public method.
22946
22947         * reflection.h (MonoReflectionGenericInst): Removed `methods',
22948         `ctors' and `fields'; added `initialized'.
22949
22950 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22951
22952         * debug-helpers.c (mono_method_full_name): Fix output for empty
22953         namespaces.
22954
22955 2004-02-12  Martin Baulig  <martin@ximian.com>
22956
22957         * class.h (MonoClassField): Added `MonoType *generic_type'.
22958
22959         * reflection.c (mono_image_get_fieldref_token): Added support for
22960         instantiated generic types.
22961         (field_encode_inflated_field): Removed.
22962         (mono_image_get_inflated_field_token): Removed.
22963         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
22964
22965         * reflection.h (MonoReflectionInflatedField): Removed.
22966
22967 2004-02-12  Martin Baulig  <martin@ximian.com>
22968
22969         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
22970         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
22971
22972         * reflection.c (mono_image_get_methodspec_token): Take a
22973         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
22974         (mono_image_create_token): Check whether we have a
22975         `method->signature->gen_method' and call
22976         mono_image_get_methodspec_token() if appropriate.
22977         (inflated_method_get_object): Removed.
22978         (mono_reflection_bind_generic_method_parameters): Return a
22979         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
22980         (mono_reflection_inflate_method_or_ctor): Likewise.
22981
22982         * reflection.h (MonoReflectionInflatedMethod): Removed.
22983
22984 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
22985
22986         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
22987         for custom valuetype marshalling.
22988
22989         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
22990
22991 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22992
22993         * icall.c: fixed WSAGetLastError_internal name.
22994
22995 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22996
22997         * threads.c (mono_thread_attach): Allow this to be called multiple
22998         times for a thread.
22999         
23000         * threads.c (build_wait_tids): Do not wait for ourselves.
23001
23002         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23003         appdomain list is empty.
23004
23005         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23006         memory returned by mono_string_builder_to_utf16, since it points into
23007         managed memory. Thanks to Bernie Solomon for noticing this.
23008
23009         * icall.c: Add AppDomainSetup icalls.
23010
23011         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23012
23013         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23014         types.
23015
23016         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23017         custom attributes to the method_aux struct. Also fix array indexes etc.
23018
23019         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23020         
23021 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23022
23023         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23024         (both static and runtime) and reduce startup time.
23025
23026 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23027
23028         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23029         AsAny marshalling conversion instead of crashing.
23030
23031         * marshal.c: Fix warnings.
23032
23033 2004-02-09  Martin Baulig  <martin@ximian.com>
23034
23035         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23036
23037         * reflection.h (MonoReflectionInflatedMethod): Removed the
23038         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23039
23040         * reflection.c (method_encode_methodspec): Removed the `method'
23041         argument; we get it from `gmethod->declaring'.
23042         (inflated_method_get_object): Removed the `declaring' argument.
23043
23044 2004-02-09  Martin Baulig  <martin@ximian.com>
23045
23046         * class.h (MonoGenericMethod): New type.
23047         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23048         `generic_method'.
23049
23050         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23051         a `MonoGenericMethod *gen_method' one.
23052
23053         * class.c (mono_class_inflate_generic_type): Take an additional
23054         `MonoGenericMethod * argument.  This is only non-NULL if we're
23055         inflating types for a generic method.   
23056         (mono_class_inflate_generic_signature): Renamed to
23057         inflate_generic_signature() and made static; take a
23058         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23059         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23060         instead of a `MonoGenericInst *' one.
23061         (mono_class_inflate_generic_method): Likewise.
23062
23063         * reflection.c (encode_generic_method_sig): Take a
23064         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23065         (method_encode_methodspec): Likewise.
23066         (inflated_method_get_object): Likewise. 
23067
23068         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23069         field with a `MonoGenericMethod *gmethod' one.  
23070
23071 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23072
23073         * class.h (mono_class_has_parent): add parens to expansion
23074         so you can ! this.
23075
23076 2004-02-08  Martin Baulig  <martin@ximian.com>
23077
23078         * image.h (MonoImage): Removed `generics_cache'.
23079
23080         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23081         instead of a `MonoType *' argument; removed the `inflate_methods'
23082         argument.  Don't inflate methods here.
23083
23084         * loader.c (find_method): If it's a generic instance, call
23085         mono_class_init() on the `sclass->generic_inst->generic_type'.
23086
23087         * metadata.c (mono_type_size): Make this work on uninitialized
23088         generic instances; call it on the `ginst->generic_type's class.
23089
23090         * reflection.c (mono_reflection_bind_generic_parameters): Call
23091         mono_class_from_generic() to create the `ginst->klass'.
23092
23093 2004-02-08  Martin Baulig  <martin@ximian.com>
23094
23095         * class.h (MonoClass): Changed type of `generic_inst' from
23096         `MonoType *' to `MonoGenericInst *'.
23097
23098 2004-02-08  Martin Baulig  <martin@ximian.com>
23099
23100         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23101         mono_type_get_object(), this is now creating a `MonoGenericInst'
23102         for MONO_TYPE_GENERICINST.
23103         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23104         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23105
23106         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23107         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23108         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23109         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23110         and reflected type.
23111
23112         * reflection.h (MonoReflectionInflatedMethod): Removed
23113         `declaring_type' and `reflected_type'.
23114
23115 2004-02-08  Martin Baulig  <martin@ximian.com>
23116
23117         * class.h (MonoGenericInst): Added `MonoType *parent' and
23118         `MonoType **ifaces'.
23119
23120         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23121         `parent' and `interfaces'.
23122
23123         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23124         `MonoType *' argument and return a `MonoType *'.
23125
23126         * icall.c
23127         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23128         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23129
23130 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23131
23132         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23133         valuetype marshalling.
23134
23135 2004-02-06  Martin Baulig  <martin@ximian.com>
23136
23137         * class.c
23138         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23139         (my_mono_class_from_generic_parameter): Likewise.
23140
23141 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23142
23143         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23144         contents of the symbol files lazily.
23145
23146         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23147
23148         * threads.h threads.c icall.c: New icalls for getting and setting the
23149         threads name.
23150
23151 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23152
23153         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23154         Raise an exception when the domain is not found.
23155
23156 2004-02-03  Martin Baulig  <martin@ximian.com>
23157
23158         * reflection.c (mono_image_get_methodspec_token): Use the
23159         uninflated signature; fixes gen-33.
23160
23161 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23162
23163         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23164         the finalizer code can use thread functionality.
23165
23166         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23167         the finalizer thread.
23168
23169         * threads.c: Make some functions more robust.
23170
23171         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23172
23173         * metadata.h: Add new marshalling conventions.
23174
23175         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23176         stringbuilder marshalling. Fixes #53700.
23177
23178         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23179
23180         * reflection.c (mono_image_get_type_info): Save declarative security
23181         info.
23182
23183         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23184         unmanaged fields as well.
23185
23186         * appdomain.c: Bump corlib version.
23187
23188 2004-02-01  Martin Baulig  <martin@ximian.com>
23189
23190         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23191         method type arguments.  
23192
23193 2004-01-30  Duncan Mak  <duncan@ximian.com>
23194
23195         * marshal.h: Add prototype for
23196         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23197         and
23198         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23199         fix the build.
23200
23201 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23202
23203         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23204         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23205
23206 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23207
23208         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23209         custom marshalling of valuetypes.
23210
23211         * marshal.c: Fix some warnings.
23212
23213 2004-01-29  Martin Baulig  <martin@ximian.com>
23214
23215         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23216         for generic method parameters.
23217
23218         * reflection.c (method_encode_methodspec): Write the uninflated
23219         signature into the methodspec table.
23220         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23221         is always the uninflated method.
23222         (reflection_methodbuilder_to_mono_method): Copy the generic
23223         parameters from the MethodBuilder into `header->gen_params'.
23224
23225 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23226
23227         * class.c (mono_class_from_generic_parameter): Fix warning.
23228
23229 2004-01-27  Martin Baulig  <martin@ximian.com>
23230
23231         * class.c (mono_class_from_generic_parameter): Don't create
23232         `klass->methods' here.  
23233
23234 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23235
23236         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23237         extension since it does not work with libraries named lib<FOO>.dll.so.
23238
23239 2004-01-25  Martin Baulig  <martin@ximian.com>
23240
23241         * class.c (mono_class_inflate_generic_type): Added support for
23242         MONO_TYPE_GENERICINST.
23243
23244         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23245         inflate methods on open constructed types.      
23246
23247 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23248
23249         * object.c: fire ProcessExit event in the root AppDomain after running
23250         Main. Fixes bug #53299.
23251
23252 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23253
23254         * socket-io.c: include the new socket-wrappers.h header.
23255         Use the wrappers instead of the unix socket functions to make the code
23256         more clear.
23257
23258 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23259
23260         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23261
23262         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23263         Fixes #22532.
23264
23265 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23266
23267         * reflection.c (mono_image_create_pefile): Handle the case when the
23268         entry point is not a MethodBuilder.
23269
23270         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23271         field to ReflectionMethod since it is not allways a builder.
23272
23273         * reflection.c (type_get_fully_qualified_name): New helper function to
23274         return the fully qualified name of a type.
23275
23276         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23277         type name for custom marshallers.
23278
23279         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23280
23281         * class.c (mono_class_setup_vtable): If a parent class already 
23282         implements an interface, use the implementing methods from that class.
23283         Fixes #53148.
23284
23285 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23286
23287         * threadpool.c: just return instead of ExitThread to allow for thread
23288         clean up earlier.
23289
23290 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23291
23292         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23293         when closing resource modules.
23294
23295         * reflection.c (mono_image_create_pefile): Handle the case when the
23296         entry point is not a MethodBuilder.
23297
23298         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23299         field to ReflectionMethod since it is not allways a builder.
23300
23301 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23302
23303         * marshal.c (mono_marshal_get_managed_wrapper): 
23304         mono_marshal_alloc takes native int so CONV_I
23305         the arg for 64bits.
23306
23307 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23308
23309         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23310         tokens in the cattr table. Fixes #53108.
23311
23312 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23313
23314         * loader.c: don't trim ".dll" before looking up in the config file.
23315         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
23316
23317 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23318
23319         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
23320         Return the module which contains the resource as well.
23321         (ves_icall_System_Reflection_Module_Close): New icall.
23322
23323         * appdomain.c: Bump corlib version number.
23324
23325         * image.c (mono_image_addref): New public function.
23326
23327         * assembly.c: Call mono_image_addref.
23328
23329         * reflection.c (mono_module_get_object): Increase reference count of 
23330         the image.
23331
23332         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23333         Fixes #22532.
23334
23335         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
23336         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
23337         proper exceptions on DllImport problems.
23338
23339 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
23340
23341         * class.c, metadata.c: eliminate CSIZE macro.
23342
23343 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
23344
23345         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
23346         * object.h: Added async_callback field in MonoAsyncResult.
23347         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
23348         * verify.c: Added async_callback in MonoAsyncResult layout.
23349
23350 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
23351
23352         * reflection.c (mono_reflection_get_custom_attrs): Add support
23353         for Modules.
23354
23355 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23356
23357         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
23358         marshalling.
23359         (mono_marshal_method_from_wrapper): Add null pointer check.
23360
23361 2004-01-16  Martin Baulig  <martin@ximian.com>
23362
23363         * debug-mono-symfile.h: Set version number to 36 and reflect
23364         latest symbol writer changes.
23365
23366 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23367
23368         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
23369         multi-dimensional arrays.
23370         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
23371         (mono_class_from_mono_type): Use bounded_array_class_get.
23372         
23373         * class.c (mono_bounded_array_class_get): New function which takes
23374         a 'bounded' bool argument to distinguish vectors from one dimensional
23375         arrays.
23376
23377         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
23378         bounded_array_class_get if the array has bounds.
23379
23380         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23381         Search modules loaded using AssemblyBuilder:AddModule as well.
23382
23383 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23384
23385         * appdomain.c: increased corlib version.
23386         * filewatcher.c: removed g_print.
23387         * icall.c:
23388         (get_property_info): only allocate what is actually requested.
23389         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
23390
23391 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23392
23393         * Makefile.am: added filewatcher.[ch]
23394         * filewatcher.[ch]: FileSystemWatcher runtime support.
23395         * icall.c: added new FSW icalls.
23396
23397 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
23398
23399         * string-icalls.c: fix stringbuilder regression as suggested by
23400         Iain McCoy <iain@mccoy.id.au>.
23401
23402 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23403
23404         * process.c (process_read_stringtable_block): Recognize '007f' as
23405         a language neutral stringtable block.
23406
23407 2004-01-12  Patrik Torstensson
23408
23409         * object.h (MonoStringBuilder) : Changed layout to support our
23410         new stringbuilder class.
23411         * marshal.c: Change marshalling to support the new layout of 
23412         string builder.
23413         * appdomain.c: increased version number because new layout of
23414         string builder.
23415
23416 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
23417
23418         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
23419         assembly name as an string instead of an AssemblyName, since it is
23420         easier to extract info from it.
23421
23422         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
23423         the culture subdirectories too. Fixes #52231.
23424
23425 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23426
23427         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
23428         It takes 2 new parameters with an optional name for the method to look
23429         for and case ignoring info.
23430
23431         * threadpool.c: removed unused variable.
23432
23433 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23434
23435         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
23436         It takes 2 new parameters with an optional name for the property to look
23437         for and case ignoring info.
23438         Fixes bug #52753.
23439
23440 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23441
23442         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
23443         Fix #52451.
23444
23445 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23446
23447         * appdomain.c:
23448         * assembly.c: escape the uri before passing it to g_filename_from_uri.
23449         Fixes bug #52630.
23450
23451 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
23452
23453         * reflection.c: Add support for more than one unmanaged resource.
23454
23455         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
23456         in field->def_value, as done in all other cases.
23457
23458         * reflection.c (mono_reflection_get_custom_attrs): Add support for
23459         TypeBuilders.
23460
23461         * reflection.c (mono_reflection_create_runtime_class): Remove 
23462         errorneous assignment to klass->element_class, since it is already
23463         done in mono_reflection_setup_internal_class.
23464
23465 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23466
23467         * gc.c: added missing LeaveCriticalSection.
23468         * icall.c: indented a couple of lines.
23469         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
23470         if we call EndInvoke inside a callback. Fixes bug #52601.
23471
23472 2004-01-07  Martin Baulig  <martin@ximian.com>
23473
23474         * mono-debug-debugger.h
23475         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
23476
23477 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
23478
23479         * appdomain.c: Use messages in NotImplementedException.
23480
23481         * exception.c (mono_get_exception_not_implemented): Now this takes
23482         a message argument.
23483
23484         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
23485         exception instead of g_asserting an aborting when something is not
23486         implemented.
23487
23488         Add some inline docs.
23489
23490 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
23491
23492         * reflection.h: Update after changes to object layout.
23493
23494         * reflection.c: Implement saving of unmanaged aka win32 resources.
23495
23496         * appdomain.c: Bump version number.
23497
23498         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
23499         Handle missing domains gracefully.
23500
23501 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
23502
23503         * file-io.c : On Windows, there are much more invalid_path_chars.
23504
23505 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23506
23507         * class.h, object.c: prepare for GetType () speedup.
23508
23509 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
23510
23511         * profiler.c: workaround for --profile null reference exception on
23512           cygwin. Patch by Patrik Torstensson.
23513
23514 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
23515
23516         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
23517         make work for unaligned access.
23518
23519 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
23520
23521         * class.c: small cleanup (class->fields [i] -> field).
23522         * image.c: check address of metadata is valid.
23523
23524 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
23525
23526         * assembly.h assembly.c (mono_assembly_loaded): New public function to
23527         search the list of loaded assemblies.
23528
23529         * reflection.c (mono_reflection_type_from_name): Use 
23530         mono_assembly_loaded instead of mono_image_loaded.
23531
23532         * reflection.c: Fix warnings.
23533
23534 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
23535
23536         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
23537         is dynamic. This is needed since an assembly can contain both dynamic and
23538         non-dynamic images.
23539
23540         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
23541         assembly->dynamic.
23542
23543         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
23544
23545         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
23546         to store modules loaded using AddModule.
23547
23548         * reflection.c (mono_image_fill_file_table): Generalize this so it works
23549         on Modules.
23550
23551         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
23552
23553         * reflection.c (mono_image_fill_export_table_from_module): New function to
23554         fill out the EXPORTEDTYPES table from a module.
23555
23556         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
23557         into a separate function. Also handle loaded non-dynamic modules.
23558
23559         * reflection.c (mono_image_basic_init): Fix memory allocation.
23560
23561         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23562
23563         * assembly.c (mono_assembly_load_references): Make this public.
23564
23565 2003-12-19  Martin Baulig  <martin@ximian.com>
23566
23567         * class.c (mono_class_initialize_generic): Made this static, take
23568         a `MonoGenericInst *' instead of a `MonoClass *'.
23569         (mono_class_from_generic): Call mono_class_initialize_generic()
23570         unless we're already initialized or being called from
23571         do_mono_metadata_parse_generic_inst().
23572
23573         * class.h (MonoGenericInst): Added `initialized' and
23574         `init_pending' flags.
23575
23576         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
23577         `mono_class_init (gklass)' or mono_class_initialize_generic()
23578         here; set `generic_inst->init_pending' while parsing the
23579         `type_argv'.
23580
23581 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
23582
23583         * locales.c: include string.h for memxxx prototypes
23584
23585 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23586
23587         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
23588         constructor when accessing literal fields.
23589
23590 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
23591
23592         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23593
23594         * reflection.c (assembly_add_resource_manifest): New function to fill
23595         the MANIFESTRESOURCE table.
23596
23597         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
23598
23599         * reflection.h: Update to changes in class layout.
23600
23601         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
23602         Reenable call to mono_runtime_is_shutting_down ().
23603
23604         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
23605         determine if the runtime is shutting down.
23606
23607 2003-12-16  Jackson Harper <jackson@ximian.com>
23608
23609         * icall.c: comment out call to mono_runtime_is_shutting_down to
23610         fix build.
23611         
23612 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
23613
23614         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
23615         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
23616
23617 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
23618
23619         * reflection.c: move definition of swap_with_size
23620         to before its first call
23621
23622 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
23623
23624         * appdomain.c (mono_runtime_is_shutting_down): New public function.
23625
23626         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
23627         icall.
23628
23629         * object.c: Fix warnings.
23630
23631         * icall.c (ves_icall_Type_Get...): Only consider inherited static
23632         members if FlattenHierarchy is set.
23633
23634         * reflection.c (mono_image_add_decl_security): New function to emit
23635         declarative security.
23636
23637         * reflection.h reflection.c: Add support for declarative security.
23638
23639         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23640         
23641 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23642
23643         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23644         
23645         * appdomain.c verify.c: Moved corlib version checking into its own
23646         function in appdomain.c since it needs to create vtables etc.
23647
23648 2003-12-13  Patrik Torstensson <p@rxc.se>
23649
23650         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
23651         instead of unwrapped server.
23652
23653 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
23654
23655         * verify.c (check_corlib): Fix field index.
23656
23657 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
23658
23659         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
23660         GetGacPath icall.
23661
23662 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
23663
23664         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
23665         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
23666         cope with sizeof(size_t) != sizeof(guint32).
23667
23668 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23669
23670         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
23671         in case of failure.
23672
23673 2003-12-10  Mark Crichton <crichton@gimp.org>
23674
23675         * icall.c: removed the GetNonZeroBytes.  We now handle this case
23676         in managed code.
23677
23678         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
23679
23680 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
23681
23682         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
23683         marked as deleted.
23684
23685 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23686
23687         * verify.c (check_corlib): Handle the case when the version field is 
23688         initialized by a static constructor.
23689
23690 2003-12-08  Patrik Torstensson  <p@rxc.se>
23691
23692     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
23693
23694 2003-12-08  Martin Baulig  <martin@ximian.com>
23695
23696         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
23697         a MonoReflectionGenericParameter, also take the parameter index
23698         and name as arguments.
23699         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
23700         (ves_icall_MonoGenericParam_initialize): New interncall.
23701         (ves_icall_Type_make_byref_type): New interncall.
23702
23703         * reflection.h (MonoReflectionGenericParam): Derive from
23704         MonoReflectionType, not just from MonoObject.  Added `refobj' and
23705         `index' fields.
23706
23707         * reflection.c (mono_reflection_define_generic_parameter): Create
23708         and return a new MonoReflectionGenericParam; don't initialize the
23709         constraints here.
23710         (mono_reflection_initialize_generic_parameter): New public method;
23711         initializes the constraints and creates the `param->pklass'.
23712
23713 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23714
23715         * reflection.h reflection.c: Use the new fields 'num_types', 
23716         'num_fields' and 'num_methods' to track the number of types etc.
23717
23718         * verify.c (check_corlib): Check corlib version number.
23719
23720 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
23721
23722         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
23723         function works on all methods.
23724
23725 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23726
23727         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
23728         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
23729         the custom_type_info flag of the transparent proxy.
23730         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
23731         objects that supports IRemotingTypeInfo.
23732         * object.h: Added custom_type_info field in transparent proxy.
23733
23734 2003-12-06  Martin Baulig  <martin@ximian.com>
23735
23736         * class.c (mono_class_create_from_generic): Removed.
23737         (mono_class_from_generic): Check `ginst->klass' before doing
23738         anything else.  This is important to fully support "recursive"
23739         generic types.
23740
23741         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
23742         empty `generic_inst->klass' before doing anything else.
23743
23744 2003-12-06  Dick Porter  <dick@ximian.com>
23745
23746         * verify.c: 
23747         * object.h:
23748         * icall.c:
23749         * locales.c: Use C structs to access class fields.  Don't do a
23750         conversion between MonoString and UChar because both are
23751         platform-endian UTF-16.  Compare now takes startindex and count
23752         parameters.  Add a char overload for IndexOf.  Speed up the
23753         invariant string IndexOf.
23754
23755 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
23756
23757         * Makefile.am (monosn_LDADD): Fix parallel build.
23758
23759 2003-12-04  Martin Baulig  <martin@ximian.com>
23760
23761         * icall.c
23762         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
23763         (ves_icall_Type_make_array_type): New interncall.       
23764
23765 2003-12-04  Martin Baulig  <martin@ximian.com>
23766
23767         * locales.c: also change it in the !HAVE_ICU case.
23768
23769 2003-12-04  Dick Porter  <dick@ximian.com>
23770
23771         * icall.c:
23772         * locales.c: construct_compareinfo is now in CompareInfo, not
23773         CultureInfo.
23774
23775 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23776
23777         * image.c (mono_image_load_file_for_image): Cache loaded images in the
23778         image->files array.
23779
23780         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
23781         table as well.
23782
23783         * assembly.c (mono_assembly_load_references): Only load references
23784         once.
23785
23786         * class.c (mono_class_from_name): Avoid linear search of the 
23787         EXPORTEDTYPE table.
23788
23789         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
23790
23791 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23792
23793         * image.h (MonoImage): Add 'field_cache' field.
23794
23795         * loader.c (mono_field_from_token): Cache field lookups.
23796         
23797         * reflection.c (mono_module_get_object): Fix name property.
23798
23799         * icall.c (ves_icall_get_enum_info): Update after changes to 
23800         mono_metadata_get_constant_index ().
23801
23802         * icall.c: Get rid of get_type_info icall, use a separate icall for
23803         each type property to avoid needless memory allocations. Fixes #51514.
23804
23805         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
23806         to avoid needless binary searches.
23807
23808         * class.c (class_compute_field_layout): Move the initialization of
23809         field->def_value to mono_class_vtable ().
23810
23811         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
23812         non-corlib types.
23813
23814         * object.c (mono_object_allocate): Make it inline.
23815
23816         * object.c (mono_object_allocate_spec): Make it inline.
23817         
23818 2003-12-02  Dick Porter  <dick@ximian.com>
23819
23820         * locales.c (create_NumberFormat): NumberFormatInfo construction.
23821         Patch by Mohammad DAMT (mdamt@cdl2000.com).
23822
23823 2003-12-01  Dick Porter  <dick@ximian.com>
23824
23825         * threads.c: Fix signature and call in CreateMutex and
23826         CreateEvent.
23827
23828 2003-12-01  Dick Porter  <dick@ximian.com>
23829
23830         * icall.c: 
23831         * locales.c: Implement string compares and searching
23832
23833         * object.h: Add extra Thread field
23834
23835 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
23836
23837         * reflection.c (fixup_method): Add support for MonoCMethod.
23838
23839 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
23840
23841         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
23842
23843         * reflection.c (assembly_name_to_aname): Allow extra characters in
23844         assembly names. Fixes #51468.
23845
23846 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23847
23848         * exception.c (mono_exception_from_name_domain): New helper function.
23849
23850         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
23851         exception object in the correct domain.
23852
23853         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
23854         formatting + make a copy a the input data.
23855
23856         * loader.c (mono_get_method_from_token): Methods which contain
23857         native code do not have entries in the ImplMap.
23858
23859         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
23860         Thanks to Gonzalo for spotting this.
23861         
23862         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
23863         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
23864
23865         * assembly.h (mono_assembly_load_from): Split the second part of 
23866         assembly loading into a new public function.
23867
23868         * exception.h (mono_get_exception_bad_image_format): New function.
23869
23870 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
23871
23872         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23873         Enumerate all modules inside a dynamic assembly. Fixes #51293.
23874         
23875         * icall.c: Add new icall for creating dynamic methods.
23876
23877         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
23878
23879         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
23880
23881         * reflection.c (mono_reflection_create_dynamic_method): New icall to
23882         create a dynamic method.
23883
23884         * reflection.c (resolve_object): New helper function.
23885
23886         * reflection.c: Generalize ReflectionMethodBuilder and the functions
23887         which manipulate it so they can also work on dynamic methods.
23888
23889         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
23890         creating the MonoReflectionMethodAux structure if it is not needed.
23891         
23892         * reflection.h verify.c: Update after changes to object layout.
23893
23894         * reflection.c (method_builder_encode_signature): Fix compilation on
23895         gcc 2.95.x.
23896
23897 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
23898
23899         * appdomain.h: Added support for context static fields. Added static_data
23900           field to MonoAppContext and renamed thread_static_fields to a more
23901           generic special_static_fields in MonoAppDomain, since it can now contain
23902           context static fields.
23903         * domain.c: Updated hashtable name.
23904         * object.c: Replaced field_is_thread_static() for a more generic
23905           field_is_special_static() which also checks for context static attribute.
23906           In mono_class_vtable(), added support for static context fields.
23907         * threads.c: Changed methods that manage thread static fields to more
23908           generic methods so they can be reused both for thread and context static
23909           data.
23910         * threads.h: Declared some new methods.
23911
23912 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
23913
23914         * reflection.h: Update after changes to the managed types.
23915
23916         * reflection.c (encode_custom_modifiers): New helper function.
23917
23918         * reflection.c (method_encode_signature): Emit custom modifiers.
23919
23920         * reflection.c (field_encode_signature): Emit custom modifiers.
23921
23922 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23923
23924         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
23925
23926         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
23927         implementation.
23928
23929         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
23930         icall.
23931
23932         * object.c (mono_field_get_value_object): New function.
23933
23934         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
23935         specific.
23936
23937 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23938
23939         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
23940         return a preallocated out-of-memory exception instance.
23941
23942         * object.c (out_of_memory): Use the new function.
23943
23944         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
23945         flag is before the custom modifiers. Fixes #49802.
23946
23947 2003-11-16  Martin Baulig  <martin@ximian.com>
23948
23949         * class.c (mono_class_is_open_constructed_type): Implemented the
23950         MONO_TYPE_GENERICINST case.
23951
23952 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23953
23954         * assembly.c (mono_assembly_fill_assembly_name): New function to
23955         fill out the MonoAssemblyName structure.
23956         (mono_assembly_open): Use the new function.
23957
23958         * icall.c (fill_reflection_assembly_name): New helper function.
23959
23960         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
23961         new function.
23962
23963         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
23964
23965 2003-11-15  Martin Baulig  <martin@ximian.com>
23966
23967         * class.c (mono_class_is_open_constructed_type): New public
23968         function; checks whether a type is an open constructed type,
23969         ie. whether it still contains type parameters.
23970         (mono_class_inflate_generic_type): If we're a type parameter and
23971         the inflated type is also a MONO_TYPE_(M)VAR, return the original
23972         type.
23973
23974         * class.h (MonoGenericInst): Added `guint32 is_open'.
23975
23976         * loader.c (method_from_methodspec): Check whether we're an open
23977         or closed constructed type and set `ginst->is_open'.
23978
23979         * reflection.c (mono_reflection_bind_generic_parameters): Check
23980         whether we're an open or closed constructed type and set
23981         `ginst->is_open'.
23982         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
23983         from open constructed types.
23984
23985 2003-11-15  Martin Baulig  <martin@ximian.com>
23986
23987         * reflection.c (mono_reflection_bind_generic_parameters): If we're
23988         a generic instance (instead of a generic type declaration) with
23989         unbound generic parameters, bind them to our actual types.
23990
23991 2003-11-14  Martin Baulig  <martin@ximian.com>
23992
23993         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
23994
23995         * reflection.c (mono_reflection_bind_generic_parameters): If we're
23996         an interface type, populate `res->interfaces' with instantiated
23997         versions of all the interfaces we inherit.
23998
23999 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24000
24001         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24002         when MONO_PATH is set but doesn't contain the install dir.
24003
24004 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24005
24006         * icall.c:
24007         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24008         it's also implemented in base classes. Fixes bug #50927.
24009
24010 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24011
24012         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24013         if this method is called from a finalizer. Fixes #50913.
24014
24015 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24016
24017         * threads.c: Implement VolatileRead/VolatileWrite
24018
24019         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24020
24021 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24022
24023         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24024         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24025         2.95.3.
24026
24027         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24028         from Peter Ross (pro@missioncriticalit.com).
24029         
24030 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24031
24032         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24033
24034 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24035
24036         * assembly.c (mono_assembly_load_references): Disable check because it
24037         triggers on older corlibs which lots of people have.
24038
24039 2003-11-12  Jackson Harper  <jackson@ximian.com>
24040
24041         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24042         load corlib.dll if mscorlib.dll is not found.
24043         * assembly.h: Remove corlib name define.
24044         * class.c:
24045         * domain.c:
24046         * image.c: Change corlib name to mscorlib.
24047         
24048 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24049
24050         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24051
24052 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24053
24054         * appdomain.h: Added loader_optimization here to sync with the C#
24055         code, and add disallow_binding_redirects field.
24056
24057 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24058
24059         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24060
24061         * reflection.c (mono_image_build_metadata): Fix crash on modules
24062         with no types.
24063
24064         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24065
24066         * icall.c (ves_icall_get_method_info): Return callingConvention as
24067         well.
24068
24069         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24070         namespaces from the EXPORTEDTYPE table as well.
24071
24072         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24073         from all modules inside the assembly.
24074         
24075 2003-11-11  Martin Baulig  <martin@ximian.com>
24076
24077         * reflection.c (mono_reflection_bind_generic_parameters): Make
24078         this work for interfaces.
24079
24080 2003-11-11  Martin Baulig  <martin@ximian.com>
24081
24082         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24083
24084 2003-11-11  Martin Baulig  <martin@ximian.com>
24085
24086         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24087         "MonoInflatedMethod" and "MonoInflatedCtor".
24088
24089 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24090
24091         * reflection.c (resolution_scope_from_image): Use the assembly table
24092         from the manifest module, since other modules don't have it.
24093
24094         * debug-helpers.c (mono_type_full_name): New helper function.
24095
24096         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24097
24098         * image.c (mono_image_load_file_for_image): New public function which
24099         is a replacement for the load_file_for_image in class.c.
24100
24101         * assembly.c (mono_assembly_load_module): A wrapper for the function
24102         above which does assembly association and reference loading too.
24103
24104         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24105
24106 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24107
24108         * appdomain.c: not all of the attributes for the full assembly name
24109         are required and the order doesn't matter. Fixes bug #50787.
24110
24111 2003-11-10  Dick Porter  <dick@ximian.com>
24112
24113         * locales.c: Use platform-endian UTF16
24114
24115 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24116
24117         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24118         
24119 2003-11-10  Martin Baulig  <martin@ximian.com>
24120
24121         * metadata.c
24122         (mono_metadata_load_generic_params): Make this actually work.
24123
24124         * reflection.c (mono_reflection_bind_generic_parameters): If our
24125         parent is a generic instance, pass all the `types' to it, no
24126         matter whether it has the same number of type parameters or not.
24127
24128 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24129
24130         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24131
24132         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24133         assignment code to this function so it gets called recursively for all
24134         modules.
24135
24136         * image.c (load_modules): Remove the assembly assignment since it is
24137         now done by mono_assembly_load_references.
24138         
24139         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24140         Add 'module' argument.
24141         (mono_module_get_types): New helper function.
24142         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24143
24144 2003-11-08  Martin Baulig  <martin@ximian.com>
24145
24146         * class.c (mono_class_inflate_generic_method): Interface method
24147         don't have a header.
24148
24149         * reflection.c (mono_image_get_methodspec_token): Take an
24150         additional `MonoGenericInst *' argument instead of reading it from
24151         the header; this is necessary to support interfaces.
24152         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24153         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24154         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24155         argument.
24156
24157         * reflection.h (MonoReflectionInflatedMethod): Added
24158         `MonoGenericInst *ginst'.
24159
24160 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24161
24162         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24163
24164 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24165
24166         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24167
24168 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24169
24170         * reflection.c 
24171         (reflection_methodbuilder_from_method_builder):
24172         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24173         initialize a ReflectionMethodBuilder structure.
24174         (mono_image_get_methodbuilder_token):
24175         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24176         tokens which point to types in another module inside the same assembly.
24177
24178         * reflection.c: Use the new helper functions.
24179         
24180         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24181
24182         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24183         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24184
24185         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24186         neccesary.
24187
24188         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24189         current module. Emit the manifest only for the main module.
24190
24191         * reflection.c (mono_image_create_token): Add assertion when a 
24192         memberref needs to be created.
24193
24194         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24195
24196         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24197         larger buffer for the custom attribute blob. Fixes #50637.
24198         
24199 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24200
24201         * threadpool.c: notify listener on async processing handles after
24202         invoking the async callback. Thanks to Zoltan.
24203
24204 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24205
24206         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24207         avoid code duplication.
24208
24209         * reflection.h (MonoDynamicImage): New type which is currently unused,
24210         but will be used through the ref.emit code in place of 
24211         MonoDynamicAssembly.
24212
24213         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24214         object layout.
24215
24216         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24217         a MonoDynamicImage instead of just a MonoImage.
24218         
24219         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24220         icalls to ModuleBuilder but keep their semantics, so they will work
24221         with moduleb->assemblyb. This will change later.
24222         
24223 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24224
24225         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24226         object layout.
24227
24228         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24229         main module, since it is now done by the managed code.
24230
24231 2003-11-03  Martin Baulig  <martin@ximian.com>
24232
24233         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24234         `ginst->klass' here.
24235         (method_encode_methodspec): Don't use the `ginst->generic_method's
24236         klass if it's a generic instance, use `ginst->klass' in this case.
24237
24238 2003-11-03  Martin Baulig  <martin@ximian.com>
24239
24240         * reflection.c (mono_image_get_generic_method_param_info):
24241         Removed, use mono_image_get_generic_param_info() instead.
24242         (mono_image_get_type_info): Write the GenericParam table before
24243         the Method table.  This is neccessary because in the GenericParam
24244         table, type parameters of the class (ie. '!0' etc.) must come
24245         before the ones from its generic methods (ie. '!!0' etc).
24246
24247 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24248
24249         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24250
24251 2003-11-02  Martin Baulig  <martin@ximian.com>
24252
24253         * reflection.c (create_generic_typespec): Take a
24254         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24255         the generic parameters from it.
24256
24257 2003-11-02  Martin Baulig  <martin@ximian.com>
24258
24259         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24260         instead of a `MonoClassField *' since we just need the type.
24261         (create_generic_typespec): New static function.  Creates a
24262         TypeSpec token for a generic type declaration.
24263         (mono_image_get_generic_field_token): New static function.
24264         (mono_image_create_token): If we're a FieldBuilder in a generic
24265         type declaration, call mono_image_get_generic_field_token() to get
24266         the token.
24267
24268 2003-11-02  Martin Baulig  <martin@ximian.com>
24269
24270         * reflection.h
24271         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24272         `MonoReflectionGenericInst *declaring_type' and
24273         `MonoReflectionGenericInst *reflected_type' fields.
24274
24275         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24276         `MonoReflectionGenericInst *declaring_type' and a
24277         `MonoReflectionGenericInst *reflected_type' argument instead of a
24278         single `MonoReflectionGenericInst *type' one.  Set
24279         `res->declaring_type' and `res->reflected_type' from them.
24280         (mono_reflection_inflate_field): Likewise.      
24281
24282 2003-11-02  Martin Baulig  <martin@ximian.com>
24283
24284         * class.c (mono_class_setup_vtable): Don't store generic methods
24285         in the vtable.  
24286
24287 2003-11-02  Martin Baulig  <martin@ximian.com>
24288
24289         * reflection.h (MonoReflectionGenericInst): Added
24290         `MonoReflectionType *declaring_type'.
24291
24292         * reflection.c (mono_reflection_bind_generic_parameters): Use
24293         `if (tb->parent)' instead of `klass->parent'.
24294
24295 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24296
24297         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24298         with an empty ASSEMBLY table.
24299
24300         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24301         variable in the inner and outer loops.
24302
24303 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24304
24305         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24306         argument.
24307
24308         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24309         
24310         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24311         icalls. Instead, do everything in managed code. This is needed since
24312         it is hard to restore the original domain etc. in unmanaged code in the
24313         presence of undeniable exceptions.
24314
24315         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
24316         New icalls to push and pop appdomain refs.
24317
24318 2003-10-31  Martin Baulig  <martin@ximian.com>
24319
24320         * class.c (inflate_generic_type): Renamed to
24321         mono_class_inflate_generic_type() and made it public.
24322
24323         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
24324         New interncall.
24325
24326         * loader.c (mono_field_from_memberref): Also set the retklass for
24327         typespecs.
24328
24329         * fielder.c (mono_image_get_inflated_field_token): New static
24330         method; creates a metadata token for an inflated field.
24331         (mono_image_create_token, fixup_method): Added support for
24332         "MonoInflatedField".
24333         (fieldbuilder_to_mono_class_field): New static function.
24334         (mono_reflection_inflate_field): New public function.
24335
24336         * reflection.h
24337         (MonoReflectionGenericInst): Added `MonoArray *fields'.
24338         (MonoReflectionInflatedField): New typedef.     
24339
24340 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
24341
24342         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
24343         for Solaris and other platforms without s6_addr16
24344
24345 2003-10-30  Martin Baulig  <martin@ximian.com>
24346
24347         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
24348         argument instead of two.
24349         (mono_class_inflate_generic_signature): Likewise.
24350         (inflate_generic_header): Likewise.
24351         (mono_class_inflate_generic_method): Likewise.  In addition, if
24352         `ginst->klass' is set, it becomes the new `method->klass'.
24353
24354         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
24355         field.
24356
24357         * reflection.c (encode_generic_method_sig): Write a 0xa as the
24358         first byte. [FIXME]
24359         (method_encode_methodspec): If we have generic parameters, create
24360         a MethodSpec instead of a MethodRef.
24361         (fixup_method): Added support for "MonoInflatedMethod" and
24362         "MonoInflatedCtor".
24363         (mono_image_create_token): Added support for "MonoInflatedMethod"
24364         and "MonoInflatedCtor".
24365         (inflated_method_get_object): New static function; returns a
24366         managed "System.Reflection.MonoInflatedMethod" object.
24367         (mono_reflection_bind_generic_method_parameters): Return a
24368         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
24369         (mono_reflection_inflate_method_or_ctor): Likewise.
24370         (mono_image_get_generic_method_param_info): Initialize unused
24371         fields to zero.
24372         (mono_image_get_generic_param_info): Likewise.
24373
24374         * reflection.h (MonoReflectionInflatedMethod): New public
24375         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
24376         "S.R.MonoInflatedCtor" classes.
24377
24378         * loader.c (method_from_memberref): If we're a TypeSpec and it
24379         resolves to a generic instance, inflate the method.
24380
24381 2003-10-28  Dick Porter  <dick@ximian.com>
24382
24383         * object.c (mono_runtime_run_main): Convert command-line arguments
24384         into utf8, falling back to the user's locale encoding to do so.
24385
24386 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24387
24388         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
24389         at this time.
24390
24391         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
24392
24393         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
24394         up icalls at method definition time. Partially fixes #33569.
24395
24396 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
24397
24398         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
24399         marshalling of arrays. Fixes #50116.
24400
24401         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
24402
24403         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
24404         points to a vtable in the dying appdomain.
24405
24406         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
24407         listeners into unmanaged code inside the lock.
24408
24409         * object.c (mono_class_vtable): Turn off typed allocation in non-root
24410         domains and add some comments.
24411
24412 2003-10-25  Martin Baulig  <martin@ximian.com>
24413
24414         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
24415
24416         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
24417
24418         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
24419         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
24420         currently parsing.  Create the generic class and store it in
24421         `generic_inst->klass' before parsing the type arguments.  This is
24422         required to support "recursive" definitions; see mcs/tests/gen-23.cs
24423         for an example.
24424         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
24425         to support recursive typespec entries.
24426
24427         * class.c (mono_class_setup_parent): If our parent is a generic
24428         instance, we may get called before it has its name set.
24429         (mono_class_from_generic): Splitted into
24430         mono_class_create_from_generic() and mono_class_initialize_generic().
24431
24432 2003-10-25  Martin Baulig  <martin@ximian.com>
24433
24434         * icall.c (ves_icall_Type_BindGenericParameters): Return a
24435         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
24436         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
24437         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
24438
24439         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
24440         (create_typespec): Likewise.
24441         (mono_reflection_bind_generic_parameters): Return a
24442         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
24443         (mono_reflection_inflate_method_or_ctor): New public function.
24444
24445         * reflection.h (MonoReflectionGenericInst): New typedef.        
24446
24447 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24448
24449         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
24450         inside the domain lock. Fixes #49993.
24451         
24452         * object.c (mono_class_vtable): When typed allocation is used, 
24453         allocate vtables in the GC heap instead of in the mempool, since the
24454         vtables contain GC descriptors which are used by the collector even
24455         after the domain owning the mempool is unloaded.
24456
24457         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
24458
24459         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
24460         reflect what it does. Also invalidate mempools instead of freeing
24461         them if a define is set.
24462
24463         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
24464         of the appdomain.
24465         
24466         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
24467         hold the finalizable objects in this domain.
24468
24469         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
24470         appdomain.
24471
24472         * appdomain.c (mono_domain_set): New function to set the current
24473         appdomain, but only if it is not being unloaded.
24474
24475         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
24476         appdomain which is being unloaded.
24477         
24478         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
24479         unloading of the root appdomain.
24480
24481         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
24482         icall to execute a method in another appdomain. Intended as a 
24483         replacement for InternalSetDomain, which can confuse the code 
24484         generation in the JIT.
24485
24486         * appdomain.c (mono_domain_is_unloading): New function to determine
24487         whenever an appdomain is unloading.
24488
24489         * appdomain.c (mono_domain_unload): New function to correctly unload
24490         an appdomain.
24491
24492         * assembly.c (mono_assembly_load_references): Check that an assembly
24493         does not references itself.
24494
24495         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
24496         domain manually, it asks the finalizer thread to do it, then waits for
24497         the result. Also added a timeout.
24498
24499         * icall.c: Register the new icalls.
24500
24501         * threads.h threads.c: Export the mono_gc_stop_world and 
24502         mono_gc_start_world functions.
24503         
24504         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
24505         function to fill out the mempool with 0x2a.
24506
24507 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
24508
24509         * reflection.h (MonoReflectionMethodAux): New structure to store
24510         information which is rarely used, thus is not in the MonoMethod
24511         structure.
24512
24513         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
24514         store the aux info.
24515
24516         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
24517         and marshalling info into the aux structure.
24518
24519         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
24520         from the aux structure.
24521
24522         * loader.c (mono_method_get_param_names): Retrieve the param names from
24523         the aux structure.
24524         
24525 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
24526
24527         * exception.h exception.c: Add AppDomainUnloadedException && fix 
24528         warning.
24529
24530 2003-10-21  Dick Porter  <dick@ximian.com>
24531
24532         * socket-io.c
24533         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
24534         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
24535
24536 2003-10-21  Martin Baulig  <martin@ximian.com>
24537
24538         * reflection.c (mono_reflection_bind_generic_parameters):
24539         `klass->parent' is NULL for interfaces.
24540
24541 2003-10-21  Martin Baulig  <martin@ximian.com>
24542
24543         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24544
24545 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
24546
24547         * exception.c (mono_exception_from_name_msg): New helper function for
24548         creating exceptions and initializing their message field.
24549
24550         * exception.c: Simplify functions using the new helper.
24551
24552         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
24553         New function.
24554
24555         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
24556         mono_raise_exception, since otherwise gcc doesn't generate the function
24557         epilog for raise_exception, confusing the stack unwinding in the JIT.
24558         Fixes #45043.
24559
24560         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
24561         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
24562         Fixes #49499.
24563
24564 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24565
24566         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
24567         utf8.
24568
24569 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
24570
24571         * icall.c: Removed GetUninitializedObject method because
24572           AllocateUninitializedClassInstance does the same.
24573
24574 2003-10-18  Martin Baulig  <martin@ximian.com>
24575
24576         * class.c (inflate_generic_signature): Renamed to
24577         mono_class_inflate_generic_signature() and made it public.
24578         (my_mono_class_from_generic_parameter): New static function; if we
24579         don't already have the generic parameter's MonoClass, create a
24580         very simple one which is just used internally in the runtime and
24581         not passed back to managed code.
24582
24583         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
24584
24585         * metadata.h (MonoMethodSignature): Moved the
24586         `MonoGenericParam *gen_params' to the MonoMethodHeader.
24587         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
24588
24589         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
24590         ves_icall_MonoMethod_GetGenericArguments(); this is now an
24591         interncall on the MonoMethod class, not on MethodInfo.
24592         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
24593         calling mono_reflection_bind_generic_method_parameters() directly.
24594
24595         * loader.c (mono_method_get_signature): If this is a MethodSpec;
24596         return the already computed `method->signature'.
24597         (method_from_methodspec): New static function to load a method
24598         from a MethodSpec entry.
24599         (mono_get_method_from_token): Call the new method_from_methodspec()
24600         for MethodSpec tokens.  
24601         (mono_get_method_from_token): If we're a generic method, load the
24602         type parameters.
24603
24604         * reflection.c (mono_image_get_memberref_token): Allow
24605         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
24606         table.
24607         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
24608         (mono_image_create_token): First check whether it's a generic
24609         method (so we'd need to create a MethodSpec), then do the other
24610         two alternatives.
24611         (mono_reflection_bind_generic_method_parameters): Return a
24612         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
24613         called directly from the interncall.
24614
24615 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
24616
24617         * reflection.c (load_public_key): Move loading of the public key
24618         into managed code.
24619
24620         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
24621
24622         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
24623         fields.
24624
24625         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
24626         culture, hash_alg and public_key. Fixes #49555.
24627
24628 2003-10-17  Martin Baulig  <martin@ximian.com>
24629
24630         * class.h (MonoGenericInst): Moved this declaration here and added
24631         `MonoMethod *generic_method'.
24632
24633         * icall.c
24634         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
24635         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
24636
24637         * metadata.c (mono_metadata_type_equal): Two types of
24638         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
24639         index; ie. don't compare the address of the `MonoGenericParam'
24640         structure.
24641         (mono_metadata_load_generic_params): Removed the `MonoMethod
24642         *method' argument.
24643
24644         * metadata.h (MonoGenericInst): Moved declaration to class.h.
24645         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
24646
24647         * reflection.c (method_encode_signature): Encode the number of
24648         generic parameters.
24649         (encode_generic_method_sig): New static function.
24650         (method_encode_methodspec): New static function; creates an entry
24651         in the MethodSpec table for a generic method.
24652         (mono_image_get_methodspec_token): New static function.
24653         (mono_image_create_token): Call mono_image_get_methodspec_token()
24654         for generic methods.
24655         (mono_reflection_bind_generic_method_parameters): New public
24656         function.  Instantiates a generic method.
24657
24658 2003-10-16  Martin Baulig  <martin@ximian.com>
24659
24660         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
24661         *gen_params' here from MonoMethodHeader.
24662
24663         * metadata.c (mono_metadata_parse_method_signature): If we have
24664         generic parameters, initialize `method->gen_params' and then set
24665         the correct `type->data.generic_param' in all the parameters.
24666
24667 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24668
24669         * threads.c (mono_threads_get_default_stacksize): New function to 
24670         return the default stacksize.
24671
24672         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
24673         termination of the finalizer thread, since the previous method had
24674         race conditions. Fixes #49628.
24675
24676         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
24677         as for the other managed threads.
24678
24679 2003-10-16  Martin Baulig  <martin@ximian.com>
24680
24681         * class.c (inflate_generic_signature): Copy `generic_param_count'
24682         and `gen_params'.
24683
24684         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
24685         New interncall.
24686
24687         * metadata.c (mono_metadata_parse_method_signature): Actually set
24688         the `method->generic_param_count' here.
24689         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
24690
24691 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24692
24693         * object.h: Add a new field to TypedRef to simplify the implementation
24694         of the REFANY opcodes in the JIT.
24695
24696         * icall.c: Make use of the new field.
24697
24698         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
24699         dynamically.
24700
24701 2003-10-15  Martin Baulig  <martin@ximian.com>
24702
24703         * class.c (mono_class_from_gen_param): Renamed to
24704         mono_class_from_generic_parameter() and moved most of the
24705         functionality from mono_reflection_define_generic_parameter()
24706         here; ie. we create a "real" class here.
24707         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
24708         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
24709         previously been called.
24710
24711         * class.h (MonoGenericParam): Moved the declaration of this struct
24712         here from metadata.h and added `MonoMethod *method'.
24713
24714         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
24715         interncall.
24716
24717         * loader.c (mono_get_method_from_token): If we have any generic
24718         parameters, call mono_metadata_load_generic_params() to read them
24719         from the MONO_TABLE_GENERICPAR.
24720
24721         * metadata.c (mono_metadata_load_generic_params): Added
24722         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
24723
24724         * metadata.h (MonoMethodSignature): Replaced
24725         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
24726         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
24727
24728         * reflection.c (mono_reflection_define_generic_parameter): Moved
24729         most of the functionality into the new
24730         mono_class_from_generic_parameter(); set the `method' field if
24731         we're a method parameter.       
24732
24733 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
24734
24735         * marshal.c (emit_struct_conv): if native size is 0
24736         emit no code.
24737
24738 2003-10-14  Martin Baulig  <martin@ximian.com>
24739
24740         * icall.c: The generics API has changed in the spec since it was
24741         added to System.Type; these modifications make it match the spec
24742         again.
24743         (ves_icall_Type_GetGenericParameters): Renamed to
24744         `ves_icall_Type_GetGenericArguments'.
24745         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
24746         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
24747         `ves_icall_MonoType_get_HasGenericArguments'.
24748         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
24749         `ves_icall_MonoType_get_IsGenericParameter'.
24750         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
24751         this is no interncall anymore.
24752         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
24753         `ves_icall_TypeBuilder_get_IsGenericParameter'.
24754
24755 2003-10-14  Martin Baulig  <martin@ximian.com>
24756
24757         * reflection.c (mono_reflection_bind_generic_parameters): Also
24758         inflate generic methods if we're reading the class from IL.
24759
24760 2003-10-13  Martin Baulig  <martin@ximian.com>
24761
24762         * reflection.c (mono_reflection_define_generic_parameter): This
24763         method isn't called directly from the icall anymore; take a
24764         `MonoReflectionAssemblyBuilder *' so we can use this for type and
24765         method generic parameters.
24766         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
24767         (method_builder_encode_signature): Encode generic parameters.
24768         (mono_image_get_method_info): Write generic params to the
24769         MONO_TABLE_GENERICPARAM table.
24770
24771         * reflection.h (MonoReflectionMethodBuilder): Added
24772         `MonoArray *generic_params'.
24773
24774         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
24775
24776         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
24777         wrapper for mono_reflection_define_generic_parameter().
24778         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
24779
24780 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
24781
24782         * marshal.h: Add missing function to fix build.
24783
24784         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
24785         the SetLastError pinvoke attribute.
24786
24787         * marshal.c (mono_marshal_set_last_error): New helper function called
24788         by the generated code.
24789         
24790         * marshal.c (mono_mb_emit_branch): New helper function.
24791
24792         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
24793
24794         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
24795         classes as parameters and return values of delegates. Fixes #29256. 
24796
24797 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
24798
24799         * locales.c: use gint32 in non HAVE_ICU case
24800
24801 2003-10-11  Martin Baulig  <martin@ximian.com>
24802
24803         * mono-debug.c (mono_debug_add_method): Added a workaround for
24804         bug #48591.
24805
24806 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24807
24808         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
24809         delegates passed to native code must use the STDCALL calling 
24810         convention. Fixes #35987.
24811
24812 2003-10-10  Martin Baulig  <martin@ximian.com>
24813
24814         * class.c (inflate_generic_type): If we're inflating for a generic
24815         type instance (and not for a generic method), return
24816         MONO_TYPE_MVAR unchanged.
24817
24818 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24819
24820         * string-icalls.c: Join ignores null strings in the source array.
24821         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
24822         * threads.c: GetAvailableTheads is slightly more accurate.
24823
24824 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
24825
24826         * threads.h threads.c : add mono_threads_set_default_stacksize
24827         and pass default to CreateThread calls.
24828
24829 2003-10-09  Dick Porter  <dick@ximian.com>
24830
24831         * icall.c:
24832         * locales.h:
24833         * locales.c: Internal calls for constructing CultureInfo and
24834         related objects from libicu (if its available.)
24835
24836 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24837
24838         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
24839
24840 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24841
24842         * threadpool.c: added an argument to async_invoke_thread that is the
24843         item to process, pass the MonoAsyncResult to the thread start function
24844         when creating a new thread. This way we don't need to acquire any lock
24845         when we're creating a new thread. Readded a semaphore for faster
24846         response times (instead of that Sleep i added).
24847
24848 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
24849
24850         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
24851         get daylight change dates better on Windows, fix handling
24852         of platforms without tm_gmtoff.
24853
24854 2003-10-06  Martin Baulig  <martin@ximian.com>
24855
24856         * class.c (inflate_generic_method): Renamed to
24857         mono_class_inflate_generic_method() and made public.
24858         (mono_class_init): Don't inflate the generic methods here.
24859         (mono_class_from_generic): Added `gboolean inflate_methods'
24860         argument.  Inflate the methods here.
24861
24862         * loader.c (mono_method_get_param_names): Ignore instances of
24863         generic types for the moment.
24864
24865         * reflection.c (fixup_method): Added support for inflated methods.
24866         (mono_image_create_token): Use mono_image_get_methodref_token()
24867         for inflated methods.
24868         (mono_custom_attrs_from_param): Ignore instances of generic types
24869         for the moment.
24870         (mono_reflection_bind_generic_parameters): New public function.
24871         Moved all the functionality from
24872         ves_icall_Type_BindGenericParameters() here and added support for
24873         dynamic types.
24874         (mono_reflection_define_generic_parameter): Initialize
24875         `klass->methods' here.
24876
24877         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
24878         functionality into mono_reflection_define_generic_parameter().
24879         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
24880         TypeBuilder, return that TypeBuilder.
24881
24882 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24883
24884         * appdomain.c: removed mono_delegate_semaphore.
24885
24886         * threadpool.c:
24887         (mono_thread_pool_add): moved hash table creation inside and the thread 
24888         creation outside of the critical region.
24889         (mono_thread_pool_finish): removed obsolete code.
24890         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
24891         continue or exit the thread depending on the queue.
24892
24893 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
24894
24895         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
24896         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
24897         handle more bool marshalling options
24898
24899 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
24900
24901         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
24902         arrays of structs. Also add a more descriptive error message when
24903         a structure member is marshalled as LPArray.
24904
24905 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24906
24907         * marshal.c (mono_marshal_get_native_wrapper): Add support for
24908         marshalling arrays of complex types. Fixes #29098. Also remove an
24909         usused and incomplete function.
24910
24911 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
24912
24913         * gc.c: report heap_size - free_bytes as total memory allocated
24914         (bug#49362).
24915
24916 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24917
24918         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
24919         fix timezone handling problems on Windows.
24920         
24921         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
24922         asserts when the year is outside the range handled by ms the functions.
24923
24924         * class.c (setup_interface_offsets): If the class is an interface,
24925         fill out its interface_offsets slot.
24926
24927 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24928
24929         * threadpool.c: mark threadpool threads as background.
24930
24931 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
24932
24933         * decimal.c - define DECINLINE to nothing if not using GCC
24934
24935 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24936
24937         * assembly.c: More refcount fixes.
24938
24939 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24940
24941         * string-icalls.c: if we're not trimming, return the same string.
24942         When not splitting, don't create a new string.
24943
24944 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24945
24946         * image.c:
24947         (mono_image_open): increment the ref_count inside the critical section.
24948
24949 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
24950
24951         * image.c (mono_image_open): Fix reference counting bug.
24952
24953 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
24954
24955         * marshal.c (mono_marshal_type_size) struct alignment changed for 
24956         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
24957         64bits. Avoid leak in mono_marshal_get_native_wrapper when
24958         mono_lookup_pinvoke_call throws.        
24959
24960 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24961
24962         * reflection.c (mono_reflection_parse_type): Fix #49114.
24963
24964         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
24965         temporary workaround for cygwin header problem.
24966
24967         * object.c (mono_object_isinst): Synchronize this with the code
24968         generated by the JIT for casts.
24969
24970 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24971
24972         * reflection.c (encode_type): Fix #38332.
24973
24974 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24975
24976         * marshal.c (mono_marshal_method_from_wrapper): New function to return
24977         the original method from the wrapper method.
24978
24979 2003-09-25  Martin Baulig  <martin@ximian.com>
24980
24981         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
24982         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
24983         (ves_icall_Type_get_IsGenericInstance): New interncall.
24984
24985 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
24986
24987         * object.c: fix cast warning in big endian code.
24988
24989 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
24990
24991         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
24992         
24993 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24994
24995         * assembly.c: don't call check_env from mono_assembly_load. It's
24996         already done once in mono_assemblies_init and may cause headaches when
24997         multiple threads are loading assemblies.
24998
24999 2003-09-19  Martin Baulig  <martin@ximian.com>
25000
25001         * reflection.c (mono_reflection_define_generic_parameter): Don't
25002         allocate `klass->methods', set `klass->flags' to
25003         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25004
25005 2003-09-18  Martin Baulig  <martin@ximian.com>
25006
25007         * class.c (mono_class_init): Don't create `class->methods' if it's
25008         already initialized.
25009
25010         * metadata.c (mono_metadata_load_generic_params): Make this
25011         actually work.
25012
25013         * reflection.c (mono_reflection_define_generic_parameter): Set
25014         parent class and interfaces from the constraints.
25015
25016         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25017         to keep this struct in sync with the declaration in TypeBuilder.cs.
25018
25019 2003-09-17  Martin Baulig  <martin@ximian.com>
25020
25021         * metadata.h (MonoType): Replaced the data's `int type_param'
25022         field with `MonoGenericParam *generic_param'.
25023         (MonoGenericParam): Added `MonoClass *klass'.
25024
25025         * class.c (mono_class_from_gen_param): Removed the
25026         `MonoImage *image' and `int type_num' arguments.
25027
25028         * metadata.c (mono_metadata_parse_generic_param): New static
25029         method; creates a MonoGenericParam which just contains the index.
25030         (do_mono_metadata_parse_type): Call
25031         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25032         MONO_TYPE_MVAR.
25033
25034         * reflection.c (mono_image_typedef_or_ref): Generic type
25035         parameters may be in the same assembly, but never use a typedef
25036         for them.
25037         (mono_reflection_define_generic_parameter): We're now creating a
25038         "real" class for the type parameter; it's now safe to call
25039         mono_class_from_mono_type() on the class'es type, it'll do the
25040         right thing.
25041
25042 2003-09-16  Martin Baulig  <martin@ximian.com>
25043
25044         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25045         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25046         the `symfile' data structure must be fully initialized before it
25047         gets added to the table.
25048
25049 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25050
25051         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25052
25053         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25054         class init trampolines.
25055
25056 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25057
25058         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25059         to the built-in profiler to turn off time and allocation profiling
25060         respectively.
25061
25062 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25063
25064         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25065         g_direct_equal.
25066
25067         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25068         in human readable form.
25069
25070 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25071
25072         * reflection.c icall.c: Fixed warnings.
25073
25074         * image.c (load_class_names): Use a temporary hash table to hold the
25075         namespaces in order to avoid doing many string comparisons.
25076
25077         * image.h: Fix typo.
25078
25079         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25080         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25081         since the NULL case is short-circuited inside g_hash_table_lookup, 
25082         leading to better performance.  
25083
25084         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25085         obtain the first custom attribute for a given index. Depends on the
25086         CustomAttribute table being sorted by the parent field.
25087
25088         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25089         for better performance.
25090
25091 2003-09-07  Martin Baulig  <martin@ximian.com>
25092
25093         * class.c (mono_class_init): If we're a generic instance, inflate
25094         all our methods instead of loading them from the image.
25095         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25096
25097 2003-09-07  Martin Baulig  <martin@ximian.com>
25098
25099         * mono-debug-debugger.c: Added support for constructors.
25100
25101 2003-09-06  Martin Baulig  <martin@ximian.com>
25102
25103         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25104         New interncall.
25105
25106         * reflection.c (mono_reflection_setup_generic_class): Call
25107         ensure_runtime_vtable() to create the vtable.
25108
25109 2003-09-05  Martin Baulig  <martin@ximian.com>
25110
25111         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25112         MONO_TYPE_MVAR.
25113
25114 2003-09-04  Martin Baulig  <martin@ximian.com>
25115
25116         * reflection.c (mono_reflection_define_generic_parameter): Generic
25117         parameters start with zero.
25118
25119 2003-09-04  Martin Baulig  <martin@ximian.com>
25120
25121         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25122
25123         * reflection.h (MonoReflectionGenericParam): New typedef.
25124         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25125         the generic parameters from the managed TypeBuilder.
25126
25127         * reflection.c (mono_reflection_define_generic_parameter): New function.
25128         (mono_reflection_create_runtime_class): Encode generic parameters.
25129         (mono_reflection_setup_generic_class): New function; this is
25130         called after adding adding all generic params to the TypeBuilder.
25131         (encode_type): Added MONO_TYPE_VAR.
25132
25133 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25134
25135         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25136         here from the JIT.
25137
25138         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25139         load hook.
25140
25141 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25142
25143         * reflection.h reflection.c class.h class.c: Delete duplicate 
25144         definition of mono_type_get_name () from reflection.c and export the
25145         one in class.c.
25146
25147         * class.c: Class loading fixes from Bernie Solomon 
25148         (bernard@ugsolutions.com).
25149
25150         * reflection.c: Endianness fixes from Bernie Solomon 
25151         (bernard@ugsolutions.com).
25152         
25153 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25154
25155         * assembly.h assembly.c: Define a file format version for AOT
25156         libraries.
25157         
25158         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25159
25160         * appdomain.h (MonoJitInfo): New field to determine whenever the
25161         code is domain neutral.
25162         
25163 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25164
25165         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25166
25167 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25168
25169         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25170         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25171         Avoid caching the result since strings must be domain specific. Fixes
25172         #48050.
25173
25174 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25175
25176         * marshal.c (mono_marshal_init): Make this callable multiple times
25177         since it is hard to find a correct place to call it.
25178
25179         * object.c (mono_runtime_class_init): Execute static constructors in
25180         the correct appdomain.
25181
25182         * image.c (build_guid_table): Handle the case when multiple images have
25183         the same GUID.
25184
25185 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25186
25187         * icall.c: added a couple of icalls for System.Web.
25188
25189 2003-08-28  Martin Baulig  <martin@ximian.com>
25190
25191         * icall.c (ves_icall_Type_BindGenericParameters): Use
25192         `klass->generic_inst' instead of `&klass->byval_arg' in the
25193         mono_type_get_object() call.  The returned type must be
25194         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25195
25196 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25197
25198         * NOTES: New file.
25199
25200         * object.c (mono_class_proxy_vtable): Make it thread safe.
25201
25202         * pedump.c: Fix warning.
25203
25204         * object.c appdomain.h: Get rid of metadata_section. 
25205         It is no longer needed and it was causing deadlocks with domain->lock.
25206
25207         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25208
25209 2003-08-26  Martin Baulig  <martin@ximian.com>
25210
25211         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25212
25213 2003-08-26  Martin Baulig  <martin@ximian.com>
25214
25215         * pedump.c (main): Call mono_metadata_init(),
25216         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25217         and mono_loader_init().
25218
25219 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25220
25221         * loader.h: Add missing include to fix build.
25222
25223         * image.h: mono_image_load_references is no more.
25224
25225         * assembly.c: Reworked assembly loading to make it really thread safe.
25226         After these changes, the assembly returned by mono_assembly_open is
25227         fully initialized, i.e. all its references assemblies are loaded.
25228
25229         * assembly.c (mono_image_load_references): Renamed to 
25230         mono_assembly_load_references, and made private, since clients no
25231         longer need to call it.
25232
25233         * class.c: Removed calls to mono_assembly_load_references, since it was
25234         a source of deadlocks.
25235
25236         * loader.h loader.c class.h class.c: Protect data structures using a 
25237         new lock, the loader lock.
25238
25239         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25240         GPtrArrays only when needed.
25241
25242         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25243         into empty structures by mcs. Fixes pinvoke7.cs.
25244         
25245         * domain.c (mono_init): Call a new initialization function.
25246
25247         * appdomain.c (mono_runtime_init): Call the new initializer function
25248         of the marshal module.
25249
25250         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25251         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25252
25253         * marshal.h marshal.c: Added locks around the wrapper caches to make
25254         this module thread safe.
25255
25256         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25257         this argument. Fixes pinvoke1.exe.
25258
25259 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25260
25261         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25262         enumeration of values. Removed fields to store remote call output values in
25263         MonoAsyncResult. Not needed any more.
25264         * object.c: Initialize call_type and async_result fields in mono_message_init.
25265         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25266         dispatching the message.
25267         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25268         async call to finish. To do it use a message with EndInvoke call type.
25269
25270 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25271
25272         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25273         determines whenever a method has marshalling info.
25274
25275 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25276
25277         * assembly.c: fix the build on windows.
25278
25279 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25280
25281         * object.cs: Fixed bug #47785.
25282
25283 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25284
25285         * string-icalls.c (StringReplace): If their are no occurances of
25286         the old string found return a reference to the supplied
25287         string. This saves some memory and matches MS behavoir.
25288         
25289 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25290
25291         * socket-io.c: fixed compilation for systems that define AF_INET6
25292         and don't define SOL_IP/SOL_IPV6.
25293
25294 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25295
25296         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25297         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25298
25299         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25300
25301         * domain.c: Make this module thread safe.
25302
25303         * domain.c (mono_init): Call new initialization function.
25304
25305         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25306         reference types too. Fixes #38812.
25307
25308         * image.c (mono_image_init): Fixed warnings.
25309
25310         * class.c (mono_class_from_typeref): Handle assembly load failure
25311         correctly.
25312
25313         * appdomain.c (add_assemblies_to_domain): Handle the case when
25314         the references of an assembly are not yet loaded.
25315
25316         * metadata.c image.c assembly.c: Moved initialization of global
25317         variables to a separate function called at startup since lazy 
25318         initialization of these variables is not thread safe.
25319         
25320         * image.c assembly.c: Made this module thread safe by adding locks in 
25321         the appropriate places.
25322
25323         * domain.c (mono_init): Call the new initialization functions of the
25324         three modules.
25325
25326 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
25327
25328         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
25329           make a direct call. It is proxy's work to make the call asynchronous.
25330           mono_delegate_end_invoke(): If the targe is a proxy, just collect
25331           the return values.
25332         * object.cs: mono_method_call_message_new(): read AsyncResult and
25333           state object from parameters list, if this info is requested.
25334         * object.h: Added fields to store remote call output values in
25335           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
25336
25337 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25338
25339         * object.h: add needed fields to MonoThread.
25340         * threads.c, threads.h: allow registering a function to cleanup data
25341         allocated per thread by the JIT.
25342
25343 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * loader.h: portability fix by Bernie Solomon
25346         * <bernard@ugsolutions.com>.
25347
25348 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
25349
25350         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
25351         return a MonoArray. This simplifies the code and also ensures that
25352         the cache allways contains an object reference as a value.
25353
25354         * icall.c (ves_icall_get_parameter_info): Simplified using the new
25355         function.
25356
25357 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25358
25359         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
25360         fixes a problem with byte ordering when getting the address family for
25361         a socket.
25362
25363 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
25364
25365         * .cvsignore: Added monosn.
25366
25367         * reflection.h reflection.c loader.c: Added support for parameter
25368         marshalling to dynamically created types. Fixes #47295.
25369
25370 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25371
25372         * rand.c: remove useless warnings.
25373
25374 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25375
25376         * class.c: implemented ldtoken for methods and fieldrefs.
25377
25378 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25379
25380         * threadpool.c: when mono_async_invoke was called, no one took care of
25381         monitoring the queue. So if the method invoked took some time and we
25382         got new async invoke requests after 500 ms (the thread created waited
25383         that long in WaitForSingleObject), the new async invoke was not called
25384         until the previous one finished.
25385
25386         This is fixed now. Thanks to Totte for helping with it.
25387
25388 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25389
25390         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
25391
25392 2003-08-11  Martin Baulig  <martin@ximian.com>
25393
25394         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
25395
25396 2003-08-06  Martin Baulig  <martin@ximian.com>
25397
25398         * mono-debug-debugger.c: Added support for static fields,
25399         properties and methods.
25400
25401 2003-08-06  Martin Baulig  <martin@ximian.com>
25402
25403         * mono-debug-debugger.c: Don't store the MonoString's vtable to
25404         make this work for applications with multiple application domains.
25405
25406 2003-08-04  Martin Baulig  <martin@ximian.com>
25407
25408         * mono-debug-debugger.c: Completely reworked the type support; the
25409         most important thing is that we're now just using one single
25410         `MonoType' instance per type.
25411
25412 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
25413
25414         * mono-endian.h, mono-endian.c, icall.c: Added icall
25415         ves_icall_System_Double_AssertEndianity to assert double word endianity
25416         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
25417
25418 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25419
25420         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
25421         support, icalls and fixes.
25422
25423 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
25424
25425         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
25426         classes that are a punctuation character in .NET is not the same a
25427         g_unichar_ispunct.
25428
25429 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25430
25431         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
25432
25433 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
25434
25435         * icall.c: Add new MemCopy internalcall.
25436         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
25437         Simplified code; It is not necessary to handle all the cases here,
25438         as the C# code takes care of it.  Only handle the case of the name
25439         resource embedded into the assembly.
25440
25441         Changed signature to return the data pointer and the size of the
25442         data. 
25443
25444 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
25445
25446         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
25447         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
25448
25449 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25450
25451         * socket-io.c: ignore EINTR error in select.
25452
25453 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
25454
25455         * class.h, class.c: removed unused subclasses field in MonoClass.
25456
25457 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25458
25459         * icall.c: improve fix of get_base_definition(). If the parent class
25460           doesn't have the mehod, look at the parent of the parent.
25461         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
25462           to check if a parameter is an in or out parameter
25463           (PARAM_ATTRIBUTE_IN is not set by default).
25464           mono_method_return_message_restore(): Use mono_class_value_size to
25465           get the size of a value type. mono_type_stack_size (parameterType)
25466           does not return the correct value if parameterType is byRef.
25467           mono_load_remote_field(), mono_load_remote_field_new(),
25468           mono_store_remote_field(), mono_store_remote_field_new():
25469           raise exception if the remote call returns an exception.
25470
25471 2003-07-28  Martin Baulig  <martin@ximian.com>
25472
25473         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
25474         method.  This is a wrapper around mono_runtime_invoke() which
25475         boxes the instance object if neccessary.
25476
25477 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25478
25479         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
25480         metadata.h, row-indexes.h, verify.c: first cut of generics support.
25481
25482 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25483
25484         * icall.c: disable mcs bug workaround.
25485
25486 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25487
25488         * object.c (mono_runtime_class_init): Take the metadata_section
25489         mutex before obtaining the domain mutex.
25490
25491         * appdomain.h: Added definition of metadata_section mutex here. 
25492
25493         * object.c: define metadata_mutex here.
25494
25495 2003-07-24  Ravi Pratap  <ravi@ximian.com>
25496
25497         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
25498         fixed.
25499
25500 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
25501
25502         * reflection.c: Fix bug #46669
25503
25504 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25505
25506         * exception.c:
25507         * exception.h:
25508         * icall.c:
25509         * object.h: fill in the type name for TypeLoadException.
25510
25511 2003-07-23  Ravi Pratap  <ravi@ximian.com>
25512
25513         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
25514         relationship between TypeBuilders while compiling corlib) and bug
25515         45993 (Array types returned from the runtime while compiling
25516         corlib were from the loaded corlib).
25517
25518 2003-07-22  Martin Baulig  <martin@ximian.com>
25519
25520         * mono-debug-debugger.c: Reworked the type support a bit more;
25521         distinguish between types and classes.
25522
25523 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
25524
25525         * icall.c: add IsArrayImpl icall.
25526
25527 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
25528
25529         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
25530         initializing real_size only once. Also fix bug #46602.
25531
25532 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
25533
25534         * object.c: Renamed mono_metadata_section to metadata_section.
25535
25536 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
25537
25538         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
25539           empty array if the type is an array. Fixed.
25540           ves_icall_MonoMethod_get_base_definition: if the base method
25541           is abstract, get the MethodInfo from the list of methods of
25542           the class.
25543         * reflection.c: ParameterInfo.PositionImpl should be zero-based
25544           and it was 1-based. Fixed in mono_param_get_objects.
25545
25546 2003-07-20  Martin Baulig  <martin@ximian.com>
25547
25548         * mono-debug.h: Set version number to 31.
25549         (mono_debug_init): Added `MonoDomain *' argument.
25550
25551         * mono-debug-debugger.c: Reworked the type support; explicitly
25552         tell the debugger about builtin types; pass the `klass' address to
25553         the debugger.
25554
25555 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
25556
25557         * image.c: Allow new metadata tables to be loaded without a
25558         warning. Also update the warning message to give the new constant value.
25559                 
25560 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25561
25562         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
25563         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
25564         array type representation changes.
25565
25566 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25567
25568         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
25569         on Environment.Exit () call.
25570
25571 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25572
25573         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
25574         requires a matching corlib.
25575
25576 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25577
25578         * Changelog: My editor decided to add a CR to each line. Sorry about that.
25579           Committed again without the CRs.
25580         
25581 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25582
25583         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
25584           getting it from the "this" socket instance. Did not work
25585           if the socket is a subclass of Socket.
25586           Also fixed bug #35371.
25587
25588 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25589
25590         * metadata.c: fixed size for TypedByRef.
25591         * loader.c: when searching for a method, consider the vararg amrker.
25592         * unicode.c, decimal.c: constify some arrays.
25593
25594 2003-07-15  Dick Porter  <dick@ximian.com>
25595
25596         * socket-io.c: Fixed compilation for gcc < 3.2.
25597
25598         Fixed compilation for machines that don't have AF_INET6 (thanks to
25599         Bernie Solomon <bernard@ugsolutions.com> for that part.)
25600
25601         Fixed compile warnings.
25602         
25603         Fixed formatting and line endings.
25604
25605 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
25606
25607         * socket-io.h:
25608         * socket-io.c: Added IPv6 support.
25609
25610 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
25611
25612         * class.c (mono_class_is_assignable_from): New function to implement
25613         the is_assignable_from logic. Used by mono_object_isinst, 
25614         Type::IsAssignableFrom () and the interpreter.
25615
25616         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
25617         Object, even interfaces.
25618         
25619         * object.c (mono_object_isinst): Implement in terms of 
25620         is_assignable_from.
25621
25622         * icall.c (ves_icall_type_is_assignable_from): New icall.
25623
25624 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
25625
25626         * domain.c (foreach_domain): fix compiler warning.
25627
25628 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
25629
25630         * image.c (load_metadata_ptrs): use g_strndup because strndup is
25631         not available on all plattforms
25632
25633 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
25634
25635         * image.h image.c: Store the metadata version string in MonoImage.
25636         * icall.c: New icall to retrieve the image version.
25637         * reflection.c (create_dynamic_image): Fill in the image version field
25638         * reflection.c (build_compressed_metadata): Use the image version
25639         from the image structure.
25640
25641 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25642
25643         * appdomain.c: modified comment.
25644         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
25645         That will be its last iteration when mono_gc_cleanup is called from
25646         mono_runtime_cleanup and before the domain is unloaded.
25647
25648         Fixes bug #45962.
25649
25650 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
25651
25652         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
25653         attributes.
25654
25655 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25656
25657         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
25658         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
25659         Bernie Solomon <bernard@ugsolutions.com>.
25660
25661 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25662
25663         * object.c, object.h: provide mono_object_new_fast() for faster
25664         allocation in some special cases.
25665
25666 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25667
25668         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
25669         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
25670
25671 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25672
25673         * threadpool.c: fix leaks.
25674
25675 2003-07-01  Dick Porter  <dick@ximian.com>
25676
25677         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
25678         using MonoGHashTables.  Fixes threadpool bug posted to list.
25679
25680 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25681
25682         * image.h, image.c: added support to load an assembly from a byte array.
25683         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
25684         assembly bundle support.
25685
25686 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
25687
25688         * threadpool.c (mono_thread_pool_add): keep a reference to the
25689         AsyncResult to prevent GC
25690
25691 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25692
25693         * class.c: leak fix.
25694
25695 2003-06-25  Dick Porter  <dick@ximian.com>
25696
25697         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
25698         for the async object, the WaitHandle object will close the handle.
25699         Fixes bug 45321.
25700
25701 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25702
25703         * class.c: in mono_array_class_get (), lookup from the hash with the
25704         same type we insert: this works around a bug in
25705         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
25706         lluis. The real fix will have to wait for after the release.
25707
25708 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25709
25710         * icall.c: fix memory leak when getting type members.
25711
25712 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25713
25714         * reflection.c: added more pubtoken special cases.
25715
25716 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25717
25718         * class.c: handle field offset correctly when class size
25719         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
25720
25721 2003-06-20  Martin Baulig  <martin@ximian.com>
25722
25723         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
25724         *image' field.
25725
25726 2003-06-20  Martin Baulig  <martin@ximian.com>
25727
25728         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
25729
25730 2003-06-20  Martin Baulig  <martin@ximian.com>
25731
25732         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
25733         just distinguish between variables in registers and variables at
25734         an offset relative to a register.
25735
25736 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25737
25738         * icall.c: #ifdef out latest changes until mcs is fixed.
25739
25740 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25741
25742         * icall.c: return members in metadata order.
25743
25744 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25745
25746         * icall.c: avoid infinite loop in GetTimeZoneData.
25747
25748 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25749
25750         * icall.c: added Marshal.Prelink/All icalls.
25751
25752 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25753
25754         * object.c, object.h: fix warnings and do some overflow checking
25755         when creating arrays.
25756
25757 2003-06-17  Dick Porter  <dick@ximian.com>
25758
25759         * file-io.h:
25760         * file-io.c: File attributes need to be tweaked slightly when
25761         passed from the managed to the w32 world.
25762
25763 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25764         * profiler.h profiler-private.h profiler.c: Rework last patch
25765         based on suggestion by Paolo.
25766         
25767 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25768
25769         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
25770         instruction level coverage data collection.
25771         * profiler.h profiler.c (: Added new callback function which can be
25772         used by the profiler to limit which functions should have coverage
25773         instrumentation.
25774         * profiler.c (mono_profiler_load): Call g_module_build_path to
25775         generate the file name of the profiler library.
25776
25777 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25778
25779         * profiler.c, profiler.h, profiler-private.h: added basic block 
25780         coverage profiling API.
25781
25782 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
25783
25784         * reflection.c (mono_reflection_create_runtime_class): Add support
25785         for events in dynamically generated code.
25786
25787         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
25788         not allocated.
25789
25790 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25791
25792         * icall.c: when getting timezone info, return reasonable values if we
25793         can't get the actual data.
25794
25795 2003-06-14  Dick Porter  <dick@ximian.com>
25796
25797         * threads.c (start_wrapper): Remove the reference to the thread
25798         object in the TLS data, so the thread object can be finalized.
25799         This won't be reached if the thread threw an uncaught exception,
25800         so those thread handles will stay referenced :-( (This is due to
25801         missing support for scanning thread-specific data in the Boehm GC
25802         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
25803
25804 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
25805
25806         * reflection.c: ensure streams and tables are first allocated with
25807         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
25808
25809 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25810
25811         * icall.c: fixed GetElementType for byrefs (bug# 44792).
25812
25813 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
25814
25815         * reflection.c (mono_reflection_create_runtime_class): Add support for
25816         properties to dynamically created classes.
25817         * reflection.c: Fix a few places where non-MonoObjects were inserted
25818         into the tokens hashtable.
25819
25820 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25821
25822         * object.c: some support to handle out of memory exceptions.
25823
25824 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
25825
25826         * marshal.c (mono_marshal_get_native_wrapper): support reference
25827         return types
25828
25829 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25830
25831         * object.h, object.c: more portability stuff from Bernie Solomon.
25832         Unexport mono_object_allocate(). Added mono_object_unbox ().
25833         Set exitcode when an unhandled exception is thrown.
25834
25835 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
25836
25837         * marshal.c (mono_marshal_get_native_wrapper): use custom
25838         marshaler for return types.
25839
25840 2003-06-10  Dick Porter  <dick@ximian.com>
25841
25842         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
25843         ip_mreq is available
25844
25845 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25846
25847         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
25848         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
25849         by Bernie Solomon <bernard@ugsolutions.com>.
25850
25851 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
25852
25853         * gc.c (mono_gc_init): Avoid error message on shutdown when
25854         GC_DONT_GC=1 is used.
25855
25856         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
25857         New icall to return the GUID of a module.
25858
25859 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25860
25861         * class.c: ensure instance size always includes the parent's size
25862         even whem class size is set explicitly (fixes bug#44294).
25863
25864 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25865
25866         * profiler.h, profiler.c: made the simple profiler thread-safe,
25867         get more accurate timing info. Allow the loading of an
25868         externally-developed profiler module.
25869
25870 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
25871
25872         * marshal.c (mono_marshal_get_native_wrapper): improved
25873         class/byref arguments.
25874         (mono_marshal_get_native_wrapper): better string marshaling support.
25875
25876 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25877
25878         * class.c: ensure .pack and .size are handled correctly and
25879         simplified layout of static fields.
25880
25881 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25882
25883         * appdomain.c
25884         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
25885
25886         * loader.c (mono_lookup_pinvoke_call): look for modules in the
25887         current directory (fix bug 44008)
25888
25889 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
25890
25891         * marshal.c (mono_marshal_get_native_wrapper): started support for
25892         custom marshalers.
25893         (mono_delegate_to_ftnptr): consider marshalling specifications
25894
25895 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25896
25897         * reflection.c, reflection.h: emit custom marshal info.
25898
25899 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25900
25901         * object.c: free the GError.
25902         * icall.c: added CloseEvent_internal.
25903         * threads.[ch]:
25904         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
25905         call.
25906
25907 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
25908
25909         * loader.c (mono_method_get_signature): Add support for dynamic
25910         assemblies.
25911
25912 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25913
25914         * reflection.c: fixed bug #43905.
25915
25916 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25917
25918         * class.c, domain.c, icall.c, metadata.h, object.h: support for
25919         handling TypedReference and ArgIterator.
25920         * loader.c, loader.h: added function to get signature at call site.
25921
25922 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25923
25924         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
25925         data readonly. Buglets and warning fixes. Some MethodSpec support.
25926
25927 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25928
25929         * class.h, class.c, object.c: remove relative numbering support.
25930
25931 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
25932
25933         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
25934         free the string, until we get a chance to fix Gtk#
25935
25936 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25937
25938         * marshal.c: revert last patch.
25939
25940 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25941
25942         * icall.c: updates for new mono_class_vtable() not calling
25943         the type constructor anymore.
25944
25945 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25946
25947         * object.h, object.c: separate vtable creation from type
25948         initialization. Make running the .cctor thread safe.
25949
25950 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25951
25952         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
25953
25954 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25955
25956         * loader.c (mono_get_method): consider calling convention
25957
25958 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
25959
25960         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
25961         to return the invisible global type for a module.
25962
25963         * reflection.c (mono_image_build_metadata): Emit global fields too.
25964
25965 2003-05-20  Peter Williams  <peterw@ximian.com>
25966
25967         * loader.c (mono_lookup_internal_call): Add a few newlines.
25968
25969 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
25970
25971         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
25972         literal strings.
25973
25974         * appdomain.c (set_domain_search_path): Recalculate search path when
25975         AppDomainSetup.PrivateBinPath changes.
25976
25977         * object.c (mono_class_compute_gc_descriptor): It turns out some
25978         parts of the class libs (like System.Thread) holds pointers to
25979         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
25980         to treat native int a pointer type here.
25981         
25982 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
25983
25984         * appdomain.h, domain.c: add hashtable for jump target resolution.
25985
25986 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
25987
25988         * reflection.h reflection.c icall.c: Added new icalls 
25989         GetManifestResourceInfoInternal, GetModulesInternal and support
25990         infrastructure.
25991
25992 2003-05-16  Dick Porter  <dick@ximian.com>
25993
25994         * icall.c:
25995         * file-io.h:
25996         * file-io.c: Implement System.IO.MonoIO::GetTempPath
25997
25998 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
25999
26000         * object.c: mono_store_remote_field: little fix to previous patch.
26001
26002 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26003
26004         * class.c: add constructors to array classes.
26005         * icall.c: special case array construction for InternalInvoke (),
26006
26007 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26008
26009         * class.h class.c reflection.c object.c: Added support for field
26010         defaults in dynamically generated classes.
26011
26012 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26013
26014         * reflection.c: properly encode charset for ddlimport.
26015
26016 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26017
26018         * threads.c: allow compiling without GC.
26019
26020 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26021
26022         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26023         handling of thread static data.
26024
26025 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26026
26027         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26028
26029 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26030
26031         * class.c (mono_array_class_get): always set the serializable flags
26032         (mono_array_class_get): always set the SEALED attribute for array types
26033
26034 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26035
26036         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26037         attributes (fix for bug 42021).
26038
26039 2003-05-12  Dick Porter  <dick@ximian.com>
26040
26041         * gc.c: Don't run finalizers when the finalizer thread is
26042         finishing up, because the default domain has already been
26043         destroyed.
26044
26045 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26046
26047         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26048         value is null, we should throw an exception.   This is slightly
26049         different than the other conventions used for the constructor.
26050
26051 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26052
26053         * socket-io.c: fixed windows build.
26054
26055 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26056
26057         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26058
26059 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26060
26061         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26062         compilers.
26063
26064 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26065
26066         * class.c (mono_class_layout_fields): Add experimental GC aware
26067         auto layout facility. Requires class library changes to work correctly.
26068
26069         (mono_class_setup_vtable): Avoid overriding explicit interface
26070         method implementations. Fixes iface3.exe test.
26071
26072         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26073         object reference.
26074         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26075         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26076
26077         * metadata.h: Add new type classification macro which determines
26078         whenever the type holds an object reference.
26079
26080 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26081
26082         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26083
26084 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26085
26086         * gc.c (finalizer_thread): Work around a GC bug.
26087
26088 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26089
26090         * marshal.c (emit_struct_conv): allow unions
26091
26092         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26093
26094 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26095
26096         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26097
26098 2003-05-06  Martin Baulig  <martin@ximian.com>
26099
26100         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26101
26102 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26103
26104         * socket-io.c:
26105         (Select_internal): allow NULLs, don't create arrays if not needed.
26106         Coupled with Socket.cs changes.
26107
26108         * threadpool.c:
26109         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26110         register a finalizer for it that will close the semaphore handle. This
26111         fixes the leak and make Lupus' test run with > 4080 loops.
26112
26113 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26114
26115         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26116         Jerome Laban (bug #42287)
26117
26118 2003-05-02  Martin Baulig  <martin@ximian.com>
26119
26120         * debug-mono-symfile.h
26121         (MonoSymbolFile): Moved declaration into mono-debug.h.
26122         (MonoDebugMethodJitInfo): Likewise.
26123         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26124         argument.
26125         (_mono_debug_address_from_il_offset): Take a
26126         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26127
26128         * mono-debug.h
26129         (MonoDebugDomainData): New struct.
26130         (mono_debug_get_domain_data): New function.
26131         (mono_debug_add_method): Take an additional `MonoDomain *'
26132         argument.
26133         (mono_debug_source_location_from_address): Likewise.
26134         (mono_debug_il_offset_from_address): Likewise.
26135         (mono_debug_address_from_il_offset): Likewise.
26136
26137 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26138
26139         * reflection.c: one more check for null type in custom attrs.
26140
26141 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26142
26143         * reflection.c: avoid warning (comparison is always false due to limited
26144         range of data type).
26145
26146 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26147
26148         * icall.c: throw an exception in Type.GetField if the argument 'name'
26149         is NULL.
26150
26151 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26152
26153         * reflection.c: fixed handling of enums in named arguments to custom
26154         attributes (bug #42123).
26155
26156 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26157
26158         * reflection.c: use the right array element type and handle
26159         a null for a Type argument, too.
26160
26161 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26162
26163         * reflection.c: handle arrays as arguments to custom attributes.
26164
26165 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26166
26167         * reflection.c: handle a string value in a custom attr
26168         ctor that takes an object.
26169
26170 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26171
26172         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26173         (fix bug #42063)
26174
26175 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26176
26177         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26178
26179 2003-04-27  Martin Baulig  <martin@ximian.com>
26180
26181         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26182         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26183         MONO_DEBUGGER_EVENT_BREAKPOINT.
26184         (mono_breakpoint_trampoline_code): Removed.
26185         (mono_debugger_event_handler): The last argument is now a
26186         `guint32'.
26187         (mono_debugger_insert_breakpoint_full): Removed the
26188         `use_trampoline' argument.
26189         (mono_debugger_method_has_breakpoint): Likewise.
26190         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26191         mono_debugger_breakpoint_callback(); take the method and
26192         breakpoint number as arguments.
26193
26194 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26195
26196         * metadata.c: fix off by one when loading parameters attributes.
26197
26198 2003-04-24  Martin Baulig  <martin@ximian.com>
26199
26200         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26201
26202 2003-04-24  Martin Baulig  <martin@ximian.com>
26203
26204         * mono-debug-debugger.c: Moved all code which interacts with the
26205         Mono Debugger here.
26206
26207         * debug-mono-symfile.c: This code now just deals with the symbol
26208         file itself, the debugger code is now in mono-debug-debugger.c.
26209
26210 2003-04-23  Martin Baulig  <martin@ximian.com>
26211
26212         * mono-debug.c (mono_debug_source_location_from_il_offset):
26213         New method; like mono_debug_source_location_from_address(), but
26214         takes an IL offset instead of a machine address.
26215
26216 2003-04-23  Martin Baulig  <martin@ximian.com>
26217
26218         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26219         `line' field; this is now computed by the debugger.
26220
26221 2003-04-23  Martin Baulig  <martin@ximian.com>
26222
26223         * mono-debug.[ch]: New files.  This is the new debugging interface.
26224
26225         * mono-debug-debugger.[ch]: New files.  Moved all code which
26226         interacts with the Mono Debugger here.
26227
26228 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26229
26230         * domain.c (mono_init): initialize mono_defaults.monitor_class
26231
26232 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26233
26234         * reflection.c (method_encode_code): Add a spicy exception to help
26235         future compiler authors.
26236
26237 2003-04-21  Martin Baulig  <martin@ximian.com>
26238
26239         * icall.c
26240         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26241         Make this work with relative pathnames; g_filename_to_uri() needs
26242         an absolute filename.
26243
26244 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26245
26246         * icall.c: Track name changes in Object and ValueType.
26247
26248 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26249
26250         * metadata.c (mono_type_stack_size): size should be a multiple of
26251         sizeof (gpointer)
26252
26253 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26254
26255         * gc.c:
26256         (internal_domain_finalize): moved into mono_domain_finalize. No need
26257         to create another thread because the finalizers will be run in the
26258         finalizer thread.
26259         
26260         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26261         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26262         to be run (MS does this too).
26263
26264 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26265
26266         * object.c (mono_class_compute_gc_descriptor): Update comment.
26267
26268         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26269
26270         * image.h: Add synchronized wrapper cache.
26271
26272         * image.c (do_mono_image_open): Initialize cache.
26273
26274         * reflection.c (create_dynamic_mono_image): Initialize cache.
26275
26276 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26277
26278         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26279         ves_icall_System_Buffer_ByteLengthInternal.
26280
26281 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26282
26283         * reflection.c: setup klass->nested_in earlier. Allow
26284         a dash in the assembly name.
26285
26286 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26287
26288         * metadata.c (mono_type_to_unmanaged): dont access
26289         type->data.klass for MONO_TYPE_OBJECT
26290         (mono_type_to_unmanaged): consider System.Delegate class
26291
26292 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26293
26294         * class.c: just setup supertypes in the proper place instead of
26295         initializing the full element class for arrays.
26296
26297 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26298
26299         * class.c: ensure the element class of arrays is initialized.
26300         Setup the supertype info for array classes, too.
26301
26302 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26303
26304         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26305
26306 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26307
26308         * Makefile.am: re-added -m option when running cygpath. This way,
26309         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26310         separator.
26311         * mono-config.c: same codepath for locating mono config file for WIN32
26312         and the rest.
26313         * assembly.c: if mono_assembly_setrootdir is called, don't override
26314         the value set.
26315
26316 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26317
26318         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
26319         MONO_ASSEMBLIES variable.
26320
26321 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
26322
26323         * icall.c: added Assembly::GetNamespaces() icall.
26324
26325 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26326
26327         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
26328
26329 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
26330
26331         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
26332         * object.c: fixed bug in the construction of vtable for proxies
26333
26334 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
26335
26336         * object.c (mono_array_new): Mark mono_array_new as an icall.
26337
26338 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26339
26340         * class.c: fixed test for public method when overriding interfaces.
26341         Closes bug #40970.
26342
26343 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26344
26345         * appdomain.h, domain.c: added mono_domain_foreach() to
26346         be able to access the currently loaded appdomains.
26347         * object.c: make string interning work across sppdomains.
26348         Mark some functions for use as icalls.
26349
26350 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26351
26352         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
26353
26354         * reflection.h reflection.c: Allocate long living data using 
26355         GC_MALLOC_ATOMIC so the collector does not need to scan it.
26356
26357         * reflection.c: Double the allocation size in streams instead of
26358         increasing it, to prevent unneccesary copying on large assemblies.
26359         
26360         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
26361         creation if the assembly does not have the Run flag set.
26362
26363 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
26364
26365         * class.h: avoid the C++ keywords in header files (Jerome Laban
26366         spotted and fixed this).
26367
26368 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26369
26370         * object.c:
26371         (mono_unhandled_exception): fill in the arguments for the
26372         UnhandledException event. Only trigger that event for the default
26373         domain (as MS does).
26374
26375 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
26376
26377         * object.c: Improve typed allocation stuff based on suggestions from
26378         Paolo. Also turn it on if the GC library supports it.
26379
26380 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26381
26382         * object.c object.h class.h: Added experimental typed allocation
26383         facility using the interfaces in gc_gcj.h.
26384
26385         * os/gc_wrapper.h: Added new include files.
26386         
26387 2003-04-03  Martin Baulig  <martin@ximian.com>
26388
26389         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
26390         which is not yet enabled by default.
26391
26392         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
26393         functions.
26394         (mono_gc_lock, mono_gc_unlock): New static functions.
26395
26396         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
26397         functions; stop/start the world for the garbage collector.  This
26398         is using the windows API; we need to complete the SuspendThread()/
26399         ResumeThread() implementation in the io-layer to make this work on Unix.
26400         (mono_gc_push_all_stacks): New public function; tells the garbage
26401         collector about the stack pointers from all managed threads.
26402
26403 2003-04-03  Martin Baulig  <martin@ximian.com>
26404
26405         * object.h (MonoThread): Added `gpointer stack_ptr'.
26406
26407         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
26408
26409 2003-04-03  Martin Baulig  <martin@ximian.com>
26410
26411         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
26412
26413 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26414
26415         * reflection.c (typebuilder_setup_fields): Initialize field.first and
26416         field.last.
26417
26418 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
26419
26420         * loader.c (mono_lookup_internal_call): Report the corlib that is
26421         out of sync.
26422
26423 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
26424
26425         * icall.c (ves_icall_type_GetTypeCode): fixed check for
26426         System.DBNull (it's class not valuetype).
26427
26428 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26429
26430         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
26431         if the array method was already assigned a token (fixes bug#40646).
26432
26433 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
26434
26435         * reflection.c (mono_reflection_get_type): Attempt type resolve even
26436         if no assembly is given.
26437
26438 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
26439
26440         * metadata.h: Added the new tables.
26441
26442         * row-indexes.h: Added definitions for new tables.
26443
26444         * metadata.c: Add schemas for new tables, and add support for
26445         computing the sizes of them.
26446
26447         * class.c: Update for handling the new type cases.
26448
26449 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
26450
26451         * metadata.h (MONO_TYPE_IS_VOID): new macro
26452
26453 2003-03-31  Martin Baulig  <martin@ximian.com>
26454
26455         * threads.h (MonoThreadCallbacks): Added `thread_created'.
26456
26457         * threads.c (mono_thread_new_init): Call `thread_created' in the
26458         mono_thread_callbacks.
26459
26460 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
26461
26462         * loader.h: added marshalbyrefobject_class to mono_defaults
26463         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
26464         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
26465           generation of output parameters.
26466           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
26467         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
26468           contextbound and the target object belongs to the context of the caller.
26469         * object.h: added context and unwrapped_server variables in MonoRealProxy.
26470         * object.c: Implemented support for interfaces and abstract classes
26471           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
26472           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
26473
26474 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
26475
26476         * class.h class.c (mono_class_is_subclass_of): New function.
26477         
26478         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
26479         routines for most common case (calls from ArrayList::ToArray).
26480
26481         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
26482         routine so programs which call Environment::Exit() can be profiled.
26483
26484         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
26485         Added MONO_ARCH_SAVE_REGS.
26486
26487         * icall.c (ves_icall_type_is_subtype_of): Use new function.
26488
26489 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
26490
26491         * blob.h: Add a couple of new MonoType types definitions.
26492
26493         * tabledefs.h: Add a couple of new call convs.
26494
26495 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
26496
26497         * reflection.h (MonoReflectionDynamicAssembly): track changes in
26498         the layout of the class.
26499
26500         * reflection.c (alloc_table): double the size on overflow to avoid
26501         unnecessary copying.
26502
26503         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
26504         avoid filling out metadata tables and blobs. Also set mb->ilgen to
26505         null so it can be garbage collected.
26506         
26507 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
26508
26509         * reflection.c (mono_reflection_get_type): Return the resolved type
26510         only if it is in the assembly we searched.
26511
26512         * reflection.c (ensure_runtime_vtable): Initialize method slots.
26513
26514         * class.c (mono_class_setup_vtable): Set the slot of the overriding
26515         method.
26516
26517 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26518
26519         * appdomain.c:
26520         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
26521         the right one is 'file:///blah', but MS allows it.
26522         * assembly.c:
26523         (mono_assembly_open): allow 'file://blah'
26524
26525         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
26526
26527 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
26528
26529         * socket-io.c: fixes bug #40310.
26530
26531 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
26532
26533         * reflection.c (mono_reflection_parse_type): handle deeply nested
26534         types correctly.
26535
26536         * reflection.c (mono_image_create_token): Use unique token values
26537         since they will be put into a hash table.
26538
26539         * class.c (mono_class_setup_vtable): If a method occurs in more than
26540         one place in the vtable, and it gets overriden, then change the
26541         other occurances too.
26542
26543         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
26544         object as return type.
26545
26546 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26547
26548         * icall.c: Deleted "ToString" implementation for double and float
26549         because they are full implemented in managed code.
26550
26551 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26552
26553         * reflection.c, reflection.h: implemented and exported functions
26554         to retrieve info about custom attributes.
26555
26556 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26557
26558         * appdomain.c: moved Uri handling to assembly.c
26559         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
26560         work when using a file Uri in *nix and windows.
26561
26562         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
26563         GetReferencedAssemblies.
26564
26565 2003-03-18  Dick Porter  <dick@ximian.com>
26566
26567         * icall.c: Rename a couple of internal calls
26568
26569         * threads.c: Set the thread state to Stopped when a thread exits.
26570         Fixes bug 39377.
26571
26572 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
26573
26574         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
26575         New icall.
26576
26577         * object.c (mono_class_vtable): fix warning.
26578
26579 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
26580
26581         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
26582
26583         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
26584         memory.
26585         (method_encode_clauses): Create exception info structures in the right
26586         order.
26587         (mono_reflection_setup_internal_class): Initialize supertypes field.
26588
26589         * class.c object.c: Handle interfaces which implement other interfaces 
26590         correctly.
26591
26592         * class.h class.c: Move the supertypes array initialization code into 
26593         a separate function so it can be used for dynamic types too. Also call
26594         it earlier, in mono_class_init(), since it can be used before the
26595         type is initialized.
26596
26597 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26598
26599         * Makefile.am:
26600         * assembly.c:
26601         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
26602
26603         * appdomain.c:
26604         * appdomain.h:
26605         * marshal.c:
26606         * object.c: remove warnings.
26607
26608 2003-03-13  Martin Baulig  <martin@ximian.com>
26609
26610         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
26611         (MonoDebugLexicalBlockEntry): New types.
26612
26613         * debug-mono-symfile.c
26614         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
26615
26616 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26617
26618         * process.c: ret can be any non-zero value accroding to MS doc.
26619
26620 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
26621
26622         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
26623         fixing a warning for a miss-used prototype, would have cause
26624         random memory corruption.
26625
26626 2003-03-07  Martin Baulig  <martin@ximian.com>
26627
26628         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
26629         getting really annoying ....
26630
26631 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
26632
26633         * reflection.c (fixup_method): added support for array methods.
26634
26635 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
26636
26637         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
26638         (pointed out by Michael Adams).
26639
26640 2003-03-04  Dick Porter  <dick@ximian.com>
26641
26642         * icall.c: Temporarily reverted the Double and Single ToString()
26643         change, because it broke nunit.
26644
26645 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
26646
26647         * object.h, threads.h: make include files compatible with C++
26648         (patch by Jerome Laban <jlaban@wanadoo.fr>).
26649
26650 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26651
26652         * icall.c: Erased ToString helper functions for Double and Single.
26653         Now, that implementations ar all in managed code (Double and Single
26654         Formatters).
26655
26656 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
26657
26658         * appdomain.c: Added method for initializing the default context of
26659         a domain. Added internal call for getting the default context.
26660         * appdomain.h: Added context variable in MonoDomain struct.
26661         * domain.c: mono_domain_set also sets the default context of the domain
26662         * icall.c: Mapped internal method InternalGetDefaultContext.
26663         * object.c: mono_object_get_virtual_method returns always a remoting
26664         wrapper if the object is a transparent proxy.
26665         mono_runtime_invoke_array: when creating an object by calling the
26666         constructor, if the created object is a proxy, then the constructor should
26667         be called using the a remoting wrapper.
26668
26669 2003-03-03  Dick Porter  <dick@ximian.com>
26670
26671         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
26672         variable so it compiles on solaris.  Problem spotted by
26673         Christopher Taylor <ct@cs.clemson.edu>
26674
26675 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26676
26677         * appdomain.c:
26678         (get_info_from_assembly_name): don't leak value.
26679
26680         * icall.c:
26681         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
26682         result.
26683
26684 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
26685
26686         * assembly.c: export mono_image_load_references ().
26687         * class.c: handle function pointers. mono_class_from_name() now
26688         supports nested type names directly.
26689
26690 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
26691
26692         * reflection.h reflection.c: Encode already created dynamic methods 
26693         and fields correctly as a DEF instead of a REF.
26694
26695         * reflection.c: Get rid of the force_ref argument to 
26696         mono_image_typedef_or_ref since it was wrong in the first place.
26697
26698         * string-icalls.c: add error checking to string constructors according
26699         to the MSDN docs.
26700
26701         * reflection.c: Emit types in the order their TypeBuilders were 
26702         created. Previously, a new table index was assigned to each type before
26703         the tables were emitted. This was wrong because the signature blob
26704         might already refer to a type by its original table index.
26705
26706 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
26707
26708         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
26709         change.
26710         
26711 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26712
26713         * Makefile.am: make assemblies dir have \ instead of / on windows.
26714
26715 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
26716
26717         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
26718         iterate over the NESTEDCLASS table using a linear search since the
26719         table is not guaranteed to be sorted by the secondary key.
26720
26721         * class.c (mono_class_create_from_typedef): fixed up call to
26722         mono_metadata_nesting_typedef.
26723         
26724 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
26725
26726         * marshal.c (mono_string_to_byvalstr): clear the memory as
26727         suggested by Jerome Laban <jlaban@wanadoo.fr>
26728
26729 2003-02-26  Dick Porter  <dick@ximian.com>
26730
26731         * process.c: Cope with padding in .rsrc blocks
26732
26733 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26734
26735         * metadata.h: reverted the filter_len change, it breaks reflection
26736         
26737 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26738
26739         * metadata.h: added a new field to store the filter_len
26740         
26741
26742 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
26743
26744         * reflection.c: handle custom attributes for types and members
26745         created with Reflection.Emit (bug#38422).
26746
26747 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
26748
26749         * reflection.c: define RTSpecialName automatically for constructors for
26750         compatibility with MS.NET.
26751
26752         * reflection.c (mono_reflection_create_runtime_class): initialize
26753         nested_in field of dynamically created classes.
26754
26755 2003-02-22  Martin Baulig  <martin@ximian.com>
26756
26757         * debug-mono-symfile.h: Incremented version number.
26758
26759 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
26760
26761         * object.h icall.c process.c: fix warnings.
26762
26763 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
26764
26765         * appdomain.h appdomain.c:
26766         (mono_domain_try_type_resolve): split the 
26767         name_or_tb argument into a name and a tb argument.
26768         (mono_domain_has_type_resolve): new function to check whenever the
26769         application has registered a TypeResolve event handler.
26770         
26771         * icall.c reflection.h reflection.c: move the type resolve logic into
26772         mono_reflection_get_type () so it will be invoked when 
26773         Assembly::GetType () is called.
26774
26775         * reflection.c:
26776         (mono_reflection_get_type): renamed to get_type_internal.
26777         (mono_reflection_get_type): fixed type name generation so it works 
26778         for nested types too.
26779         (mono_reflection_get_type): call has_type_resolve () to avoid the 
26780         costly type name generation if there is no resolve event handler.
26781
26782 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26783
26784         * class.c, image.c: load exported types from file references.
26785
26786 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
26787
26788         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
26789           used to cache the managed methods used to create proxies and make 
26790           remote invocation of methods.
26791         * class.h: Added in MonoVTable a flag to indicate that a class needs 
26792           to be remotely created.
26793         * object.c: Modified the method mono_class_vtable(). It now initializes 
26794           the remote flag of the vtable. Modified mono_object_new_specific(), 
26795           so now it checks the remote flag.
26796         * icall.c: Added a couple of internal methods, one for enabling instance 
26797           creation interception for a type, and one for creating objects bypassing
26798           the remote check.
26799
26800 2003-02-18  Martin Baulig  <martin@ximian.com>
26801
26802         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
26803         New interncall to get a method's metadata token.
26804
26805         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
26806         New interncall for the debugger.
26807
26808 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
26809
26810         * class.c (mono_class_setup_vtable): allocate supertype array
26811
26812 2003-02-18  Martin Baulig  <martin@ximian.com>
26813
26814         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
26815
26816 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26817
26818         * reflection.c:
26819         (assembly_name_to_aname): jump over unknown properties (i've found
26820         something like: 'type, assembly, version=xxx, custom=null, public...',
26821         so now will ignore custom=null and still get the rest of the values).
26822
26823 2003-02-17  Dick Porter  <dick@ximian.com>
26824
26825         * threads.c: Have Thread.Start() wait for a semaphore to signal
26826         that the thread has set up all its local data.  This fixes bug
26827         34323, where Abort() raced the new thread's TLS data.
26828
26829         Also removes the handle_store() call from start_wrapper, because
26830         threads are now always created suspended and there is no longer a
26831         race between the parent and child threads to store the info.
26832
26833 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
26834
26835         * image.c: explain the #- heap issue in a message, hopefully
26836         avoiding FAQs on mono-list.
26837
26838 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26839
26840         * icall.c:
26841         (GetEntryAssembly): if the domain has not invoked
26842         AppDomain.ExecuteAssembly yet, return the assembly of the default
26843         AppDomain.
26844
26845 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
26846
26847         * class.c (mono_ldtoken): make it work in dynamic assemblies.
26848
26849 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
26850
26851         * metadata.c, reflection.c: simple speedup to type hash
26852         and equals code.
26853
26854 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
26855
26856         * image.c, image.h, class.c, assembly.c: move module loading
26857         to MonoImage. When loading metadata, consider alignemnet from
26858         the start of metadata, not from the metadata address in memory.
26859
26860 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
26861
26862         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
26863         AssemblyBuilder objects. Factored out custom attribute creation into
26864         a separate function.
26865         (create_custom_attr): new function to create custom attributes.
26866
26867 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
26868
26869         * Makefile.am: Got tired of typing the full pathname to pedump.
26870         Until there is another option, am installing this.
26871
26872 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
26873
26874         * class.c (class_compute_field_layout): always set field->parent 
26875         (mono_ldtoken): use mono_defaults.fieldhandle_class;
26876
26877 2003-02-11  Dick Porter  <dick@ximian.com>
26878
26879         * threads-types.h:
26880         * monitor.c: Rewrote Monitor, making lock much faster and
26881         Pulse/Wait work as specified.  Also uses much fewer handles, and only
26882         creates them as needed.
26883
26884         * exception.c: Added SynchronizationLockException
26885
26886         * threads.c: Deleted old Monitor implementation.  The new one is
26887         in a new file.
26888
26889 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
26890
26891         * class.c: handled TypedReference type code. Set the correct size for
26892         class data. Setup interface_offsets for interface classes, too.
26893
26894 2003-02-09  Martin Baulig  <martin@ximian.com>
26895
26896         * debug-mono-symfile.h: Reflect latest symbol writer changes.
26897
26898 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
26899
26900         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
26901         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
26902         * object.c: fixed mono_object_get_virtual_method () for interfaces.
26903         * verify.c: check for code that runs after the end of the method.
26904
26905 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26906
26907         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
26908         "System.Math::Round2".
26909         * sysmath.h: Added Floor, Round and Round2 definitions.
26910         * sysmath.c: Modified certain functions that were not 100% compliant
26911         with MS.NET (math precision) and added the implementation of Floor,
26912         Round and Round2.
26913
26914 2003-02-07  Martin Baulig  <martin@ximian.com>
26915
26916         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
26917
26918 2003-02-07  Martin Baulig  <martin@ximian.com>
26919
26920         * debug-mono-symfile.c: Reflected latest symwriter changes.
26921         (mono_debug_create_mono_symbol_file): Removed.
26922         (mono_debug_open_mono_symbol_file): Take an argument which
26923         specifies whether to create a dynamic symbol file.
26924
26925 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
26926
26927         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
26928
26929 2003-02-05  Martin Baulig  <martin@ximian.com>
26930
26931         * reflection.c (mono_image_build_metadata): Make this public,
26932         protect it against being called multiple times, don't create
26933         resources and don't build the compressed metadata here.
26934         (mono_image_create_pefile): Do this here.
26935
26936         * icall.c
26937         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
26938
26939 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26940
26941         * socket-io.c: fixed bug #36322.
26942
26943 2003-02-06  Piers Haken <piersh@friskit.com>
26944
26945         * appdomain.[ch]:
26946         * class.h:
26947         * debug-mono-symfile.c:
26948         * icall.c:
26949         * loader.c:
26950         * mono-config.c:
26951         * monosn.c:
26952         * reflection.c:
26953         * socket-io.c: warning cleanups
26954
26955 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
26956
26957         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
26958         function. works like remoting invoke, but does a check for the Proxy first.
26959
26960 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
26961
26962         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
26963
26964 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
26965
26966         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
26967         array of pointers.
26968         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
26969         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
26970
26971         * object.c (mono_store_remote_field_new): used by the new jit
26972         instead of mono_store_remote_field
26973         (mono_load_remote_field_new): used by the new jit
26974         instead of mono_load_remote_field
26975
26976 2003-02-05  Patrik Torstensson
26977
26978         * appdomain.c: changed unload to take the domain id instead
26979         of domain
26980         
26981         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
26982
26983
26984 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26985
26986         * appdomain.c: don't look for assemblies in ApplicationBase if
26987         PrivateBinPathProbe is set.
26988
26989 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26990
26991         * object.c: make the first argument in main_args contain the absolute
26992         path to the assembly. Fixes bug #37511.
26993
26994 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26995
26996         * icall.c: get correct UTC offset for countries not using daylight
26997         time saving. Fixes bug #30030.
26998
26999 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27000
27001         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27002         and 1 are the family).
27003
27004 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27005
27006         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27007
27008         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27009
27010 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27011
27012         * reflection.c: added support for SignatureHelper tokens, which is
27013         needed by the Calli opcode.
27014
27015         * reflection.h: track changes to SignatureHelper class.
27016
27017         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27018
27019 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27020
27021         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27022
27023 2003-02-03  Patrik Torstensson
27024         * appdomain.[c|h], domain.c : 
27025          - Added support for getting a domain via domain id
27026          - Support for setting and getting domain from System.AppDomain 
27027            (used in cross appdomain channel)
27028          - Added support for get/set for a MonoAppContext on a thread 
27029            (Context class in System.Runtime.Remoting.Contexts),
27030          - Removed hack in Get/SetData and ExecuteAssembly.
27031         
27032         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27033         the managed world to get control when a proxy is created.
27034
27035         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27036         
27037 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27038
27039         * icall.c
27040         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27041         Populate the codebase field as well.
27042
27043 2003-02-02  Martin Baulig  <martin@ximian.com>
27044
27045         * debug-mono-symfile.c
27046         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27047         (mono_debug_symfile_add_method): Allow interncalls.
27048
27049 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27050
27051         * icall.c: throw parse exception if strtod fails or the string is empty.
27052
27053 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27054
27055         * marshal.c: handle object type separately from defined
27056         class types.
27057
27058 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27059
27060         * marshal.c: handle NATIVE_LPSTR for strings when it's
27061         explicitly specified.
27062
27063 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27064
27065         * reflection.c, reflection.h, icall.c: setup the reflection
27066         handle cache for ModuleBuilders and AssemblyBuilders.
27067
27068 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27069
27070         * reflection.c (reflection_methodbuilder_to_mono_method): set
27071         pinvoke flag
27072
27073 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27074
27075         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27076
27077 2003-01-29  Dick Porter  <dick@ximian.com>
27078
27079         * threads.c: No need for the fake_thread kludge now that Thread
27080         doesn't run a class constructor
27081         
27082 2003-01-29  Dick Porter  <dick@ximian.com>
27083
27084         * threads.c: Use g_direct_hash instead of the rather bogus
27085         g_int_hash
27086
27087 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27088
27089         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27090         (fix pinvoke12.exe)
27091         (mono_marshal_get_struct_to_ptr): generate valid IL code
27092         (mono_marshal_get_ptr_to_struct): generate valid IL code
27093         (*): correctly set sig->pinvoke, we need to memdup the signature
27094         to do that
27095
27096 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27097
27098         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27099         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27100
27101 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27102
27103         * profiler.c: provide more callers information.
27104
27105 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27106
27107         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27108
27109         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27110
27111         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27112
27113 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27114
27115         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27116         exception instead of going into an infinite loop on dates which it 
27117         can't yet handle.
27118
27119         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27120         out-of-range exception if needed.
27121
27122         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27123         an implementation for an interface method and to override an inherited
27124         method at the same time. 
27125         Imagine a scenario when a virtual method is used to override a
27126         virtual abstract method in a parent class, and this same method 
27127         provides an implementation for an method inherited from an interface. 
27128         In this case, the interface resolution code will set im->slot, which 
27129         means that the virtual method override pass will skip this method 
27130         which means a pointer to the abstract method inherited from the parent
27131         will remain in the vtable of this non-abstract class.
27132
27133         * class.c: (mono_class_setup_vtable): continue search for a real 
27134         method if only an abstract method is found.     
27135
27136 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27137
27138         * reflection.c: add size to encoding for ByValStr and ByValArray
27139         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27140
27141 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27142
27143         * class.c (mono_class_setup_vtable): pass the override info as an
27144         argument.
27145
27146         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27147         correctly.
27148         
27149         * reflection.c (ensure_runtime_vtable); add support for method 
27150         overrides.
27151         
27152 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27153
27154         * reflection.c (resolution_scope_from_image): Hack to work to work with
27155         dynamic assemblies.
27156
27157         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27158         added a 'force_ref' argument to force this function to allways return 
27159         a TypeRef. This is needed by mono_image_get_memberref_token ().
27160         
27161 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27162
27163         * reflection.c (mono_image_get_type_info): interfaces really don't have
27164         a parent.
27165
27166         * reflection.c (mono_image_basic_init): fill out missing fields of
27167         image structure.
27168
27169         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27170         dynamic assemblies. This is required so dynamic assemblies show up in
27171         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27172         Type::GetType() etc. This is consistent with MS behaviour.
27173
27174         * image.c image.h reflection.c: add newly created classes to the name 
27175         cache so mono_class_get () will find them.      
27176
27177 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27178
27179         First part of changes to get IKVM.NET running under mono.
27180         
27181         * appdomain.h, appdomain.c: added new function 
27182         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27183         This function will call AppDomain::DoTypeResolve to do the actual work.
27184
27185         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27186         moved existing code dealing with dynamic tokens to a new function 
27187         called mono_reflection_lookup_dynamic_token (). This function will 
27188         raise TypeResolve events when appropriate. Since reflection.c is not 
27189         part of libmetadata, a new hook function called 
27190         mono_lookup_dynamic_token() is added to class.c which will call this.
27191
27192         * assembly.h assembly.c: make the invoke_load_hook function public,
27193         so it can be called for dynamic assemblies.
27194
27195         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27196
27197         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27198         type isn't found.
27199
27200         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27201         MonoGHashTable, since it contains pointers to objects which the GC 
27202         needs to track.
27203
27204         * assembly.c (search_loaded): remove unused variable.
27205         
27206 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27207
27208         * object.c: fixed issue exposed by gcc-generated IL programs
27209         that use RVA data for pointers.
27210
27211 2003-01-25  Martin Baulig  <martin@ximian.com>
27212
27213         * threads.c (start_wrapper): Moved the initialization of
27214         `start_func' above the mono_new_thread_init() call to which we
27215         pass it as argument.
27216
27217 2003-01-24  Martin Baulig  <martin@ximian.com>
27218
27219         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27220         the MonoThread pointer.
27221
27222 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27223
27224         * icall.c: Rename `PowImpl' to Pow.
27225
27226 2003-01-23  Dick Porter  <dick@ximian.com>
27227
27228         * threads.c (start_wrapper): Create a Thread object if needed, so
27229         the Main() thread can do the class initialisation in a subthread
27230         that has been set up to allow managed code execution.
27231
27232         Pass the thread ID instead of the MonoThread pointer to the thread
27233         start and attach callbacks.  This change is required, because the
27234         jit thread start callback must be called _before_ the Thread
27235         object can be created.
27236         
27237         (mono_thread_init): Removed much object creation code that is no
27238         longer needed.  No managed code is called from here now.
27239
27240         * object.c (mono_runtime_exec_managed_code): Create a subthread
27241         for Main, and call back to the runtime to use it.
27242         Set the exit code when Main exits.
27243
27244         * gc.c: Make sure domain finalisation happens in a subthread.
27245         Re-enable threaded GC, fixing bug 31333 (again).
27246
27247         * environment.c: System.Environment internall calls (so far just
27248         ExitCode is here, the others are still in icall.c)
27249
27250         * appdomain.c (mono_runtime_cleanup): All threads running managed
27251         code should have finished before mono_runtime_cleanup() is
27252         reached, so no need to clean up threads.
27253
27254 2003-01-22  Martin Baulig  <martin@ximian.com>
27255
27256         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27257         `gpointer func' arguments.      
27258         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27259         but added `MonoThread *thread' argument.
27260         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27261
27262         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27263         and pass it to the mono_thread_start_cb callback.
27264         (mono_install_thread_callbacks): New public function to install a
27265         set of callbacks which are set by the debugger.
27266         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27267
27268 2003-01-22  Martin Baulig  <martin@ximian.com>
27269
27270         * Makefile.am: Install debug-mono-symfile.h.
27271
27272 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27273
27274         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27275
27276 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27277
27278         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27279         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27280         (mono_array_class_get): correctly set access levels of arrays
27281
27282 2003-01-20      Patrik Torstensson
27283         * image.h (MonoAssemblyName): changed major, minor, build, revision
27284         from signed to unsigned.
27285
27286 2003-01-20  sean kasun <skasun@azstarnet.com>
27287
27288         * reflection.c (load_cattr_value): Now this handles
27289         MONO_TYPE_SZARRAY.  Fixes bug #35629
27290
27291 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27292
27293         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27294         integer value
27295
27296 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27297
27298         * decimal.c: fixed bug #26056.
27299
27300 2003-01-17  Martin Baulig  <martin@ximian.com>
27301
27302         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27303
27304 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27305
27306         * exception.[ch]:
27307         (mono_get_exception_type_initialization): new function.
27308
27309         * object.c: throw a TypeInitializationException when an exception is
27310         thrown invoking the class constructor.
27311
27312 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27313
27314         * reflection.c: fixed attribute reading.
27315
27316 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27317
27318         * icall.c:
27319         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
27320         provided, look for the type in the calling assembly and then in
27321         mscorlib; if the assembly name is provided, only try that one.
27322
27323 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
27324
27325         * object.c: register the vtable before there is a chance it's
27326         queried again recursively.
27327
27328 2003-01-13  Duncan Mak  <duncan@ximian.com>
27329
27330         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
27331         gc-internal.h. 
27332         
27333 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
27334
27335         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
27336
27337 2003-01-11  Martin Baulig  <martin@ximian.com>
27338
27339         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
27340         this to 20 for the release.
27341
27342 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
27343
27344         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
27345
27346         * loader.c (mono_method_get_marshal_info): bug fix
27347
27348         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
27349         structures with explicit layout
27350
27351 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27352
27353         * profiler.c: made the output more readable (and sorted). 
27354         Added caller information for the allocation profiler.
27355
27356 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
27357
27358         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
27359
27360 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27361
27362         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
27363         to get value types.
27364         
27365 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
27366
27367         * object.c, profiler.h, profiler.c, profiler-private.h:
27368         Added object allocation profiler.
27369
27370 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
27371
27372         * reflection.h, reflection.c: handle global methods.
27373         Compress blob entries.
27374
27375 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
27376
27377         * marshal.c: fix compilation.
27378
27379 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
27380
27381         * loader.c (mono_method_get_marshal_info): impl.
27382
27383         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
27384
27385 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27386
27387         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
27388         for reference types.
27389
27390 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
27391
27392         * loader.c: fixed off by one error in loaded parameter names.
27393
27394 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
27395
27396         * marshal.c (mono_marshal_get_icall_wrapper): like
27397         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
27398         instead of a MonoMethod.
27399
27400 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27401
27402         * decimal.c: fixed bug #36537.
27403
27404 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
27405
27406         * marshal.c: throw a missing method exception if a
27407         P/Invoke method is not found.
27408
27409 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27410
27411         * icall.c: allow a null this for constructors.
27412
27413 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
27414
27415         * icall.c: raise the proper exceptions if the arguments to the
27416         internal Invoke are incorrect.
27417
27418 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
27419
27420         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
27421
27422 2003-01-03  Martin Baulig  <martin@ximian.com>
27423
27424         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27425
27426 2002-12-31  Martin Baulig  <martin@ximian.com>
27427
27428         * debug-mono-symfile.c: Completely rewrote the type section.
27429         Instead of using individual malloc()ed fields, we use one big
27430         continuous memory area and offsets into this area.
27431         See the comments in the source code for details.
27432
27433 2002-12-30  Martin Baulig  <martin@ximian.com>
27434
27435         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
27436
27437 2002-12-30  Martin Baulig  <martin@ximian.com>
27438
27439         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
27440         line number table in this data blob instead of using an external
27441         pointer.
27442
27443 2002-12-28  Martin Baulig  <martin@ximian.com>
27444
27445         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27446
27447 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
27448
27449         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
27450         as a boxed return type.
27451
27452 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
27453
27454         * appdomain.c
27455         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
27456         g_build_filename to properly get separators on the filename created.
27457
27458         * object.h: Small change, introduce MonoMarshalByRefObject to
27459         track the layout of that structure in the C# universe as we make
27460         changes there.
27461
27462 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
27463
27464         * object.c: removed assert to allow static fields on interfaces.
27465         * loader.c: a TypeSpec may be used for any type, not just arrays.
27466
27467 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27468
27469         * class.c, class.h: added mono_class_array_element_size ().
27470         Ignore static methods in interfaces.
27471
27472 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27473
27474         * threads.c: fixed the build under cygwin.
27475
27476 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27477
27478         * reflection.c: handle nullref constants. Allocate keys for
27479         reflection handles with the GC.
27480
27481 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27482
27483         * threads.c, threads.h: added mono_thread_get_abort_signal()
27484         to get a suitable signal for thread abort.
27485
27486 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27487
27488         * metadata.c: fix handling of ExportedType table.
27489
27490 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27491
27492         * icall.c: added WriteWindowsDebugString internal call.
27493
27494 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27495
27496         * reflection.h: added fields to match C# implementation.
27497
27498 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27499
27500         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
27501
27502 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
27503
27504         * gc.h, gc-internal.h: Rename header for GC internal calls to
27505         gc-internal.h from gc.h as to not clash with Boehm GC having its
27506         header installed as <gc.h> in outside include paths.
27507         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
27508         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
27509
27510 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27511
27512         * icall.c: assign minor, build and revision in FillName.
27513
27514 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
27515
27516         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
27517         Added support for running code generated by Reflection.Emit.
27518
27519 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27520
27521         * appdomain.c: check for NULL argument in LoadFrom.
27522
27523 2002-12-10  Dick Porter  <dick@ximian.com>
27524
27525         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
27526
27527 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27528
27529         * appdomain.c: fix buglet when building exe file name.  Handle full
27530         assembly name (needed after latest changes to AssemblyName).
27531         * image.c:
27532         (mono_image_close): free some hashtables.
27533
27534 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
27535
27536         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
27537         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
27538         on some systems (redhat 7.3) 
27539
27540 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
27541
27542         * threads.c: delete the critical section of a sync block,
27543         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
27544
27545 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
27546
27547         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
27548
27549 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27550
27551         * appdomain.[ch]: handle the assembly preload event to try loading the
27552         assemblies using the paths we have in the current domain.
27553
27554         * assembly.[ch]: created an assembly preload hook that is called to try
27555         loading the assembly by other means that the ones provided here.
27556
27557         * domain.c: initialize the domain search path.
27558
27559         From now on, assemblies (TODO: except corlib and System) are loaded
27560         according to these rules when using mono_assembly_load ():
27561
27562                 1. It tries to load the assembly from the ApplicationBase
27563                 of the current domain appending .dll and .exe (TODO: have to
27564                 try loading from name/name.dll and name/name.exe).
27565
27566                 2. It tries the search path specified in PrivateBinPath for the
27567                 current domain (if any).
27568
27569                 3. Previous behavior.
27570
27571 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
27572
27573         * icall.c: implemented GetInterfaceMap() related icall.
27574         * domain.c, loader.h: load MethodInfo in mono_defaults.
27575
27576 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27577
27578         * gc.c: disable the finalizer thread for now, untill all the issues
27579         with it are resolved.
27580
27581 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27582
27583         * string-icalls.c: handle embedded nulls in string ctor when the
27584         length is specified.
27585
27586 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
27587
27588         * class.c: look for explicit interface implementation in parent
27589         classes, too.
27590
27591 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
27592
27593         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
27594
27595 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
27596
27597         * gc.c: protect handles with a critical section.
27598
27599 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27600
27601         * icall.c:
27602         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
27603         parameters. If no assembly specified, try getting the type from all
27604         the assemblies in the current domain, else, load the assembly and get
27605         the type from it.
27606
27607 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27608
27609         * marshal.c: applied patch from Aleksey Demakov that fixes
27610         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
27611
27612 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27613
27614         * icall.c: fixed get_location.
27615
27616 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
27617
27618         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
27619         declarations to make it work with older gcc. 
27620
27621         * loader.c (mono_get_method): set signature->pinvoke for native calls
27622
27623 2002-11-20  Dick Porter  <dick@ximian.com>
27624
27625         * threads.c (mono_thread_init): Set the main thread's handle
27626
27627 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
27628
27629         * gc.c: allow compilation without GC support. Changed to match the
27630         mono coding style.
27631
27632 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
27633
27634         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
27635
27636 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
27637
27638         * reflection.c: set a public key token on the core assemblies.
27639
27640 2002-11-18  Dick Porter  <dick@ximian.com>
27641
27642         * threads.c: Split out some thread initialisation so that other
27643         files can set the start callback function.
27644
27645         * gc.c: Run finalisers in a separate thread, to avoid stack
27646         overflow.  Fixes bug 31333.
27647
27648         * appdomain.c: Set up GC finalisation thread.
27649
27650         * reflection.c: 
27651         * object.c: 
27652         * domain.c: Use gc.h macros for GC_malloc
27653         
27654 2002-11-15  Dick Porter  <dick@ximian.com>
27655
27656         * threadpool.c: 
27657         * threads.c:
27658         * appdomain.c: Removed mono_runtime_init_with_attach(),
27659         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
27660         merging the extra parameter with the existing function.  Removed
27661         unneeded code in mono_thread_attach().
27662
27663 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
27664
27665         * image.c (mono_image_loaded_by_guid): a method to get loaded
27666         images by guid. 
27667         (load_metadata_ptrs): we store the guid as string.
27668
27669 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
27670
27671         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
27672
27673         * metadata.c (mono_guid_to_string): imported method form Zoltan
27674         Varga (slightly modified)
27675
27676         * assembly.c (mono_assembly_open): load precompiled code
27677
27678         * loader.h (MonoMethod): we store the method token for use in the
27679         aot compiler. 
27680
27681 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27682
27683         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
27684         the hook function called when an assembly is loaded.
27685         
27686         * domain.c: Modified file.
27687         (mono_domain_assembly_load): removed hash table insertion of assemblies.
27688
27689         Fixes bug #33196.
27690
27691 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
27692
27693         * reflection.c: Map PEFileKind to the value expected by the WinNT
27694         image loader. 
27695
27696 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27697
27698         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
27699         Read until the buffer is filled completely.
27700
27701 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27702
27703         * icall.c: implemented MonoType.InternalGetEvent ().
27704
27705 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27706
27707         * appdomain.c: implemented InitAppDomainSetup. Delayed
27708         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
27709         the entry_assembly.
27710
27711         * assembly.c: base_dir is now an absolute path ending with
27712         G_DIR_SEPARATOR.
27713
27714         * icall.c: modified get_location according to the above changes.
27715
27716         * object.c: init AppDomain.SetupInformation for the default domain after
27717         we have the entry assembly.
27718
27719         * domain.c: when unloading a domain, setup = NULL.
27720
27721 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
27722
27723         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
27724
27725 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
27726
27727         * object.h, object.c: introduced mono_object_get_virtual_method ()
27728         to lookup the method invoked on an object when a callvirt is done on
27729         a method.
27730         * icall.c: make MethodInfo::Invoke() always do a virtual call.
27731
27732 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27733
27734         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
27735         current domain when loaded an assembly and failed to load it.
27736
27737         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
27738
27739 2002-10-31  Dick Porter  <dick@ximian.com>
27740
27741         * icall.c: 
27742         * file-io.h: 
27743         * file-io.c: Return the error status in a parameter, as the
27744         GetLastError() value has long since been blown away if we try and
27745         look it up in a subsequent internal call invocation.  Delete the
27746         GetLastError() internal call, because it's useless.
27747
27748 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
27749
27750         * class.[ch]: added cast_class to fix bug 29517
27751
27752 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
27753
27754         * marshal.c: create valid IL code in the filter clause:
27755         the new JIT is less forgiving:-)
27756
27757 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27758
27759         * icall.c: removed get_property internal call.
27760
27761 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
27762
27763         * appdomain.h domain.c: Added an ID to appdomains.
27764         
27765         * threads.c threads.h icall.c: Implement icall
27766         Thread:GetDomainID(), and remove unused icall 
27767         CurrentThreadDomain_internal.
27768
27769 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27770
27771         * icall.c: Don't recurse through the base types in GetConstructor.
27772         Fixes bug #32063. 
27773
27774 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
27775
27776         * mempool.h, mempool.c: added mono_mempool_empty() and
27777         mono_mempool_stats().
27778
27779 2002-10-23  Dick Porter  <dick@ximian.com>
27780
27781         * file-io.c: 
27782         * file-io.h: 
27783         * icall.c: Added MonoIO.GetFileType internal call
27784
27785 2002-10-17  Dick Porter  <dick@ximian.com>
27786
27787         * appdomain.c (mono_runtime_cleanup): Don't signal the async
27788         delegate semaphore before waiting for all threads to finish,
27789         because new threads can also call async delegates.  Fixes bug
27790         32004.
27791
27792         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
27793         of 3 seconds, in case another async job is queued.  (This part is
27794         needed because the bug fix reintroduced the 3s exit lag.)  This
27795         makes the mono_runtime_shutdown flag superfluous.
27796
27797 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
27798
27799         * reflection.c: include ehader size in method section headers.
27800         Really check for suplicated modules entries.
27801
27802 2002-10-17  Martin Baulig  <martin@gnome.org>
27803
27804         * debug-mono-symfile.c: Added back support for locals.
27805
27806 2002-10-14  Martin Baulig  <martin@gnome.org>
27807
27808         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
27809         MONO_TYPE_VOID.
27810
27811 2002-10-14  Martin Baulig  <martin@gnome.org>
27812
27813         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
27814         mono_class_get() instead of looking in the class cache. 
27815
27816 2002-10-13  Martin Baulig  <martin@gnome.org>
27817
27818         * debug-mono-symfile.c: Set version number to 28, include the
27819         signature in method names.
27820
27821 2002-10-13  Martin Baulig  <martin@gnome.org>
27822
27823         * debug-mono-symfile.h: Set version number to 27.
27824
27825 2002-10-11  Martin Baulig  <martin@gnome.org>
27826
27827         * gc.c: Don't register/unregister NULL pointers as disappearing links.
27828
27829 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
27830
27831         * metadata.c, metadata.h: added helper function to allocate signatures.
27832
27833 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27834
27835         * icall.c: added internal call to get the location of machine.config.
27836
27837 2002-10-08  Martin Baulig  <martin@gnome.org>
27838
27839         * debug-mono-symfile.c: Ignore classes with a pending init for the
27840         moment.
27841
27842 2002-10-03  Dick Porter  <dick@ximian.com>
27843
27844         * threads.c: Freebsd pthread_t is a pointer
27845
27846 2002-10-03  Dick Porter  <dick@ximian.com>
27847
27848         * socket-io.c: Implemented GetHostName_internal
27849
27850 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27851
27852         * mono-config.c:
27853         (mono_config_parse_file): don't leak the text.
27854
27855 2002-10-02  Martin Baulig  <martin@gnome.org>
27856
27857         * debug-mono-symfile.c: Added support for methods.
27858
27859 2002-10-01  Martin Baulig  <martin@gnome.org>
27860
27861         * debug-mono-symfile.c: Don't emit methods and line numbers for
27862         the dynamic symbol file, just write the type table.  We can easily
27863         have an external helper program which creates a symbol file for an
27864         IL file.        
27865
27866 2002-10-01  Dick Porter  <dick@ximian.com>
27867
27868         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
27869         Only add the handle to the cleanup array when we're about to
27870         launch the thread.  Bug 31425 deadlocked when the test was run on
27871         mono under w32.
27872
27873 2002-10-01  Martin Baulig  <martin@gnome.org>
27874
27875         * debug-mono-symfile.c: Added support for properties.
27876
27877 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
27878
27879         * reflection.c: unaligned store fix from Mark Crichton
27880         <crichton@gimp.org>.
27881
27882 2002-09-27  Martin Baulig  <martin@gnome.org>
27883
27884         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
27885         New interncall.
27886
27887 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
27888
27889         * assembly.h, assembly.c: use a sane API to hook into the assembly
27890         loading process instead of a useless special-purpouse hack
27891         (ngen needs a hook, too, for example).
27892
27893 2002-09-27  Dick Porter  <dick@ximian.com>
27894
27895         * threads.c (mono_thread_init): Call GetCurrentProcess() so
27896         io-layer can set up some process handle info.  Not needed on w32,
27897         but doesn't hurt either.
27898
27899         * process.c: Pass the program name in the second parameter to
27900         CreateProcess, so the path is searched.  Include the working
27901         directory. Implemented process name, process enumeration, and some
27902         process detail internal calls.
27903         
27904         * icall.c: Added internal calls for process lookup, and some
27905         process details
27906
27907 2002-09-26  Martin Baulig  <martin@gnome.org>
27908
27909         * assembly.c (mono_install_open_assembly_hook): New global
27910         function to install a function to be invoked each time a new
27911         assembly is loaded.
27912         (mono_assembly_open): Run this callback function if set.
27913
27914         * debug-mono-symfile.c: Put back line numbers for the dynamic
27915         symbol file and also record the .il file as source file.  This
27916         allows us to install the temporary symbol file as `file.dbg' just
27917         like a compiler-generated one.
27918
27919 2002-09-26  Nick Zigarovich <nick@chemlab.org>
27920
27921         * Corrected typo in gc.c (BOHEM vs BOEHM).
27922
27923 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27924
27925         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
27926         GetProperties. Also avoid calling g_slist_length in GetProperties and
27927         GetMethods.
27928
27929 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
27930
27931         * reflection.c: avoid unaligned stores (bug spotted by
27932         Mark Crichton  <crichton@gimp.org>).
27933
27934 2002-09-25  Martin Baulig  <martin@gnome.org>
27935
27936         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
27937         instead of guint64 for addresses and added prologue/epilogue info.
27938
27939 2002-09-25  Martin Baulig  <martin@gnome.org>
27940
27941         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
27942         store line number info.  For the dynamic symbol file, we only need
27943         to provide the JIT generated dynamic line number info for the dynamic
27944         symbol file.
27945
27946 2002-09-25  Martin Baulig  <martin@gnome.org>
27947
27948         * debug-mono-symfile.h: Incremented version number.
27949
27950 2002-09-24  Martin Baulig  <martin@gnome.org>
27951
27952         * class.c (mono_debugger_class_init_func): New global function
27953         pointer variable.
27954         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
27955         call it.
27956
27957         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
27958         function.  This is called via the mono_debugger_class_init_func
27959         hook to add all types to the dynamic type table.
27960         (ves_icall_MonoDebugger_GetType): New interncall to get a class
27961         from its metadata token.
27962
27963         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
27964         New interncall for the debugger.
27965
27966 2002-09-24  Nick Drochak <ndrochak@gol.com>
27967
27968         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
27969         before using it in case it is null.
27970         
27971 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27972
27973         * metadata.c: allow custom modifiers in local var signatures
27974         (bug spotted by Zoltan Varga).
27975
27976 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
27977
27978         * class.c: deal with the <Module> class that may have a NULL vtable.
27979         Eliminate warnings.
27980
27981 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
27982
27983         * image.c, image.h: more strong name helpers.
27984         * monosn.c: more work: convert pem keys to cryptoapi format.
27985
27986 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
27987
27988         * string-icalls.c: speedup IndexOf.
27989
27990 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
27991
27992         * icall.c: updates from Zoltan.2.Varga@nokia.com.
27993
27994 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
27995
27996         * icall.c: cleanup: use mono_object_domain ().
27997
27998 2002-09-23  Martin Baulig  <martin@gnome.org>
27999
28000         * debug-mono-symfile.c: Improved type support.
28001
28002 2002-09-22  Martin Baulig  <martin@gnome.org>
28003
28004         * debug-mono-symfile.c: Added support for reference types and strings.
28005
28006 2002-09-22  Martin Baulig  <martin@gnome.org>
28007
28008         * debug-mono-symfile.c: Started to work on the type table.
28009
28010 2002-09-21  Martin Baulig  <martin@gnome.org>
28011
28012         * debug-mono-symfile.c: Largely reworked the symbol table format.
28013         The symbol table is now incrementally updated each time a new
28014         method is added.  We're now also using our own magic and version
28015         so that you don't need to recompile all your classes if the
28016         dynamic table changes.
28017         (mono_debug_update_mono_symbol_file): Removed.
28018         (mono_debug_symfile_add_method): New function to add a method.
28019
28020 2002-09-21  Martin Baulig  <martin@gnome.org>
28021
28022         * icall.c
28023         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28024         New interncall.
28025
28026         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28027         New interncall to get a method from its metadata token.
28028
28029 2002-09-21  Martin Baulig  <martin@gnome.org>
28030
28031         * debug-mono-symfile.c: Create type table.
28032
28033 2002-09-20  Martin Baulig  <martin@gnome.org>
28034
28035         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28036
28037 2002-09-20  Martin Baulig  <martin@gnome.org>
28038
28039         * debug-mono-symfile.c: Provide information about params and locals.
28040
28041 2002-09-20  Martin Baulig  <martin@gnome.org>
28042
28043         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28044         New interncall.
28045
28046         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28047         interncall to get a method from its metadata token.
28048
28049 2002-09-20  Martin Baulig  <martin@gnome.org>
28050
28051         * debug-mono-symfile.c: Added a few checks for method->header
28052         being non-NULL.  This should never happen, but for the moment
28053         let's use a g_warning() rather than a g_assert().
28054
28055 2002-09-19  Mark Crichton  <crichton@gimp.org>
28056
28057         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28058         even if support for it isn't present.  Added an #ifdef to fix this.
28059
28060         * socket-io.c: Added checks back for Solaris support.
28061
28062 2002-09-19  Martin Baulig  <martin@gnome.org>
28063
28064         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28065         changes in the symbol file format.
28066
28067 2002-09-18  Martin Baulig  <martin@gnome.org>
28068
28069         * debug-mono-symfile.c: Set version number to 21.
28070
28071 2002-09-18  Dick Porter  <dick@ximian.com>
28072
28073         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28074         on netbsd.  Fixes bug 30051.
28075
28076 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28077
28078         * reflection.c:
28079         (set_version_from_string): little fix.
28080
28081 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28082
28083         * monosn.c, Makefile.am: added strong name utility.
28084         * reflection.h, reflection.c: implemented delayed signing,
28085         locale, version and hash id assembly attributes.
28086
28087 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28088
28089         * loader.c, metadata.c: load param attributes in signatures.
28090
28091 2002-09-16  Martin Baulig  <martin@gnome.org>
28092
28093         * debug-mono-symfile.c: Added string table with all method names.
28094
28095 2002-09-14  Martin Baulig  <martin@gnome.org>
28096
28097         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28098         fast method lookup.
28099
28100 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28101
28102         * reflection.c: record the public key token of referenced assemblies.
28103
28104 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28105
28106         * image.c, image.h: added functions to get the strong name and the
28107         public key of an assembly.
28108         * pedump.c: use them.
28109
28110 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28111
28112         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28113
28114 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28115
28116         * marshal.c (mono_marshal_get_managed_wrapper): Added
28117         MONO_TYPE_BOOLEAN 
28118
28119 2002-09-11  Martin Baulig  <martin@gnome.org>
28120
28121         * gc.c: Call GC_unregister_disappearing_link() on all links when
28122         finalizing them, this is necessary to aviod a crash in boehm's
28123         finalize handler.
28124
28125 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28126
28127         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28128         nick@chemlab.org.
28129
28130 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28131
28132         * icall.c: implemented MonoType::Module.
28133         * reflection.c, reflection.h: mono_module_get_object () from
28134         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28135
28136 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28137
28138         * icall.c: ignore overridden methods in GetMethods ().
28139         Fix for FieldInfo::SetValue().
28140         * object.c: handle float/double in runtime invoke.
28141
28142 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28143
28144         * object.c: allow a constructor to be called again on an object.
28145
28146 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28147
28148         * class.h, class.c: move field layout code to it's own function and
28149         export it. Get an interface id earlier. Move fields in MonoClass
28150         so they are more cache friendly and align the bitfields.
28151         * loader.c: temporary handle get_param_names() for a runtime method.
28152         * reflection.c, reflection.h: more code to handle runtime creation of
28153         types.
28154
28155 2002-09-09  Martin Baulig  <martin@gnome.org>
28156
28157         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28158         signature with the pinvoke field being set for the actual call.
28159
28160 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28161
28162         * icall.c: removed some unused icalls. Start of map of glib charsets
28163         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28164
28165 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28166
28167         * debug-helpers.c: break infinite loop (found and fixed by
28168         Holger Arnold <harnold@gmx.de>).
28169
28170 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28171
28172         * icall.c: target may be null in create_delegate.
28173
28174 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28175
28176         * marshal.c: handle a boolean return type.
28177
28178 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28179
28180         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28181
28182 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28183
28184         * gc.c: fix weakreferences.
28185
28186 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28187
28188         * icall.c: added icall to get default codepage.
28189
28190 2002-09-03  Dick Porter  <dick@ximian.com>
28191
28192         * threads.h: 
28193         * threads.c: Use MonoThread instead of MonoObject where
28194         apropriate.
28195
28196         Store running thread objects in a hash table, so that we have all
28197         the info to hand when waiting for them to finish
28198         (means we don't need OpenThread() any more, so mingw builds should
28199         be fully functional again.)
28200
28201         * verify.c:
28202         * object.h: Added thread ID to MonoThread
28203
28204 2002-09-03  Martin Baulig  <martin@gnome.org>
28205
28206         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28207
28208 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28209
28210         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28211
28212 2002-09-03  Martin Baulig  <martin@gnome.org>
28213
28214         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28215         argument to store the end address of the disassembled instruction.
28216
28217         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28218         here from debug-symfile.h.
28219         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28220         JIT into this struct.
28221         (MonoSymbolFile): Added `char *image_file' field.
28222         (MonoDebugGetMethodFunc): Removed.
28223         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28224         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28225         (mono_debug_find_method): New method.
28226
28227         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28228         create a full symbol file.
28229         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28230         and static symbol files.
28231         (mono_debug_find_method): The symbol file keeps an internal method hash,
28232         call this to get a MonoDebugMethodInfo from a MonoMethod.
28233
28234         * debug-symfile.[ch]: Removed.
28235
28236 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28237
28238         * image.c (do_mono_image_open): Remove linker version check.
28239
28240 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28241
28242         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28243         wrappers for instance methods.
28244         
28245 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28246
28247         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28248
28249 2002-08-28  Dick Porter  <dick@ximian.com>
28250
28251         * Makefile.am: Export HOST_CC for w32 builds
28252
28253 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28254
28255         * file-io.c process.c: MonoString are null terminated, no
28256         need for mono_string_to_utf16() anymore.
28257
28258 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28259
28260         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28261
28262 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28263
28264         * icall.c, reflection.h: speedup System.MonoType.
28265
28266 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28267
28268         * reflection.c: allow null as the value of a string argument in
28269         custom attributes constructors.
28270
28271 2002-08-27  Martin Baulig  <martin@gnome.org>
28272
28273         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28274         `trampoline_address' field.
28275
28276 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28277
28278         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28279         check (fixes bug #29486) 
28280
28281 2002-08-27  Martin Baulig  <martin@gnome.org>
28282
28283         * debug-mono-symfile.c: Changed the file format in a way that allows us
28284         open it read-only and to use a specially malloced area for all the
28285         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28286         debugging IL code and there is no MCS generated symbol file for it.
28287
28288 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28289
28290         * object.c: added a define for a good string and array
28291         creation speedup (not enabled by default because we need to deal with
28292         the synch stuff).
28293
28294 2002-08-26  Martin Baulig  <martin@gnome.org>
28295
28296         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28297         function to create a dynamic symbol file.  This is used by the
28298         debugger to create a symbol file for IL code on-the-fly.
28299
28300 2002-08-26  Martin Baulig  <martin@gnome.org>
28301
28302         * loader.c (mono_lookup_pinvoke_call): Include the error message
28303         from g_module_error() in the error message.
28304
28305 2002-08-24  Martin Baulig  <martin@gnome.org>
28306
28307         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28308         function to update the symbol file.  The symbol file is mmap()ed
28309         writable, but private.  This allows us to install the symbol file
28310         together with the assembly.
28311
28312 2002-08-24  Martin Baulig  <martin@gnome.org>
28313
28314         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
28315         but they can read the new symbol file format which mcs is now creating.
28316
28317         * debug-symfile.c (mono_debug_find_source_location): Moved to
28318         debug-mono-symfile.c; this is now operating on the new symbol file.
28319
28320 2002-08-23  Martin Baulig  <martin@gnome.org>
28321
28322         * debug-helpers.c (mono_method_desc_from_method): New function to get
28323         a MonoMethodDesc from a MonoMethod.
28324
28325 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28326
28327         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
28328         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
28329
28330 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
28331
28332         * string-icalls.[ch]: make helper methods static.
28333
28334 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28335
28336         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
28337         types to it and to SetValueInternal.
28338
28339         * object.c: Moved handle_enum label to its proper place. This was the
28340         f... bug! ;-)
28341
28342         This time i compiled mcs and gtk-sharp and they both work.
28343
28344 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28345
28346         * icall.c: reverted partially my previous patch until 
28347         object.c:set_value handles enums correcly.
28348
28349 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28350
28351         * icall.c:
28352         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
28353         (ves_icall_System_Environment_get_MachineName): removed warning when
28354         compiling under cygwin.
28355
28356 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28357
28358         * object.c: fixed field_get_value() for reference types.
28359
28360 2002-08-22  Dick Porter  <dick@ximian.com>
28361
28362         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
28363         Don't free a buffer while it's still needed.  Patch from Jonathan
28364         Liger <Jonathan.liger@wanadoo.fr>
28365
28366 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
28367
28368         * icall.c (ves_icall_System_Environment_get_Platform): Add new
28369         internal call.
28370
28371 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
28372
28373         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
28374         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
28375
28376         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
28377         we call unmanaged code which throws exceptions.
28378
28379 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28380
28381         * appdomain.h: added per-domain entry_assembly.
28382         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
28383         arguments.
28384         * icall.c: Assembly::GetEntryAssembly icall.
28385         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
28386         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
28387
28388 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28389
28390         * appdomain.h, gc.c: added mono_domain_finalize ().
28391
28392 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28393
28394         * object.c:
28395         (mono_print_unhandled_exception): changed g_warning by g_printerr
28396         because g_log has a 1024 characters limit (yeah, i got a big stack
28397         trace). Don't print exception name, that should be in ToString 
28398         returned string.
28399
28400 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28401
28402         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
28403         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
28404
28405 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28406
28407         * object.c:
28408         (mono_print_unhandled_exception): after previous commit, i realized
28409         that MS calls ToString on the exception. I changed this function to
28410         do that. This way we get stack_trace for free.
28411
28412 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28413
28414         * object.c:
28415         (mono_print_unhandled_exception): invoke Message property instead of
28416         getting 'message' field from Exception. Don't allocate memory for
28417         'trace' and 'message' if not needed.
28418
28419 2002-08-18  Dick Porter  <dick@ximian.com>
28420
28421         * unicode.c: Fix asserts to match Encoder.cs checks
28422
28423 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28424
28425         * marshal.c: fix unaligned store issue and a few wrong
28426         opcode argument types.
28427
28428 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28429
28430         * icall.c: added GetUninitializedObjectInternal internal call.
28431
28432 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
28433
28434         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
28435         to the right domain.
28436
28437 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
28438
28439         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
28440
28441         * class.c (class_compute_field_layout): set blittable to false for Strings
28442
28443         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
28444
28445 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28446
28447         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
28448         first chunk of code to create types at runtime. Code to
28449         handle ReflectedType/DeclaringType. Make reflection handles
28450         domain specific.
28451
28452 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
28453
28454         * class.c: set correct name in arrays.
28455
28456 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
28457
28458         * appdomain.c (mono_domain_transfer_object): make it work with
28459         valuetypes. bug fixes.
28460
28461 2002-08-12  Dick Porter  <dick@ximian.com>
28462
28463         * object.h: Rename some parameters to avoid c++ keywords (Patch
28464         from Joseph Wenninger <kde@jowenn.at>)
28465
28466 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
28467
28468         * icall.c: added icall to implement Assembly.GetFile*.
28469
28470 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28471
28472         * reflection.h, reflection.c: code to embed managed resources.
28473
28474 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28475
28476         * class.c: move all the type size stuff into
28477         class_compute_field_layout().
28478
28479 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28480
28481         * class.c: ensure enums have always the correct instance size.
28482         * unicode.c: remove wrong assert.
28483
28484 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28485
28486         * assembly.c: fix mem corruption issue.
28487         * image.h, image.c: added mono_image_get_resource () to access
28488         managed resources.
28489         * icall.c: implemented Assembly.EntryPoint property and some
28490         Managed Resources related internalcalls.
28491
28492
28493 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28494
28495         * image.c, image.h: impemented mono_image_get_entry_point ().
28496         * appdomain.c: use mono_image_get_entry_point.
28497
28498 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28499
28500         * reflection.c: support the object type argument when loading
28501         custom attributes.
28502
28503 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
28504
28505         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
28506         String as return type.
28507
28508 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
28509
28510         * reflection.c: fix encoding of named args for custom attrs to match
28511         the ms implementation. Read them back when instantiating custom
28512         attributes.
28513
28514 2002-08-02  Radek Doulik  <rodo@ximian.com>
28515
28516         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
28517         by Dietmar as quick fix
28518         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
28519         16 as stack size, used on more places as quick fix before Dietmar
28520         will fix it properly
28521
28522 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28523
28524         * object.h, object.c: added accessors for fields and properties.
28525
28526 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28527
28528         * class.c, class.h: made mono_class_get_field_from_name ()
28529         loop on parent types.
28530         Added mono_class_get_property_from_name ().
28531
28532 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28533
28534         * class.c, class.h: move the code to setup the type vtable in its own
28535         function so that it can be reused also for types created at runtime.
28536         Eliminate the "class" identifier from the header file.
28537         * reflection.c: setup the vtable for enums so that we can create
28538         objects for use in SetConstant ().
28539
28540 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
28541
28542         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
28543         instead of the delegate itself as this pointer (bug #28383)
28544
28545 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
28546
28547         * marshal.c (mono_marshal_get_managed_wrapper): added return type
28548         conversions.
28549
28550 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28551
28552         * loader.c: don't set the pinvoke bit on icalls.
28553
28554 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
28555
28556         * debug-helpers.c (mono_method_full_name): only print a number to
28557         indicate wrapper type (so that the output is more readable in traces).
28558
28559 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
28560
28561         * class.c (mono_class_init): include method override patch from Paolo
28562
28563 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
28564
28565         * icall.c: fixed GetTypeCode().
28566
28567 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
28568
28569         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
28570         use real delegate invoke function to make it work with multicast
28571         delegates (fix bug# 28291).
28572
28573 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
28574
28575         * object.c: load constant strings.
28576
28577 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28578
28579         * reflection.c: no magic numbers.
28580         * tabledefs.h: security action enum.
28581
28582 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28583
28584         * assembly.c: fix possible memory corruption.
28585
28586 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28587
28588         * reflection.h, reflection.c: added support for linking resources.
28589         * verify.c: check we have an updated corlib.
28590
28591 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
28592
28593         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
28594         string arrays.
28595         (mono_marshal_string_array): null terminate unmanaged string arrays.
28596         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
28597
28598 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
28599
28600         * icall.c: Type.GetType () can now return also types from the
28601         calling assembly.
28602
28603 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28604
28605         * loader.h, loader.c: stack walking support.
28606         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
28607         GetCallingAssembly.
28608
28609 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
28610
28611         * marshal.c: added optimisations for blittable types 
28612
28613         * class.c (mono_array_class_get): do not set blittable attribute on arrays
28614         (mono_class_setup_mono_type): set blittable attribute for single
28615         and double.
28616
28617         * marshal.c (mono_string_utf8_to_builder): impl.
28618         (mono_string_builder_to_utf8): impl.
28619         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
28620
28621 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
28622
28623         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
28624         (mono_marshal_get_managed_wrapper): impl. byref types
28625
28626 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28627
28628         * icall.c:
28629         (search_method): don't display debug message. 
28630
28631 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28632
28633         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
28634
28635 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28636
28637         * appdomain.c: set the missing filename when throwing exception.
28638
28639 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28640
28641         * metadata.c (mono_type_size): code cleanup
28642         (mono_type_stack_size): removed some test code
28643
28644 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
28645
28646         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
28647         mono_get_exception_file_not_found now.
28648
28649         * exception.c (mono_exception_from_name_two_strings): New version
28650         that will call a constructor with two string arguments. 
28651         (mono_get_exception_file_not_found): New helper routine, used to
28652         report file-not-found errors.
28653
28654 2002-07-20  Dick Porter  <dick@ximian.com>
28655
28656         * process.h:
28657         * process.c: Pass file handles to CreateProcess
28658         
28659         * icall.c:
28660         * file-io.h:
28661         * file-io.c: Implemented CreatePipe
28662
28663 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28664
28665         * metadata.c (mono_get_param_info): set alignment for value types
28666
28667 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28668
28669         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
28670         Constify mono_domain_assembly_open().
28671         * loader.c: handle null namespace in icalls.
28672
28673 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28674
28675         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
28676         (emit_str_to_ptr_conv): marshal object as structs
28677
28678         * metadata.c (mono_type_to_unmanaged): marshal object as structs
28679
28680         * marshal.c (mono_marshal_get_runtime_invoke): support value types
28681
28682 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
28683
28684         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
28685         (mono_marshal_get_native_wrapper): we an now return value types
28686
28687 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28688
28689         * verify.c: more checks implemented.
28690
28691 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
28692
28693         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
28694         (fix bug #27695)
28695         (mono_marshal_get_native_wrapper): allow byref arguments
28696         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
28697         impl. PtrToStringXXX methods
28698         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
28699         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
28700         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
28701         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
28702         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
28703
28704 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28705
28706         * reflection.c: fix buglet in parsing an assembly name.
28707
28708 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28709
28710         * marshal.c (emit_ptr_to_str_conv): first impl.
28711
28712 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
28713
28714         * object.c, class.h: cache the vtable in the class as suggested by
28715         vargaz@freemail.hu (Zoltan Varga).
28716
28717 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28718
28719         * class.h, loader.c: added mono_field_from_token().
28720         * verify.c: first cut of type checking code.
28721
28722 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28723
28724         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
28725
28726 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
28727
28728         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
28729         (fix bug #27782)
28730         (mono_marshal_get_remoting_invoke): impl.
28731         (mono_delegate_begin_invoke): impl.
28732         (mono_mb_emit_save_args): impl.
28733         (mono_delegate_end_invoke): impl.
28734         (mono_marshal_get_delegate_begin_invoke):
28735         (mono_marshal_get_delegate_end_invoke):
28736         (mono_marshal_get_delegate_invoke): generate a special name for
28737         those methods (including the signature) and associate them whith
28738         the delegate class. 
28739
28740 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
28741
28742         * reflection.[ch]: 
28743         (mono_reflection_type_from_name): now it has a MonoImage parameter
28744         which is used as the default image to search the type in. If the image
28745         is NULL or getting the type from it fails, it defaults to corlib.
28746
28747         * icall.c: changed 1 call to mono_reflection_type_from_name to match
28748         new parameter.
28749
28750 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28751
28752         * reflection.c: update the parameter table index.
28753
28754 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28755
28756         * domain.c: don't include the mark byte in the string hash.
28757
28758 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28759
28760         * icall.cs: icall for Type.GetTypeCode ().
28761         * verify: a couple of fixes and disabled local initialization checks.
28762
28763 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
28764
28765         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
28766
28767         * debug-helpers.c (mono_method_full_name): print the type of the
28768         runtime wrapper
28769
28770         * metadata.c (mono_signature_hash): a hash function for signatures
28771         (mono_signature_hash): better hash algorithm
28772
28773         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
28774
28775         * debug-helpers.c (mono_method_full_name): this can now generate
28776         method names with signatures
28777
28778         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
28779         method dont have this pointers.
28780
28781 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
28782
28783         * reflection.c: fixup typebuilder tokens.
28784         * image.c: fix buglet.
28785         * marshal.h: remove whitespace.
28786         * metadata.h, metadata.c: reinstate code that was removed.
28787         * verify.c: handle catch directives and fix another couple of bugs.
28788
28789 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
28790
28791         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
28792         (mono_marshal_get_native_wrapper): make it comp. with the old code
28793         (mono_marshal_get_native_wrapper): support boolean
28794         (mono_marshal_get_managed_wrapper): support more types
28795
28796 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
28797
28798         * class.c (class_compute_field_layout): compute class->blittable attribute.
28799
28800 2002-07-09  Dick Porter  <dick@ximian.com>
28801
28802         * threads.c: Make the thread cleaning up cope with threads that
28803         call ExitThread()
28804
28805 2002-07-08  Radek Doulik  <rodo@ximian.com>
28806
28807         * reflection.c (method_encode_code): use non-translated values to
28808         compute finally_start, this fixes exception handling on ppc, yay!
28809
28810         * decimal.h (struct signscale): fix endianess
28811
28812 2002-07-07  Radek Doulik  <rodo@ximian.com>
28813
28814         * reflection.c: swap box_val and not val
28815
28816 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
28817
28818         * reflection.c, reflection.h: handle full assembly info in type name.
28819         Handle Type arguments when loading custom attributes.
28820         * icall.c: updated to use new mono_reflection_type_from_name () method.
28821
28822 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28823
28824         * loader.c:
28825         (method_from_memberref): also print assembly name when method not found.
28826
28827 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28828
28829         * icall.c:
28830         (ves_icall_TypeGetProperties): fixed bug #27473. 
28831
28832 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28833
28834         * reflection.c: display image name and token when cannot find the
28835         .ctor for an attribute.
28836
28837 2002-07-05  Martin Baulig  <martin@gnome.org>
28838
28839         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
28840
28841 2002-07-04  Dick Porter  <dick@ximian.com>
28842
28843         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
28844         compile on mingw.  This will cause mingw builds to not wait for
28845         subthreads to terminate after the main thread does.  I've lodged a
28846         bug with the mingw developers for them to wrap OpenThread().
28847
28848 2002-07-03  Dick Porter  <dick@ximian.com>
28849
28850         * threads.c: Store thread IDs instead of handles, because
28851         GetCurrentThread() returns a pseudohandle and therefore stores
28852         useless values.  mono_thread_cleanup() continues checking the
28853         array of threads until it is empty, to cope with subthreads
28854         spawning new threads after the main thread has finished.
28855
28856         * profiler.h:
28857         * profiler.c:
28858         * profiler-private.h: Pass the thread ID to thread profiler
28859         functions, instead of a handle
28860
28861 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28862
28863         * verify.c: fixes to make it more usable.
28864         * pedump.c: added --verify code to verify IL code in an assembly.
28865
28866 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28867
28868         * reflection.c: turn errors into warnings to allow compiling corlib.
28869
28870 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28871
28872         * reflection.c: add special cases to compile corlib.
28873
28874 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28875
28876         * reflection.c: handle properties with only a set method.
28877
28878 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28879
28880         * opcodes.h: add enum with opcodes in opval order.
28881
28882 2002-07-01  Dick Porter  <dick@ximian.com>
28883         
28884         * object.h:
28885         * object.c (mono_runtime_run_main): Removed unneeded argument
28886
28887 2002-06-28  Martin Baulig  <martin@gnome.org>
28888
28889         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
28890
28891 2002-06-27  Dick Porter  <dick@ximian.com>
28892
28893         * threads.c: Store the handle in both the parent thread and in the
28894         subthread, to minimise the time between starting a new thread and
28895         storing its ID.
28896
28897 2002-06-26  Dick Porter  <dick@ximian.com>
28898
28899         * appdomain.c (mono_runtime_cleanup): Close the socket library
28900         after all the threads have finished, not before
28901
28902 2002-06-26  Martin Baulig  <martin@gnome.org>
28903
28904         * debug-symfile.c (mono_debug_find_source_location): Added
28905         `guint32 *line_number' argument.  If it's not NULL, store the line number
28906         there and return the file name without the line number.
28907
28908 2002-06-25  Dick Porter  <dick@ximian.com>
28909
28910         * icall.c:
28911         * process.h:
28912         * process.c: Process forking and other support functions
28913
28914 2002-06-25  Dick Porter  <dick@ximian.com>
28915
28916         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
28917         things dont happen when the image is closed.
28918         (mono_image_lookup_resource): Walk the resource section looking
28919         for a particular entry
28920
28921         * cil-coff.h: PE resource section decoding
28922
28923 2002-06-25  Dick Porter  <dick@ximian.com>
28924         
28925         * assembly.h:
28926         * assembly.c: 
28927         (mono_assembly_foreach): Accessor functions to walk the list of
28928         loaded assemblies
28929         (mono_assembly_set_main):
28930         (mono_assembly_get_main): Process methods need to know which
28931         assembly is the "main" one
28932
28933         * object.c (mono_runtime_run_main): Record the main assembly
28934
28935         * debug-helpers.c: Fix typo
28936
28937 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
28938
28939         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
28940         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
28941
28942 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
28943
28944         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
28945
28946 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
28947
28948         * image.c (do_mono_image_open): Initialize reference count,
28949         otherwise we leak the MonoImage.
28950
28951 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28952
28953         * reflection.c: small tweak to handle self-hosting.
28954
28955 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28956
28957         * reflection.c: fix type name parse code.
28958
28959 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28960
28961         * reflection.c: break out of the loop.
28962         * image.c: special case corlib.
28963
28964 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28965
28966         * reflection.c: add all the custom attrs at the end to ensure the
28967         ctors have been properly initialized when the attributes are defined
28968         in the current assembly.
28969
28970 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28971
28972         * reflection.c: handle correctly multiple-nested types.
28973
28974 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
28975
28976         * row-indexes.h: fix typos.
28977         * reflection.c: adjust for typos and fix method_def_or_ref
28978         encoding in MethodImpl table.
28979
28980 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
28981
28982         * reflection.c: fix entry point patching (thanks Serge!).
28983
28984 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
28985
28986         * verify.c: add check for System.Exception
28987
28988 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28989
28990         * image.c, class.c: minifix for code just c&p'ed.
28991         * reflection.c: warning fix.
28992         * object.h, loader.h, domain.c: load also StringBuilder.
28993
28994 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28995
28996         * marshal.h, marshal.c: some support code to handle complex marshaling.
28997
28998 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28999
29000         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29001         Better signatures with vtable error dump.
29002
29003 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29004
29005         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29006
29007 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29008
29009         * icall.c (ves_icall_Type_GetField): impl.
29010
29011 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29012
29013         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29014         to retrieve a marshal description blob for a field or param.
29015
29016 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29017
29018         * reflection.h, reflection.c: change order of nested type emission
29019         to avoid table corruption. The NestedTypes table is sorted.
29020         * icall.c: change order of GetConstructor results to workaround mcs bug.
29021
29022 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29023
29024         * reflection.h, reflection.c: handle field and param marshal
29025         information.
29026
29027 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29028
29029         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29030
29031 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29032
29033         * reflection.c: fix call convention.
29034
29035 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29036
29037         * reflection.h, reflection.c: mono_image_get_memberref_token()
29038         takes a type instead of a class, now. Added
29039         mono_image_get_array_token() to create tokens for the special
29040         multi-dim array methods.
29041
29042 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29043
29044         * assembly.c: handle modules (no assembly table). Split
29045         loading references in its own function.
29046         * class.c: handle moduleref resolution scope.
29047         * image.c, image.h: cache module name in image.
29048
29049 2002-06-07  Martin Baulig  <martin@gnome.org>
29050
29051         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29052         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29053
29054 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29055
29056         * icall.c: more signature fixes that used uint instead of int.
29057
29058 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29059
29060         * reflection.c: fixed signature of field refs.
29061
29062 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29063
29064         * class.c, reflection.c: handle typerefs of nested types
29065         (both on read and when writing files).
29066
29067 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29068
29069         * icall.c: fix method signatures that tried to workaround the previous
29070         typo, d'oh!
29071
29072 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29073
29074         * debug-helpers.c: fix typo.
29075
29076 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29077
29078         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29079         rewrote the PE/COFF writing code (our programs are understood by the
29080         ms runtime, now).
29081
29082 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29083
29084         * gc.c, gc.h, icall.c: weakreference support.
29085
29086 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29087
29088         * Makefile.am, mono-config.c: use $(sysconfdir).
29089
29090 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29091
29092         * icall.c: changed default precision of Double.ToString() to 15.
29093         Fixed memory leak. Unified with Single.ToString.
29094
29095 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29096
29097         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29098
29099 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29100
29101         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29102         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29103         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29104         and myself.
29105
29106 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29107
29108         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29109
29110 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29111
29112         * reflection.c, socket-io.c: more compilation fixes.
29113
29114 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29115
29116         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29117         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29118         unicode.c: warning and compiler compatibility fixes.
29119
29120 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29121
29122         * class.h, metadata.c: fixed warnings/compilation errors.
29123
29124 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29125
29126         * Makefile.am, mono-config.c, mono-config.h: configuration file
29127         support routines.
29128         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29129         config file. Export methods to insert and lookup mappings.
29130
29131 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29132
29133         * reflection.c: handle types and boxed objects in custom attr
29134         constructors.
29135
29136 2002-05-30  Martin Baulig  <martin@gnome.org>
29137
29138         * debug-symfile.c
29139         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29140
29141 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29142
29143         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29144         to lookup the implmap row for a P/Invoke method.
29145         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29146         P/Invoke method from the runtime on an as needed basis.
29147
29148 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29149
29150         * metadata.c (mono_metadata_parse_signature): impl.
29151
29152 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29153
29154         * class.c: handle .pack directive.
29155
29156 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29157
29158         * object.c: initialize static fields with RVA data.
29159
29160 2002-05-25  Martin Baulig  <martin@gnome.org>
29161
29162         * debug-symfile.c
29163         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29164
29165 2002-05-24  Martin Baulig  <martin@gnome.org>
29166
29167         * debug-symfile.c
29168         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29169         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29170         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29171
29172 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29173
29174         * object.c: special case string ctros in invoke.
29175         * gc.c: silly whitespace changes.
29176
29177 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29178
29179         * threadpool.[ch]: impl. a threadpool that can
29180         be used by mint and mono.
29181
29182 2002-05-22  Martin Baulig  <martin@gnome.org>
29183
29184         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29185         The first argument is now a `MonoReflectionModuleBuilder *', the return
29186         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29187         `methods' field to get the method builder.  The `token' argument is the
29188         unfixed token.
29189
29190         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29191         invalid characters instead of g_assert_not_reached()ing.  This seems
29192         to be the behaviour of mscorlib.
29193
29194 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29195
29196         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29197         Hestilow to fix bug #25104
29198
29199 2002-05-21  Martin Baulig  <martin@gnome.org>
29200
29201         * debug-symfile.c (mono_debug_find_source_location): New function.
29202         Looks up an IL offset in the line number table and returns the source
29203         location as a string.
29204
29205 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29206
29207         * icall.c:
29208         (mono_double_ToStringImpl): changed %f by %g until we have something
29209         better.
29210
29211 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29212
29213         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29214         parameters first in C#.
29215
29216 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29217
29218         * icall.c, reflection.h: added icall to get info about an event.
29219
29220 2002-05-20  Radek Doulik  <rodo@ximian.com>
29221
29222         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29223         endian
29224         (mono_value_box): don't use memcpy for small sizes on
29225         architectures with unaligned access
29226
29227 2002-05-20  Martin Baulig  <martin@gnome.org>
29228
29229         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29230         if `tb->parent == NULL'.
29231         (mono_reflection_create_internal_class): New function.  This is
29232         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29233         for enum types.
29234
29235         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29236         New interncall.
29237
29238 2002-05-19  Martin Baulig  <martin@gnome.org>
29239
29240         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29241         argument to get the length, don't default to the array length.
29242
29243 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29244
29245         * assembly.c (mono_assembly_setrootdir): New function used to
29246         override the MONO_ASSEMBLIES directory.
29247
29248 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29249
29250         * icall.c: ValueType_GetHashCode() initialize local var.
29251
29252 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29253
29254         * reflection.c: sort custom attributes table.
29255
29256 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29257
29258         * reflection.c: support named args in custom attributes (write support).
29259
29260 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29261
29262         * reflection.c: fix finally position calculation.
29263
29264 2002-05-15  Radek Doulik  <rodo@ximian.com>
29265
29266         * reflection.c: fixed endianess at many places
29267
29268         * icall.c (ves_icall_InitializeArray): comment out debug msg
29269
29270 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29271
29272         * object.c (mono_unhandled_exception): new function to handle
29273         unhandled exceptions.
29274         (mono_unhandled_exception): call the UnhandledException event.
29275         (mono_runtime_delegate_invoke): impl.
29276
29277 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29278
29279         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29280         returns the RVA, not the direct pointer to the data. Handle the case
29281         when the class size is fixed.
29282
29283 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29284
29285         * reflection.c: fix some endianess issues.
29286
29287 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29288
29289         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29290
29291         * threads.c (mono_thread_init): added a callback which is invoked
29292         at thread start.
29293
29294 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29295         
29296         * icall.c: make GetHashCode return non-negative values.
29297
29298 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29299
29300         * object.c, icall.c, gc.c: revert to address-based hashcode.
29301
29302 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29303
29304         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29305
29306 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29307
29308         * icall.c, class.c: special case <Module>.
29309
29310 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29311
29312         * icall.c: fix bug in GetNow().
29313
29314 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
29315
29316         * object.c (mono_runtime_class_init): make sure that we call all
29317         static class constructors.
29318
29319 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29320
29321         * reflection.c: sort methodsemantics table.
29322
29323 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29324
29325         * reflection.h, reflection.c: honour init locals setting.
29326
29327 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
29328
29329         * icall.c: copied Double ToStringImpl for Single ToStringImpl
29330
29331 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29332
29333         * reflection.c: support ContructorBuilders in attribute blob creation.
29334
29335 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29336
29337         * reflection.c: some changes to build a binary that can be run
29338         directly in windows.
29339
29340 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29341
29342         * loader.c: print a big message when an icall can't be found.
29343
29344 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29345
29346         * string-icalls.c: fix bug 24248.
29347
29348 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29349
29350         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
29351         icall.c, reflection.h: separate assembly loading by pathname and by
29352         assembly name. Use the MONO_PATH env var to search for assemblies.
29353
29354 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29355
29356         * assembly.c, image.h: add some support for assemblies
29357         with multiple modules.
29358         * class.c, class.h: export mono_class_from_typeref().
29359         * loader.c: remove duplicated code and use mono_class_from_typeref(),
29360         instead.
29361
29362 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29363
29364         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
29365         documentation says (the ECMA one is correct).
29366
29367 2002-05-02  Dick Porter  <dick@ximian.com>
29368
29369         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
29370         Don't name the synchronisation mutex.
29371
29372 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
29373
29374         * rand.c
29375         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
29376         Make the prototypes match.
29377         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
29378         Same.
29379
29380         * icall.c
29381         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
29382         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
29383         all systems have tm.tm_zone, so use strftime() with %Z to print
29384         the timezone abreviation into a temp string.
29385
29386         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
29387         rather than mono_array_addr() on a MonoString on Big Endian
29388         machines.
29389
29390 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
29391
29392         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
29393         fix bug 24041
29394
29395 2002-04-30  Dick Porter  <dick@ximian.com>
29396
29397         * socket-io.c: Cope with SOCKET being an integer rather than a
29398         pointer now.
29399
29400         * threads.c: Added Thread_free_internal, to deal with thread
29401         handle cleanup.  Moved calls to handle_store() and handle_remove()
29402         to start_wrapper(), so each can only be called once.  Allocate
29403         synchronisation blocks with GC_malloc(), and use GC finalisation
29404         to close the handles.
29405
29406         * icall.c: added System.Threading.Thread::Thread_free_internal
29407
29408 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29409
29410         * icall.c: support Environment.Exit, CommandLineArgs().
29411
29412 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29413
29414         * object.c, object.h: added mono_runtime_run_main () and
29415         mono_runtime_get_main_args () for use in System.Environment.
29416
29417 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29418
29419         * gc.c: fix thinko, enable actual finalization since the jit is now
29420         fixed.
29421
29422 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29423
29424         * gc.c, object.c: take into account that an object may be offset wrt the address
29425         returned by GC_malloc().
29426
29427 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29428
29429         * image.c: handle files without entries in the assembly table (modules).
29430
29431 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
29432
29433         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
29434         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
29435         allowed to be null when it's System.Object class setup.
29436
29437 2002-04-27  Martin Baulig  <martin@gnome.org>
29438
29439         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
29440         if `tb->parent == NULL' rather than crashing.
29441
29442 2002-04-28  Nick Drochak  <ndrochak@gol.com>
29443
29444         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
29445         calling acos() where asin() should have been called.
29446
29447 2002-04-26  Martin Baulig  <martin@gnome.org>
29448
29449         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
29450         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
29451         there's a subdirectory called `System', but we don't want to read that
29452         subdirectory as an assembly.
29453
29454 2002-04-25  Martin Baulig  <martin@gnome.org>
29455
29456         * debug-symfile.c: Reflect latest MonoString changes.
29457
29458 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29459
29460         * rand.c, rand.h: instance method icalls need to have an explicit
29461         this pointer as first argument in the C implementation.
29462
29463 2002-04-25  Nick Drochak <ndrochak@gol.com>
29464
29465         * icall.c: Fix typo in map for GetNonZeroBytes
29466
29467 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29468
29469         * string-icalls.c : String does now passes unit tests without any 
29470         errors, the following changes has been made:
29471         
29472         Implemented replace methods.
29473         Renaming of methods to (try) follow the standard.
29474         Fixed compare ordinal
29475         Made all memory allocated directly to function instead of via icall function.
29476         Small performance fix in is_in_array function
29477                         
29478  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
29479
29480         c (mono_string_Internal_ctor_charp_int_int):
29481         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
29482         sindex < 0, throw ArgumentOutOfRangeException instead of
29483         ArgumentNullException.
29484
29485         Added new check for length == 0, however
29486         I need to make it return String.Empty from the C code.
29487         
29488         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
29489         that calculate the length for us here.
29490         
29491         (mono_string_Internal_ctor_sbytep_int_int): Replaced
29492         mono_string_new_utf16 with mono_string_new, since value is utf8.
29493
29494 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29495
29496         * object.c: register the object for finalization if needed.
29497         Allocate one more char in the string for the terminating 0 char.
29498
29499 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29500
29501         * class.c, class.h, image.c: check if a type implemenst a destructor.
29502         Use the proper key for array class lookups.
29503         * icall.c: register the icalls in the System.GC class.
29504         * gc.c, gc.h: GC-related functions and icalls.
29505
29506 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29507
29508         * icall.c:
29509         * socket-io.c:
29510         * unicode.c: free some strings gotten from mono_string_to_utf8 and
29511         changed a couple of free () by g_free ().
29512
29513         * decimal.c: one-liner in the comments for decimal2string ().
29514
29515 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29516
29517         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
29518
29519 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29520
29521         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
29522         * object.c (mono_runtime_invoke_array) : handle null in params
29523
29524 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29525
29526         * string-icalls.c: fixed bug in split (one off bug)
29527
29528 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29529
29530         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
29531         * icalls.c: added String::Equals as internal method
29532
29533 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29534
29535         * threads.c: fixed bug in the double interlocked functions
29536
29537 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
29538
29539         * threads.c: implemented all of the new interlocked icalls.
29540         * string-icalls.c: fix a bug in insert.
29541         * icalls.c: added the icalls for interlocked, removed old string functions.
29542         
29543 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29544
29545         * loader.c: fix off-by-one error when reading argument names.
29546
29547 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29548
29549         * profiler.c: win32 counter implementation (untested).
29550         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
29551         (the latter needs testing and more complete impl. from win32 folks).
29552
29553 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
29554
29555         * object.c: mono_array_new_full workaround mono_array_class_get
29556         problem.
29557
29558 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29559
29560         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
29561         * object.h (mono_string_chars): Changed casting type.
29562
29563 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29564
29565         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
29566                            method signatures to use gunichar2 instead of gint16.
29567
29568 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
29569
29570         * object.h, object.c: domain-specific versions of mono_object_new and
29571         mono_array_new.
29572
29573 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
29574
29575         * object.c: changed String layout
29576
29577         * string-icalls.c (mono_string_Internal_ctor_chara): added
29578         internal string constructors.
29579
29580 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
29581
29582         * threads.c: pass 'this' to the thread start routine.
29583
29584 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29585
29586         * string-icalls.c: fix IndexOf and LastIndexOf. Now
29587         InternalCompareStr don't call twice mono_string_cmp_char for the last
29588         character. Improved performance in mono_string_cmp_char.
29589
29590 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29591
29592         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
29593         code into its own library: libmonoruntime.
29594
29595 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
29596
29597         * object.h, object.c: changed array format so that szarrays do not
29598         require a bounds structure.
29599         * icall.c, appdomain.c: support for new szarray format.
29600
29601 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29602
29603         * metadata.c: compare also the retuns type when comparing signatures:
29604         we didn't do this as an optimization since really overloaded methods
29605         must differ also in the arguments, but this doesn't work with
29606         low-level IL code (or when using explicit conversion operators: see
29607         bug#23498 for an example).
29608
29609 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29610
29611         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
29612
29613 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29614
29615         * icall.c: make MonoType::GetElementType its own icall.
29616
29617 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29618
29619         * icall.c: remove MonoMethod_get_Name().
29620         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
29621         object.
29622
29623 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29624
29625         * string-icalls.c: optimized a few methods.
29626
29627 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29628
29629         * icall.c: added all new string internal calls
29630         * string-icalls.c: added, new string internal call implementation.
29631         * object.c: added mono_string_new_size for allocating a string a size
29632
29633 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
29634
29635         * object.c (mono_object_isinst): use the same code as in the
29636         optimized x86 version.
29637
29638 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29639
29640         * profiler.c: TSC-based timer code (faster and more accurate).
29641         Not hooked up in configure, yet (set USE_X86TSC to 1).
29642
29643 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
29644
29645         * profiler.c, profiler.h: track time spent compiling methods.
29646         * threads.c: track thread creation/destruction.
29647
29648 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
29649
29650         * profiler.c, profiler.h, profiler-private.h: profiling interface
29651         and sample implementation. Moved here so that it can be used also by
29652         the jit.
29653
29654 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
29655
29656         * reflection.c, reflection.h: keep types and other handles separate in
29657         the hash tables for referred tokens. Add guid for modules.
29658
29659 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29660
29661         * assembly.c: fix bugs found with valgrind.
29662         * metadata.h, metadata.c: added mono_metadata_guid_heap().
29663
29664 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
29665
29666         * threads: added icall support for getting current domain for
29667                    the thread.
29668  
29669 2002-04-13  Martin Baulig  <martin@gnome.org>
29670
29671         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
29672         (MonoDebugVarInfo): Added `index' field for register based addresses.
29673         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
29674         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
29675         `MonoDebugVarInfo *params' and `guint32 this_offset' with
29676         `MonoDebugVarInfo *this_var'.
29677
29678         * debug-symfile.c (relocate_variable): New static function to write
29679         a location description for a local variable or method parameter.
29680
29681 2002-04-12  Martin Baulig  <martin@gnome.org>
29682
29683         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
29684         stack offset and begin/end scope address of a local variable.
29685         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
29686         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
29687         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
29688
29689         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
29690         Added new relocation types for start/end scope of a local variable.
29691
29692 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29693
29694         * object.h: add mono_object_domain() macro.
29695         * reflection.c: handle typespecs.
29696         * icall.c: MonoMethod::get_Name() implementation.
29697
29698 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29699
29700         * icall.c: String::GetHashCode() icall implementation.
29701
29702 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29703
29704         * icall.c: String::IndexOfAny icall.
29705         * object.c, object.h: make array->max_length more useful.
29706         Intrduced mono_object_class() and mono_string_length() macros.
29707
29708 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29709
29710         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
29711         instead of g_unichar_isdigit.
29712
29713 2002-04-11  Nick Drochak  <ndrochak@gol.com>
29714
29715         * icall.c: Implement a simple Double.ToString().
29716
29717 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29718
29719         * appdomain.h: only io-layer.h is supposed to be included.
29720         * icall.c: explicitly import environ. Fix warning.
29721
29722 2002-04-10  Nick Drochak  <ndrochak@gol.com>
29723
29724         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
29725                 return true even if it's not Daylight Savings time.
29726                 Only return false for the case where the function isn't
29727                 implemented for a plaform (read Windows).
29728
29729 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29730
29731         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
29732         data with a mutex.
29733
29734 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
29735
29736         * mempool.c (mono_mempool_alloc): only use g_malloc when
29737         absolutely necessary.
29738
29739 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29740
29741         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
29742
29743         * class.c (mono_class_vtable): use domain mempool to allocate vtable
29744         (mono_class_proxy_vtable): use domain mempool
29745
29746 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29747
29748         * appdomain.h, appdomain.c: split initialization that requires the
29749         execution engine support into mono_runtime_init().
29750
29751 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29752
29753         * class.c (mono_class_init): don't include vtable inside MonoClass
29754         to save some memory, gather some statistics.
29755         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
29756
29757 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29758
29759         * icall.c: internalcall implementation for ValueType.Equals().
29760
29761 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
29762
29763         * object.c (mono_message_init): moved 
29764         (mono_runtime_exec_main): new arch. independent impl.
29765         (mono_runtime_invoke_array): new method - like
29766         mono_runtime_invoke, but you can pass an array of objects.
29767         (mono_remoting_invoke): new arch. independent impl.
29768         (mono_message_invoke): new arch. independent impl.
29769         (mono_runtime_class_init): new arch. independent impl.
29770         (mono_runtime_object_init): new arch. independent impl.
29771
29772 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29773
29774         * metadata.c, object.c, reflection.c: documented the exported
29775         functions.
29776
29777 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
29778
29779         * icall.c: simpler code to pass the assembly builder data to corlib.
29780         Implement GetNestedTypes() internalcall.
29781
29782 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29783
29784         * class.c: warn if a type can't be loaded.
29785
29786 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
29787
29788         * image.h: typedef MonoImageOpenStatus
29789         * types.h: removed unused file
29790         
29791 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
29792
29793         * icall.c: Enum_ToObject accepts enum value arguments.
29794
29795 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29796
29797         * class.c: move initialization of properties, events and nested
29798         classes, so that they happen for interfaces, too.
29799
29800 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29801
29802         * icall.c: cleanup some ugly casts in Array_SetValue*.
29803
29804 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29805
29806         * icall.c: the values array fro enums is of the correct type, now.
29807         Implement (correctly) getFullName instead of assQualifiedName for
29808         MonoType.
29809         * reflection.h, reflection.c: added mono_type_get_name ().
29810
29811 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29812
29813         * assembly.c, image.h: for each MonoImage, record from wich assembly
29814         it was loaded.
29815         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
29816         Make Type.Assembly work.
29817
29818 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
29819
29820         * debug-symfile.h: use char* instead of gpointer to avoid
29821         unnecessary casts.
29822
29823         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
29824
29825         * icall.c (ves_icall_InternalExecute): impl. FielSetter
29826         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
29827
29828 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
29829
29830         * icall.c (mono_message_init): impl. (code cleanup)
29831         (ves_icall_InternalExecute): impl. FieldGetter
29832
29833         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
29834         defined we call all (non-static)methods through the vtable. 
29835
29836 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
29837
29838         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
29839         finalizer even though the memory is still referenced (and the chunk of
29840         memory is not freed).
29841
29842 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
29843
29844         * assembly.c: fix brokeness.
29845
29846 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
29847
29848         * class.c: kill some warnings. Check explicit interface method
29849         implementation also without considering the namespace.
29850         Load also literal strings in static class data.
29851
29852 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
29853
29854         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
29855         (default_assembly_name_resolver): Make the resolver take the
29856         "base" directory where the assembly was originally defined, so we
29857         can load DLLs that are in the same directory as the assembly that
29858         is being referenced.
29859
29860 2002-03-28  Dick Porter  <dick@ximian.com>
29861
29862         * file-io.h: 
29863         * file-io.c:
29864         * socket-io.c: 
29865         * unicode.h: 
29866         * unicode.c: Warning cleanups
29867
29868 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
29869
29870         * object.h, reflection.h: use the correct type instead of MonoObject.
29871
29872 2002-03-28  Martin Baulig  <martin@gnome.org>
29873
29874         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
29875         (mono_debug_update_symbol_file): Initialize classes if necessary.
29876
29877 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
29878
29879         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
29880         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
29881
29882 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
29883
29884         * assembly.h: fix function prototype.
29885         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
29886         * mono-endian.h: use const cast.
29887
29888 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
29889
29890         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
29891
29892 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
29893
29894         * loader.c: don't assert when a typeref can't be loaded, give
29895         a chance to the runtime to trow an exception instead.
29896         * loader.h: fix warning.
29897
29898 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
29899
29900         * class.c (mono_class_proxy_vtable): added proxy support
29901
29902 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
29903
29904         * icall.c: removed last of PAL calls, added System.Environment
29905         * file-io.h, file-io.c: MonoIO implementation
29906         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
29907
29908 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
29909
29910         * appdomain.c: do not use the byte marker in ldstr table lookup.
29911         * debug-helpers.c: allow two ':' to separate class and method name.
29912         * object.c: allocate arrays bounds with the GC, too.
29913         * verify: add a few more checks.
29914
29915 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
29916
29917         * reflection.c: output also literal strings. Allocate parameter data
29918         with GC_malloc() (thanks, Martin, for catching this!).
29919
29920 2002-03-26  Martin Baulig  <martin@gnome.org>
29921
29922         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
29923         include the `this' offset in the `param_offsets'.
29924
29925 2002-03-25  Martin Baulig  <martin@gnome.org>
29926
29927         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
29928         mono_debug_get_class() function to get the classes. Added new
29929         relocation types for arrays and strings.
29930         (mono_debug_get_class): New static function to search in all
29931         referenced assemblies for a metadata token.
29932
29933         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
29934
29935 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
29936
29937         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
29938         hold gc-allocated objects. Make the string heap a stream like the
29939         others. Removed duplicated code when writing stream info.
29940         Added asserts to catch possible buffer overflows. Set the sorted map
29941         for tables that need sorting. Added some documentation.
29942
29943 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
29944
29945         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
29946         for interned strings and vtables.
29947
29948 2002-03-24  Martin Baulig  <martin@gnome.org>
29949
29950         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
29951         it in the array since it was created with g_slist_prepend().
29952
29953 2002-03-24  Martin Baulig  <martin@gnome.org>
29954
29955         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
29956         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
29957         (mono_debug_method_from_token): Renamed to
29958         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
29959         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
29960
29961         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
29962         relocation types.
29963
29964         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
29965
29966 2002-03-24  Martin Baulig  <martin@gnome.org>
29967
29968         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
29969         (mono_debug_method_from_token): New func.
29970
29971         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
29972         New interncall, calls mono_debug_local_type_from_signature().
29973         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
29974         calls mono_debug_method_from_token().
29975
29976 2002-03-23  Martin Baulig  <martin@gnome.org>
29977
29978         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
29979         specifies the number of bytes to be converted, not the array size.
29980         Return the number of chars, not the number of bytes.
29981         (ves_icall_iconv_get_chars): The `byteCount' argument
29982         specifies the number of bytes to be converted, not the array size.
29983
29984 2002-03-23  Martin Baulig  <martin@gnome.org>
29985
29986         * reflection.h (MonoReflectionSigHelper): New type.
29987
29988         * reflection.c (mono_reflection_sighelper_get_signature_local),
29989         (mono_reflection_sighelper_get_signature_local): New functions.
29990
29991         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
29992         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
29993         interncalls.
29994
29995 2002-03-23  Martin Baulig  <martin@gnome.org>
29996
29997         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
29998         is_writeable is set.
29999         (mono_raw_buffer_update): New function to write the modified map
30000         back to disk.
30001
30002         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30003
30004         * debug-symfile.c (mono_debug_update_symbol_file): Call
30005         mono_raw_buffer_update() when done writing.
30006
30007 2002-03-23  Martin Baulig  <martin@gnome.org>
30008
30009         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30010
30011         * debug-symfile.c: Added support for arguments and local variables.
30012
30013 2002-03-23  Dick Porter  <dick@ximian.com>
30014
30015         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30016         protected by ifdefs, hence breaking the w32 build.
30017
30018 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30019
30020         * object.c: implement is_interned() the right way.
30021
30022 2002-03-21  Martin Baulig  <martin@gnome.org>
30023
30024         * debug-symfile.[ch]: New files to handle debugging information
30025         files. There's also support to dynamically update these symbol
30026         files to include machine dependent information.
30027
30028 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30029
30030         * threads.c (mono_thread_create): new function to create thread
30031         from C
30032
30033 2002-03-20  Martin Baulig  <martin@gnome.org>
30034
30035         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30036         method is a constructor.
30037         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30038         points to ves_icall_InternalInvoke().
30039
30040 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30041
30042         * file-io.c: Flush shouldn't throw exceptions.
30043
30044 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30045
30046         * file-io.c: FileStream flush support; FileSetLength now
30047         restores file pointer.
30048
30049 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30050
30051         * class.c: set image for pointer classes.
30052
30053 2002/03/19  Nick Drochak <ndrochak@gol.com>
30054
30055         * sysmath.c: Forgot one.
30056
30057 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30058
30059         * sysmath.c: Avoid redefining existing names.
30060
30061 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30062
30063         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30064         handled by runtime as icall rather than dllimport from libm.so
30065         * file-io.c, file-io.h: fixed handle argument type.
30066
30067 2002-03-18  Dick Porter  <dick@ximian.com>
30068
30069         * reflection.c (mono_image_get_type_info): rename interface to
30070         iface, because of "#define interface struct" on windows.
30071
30072 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30073
30074         * class.c, class.h: rename and export mono_ptr_class_get().
30075         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30076         * reflection.c, reflection.h, icall.c: better/saner type name
30077         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30078         method signatures.
30079
30080 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30081
30082         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30083
30084         * icall.c (ves_icall_InternalInvoke): impl.
30085
30086 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30087
30088         * reflection.c: output the interface map table, too.
30089
30090 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30091
30092         * class.c (class_compute_field_layout): separate computation of 
30093         static field layout
30094
30095 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30096
30097         * icall.c: added System.Buffer support.
30098         * file-io.c: moved file icalls from PAL to FileStream.
30099
30100 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30101
30102         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30103
30104 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30105
30106         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30107
30108 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30109
30110         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30111
30112 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30113
30114         * debug-helpers.{c,h}: moved here from monograph some useful functions
30115         to locate a method by name/signature in a class or image. Included
30116         also a small and flexible IL disassembler.
30117
30118 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30119
30120         * reflection.c: fixup tokens in methods with small header size, too.
30121
30122 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30123
30124         * object.c (mono_string_to_utf8): remove assert(!error), instead
30125         print a warning. 
30126
30127 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30128
30129         * icall.c: update to the new mono_Array_class_get interface.
30130
30131 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30132
30133         * appdomain.c, object.c: Boehm-GC enable.
30134         * icall.c: make get_data_chunk() support split data requests.
30135         Ensure a class is initialized in more cases. Return only the first
30136         property found in GetProperties() or the compiler gets confused. 
30137         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30138         * reflection.h, reflection.c: add fixup mechanism for field and method
30139         tokens. Initialize assembly->typeref in a single place. Output
30140         properties after events. Support custom attributes for events, too.
30141         Typo fix for paramter custom attrs.
30142
30143 2002-03-07  Martin Baulig  <martin@gnome.org>
30144
30145         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30146
30147 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30148
30149         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30150
30151 2002-03-06  Martin Baulig  <martin@gnome.org>
30152
30153         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30154         non-zero lower bounds. See testcases #F10-#F13.
30155
30156 2002-03-05  Martin Baulig  <martin@gnome.org>
30157
30158         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30159
30160         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30161         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30162         here.
30163         (ves_icall_System_Array_SetValue): Likewise.
30164         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30165         as argument and does the actual work. This function is used when copying a
30166         multi-dimensional array.
30167         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30168         now do all the widening conversions of value types.
30169         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30170
30171 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30172
30173         * class.c: remove some magic numbers and use the smbolic names,
30174         instead. Added init_events() to load event info at class init time.
30175         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30176         and mono_metadata_methods_from_event().
30177         * reflection.h, reflection.c: added support for writing out the evnets
30178         related information.
30179
30180 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30181
30182         * reflection.h, icall.c: use a different method (GetInterfaces)
30183         to gather interface info and add isbyref, isprimitive and
30184         ispointer to the ves_icall_get_type_info() return value.
30185
30186 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30187
30188         * class.h: stared adding support for events.
30189         * icall.c: split find_members implementation. Added debug icall to get
30190         the address of an object.
30191         * reflection.c: handle TypeBuilders in mono_type_get_object().
30192
30193 2002-03-01  Martin Baulig  <martin@gnome.org>
30194
30195         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30196         ArgumentOutOfRangeException(), not an ArgumentException().
30197         (ves_icall_System_Array_GetLowerBound): Likewise.
30198         (ves_icall_System_Array_GetValue): Improved argument checking.
30199         (ves_icall_System_Array_SetValue): Improved argument checking.
30200
30201 2002-03-01  Martin Baulig  <martin@gnome.org>
30202
30203         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30204         called with invalid arguments rather than just dying with g_assert().
30205         (ves_icall_System_Array_SetValue): Likewise.
30206         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30207         raise a NotImplementedException instead.
30208         (ves_icall_System_Array_GetLength): Added argument checking.
30209         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30210
30211 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30212
30213         * object.h (mono_assert): new macros mono_assert and
30214         mono_assert_not_reached
30215
30216 2002-02-28  Martin Baulig  <martin@gnome.org>
30217
30218         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30219         and "System::String::IsInterned" to "System::String::_IsInterned".
30220
30221 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30222
30223         * icall.c: remove hacks for typebuilder. Added icall to create a
30224         modified type from a tybebuilder.
30225         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30226         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30227         to create a backing MonoClass for a TypeBuilder.
30228
30229 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30230
30231         * class.c, class.h: more refactoring of class init.
30232         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30233
30234 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30235
30236         * marshal.c, marshal.h: start of marshaling interface.
30237
30238 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30239
30240         * icall.c: fix order in assembly qualified name icall.
30241
30242 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30243
30244         * class.c: do not free str, since we store it in the hash table.
30245         * reflection.h: add label field to MonoILExceptionInfo.
30246         * reflection.c: handle references to more than one assembly. Handle
30247         case when there isn't a module created in the assembly.
30248
30249 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30250
30251         * class.c: Fix typo. Start refactoring of class init code.
30252
30253 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30254
30255         * appdomain.c: exit with 1 on error.
30256         * class.c: we already have the name in MonoClassField.
30257         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30258         MonoStreamHeader instead of an offset of image->raw_metadata.
30259
30260 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30261
30262         * appdomain.c (mono_init): Be even more descriptive about the error.
30263
30264 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30265
30266         * appdomain.c: give the user an informative message when corlib can't
30267         be loaded.
30268
30269 2002-02-26  Martin Baulig  <martin@gnome.org>
30270
30271         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30272         New icall to get the time zone data.
30273
30274 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30275
30276         * reflection.c: set virtual and raw size of section correctly.
30277         * threads.c: transfer domain information to newly created threads.
30278
30279 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30280
30281         * class.c: when instancing a class in a domain, load the default
30282         vaules for static fields from the constant table. Fix System.Enum to
30283         not be an enum.
30284         * icall.c: implement Object::GetType() internalcall. Implemented
30285         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30286         Fixed checking of binding flags in find_members().
30287         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30288         * reflection.c: handle enumerations when writing to the constant
30289         table. Use a different object cache for types.
30290
30291
30292 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30293
30294         * object.c (mono_object_isinst): fix for arrays
30295
30296         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30297
30298 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30299
30300         * object.c: don't use mprotect ()  and fix intern pool hash table
30301         lookup for big endian systems.
30302
30303 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30304
30305         * icall.c: change type_is_subtype_of () signature.
30306
30307 2002-02-21  Mark Crichton  <crichton@gimp.org>
30308
30309         * rand.c, rand.h: Added random number generator for
30310         System.Security.Cryptography classes.
30311
30312         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30313
30314         * icall.c: Added System.Security.Cryptography calls.
30315
30316 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30317
30318         * class.c, icall.c, metadata.c: better support for pointer types.
30319         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
30320         * reflection.c: Add support for getting custom attrs for properties
30321         and simplify some code.
30322
30323 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30324
30325         * icall.c: change getToken () and add custom attribute GetBlob()helper
30326         method.
30327         * reflection.h: add custom attrs array to the reflection builder structures.
30328         * reflection.c: encode and emit custom attributes for all the relevant
30329         reflection objects. Cache fieldref and methodref tokens. Change
30330         mono_image_create_token() interface to take a MonoDynamicAssembly.
30331         More complete custom attributes decoder. Load custom attributes for
30332         Assembly, Field, Method and Constructor objects, too. Make the
30333         returned array an Attribute[] one, not object[]. Added
30334         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
30335         custom attribute constructor.
30336
30337 2002-02-20  Dick Porter  <dick@ximian.com>
30338
30339         * icall.c:
30340         * rawbuffer.c:
30341         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
30342         problem code out for now).
30343
30344 2002-02-19  Radek Doulik  <rodo@ximian.com>
30345
30346         * object.c (mono_ldstr): use hash table to avoid multiple swapping
30347
30348 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
30349
30350         * icall.c: register the GetCustomAttributes method.
30351         * object.c, object.h: add mono_string_new_len ().
30352         * reflection.h, reflection.c: added mono_runtime_invoke(),
30353         mono_install_runtime_invoke(). Added
30354         mono_reflection_get_custom_attrs () to load custom attributes and
30355         create the attribute objects.
30356
30357 2002-02-19  Dick Porter  <dick@ximian.com>
30358         * threads-dummy-types.c:
30359         * threads-dummy-types.h:
30360         * threads-dummy.c:
30361         * threads-dummy.h:
30362         * threads-pthread-types.c:
30363         * threads-pthread-types.h:
30364         * threads-pthread.c:
30365         * threads-pthread.h:  Deleted obsolete files
30366
30367 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
30368
30369         * class.c (mono_class_vtable): runtime init the class when we
30370         allocate static class data.
30371
30372         * icall.c (ves_icall_System_Array_SetValue): check for null values.
30373
30374         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
30375         and String - but we will need generic marshalling support in the
30376         future. 
30377         (mono_init): set the domain name in a ms compatible way
30378
30379         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
30380         String[].
30381
30382 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
30383
30384         * object.c (mono_array_clone): use alloca() instead of g_malloc  
30385         for sizes
30386
30387         * appdomain.c (mono_domain_unload): impl.
30388
30389 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30390
30391         * appdomain.c, object.c: fix intern pool implementation.
30392         * class.c: fix alignment code.
30393
30394 2002-02-16  Radek Doulik  <rodo@ximian.com>
30395
30396         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
30397         and s2 > s1, just copy lower bytes to be compatible with little
30398         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
30399         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
30400
30401         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
30402         force big_endian to be 1 for big endian machines 
30403         (ves_icall_iconv_new_decoder): ditto
30404
30405 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
30406
30407         * socket-io.c (convert_sockopt_level_and_name): If the system
30408         doesn't define SOL_IP or SOL_TCP, get them by hand using
30409         getprotobyname() and caching the values (because this could be a
30410         slow operation).
30411         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
30412         Use the appropriate struct when the system does support it. Ie,
30413         not all systems have struct ip_mreqn so use struct ip_mreq when
30414         appropriate.
30415
30416 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
30417
30418         * reflection.c: handle finally clauses.
30419
30420 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
30421
30422         * socket-io.c: use g_snprintf() instead of snprintf.
30423
30424 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30425
30426         * reflection.c (mono_param_get_objects): Cast second argument to
30427         mono_method_get_param_names to a const char** to silence the
30428         compiler warning.
30429
30430         * appdomain.c (mono_domain_assembly_open): Put parens around the
30431         truth statement in the for-loop.
30432
30433         * unicode.c (iconv_convert): Got rid of a compiler warning about
30434         int i being unused when the system has a new iconv.
30435         (iconv_get_length): Same.
30436
30437         * image.c (load_class_names): Cast the second argument to
30438         g_hash_table_insert() to char* to hush compiler warnings about the
30439         arg being a const.
30440         (mono_image_open): Same here.
30441
30442         * socket-io.c: Don't conditionally include sys/filio.h or
30443         sys/sockio.h here anymore since we now get them from
30444         io-layer/io-layer.h
30445         (inet_pton): If the system doesn't support inet_aton, implement
30446         using inet_addr and also #define INADDR_NONE if it isn't defined
30447         by the system.
30448
30449 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30450
30451         * metadata.c, metadata.h: added function to get packing and size info
30452         of a typedef.
30453         * reflection.h, reflection.c: handle field RVA data. Save info about
30454         the table layout if needed. Assign typedef indexes to all the types
30455         before dumping the info about them to avoid forward reference problems.
30456
30457 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
30458
30459         * socket-io.c (convert_sockopt_level_and_name): ifdef
30460         SO_ACCEPTCONN because it is not defined on my system (old debian)
30461
30462 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30463
30464         * opcode.c: use stddef.h to get NULL.
30465
30466 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30467
30468         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
30469         for FIONBIO, FIONREAD and SIOCATMARK.
30470         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
30471         define INADDR_NONE and besides, inet_addr() is deprecated and
30472         should not be used. Use inet_pton() instead - it also has the
30473         added bonus that it can easily handle IPv6 addresses as well.
30474         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
30475
30476 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30477
30478         * decimal.c: remove _MSC_VER conditional.
30479
30480 2002-02-13  Dick Porter  <dick@ximian.com>
30481
30482         * socket-io.c: 
30483         * icall.c: Internal calls for Blocking, Select, Shutdown,
30484         GetSocketOption and SetSocketOption
30485
30486 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30487
30488         * assembly.cs: better resolver: use it instead of some kludgy
30489         code.
30490
30491 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
30492
30493         * reflection.c: the best way to speed-up the compiler is to avoid
30494         infinite loops.
30495
30496 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
30497
30498         * class.c (mono_class_vtable): changed the object layout
30499         (obj->vtable->class). 
30500         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
30501
30502 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30503
30504         * assembly.c: look for assemblies in the assembly dir, too.
30505
30506 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30507
30508         * class.c: fix thinko in mono_class_from_type().
30509
30510 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30511
30512         * exception.h, exception.c: added TypeLoadException.
30513         * object.h, object.c: added mono_array_clone ().
30514         * icall.c: handle throwOnError in AssemblyGetType().
30515         Added Array.Clone().
30516         * opcode.h, opcode.c: use a single value for the opcode val.
30517         Compile fix for non-gcc compilers.
30518
30519 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
30520
30521         * opcodes.c, opcodes.h: export interesting info about opcodes.
30522
30523 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
30524
30525         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
30526         icalls. 
30527
30528         * class.c (class_compute_field_layout): set element_class for enums
30529         (mono_class_create_from_typedef): set element_class for normal classes
30530
30531         * icall.c (ves_icall_System_Enum_get_value): impl.
30532
30533         * class.c (mono_class_create_from_typedef): do not set valuetype
30534         flag for System.ValueType and System.Enum
30535
30536 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
30537
30538         * unicode.c (iconv_convert): fix big endian problem.
30539
30540 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30541
30542         * class.c: add asserts if we are ever going to scribble over memory.
30543         * socket-io.c: not all systems have AF_IRDA defined.
30544
30545 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
30546
30547         * class.c (class_compute_field_layout): do not consider static
30548         fields to compute alignment
30549
30550 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
30551
30552         * appdomain.c (mono_appdomain_get): impl.
30553         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
30554
30555 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30556
30557         * icall.c: ignore "file://" prefix when loading an assembly.
30558
30559 2002-01-23  Dick Porter  <dick@ximian.com>
30560
30561         * socket-io.c:
30562         * icall.c:
30563         * Makefile.am: Added socket support
30564
30565 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30566
30567         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
30568         code back.  This should return the assemblies that are loaded by
30569         the runtime on behalf of an application domain. 
30570
30571         The current implementation is still broken, it just returns every
30572         assembly loaded, but until we get real applications domain this
30573         will do.
30574
30575 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
30576
30577         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
30578         AppDomain object.
30579
30580 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30581
30582         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
30583         the mono_class_from_name lookup.
30584         (ves_icall_get_parameter_info): ditto.
30585         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
30586         method.
30587         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
30588
30589 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
30590
30591         * class.c: load also nested classes on class init.
30592         System.ValueType instance methods gets passed boxed
30593         values, unless methods in derived classed that get a pointer to the
30594         data.
30595         * icall.c: use better name parsing code in GetType().
30596         * image.c, image.h: add mono_image_loaded ().
30597         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
30598         * reflection.c, reflection.h: added mono_reflection_parse_type().
30599
30600 2002-01-22  Veronica De Santis <veron78@interfree.it>
30601
30602         * icall.c : Added mapping of internal calls for Manual and Auto reset events
30603         * threads.c : Added the implementation of internal calls for events
30604         * threads.h : Added prototypes of internal calls for events
30605         
30606 2002-01-21  Radek Doulik  <rodo@ximian.com>
30607
30608         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
30609
30610 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
30611
30612         * class.c (mono_class_init): set min_align to 1 (instead of 0)
30613         (mono_class_value_size): use min_align
30614
30615 2002-01-20  Dick Porter  <dick@ximian.com>
30616
30617         * threads.h:
30618         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
30619         so it compiles on w32.
30620
30621 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
30622
30623         * metadata.c (mono_type_stack_size): impl.
30624
30625         * class.c (mono_class_get_field): impl. memberref token
30626
30627 2002-01-16 Veronica De Santis <veron78@@interfree.it>
30628
30629         * icall.h : Added the internal calls mapping for CreateMutex_internal
30630                     and ReleaseMutex_internal.
30631         * threads.h : Added the prototype of mutexes internal calls.
30632         * threads.c : Added the implementations of mutexes internal calls.
30633
30634 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30635
30636         * metaparse.h: removed unused file.
30637         * reflection.c, reflection.h: added stream_data_align () function 
30638         to align data in streams and keep stream aligned. Add support for
30639         exception support in method headers.
30640
30641 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
30642
30643         * unicode.c: make iconv_convert () return the number of bytess written
30644         in the output buffer.
30645
30646 2002-01-15  Dick Porter  <dick@ximian.com>
30647         * threads.c: Make the runtime's idea of infinite timeouts coincide
30648         with the class library's
30649
30650         Fix a particularly egregious bug in mono_thread_cleanup(). That
30651         code was so utterly bogus it must have been written on a Monday.
30652
30653 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30654
30655         * reflection.h: add subtypes field to TypeBuilder.
30656         * reflection.c: encode constants for literal fields.
30657         Handle subtypes. Fix user string token (and add a zero byte)
30658         at the end.
30659         
30660 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
30661
30662         * class.c (mono_class_init): bug fix: assign slot numbers for
30663         abstract methods.
30664
30665 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30666
30667         * reflection.c: don't try to output a code RVA for abstract methods.
30668         Small fixes for method header format. Output parameter info to the
30669         ParamDef table. Save method overriding info to MethodImpl table.
30670         Fix property support. Allow typedef.extends to be a type in the
30671         building assembly.
30672         * verify.c: fix off-by-one error.
30673
30674 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
30675
30676         * class.c: fix mono_class_from_mono_type () for szarray types.
30677         Remove unused cache check in mono_class_from_type_spec().
30678         * icall.c: *type_from_name () functions handle simple arrays and byref.
30679         * reflection.c: handle byref and szarray types. Handle methods without
30680         body (gets P/Invoke compilation working). Handle types and fields in
30681         get_token ().
30682         * reflection.h: add rank to MonoTypeInfo.
30683
30684 2002-01-10  Dick Porter  <dick@ximian.com>
30685
30686         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
30687         internal calls
30688
30689 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30690
30691         * icall.c: initialize class in type_from_handle ().
30692         Loop also in parent classes for get_method ().
30693         * reflection.c: properly encode class and valuetype types.
30694         Start on encoding TypeBuilder types. Handle fieldrefs.
30695         Use correct length when registering a user string.
30696         Handle ConstructorBuilder and MonoMethod in get_token ().
30697         Make mono_type_get_object () aware of cached types.
30698         * object.c: back out change to mono_string_new ().
30699
30700 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
30701         * object.c: mono_string_new should return a NULL when the string 
30702         passed in is NULL -- not try to deference it.
30703         
30704 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30705
30706         * icall.c: hack to make IsSubType work for TypeBuilders.
30707         * reflection.c: emit constructors before methods.
30708         Retrieve param names in mono_param_get_objects().
30709
30710 2002/01/05  Nick Drochak  <ndrochak@gol.com>
30711
30712         * Makefile.am: fix list of headers and sources so automake 1.5
30713         doesn't complain. Removed \# at end of list.
30714
30715 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30716
30717         * reflection.c: get token for a method ref. Set return type of
30718         constructor to void.
30719         * loader.c: debug message.
30720         * class.c: typo fix.
30721
30722 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
30723
30724         * icall.c: fix array init with rank > 1. FindMembers
30725         loops in parent class as well.
30726         * image.c: do not insert nested types in name cache.
30727         * reflection.c: warning fix.
30728         * reflection.h: add override method (for interface impl).
30729
30730 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
30731
30732         * metadata.c: fix customattr decoding.
30733
30734 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
30735
30736         * rawbuffer.cs: Added native Win32 implementation, avoids using
30737         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
30738
30739 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
30740
30741         * class.c: make the low-level routines handle the cache.
30742
30743 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
30744
30745         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
30746
30747 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
30748
30749         * class.c: fix mono_array_element_size() for objects.
30750         * class.h, class.c: add properties to MonoClass and load them
30751         at init time.
30752         * icall.c: check with isinst() when assigning a value to an array
30753         instead of requiring the classes to match exactly.
30754         Implemented icall for System.Type::GetType().
30755         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
30756         enums. Handle bindingflags when looking for methods and fields.
30757         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
30758         and mono_metadata_methods_from_property().
30759         * reflection.h, reflection.c: added structures for propreties,
30760         parameters and enums. Implemented mono_property_get_object() and
30761         mono_param_get_objects().
30762
30763 2001-12-18  Dick Porter  <dick@ximian.com>
30764
30765         * file-io.c: Use mono_string_to_utf16() instead of
30766         mono_string_chars()
30767
30768         * object.c: Added mono_string_to_utf16(), which copies the non
30769         NULL-terminated MonoString into a new double-null-terminated
30770         buffer.
30771
30772 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
30773
30774         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
30775
30776 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
30777
30778         * file-io.c: raise exceptions if handle is invalid.
30779
30780 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
30781
30782         * assembly.c: yet another check for mscorlib.
30783         * class.c, class.h: load nesting info for classes.
30784         * icall.c: many new functions to support the Reflection classes.
30785         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
30786         * reflection.h, reflection.c: mono_image_create_token(),
30787         mono_assembly_get_object(), mono_type_get_object(),
30788         mono_method_get_object(), mono_field_get_object(): methods to return
30789         objects that parallel the C representation of assemblies, types,
30790         methods, fields.
30791
30792 2001-12-11  Dick Porter  <dick@ximian.com>
30793
30794         * icall.c:
30795         * file-io.c: Internal calls for file IO.
30796
30797 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
30798
30799         * tabledefs.h: missing FileAttributes.
30800         * verify.h, verify.c: use is_valid_string () to simplify and check for
30801         valid strings more correctly. Fix warnings and speeling.
30802         Check more tables: Filed, File, ModuleRef, StandAloneSig.
30803         Check code: branches, maxstack, method calls.
30804
30805 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
30806
30807         * object.c (mono_object_allocate): removed static, so that the jit
30808         can allocate value types.
30809
30810         * icall.c (ves_icall_System_DateTime_GetNow): impl.
30811
30812 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30813
30814         * class.c: init enum types right away and register the
30815         token->MonoClass map in mono_class_create_from_typedef ().
30816         * verify.h, verify.c: first cut of the verifier.
30817         * pedump.c: add --verify switch to verify metadata tables.
30818         * tabledefs.h: add some missing enums.
30819
30820 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
30821
30822         * class.c (mono_install_runtime_class_init): impl.
30823         (mono_class_init): renamed mono_class_metadata_init to
30824         mono_class_init, also removed the metadata_inited flag
30825
30826         * object.c (mono_object_isinst): use faster algorithm
30827
30828 2001-11-30  Radek Doulik  <rodo@ximian.com>
30829
30830         * mono-endian.h: reverted last change
30831         added function prototypes
30832
30833         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
30834         add mono-endian.c back
30835
30836         * mono-endian.c: returned back, as Paolo pointed out, it's needed
30837         for unaligned access, I've mistaked it with endianess. I am
30838         sorry.
30839         (mono_read16): fix reverted endianess
30840         (mono_read64): ditto
30841         (mono_read32): ditto
30842
30843 2001-11-30  Dick Porter  <dick@ximian.com>
30844
30845         * exception.c: Implement mono_exception_from_name()
30846
30847 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
30848
30849         * metadata.h, metadata.c: remove params_size and locals_size and their
30850         calculation from the metadata code: they are only usefult to the
30851         interp.
30852
30853 2001-11-29  Radek Doulik  <rodo@ximian.com>
30854
30855         * object.c (mono_ldstr): swap bytes here, it's probably not the
30856         best place, but works for me now, I'll redo it once I know mono
30857         better, also note that I add PROT_WRITE and don't reset back, also
30858         note that it's only affects big endians, so x86 should be OK
30859
30860         * mono-endian.h (read16): use just glib macros for both endians
30861
30862         * mono-endian.c: removed as glib macros are used in in
30863         mono-endian.h so we don't need to care about endianess for read
30864         macros as glib does that for us already
30865
30866 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
30867
30868         * class.h, class.h: take minimum alignment into consideration so
30869         that the fields of a class remain aligned also when in an array.
30870
30871 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30872
30873         * loader.h, loader.c: add mono_method_get_param_names().
30874         * class.c: 0-init class fields.
30875
30876 2001-11-26  Dick Porter  <dick@ximian.com>
30877
30878         * icall.c:
30879         * threads-types.h:
30880         * threads.c: New file that handles System.Threading on all platforms
30881
30882         * object.c: 
30883         * object.h: Remove the synchronisation struct from MonoObject,
30884         replace it with a pointer that gets initialised on demand
30885
30886         * Makefile.am: Replace all the system-specific threading code with
30887         a single file that uses the new wrapper library
30888
30889 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
30890
30891         * class.c, class.h: add mono_install_trampoline() so that the runtime
30892         can register a function to create a trampoline: removes the ugly
30893         requirement that a runtime needed to export arch_create_jit_trampoline.
30894         * object.h, object.c: added mono_install_handler() so that the runtime
30895         can install an handler for exceptions generated in C code (with
30896         mono_raise_exception()). Added C struct for System.Delegate.
30897         * pedump.c: removed arch_create_jit_trampoline.
30898         * reflection.c: some cleanups to allow registering user strings and
30899         later getting a token for methodrefs and fieldrefs before the assembly
30900         is built.
30901         * row-indexes.h: updates and fixes from the new ECMA specs.
30902
30903 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
30904
30905         * class.h, class.c: add enum_basetype field to MonoClass.
30906         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
30907         to get index in the constant table reated to a field, param or
30908         property.
30909         * reflection.h, reflection.c: handle constructors. Set public-key and
30910         version number of the built assembly to 0.
30911         * row-indexes.h: update from new ECMA spec.
30912
30913 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
30914
30915         * class.h, class.c: add a max_interface_id to MonoClass.
30916         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
30917         since it's used to do that. Added mono_type_type_from_obj().
30918         Make GetType() return NULL instead of segfaulting if the type was not
30919         found. Handle simple arrays in assQualifiedName.
30920         * object.h: add a struct to represent an Exception.
30921         * reflection.c: output call convention in method signature.
30922         Add code to support P/Invoke methods and fixed offsets for fields.
30923
30924 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
30925
30926         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
30927         the value.
30928         * icall.c: use mono_array_addr instead of array->vector: fixes the
30929         reflection image writing.
30930         * reflection.c: init call convention byte to 0 in method signature.
30931         Encode the property signature. Don't output property-related methods
30932         twice. Really process the properties for a type (don't cast a field to
30933         a property, my mom always told me that).
30934         Fix 64 bit issues in pointer alignment in a different and more
30935         readable way.
30936
30937 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
30938
30939         * loader.h: Removed type class from MonoDefaults, added monotype
30940
30941         * loader.c: Loaded MonoType, removed loading of Type
30942
30943         * icall.c (my_mono_new_object): Now returns a System.MonoType,
30944         and fills in System.Type._impl with a RuntimeTypeHandle rather
30945         than the actual MonoClass *
30946
30947         (ves_icall_type_from_handle): change from type_class to
30948         monotype_class
30949
30950         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
30951         implemented
30952
30953         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
30954         implemented
30955
30956         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
30957
30958         (ves_icall_System_Reflection_Assembly_GetType): implemented
30959
30960         (ves_icall_System_MonoType_assQualifiedName): implemented
30961
30962         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
30963
30964 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
30965
30966         * assembly.c (mono_assembly_open): Implement a cache for the
30967         assemblies. 
30968
30969         (mono_assembly_close): only destroy the assembly when the last
30970         reference is gone.
30971         
30972 2001-11-09  Dick Porter  <dick@ximian.com>
30973
30974         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
30975
30976 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
30977
30978         * class.c (mono_class_metadata_init): bug fix: compute the right slot
30979
30980 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
30981
30982         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
30983         from Martin Weindel.
30984         * object.h: add mono_string_chars ().
30985
30986 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
30987
30988         * reflection.c (build_compressed_metadata): Eliminates warnings
30989         and uses 64-bit clean code.
30990
30991         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
30992         (mono_type_equal): Change signature to eliminate warnings.
30993
30994 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30995
30996         * icall.c, loader.c: remove the internalcall array constructors.
30997         Changes to match the new MonoArray structure.
30998         * object.h, object.c: an array object doesn't allocate an extra
30999         vector. Add mono_array_new_full () to create jagged arrays easily.
31000
31001 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31002
31003         * metadata.h, metadata.c: add mono_metadata_field_info () to
31004         retreive all the info about a field from vairous tables.
31005         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31006         * class.h, class.c: augment MonoClassField with more info.
31007         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31008         policy and load a field's RVA if needed.
31009
31010 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31011
31012         * class.c (mono_class_metadata_init): create a trampoline for all
31013         virtual functions instead of actually compiling them.
31014
31015 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31016
31017         * class.h, class.c: include name in MonoClassField.
31018         * class.c: fix fundamental type of System.Object and System.String.
31019         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31020         tokens in ldtoken.
31021         * icall.c: remove internalcalls for the Reflection stuff that is now
31022         done in C# code.
31023         * loader.c: mono_field_from_memberref () implementation.
31024         * mono-endian.c: thinko (s/struct/union/g).
31025         * object.c, object.h: make the mono_string_* prototypes actually use
31026         MonoString instead of MonoObject.
31027         * reflection.c, reflection.h: updates for changes in the reflection
31028         code in corlib: we use C structures that map to the actual C# classes.
31029         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31030         fat method header if needed and use the info from the ILGenerator for
31031         methods. Handle fields in types. Misc fixes.
31032
31033 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31034
31035         * class.c (mono_class_metadata_init): bug fix: always allocate
31036         space for static class data
31037
31038 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31039
31040         * class.c (mono_compute_relative_numbering): use relative
31041         numbering to support fast runtime type checks.
31042
31043 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31044
31045         * class.c (mono_class_create_from_typeref): added debugging output
31046         to print class name when MonoDummy is returned instead of real class
31047
31048 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31049
31050         * class.c (mono_class_metadata_init): interface offset table now
31051         contains pointers into the vtable - this is more efficient for the jit
31052
31053 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31054
31055         * class.c (mono_class_metadata_init): use a temporary vtable (the
31056         old algorithm only worked for the interpreter, but not for the jit)
31057
31058 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31059
31060         * loader.c (method_from_memberref): use mono_class_get to get the
31061         class of an array instead of using System.Array directly.
31062         (mono_get_method): also add MEMBERREF methods to the method cache
31063         which usefull for arrays.
31064
31065 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31066
31067         * pedump.c (arch_compile_method): added to compute vtable entry
31068
31069         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31070         number of interfaces.
31071         
31072         * class.h: merged MonoArrayClass into MonoClass
31073
31074         * class.c (mono_class_create_from_typedef): compute the vtable size and
31075         allocate space to include the vtable inside MonoClass
31076         (mono_class_metadata_init): initialize the vtable
31077
31078 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31079
31080         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31081         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31082         * image.c: endian fixes by Laurent Rioux.
31083         * object.h, object.c: rename MonoStringObject to MonoString and
31084         MonoArrayObject to MonoArray. Change some function names to conform to
31085         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31086         guint16* as first argument, so don't use char*.
31087         Provide macros to do the interesting things on arrays in a portable way.
31088         * threads-pthread.c: updates for the API changes and #include <sched.h>
31089         (required for sched_yield()).
31090         * icall.c: updates for the API changes above.
31091         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31092         platforms that need them.
31093
31094 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31095
31096         * class.c: set the correct type for all the fundamental
31097         type when loading the class.
31098
31099 2001-10-05  Dick Porter  <dick@ximian.com>
31100
31101         * threads-pthread.c (pthread_mutex_timedlock): Simple
31102         compatibility version for C libraries that lack this call.
31103
31104 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31105
31106         * class.c: MonoTypes stored in MonoClass are stored as
31107         fundamental MonoTypes when the class represents a
31108         fundamental type (System.Int32, ...).
31109         The TypeHandle return by ldtoken is a MonoType*.
31110         * icall.c: ves_icall_get_data_chunk () write out all the
31111         PE/COFF stuff. Implement ves_icall_define_method (),
31112         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31113         * image.c: properly skip unknown streams.
31114         * loader.h, loader.c: add type_class to mono_defaults.
31115         * metadata.c, metadata.h: export compute_size () as
31116         mono_metadata_compute_size () with a better interface.
31117         Typo and C&P fixes.
31118         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31119         * reflection.c, reflection.h: many cleanups, fixes, output method
31120         signatures and headers, typedef and typeref info, compress the metadata
31121         tables, output all the heap streams, cli header etc.
31122         * row-indexes.h: typo fixes.
31123
31124 2001-10-04  Dick Porter  <dick@ximian.com>
31125
31126         * object.h: Add a synchronisation mutex struct to MonoObject
31127
31128         * object.c (mono_new_object): Initialise the object
31129         synchronisation mutexes
31130
31131         * icall.c: System.Threading.Monitor internal calls
31132         
31133         * threads-pthread.h:
31134         * threads-pthread.c: System.Threading.Monitor internal calls
31135
31136         * threads-types.h: New file, includes the system-specific thread
31137         structures
31138         
31139         * threads-pthread-types.h:
31140         * threads-pthread-types.c: New files, handle pthread-specific
31141         synchronisation types
31142
31143         * threads-dummy-types.h: 
31144         * threads-dummy-types.c: New files of dummy support for
31145         thread-specific types
31146
31147         * metadata.c:
31148         * image.c:
31149         * pedump.c: include mono-endian.h not endian.h
31150         
31151         * Makefile.am: More threads files.
31152         Name mono-endian.h not endian.h
31153
31154 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31155
31156         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31157         stuff and implement a few more bits.
31158         * icall.c: a field needs to be dereferenced twice. Do not use the same
31159         name for two variables in the same scope.
31160         * image.c, image.h: cleanups.
31161
31162 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31163
31164         * class.c (mono_class_metadata_init): bug fix: compute the right size
31165
31166 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31167
31168         * icall.c: implemented some of the Reflection internalcalls.
31169         * image.c, image.h: start writing out the PE/COFF image.
31170         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31171         that does the reverse than decode_blob_size ().
31172         * object.c: use mono_metadata_encode_value (). Move here
31173         temporary implementation of mono_string_to_utf8 ().
31174         * rawbuffer.c: make malloc_map static.
31175
31176 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31177
31178         * metadata.c: fix type comparison for arrays.
31179         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31180         Added a couple of new classes to monodefaults.
31181         * icall.c: added a couple of Reflection-related internalcalls.
31182         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31183         Added a byval_arg MonoType to MonoClass.
31184
31185 2001-09-28  Dick Porter  <dick@ximian.com>
31186
31187         * icall.c:
31188         * threads-pthread.h: 
31189         * threads-pthread.c: Implemented internal calls for
31190         LocalDataStoreSlot operations.  Applied mutexes around all shared
31191         data.  Reworked the thread creation and Start() operations to
31192         avoid a race condition.
31193         
31194         * threads-dummy.h:
31195         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31196
31197 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31198
31199         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31200
31201 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31202
31203         * class.c, loader.c: warn and return NULL instead of erroring out.
31204         * icall.c: added System.AppDomain::getCurDomain().
31205         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31206
31207 2001-09-25  Dick Porter  <dick@ximian.com>
31208
31209         * threads-pthread.h:
31210         * threads-pthread.c: Implemented timed thread joining and added
31211         System.Threading.Thread::Join_internal internal call
31212
31213         * icall.c: Added System.Threading.Thread::Join_internal internal call
31214
31215         * threads-dummy.h:
31216         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31217
31218 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31219
31220         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31221         mono_string_intern () to implement the semantics of the ldstr opcode
31222         and the interning of System.Strings.
31223         * icall.c: provide hooks to make String::IsIntern and String::Intern
31224         internalcalls.
31225
31226 2001-09-23  Dick Porter  <dick@ximian.com>
31227
31228         * threads-dummy.c: 
31229         * threads-dummy.h: New files of dummy threading routines
31230
31231         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31232         support code based on system specifics
31233
31234         Rename PTHREAD_LIBS to THREAD_LIBS
31235         
31236 2001-09-23  Dick Porter  <dick@ximian.com>
31237
31238         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31239         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31240         internal calls.
31241         (mono_thread_init): Set up a Thread object instance to return when
31242         the main thread calls Thread.CurrentThread
31243         (mono_thread_cleanup): Wait for all subthreads to exit
31244
31245         * icall.c: New internal calls for System.Threading.Thread::Sleep
31246         (including Schedule) and CurrentThread
31247
31248         * threads.h: New file, to insulate thread-specific stuff from the
31249         rest of the code
31250
31251 2001-09-21  Dick Porter  <dick@ximian.com>
31252
31253         * threads-pthread.h: 
31254         * threads-pthread.c: New file, for handling pthreads-style
31255         threading support.  Start() now starts a new thread and executes
31256         the ThreadStart delegate instance.
31257
31258         * icall.c: Added the internalcall for
31259         System.Threading.Thread::Start_internal
31260
31261         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31262
31263 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31264
31265         * loader.c: work around the different signatures for delegates
31266         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31267
31268 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31269
31270         * class.h, class.c: add mono_class_get_field_from_name ().
31271         * *: Fix C comments and other ANSI C issues.
31272
31273 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31274
31275         * endian.h, assembly.c: fix some endianness issues.
31276
31277 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31278
31279         * loader.h, load.c: add delegate_class to mono_defaults.
31280         Handle runtime provided methods in mono_get_method ().
31281
31282 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31283
31284         * loader.c (mono_get_method): use pinvoke for internal call
31285
31286         * icall.c: use pinvoke for internal call
31287
31288         * loader.c (method_from_memberref): set the method name
31289
31290 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31291
31292         * metadata.c: help the compiler generate better code for
31293         mono_class_from_mono_type ().
31294
31295 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31296
31297         * class.c (mono_class_metadata_init): delayed computing of the
31298         class size to mono_class_metadata_init ()
31299
31300 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31301
31302         * class.c, class.h: add an interfaces member to MonoClass.
31303         * image.c, image.h: add assembly_name field to MonoImage
31304         from the assembly table.
31305         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31306
31307 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31308
31309         * class.c: Handle Array in mono_class_from_mono_type ().
31310         * metadata.c, pedump.c: some endian fixes.
31311
31312 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31313
31314         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
31315         * metadata.c: fix small problem introduced with the latest commit.
31316
31317 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
31318
31319         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
31320         We don't need a MonoMetadata pointer anymore to compare signatures in
31321         mono_metadata_signature_equal (), update callers.
31322         Reduced memory usage an number of allocations for MonoMethodHeader and
31323         MonoMethodSignature.
31324
31325 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
31326
31327         * metadata.c: added compare for szarray.
31328
31329 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
31330
31331         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
31332         and add a couple more types to it and mono_defaults. Give an hint on
31333         classes that need implementing in our corlib and are referenced
31334         in mscorlib.
31335
31336 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
31337
31338         * class.h, class.c: keep track if a class is also an Enum.
31339         * loader.c: Implement a couple more types for use in libffi
31340         marshalling. Gives better diagnostics when failing to dlopen
31341         a library. Set method->klass for P/Invoke methods, too.
31342
31343 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
31344
31345         * class.c, class.h: add a MonoType this_arg to MonoClass that
31346         represents a pointer to an object of the class' type that
31347         can be used by the interpreter and later the type cache.
31348         Add best guess alignment info for valuetype objects.
31349
31350 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
31351
31352         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
31353         into MonoType: one less level of indirection and allocation and
31354         simplifies quite a bit of code. Added cache for MonoTypes that are
31355         used frequently, so that we don't need to allocate them all the time.
31356
31357 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
31358
31359         * class.c (mono_class_create_from_typedef): System.Enum is also a
31360         value type, although it does not derive from System.ValueType
31361         (maybe a bug in the ms compiler?)
31362
31363         * metadata.c (mono_type_size): return the right size for value types
31364
31365         * loader.c (mono_get_method): only initialize method header if not abstract
31366
31367         * class.c (mono_class_from_mono_type): use mono_default values. 
31368
31369 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
31370
31371         * *: use MonoClass pointers instead of <type_tokens>
31372         
31373         * class.h: new flag: metadata_inited.
31374
31375         * class.c (mono_class_metadata_init): impl.
31376         (mono_class_instance_size): impl.
31377         (mono_class_data_size): impl.
31378
31379 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31380
31381         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
31382         MonoClass now has the name and name_space fields. 
31383         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
31384         mono_get_method () takes and optional MonoClass as argument.
31385         Removed mono_typedef_from_name() and added mono_class_token_from_name()
31386         instead that takes advantage of a map from class names to typedef
31387         tokens in MonoImage.
31388
31389 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
31390
31391         * metadata.c: zero is not a valid alignment boundary.
31392         Merge MONO_TYPE_VOID in default decoding code.
31393
31394 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
31395
31396         * image.h: merged MonoMetadata into MonoImage
31397
31398         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
31399         identify the type of elements.
31400
31401 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
31402
31403         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
31404         * cil-coff.h: split MonoMSDOSHeader and add size info.
31405         * image.c: add some consistency checks.
31406         * metadata.c: fix row size computation: one programmer
31407         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
31408         add explanation for the locator routine.
31409         Fix decoding of size in method header.
31410         
31411 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
31412
31413         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
31414         (g_concat_dir_and_file): Bring g_concat_dir_and_file
31415         function from gnome-libs.  This uses the right path separator
31416         based on the OS, and also works around a bug in some systems where
31417         a double slash is not allowed. 
31418         (default_assembly_name_resolver): Use g_concat_dir_and_file
31419         (mono_assembly_open): ditto.
31420
31421 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
31422
31423         * metadata.c (mono_metadata_signature_equal): impl.
31424
31425         * *: void is now a realy MonoType (instead of using NULL)
31426         
31427         * metadata.c (do_mono_metadata_parse_type): use
31428         mono_metadata_parse_type to parse void value.
31429
31430 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
31431
31432         * metadata.c, metadata.h: in the signature and method header store
31433         only the space required for holding the loca vars and incoming arguments.
31434
31435 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
31436
31437         * metadata.c (do_mono_metadata_parse_type): treat void like any
31438         other type (instead of assigning NULL);
31439
31440 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
31441
31442         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
31443
31444 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
31445
31446         * image.c (do_mono_image_open): added a cache for arrays.
31447
31448 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31449
31450         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
31451         decode a single column from a row in a metadata table and changes
31452         to take advantage of it in the typedef locator (gives a nice speed up).
31453         Store offset info for function params.
31454
31455 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
31456
31457         * image.h (MONO_IMAGE_IS_CORLIB): removed 
31458
31459 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
31460
31461         * assembly.c: how could mono_assembly_close () had ever worked?
31462         * metadata.c, metadata.h: provide offset info for local vars.
31463         Implement mono_type_size () to take care of alignment as well
31464         as size (it was mono_field_type_size in cli/class.c before).
31465
31466 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
31467
31468         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
31469
31470         * assembly.h (CORLIB_NAME): set to corlib.dll
31471
31472         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
31473
31474 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31475
31476         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
31477         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
31478         tokentype.h: massive namespace cleanup.
31479
31480 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31481
31482         * metadata.h, metadata.c: decode exception clauses when parsing method header.
31483
31484 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
31485
31486         * metadata.c (mono_metadata_free_type): added check for type !=
31487         NULL (void) before calling mono_metadata_free_type()
31488
31489 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
31490
31491         * metadata.h, row_indexes.h: added header with enumerations to use
31492         to index in the columns from tables in metadata and to decode coded
31493         tokens: we should start using this instead of embedding magic numbers
31494         all over the code.
31495
31496 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
31497
31498         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
31499         Move metadata_t info from cli_image_info_t to MonoImage, where
31500         it's easily accessible. Changed all the uses accordingly.
31501         Added the method and class caches to MonoImage.
31502         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
31503         and mono_metadata_decode_value () signature to be more consistent
31504         with the other parse functions (and simplify code). Taken advantage
31505         of zero-length array allocation with GCC. Removed reduntant (and
31506         wrong) MonoFieldType struct and use MonoParam instead. Changed
31507         mono_metadata_parse_field_type () to use common code for parsing.
31508         Added mono_metadata_typedef_from_field () and
31509         mono_metadata_typedef_from_method () to lookup a typedef index from a
31510         field or method token.
31511         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
31512
31513 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
31514
31515         * metadata.c (mono_metadata_parse_field_type): Implement. 
31516         (do_mono_metadata_parse_type): Split engine from
31517         mono_metadata_parse_type, so that we can create smaller structures
31518         for things that just have one pointer to the MonoType (look at
31519         the MonoFieldType)
31520
31521 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
31522
31523         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
31524         as Jan Gray found out, it is incorrect. 
31525
31526 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
31527
31528         * assembly.c: Implement asssembly loading.  This loads an image
31529         and loads all the referenced assemblies.  Come to think of it, we
31530         could always do lazy loading of the assemblies. 
31531
31532         * image.c (mono_image_open): Keep loaded images in a hashtable.
31533
31534         * image.h (MonoImage): Add reference count.
31535
31536 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
31537
31538         * assembly.c (mono_assembly_open): Keep track of the file name in
31539         case the assembly has no ASSEMBLY table.
31540
31541         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
31542         from get.c here.
31543
31544 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
31545
31546         * metadata.c, metadata.h: decode local vars in method header
31547         parse function. Change callers accordingly.
31548
31549 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
31550
31551         * metadata.h, cil-coff.h: protect against multiple inclusion.
31552         Added some new structures to hold information decoded from metadata:
31553         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
31554         and relevant decoding/free functions.
31555         * metadata.c: implement decoding functions. Add warning for out of bounds
31556         index in mono_metadata_locate(). Implement mono_get_method () to retreive
31557         all the info about a method signature and invocation. Remove check on
31558         uninitialized local var in parse_mh() and fix memory leak.
31559
31560 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
31561
31562         * metadata.h: More macros.
31563
31564         * tokentype.h: New file.
31565
31566 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
31567
31568         * assembly.c: added a consistency check and initialize
31569         some structures with g_new0().
31570         * metadata.c: fixed a couple more bugs in table size computation
31571         and add other checks for out-of bound access to metadata.
31572
31573 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
31574
31575         * metatada.c: fix bugs computing table sizes. Spew a
31576         warning when index in string heap is out of bounds.
31577
31578 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
31579
31580         * metadata.h: Add a couple of macros to manipulate tokens. 
31581
31582 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31583
31584         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
31585         cli_section_tables).
31586
31587 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
31588
31589         * metadata.c (mono_metadata_user_string): New function, provides
31590         access to the UserString heap. 
31591
31592 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
31593
31594         * metadata.c: Add inline documentation.
31595
31596 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
31597
31598         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
31599         files. 
31600
31601 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
31602
31603         * typeattr.h: New file, TypeAttribute flags. 
31604
31605 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
31606
31607         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
31608         mono_assembly_ensure_section): Section loading code.
31609         (load_section_tables): Load the sections.
31610
31611         * mono/metadata/metadata.c (mono_metadata_locate_token,
31612         mono_metadata_locate): Functions to locate the information
31613         definition given a token or a table and an index.
31614         (mono_metadata_compute_table_bases): New.
31615         (compute_size): New function to compute the sizes of the various
31616         tables.
31617
31618         * mono/metadata/metadata.h: Finish listing the different index
31619         types. 
31620
31621         * mono/metadata/pedump.c: Improve to dump new information.
31622
31623 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
31624
31625         * mono/metadata/metadata.c: Entered all the tables matching
31626         Beta2. 
31627
31628         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
31629
31630
31631
31632